@j03fr0st/pubg-ts
Version:
A comprehensive TypeScript wrapper for the PUBG API
148 lines (125 loc) • 5.25 kB
text/typescript
import 'dotenv/config';
import { assetManager, type ItemId, PubgClient, type VehicleId } from '../src/index';
async function unifiedAssetsExample() {
const client = new PubgClient({
apiKey: process.env.PUBG_API_KEY || 'your-api-key-here',
shard: 'pc-na',
});
console.log('=== PUBG Unified Assets Example ===\n');
// 1. Type-safe item access
console.log('1. Type-Safe Item Access:');
const ak47Id: ItemId = 'Item_Weapon_AK47_C';
const itemName = client.assets.getItemName(ak47Id);
const itemInfo = client.assets.getItemInfo(ak47Id);
console.log(` Item ID: ${ak47Id}`);
console.log(` Name: ${itemName}`);
if (itemInfo) {
console.log(` Category: ${itemInfo.category}`);
console.log(` Subcategory: ${itemInfo.subcategory}`);
}
console.log();
// 2. Get items by category
console.log('2. Items by Category:');
const weapons = client.assets.getItemsByCategory('weapon');
console.log(` Found ${weapons.length} weapons`);
console.log(' First 5 weapons:');
weapons.slice(0, 5).forEach((weapon) => {
console.log(` - ${weapon.name} (${weapon.id})`);
});
console.log();
// 3. Vehicle information with type safety
console.log('3. Vehicle Information:');
const vehicleId: VehicleId = 'BP_Motorbike_04_C';
const vehicleName = client.assets.getVehicleName(vehicleId);
const vehicleInfo = client.assets.getVehicleInfo(vehicleId);
console.log(` Vehicle: ${vehicleName}`);
if (vehicleInfo) {
console.log(` Type: ${vehicleInfo.type}`);
console.log(` Category: ${vehicleInfo.category}`);
}
console.log();
// 4. Map information
console.log('4. Map Information:');
const allMaps = client.assets.getAllMaps();
console.log(' Available maps:');
allMaps.forEach((map) => {
console.log(` - ${map.name} (${map.id})`);
});
console.log();
// 5. Season information by platform
console.log('5. Season Information:');
const pcSeasons = client.assets.getSeasonsByPlatform('PC');
const currentSeason = client.assets.getCurrentSeason('PC');
console.log(` Total PC seasons: ${pcSeasons.length}`);
if (currentSeason) {
console.log(` Current season: ${currentSeason.name}`);
console.log(` Start date: ${currentSeason.startDate}`);
console.log(` End date: ${currentSeason.endDate}`);
console.log(` Is active: ${currentSeason.isActive}`);
}
console.log();
// 6. Survival titles
console.log('6. Survival Titles:');
const ratings = [500, 1200, 1500, 1800, 5000];
for (const rating of ratings) {
const title = client.assets.getSurvivalTitle(rating);
if (title) {
console.log(
` Rating ${rating}: ${title.title} Level ${title.level} (${title.pointsRequired} points)`
);
} else {
console.log(` Rating ${rating}: No title found`);
}
}
console.log();
// 7. Search functionality
console.log('7. Item Search:');
const searchResults = client.assets.searchItems('AK');
console.log(` Search for "AK" found ${searchResults.length} items:`);
searchResults.slice(0, 3).forEach((item) => {
console.log(` - ${item.name} (${item.category})`);
});
console.log();
// 8. Enhanced asset URLs with type safety
console.log('8. Type-Safe Asset URLs:');
const weaponIconUrl = client.assets.getWeaponAssetUrl(ak47Id, 'icon');
const vehicleImageUrl = client.assets.getVehicleAssetUrl(vehicleId, 'image');
console.log(` AK47 Icon: ${weaponIconUrl}`);
console.log(` Motorbike Image: ${vehicleImageUrl}`);
console.log();
// 9. Additional dictionary features
console.log('9. Additional Dictionaries:');
const damageCauser = client.assets.getDamageCauserName('Item_Weapon_AK47_C');
const gameMode = client.assets.getGameModeName('squad');
console.log(` Damage causer for AK47: ${damageCauser}`);
console.log(` Game mode name for 'squad': ${gameMode}`);
console.log();
// 10. Asset statistics
console.log('10. Asset Statistics:');
const stats = client.assets.getAssetStats();
console.log(` Total items: ${stats.totalItems}`);
console.log(` Total vehicles: ${stats.totalVehicles}`);
console.log(` Total maps: ${stats.totalMaps}`);
console.log(' Items by category:');
Object.entries(stats.categoryCounts).forEach(([category, count]) => {
console.log(` - ${category}: ${count}`);
});
console.log();
// 11. Using the standalone unified asset manager
console.log('11. Standalone Unified Asset Manager:');
const standaloneItemName = assetManager.getItemName('Item_Heal_FirstAid_C');
const standaloneMapName = assetManager.getMapName('Desert');
console.log(` FirstAid name: ${standaloneItemName}`);
console.log(` Desert map name: ${standaloneMapName}`);
console.log();
console.log('=== Unified Assets Example Complete ===');
console.log('\n✨ Benefits of Unified Assets:');
console.log(' - Zero network requests (all data is local)');
console.log(' - Full TypeScript type safety');
console.log(' - Comprehensive PUBG asset coverage');
console.log(' - Enhanced search and filtering capabilities');
console.log(' - Automatic data categorization and metadata');
}
// Example usage (uncomment to run):
// unifiedAssetsExample().catch(console.error);
export { unifiedAssetsExample };