UNPKG

fivem-js

Version:

Javascript/Typescript wrapper for the FiveM natives

1,087 lines (1,086 loc) 49.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UIMenuItem = void 0; const __1 = require("../"); const __2 = require("../../"); const enums_1 = require("../../../enums"); const utils_1 = require("../../../utils"); class UIMenuItem { constructor(text, description) { this.id = utils_1.uuidv4(); this.enabled = true; this.activated = new utils_1.LiteEvent(); this.panelActivated = new utils_1.LiteEvent(); this.supportsDescription = true; this.supportsPanels = true; this.supportsLeftBadge = true; this.supportsRightBadge = true; this.supportsRightLabel = true; this._backColor = UIMenuItem.defaultBackColor; this._highlightedBackColor = UIMenuItem.defaultHighlightedBackColor; this._foreColor = UIMenuItem.defaultForeColor; this._highlightedForeColor = UIMenuItem.defaultHighlightedForeColor; this._leftBadge = enums_1.BadgeStyle.None; this._rightBadge = enums_1.BadgeStyle.None; this._panels = []; this.rectangle = new __2.Rectangle(new utils_1.Point(), new utils_1.Size(431, 38), this._backColor); this.text = new __2.Text('', new utils_1.Point(), 0.33, this._foreColor, enums_1.Font.ChaletLondon, enums_1.Alignment.Left); this.selectedSprite = new __2.Sprite('commonmenu', 'gradient_nav', new utils_1.Point(), new utils_1.Size(431, 38), 0, this._highlightedBackColor); this.badgeLeft = new __2.Sprite('', ''); this.badgeRight = new __2.Sprite('', ''); this.labelText = new __2.Text('', new utils_1.Point(), 0.35, this._foreColor, 0, enums_1.Alignment.Right); this.Text = text; this.Description = description; } static badgeToTextureDict(badge) { switch (badge) { case enums_1.BadgeStyle.Male: case enums_1.BadgeStyle.Female: case enums_1.BadgeStyle.AudioMute: case enums_1.BadgeStyle.AudioInactive: case enums_1.BadgeStyle.AudioVol1: case enums_1.BadgeStyle.AudioVol2: case enums_1.BadgeStyle.AudioVol3: return 'mpleaderboard'; case enums_1.BadgeStyle.InvArmWrestling: case enums_1.BadgeStyle.InvBasejump: case enums_1.BadgeStyle.InvMission: case enums_1.BadgeStyle.InvDarts: case enums_1.BadgeStyle.InvDeathmatch: case enums_1.BadgeStyle.InvDrug: case enums_1.BadgeStyle.InvCastle: case enums_1.BadgeStyle.InvGolf: case enums_1.BadgeStyle.InvBike: case enums_1.BadgeStyle.InvBoat: case enums_1.BadgeStyle.InvAnchor: case enums_1.BadgeStyle.InvCar: case enums_1.BadgeStyle.InvDollar: case enums_1.BadgeStyle.InvCoke: case enums_1.BadgeStyle.InvKey: case enums_1.BadgeStyle.InvData: case enums_1.BadgeStyle.InvHeli: case enums_1.BadgeStyle.InvHeorin: case enums_1.BadgeStyle.InvKeycard: case enums_1.BadgeStyle.InvMeth: case enums_1.BadgeStyle.InvBriefcase: case enums_1.BadgeStyle.InvLink: case enums_1.BadgeStyle.InvPerson: case enums_1.BadgeStyle.InvPlane: case enums_1.BadgeStyle.InvPlane2: case enums_1.BadgeStyle.InvQuestionmark: case enums_1.BadgeStyle.InvRemote: case enums_1.BadgeStyle.InvSafe: case enums_1.BadgeStyle.InvSteerWheel: case enums_1.BadgeStyle.InvWeapon: case enums_1.BadgeStyle.InvWeed: case enums_1.BadgeStyle.InvRaceFlagPlane: case enums_1.BadgeStyle.InvRaceFlagBicycle: case enums_1.BadgeStyle.InvRaceFlagBoatAnchor: case enums_1.BadgeStyle.InvRaceFlagPerson: case enums_1.BadgeStyle.InvRaceFlagCar: case enums_1.BadgeStyle.InvRaceFlagHelmet: case enums_1.BadgeStyle.InvShootingRange: case enums_1.BadgeStyle.InvSurvival: case enums_1.BadgeStyle.InvTeamDeathmatch: case enums_1.BadgeStyle.InvTennis: case enums_1.BadgeStyle.InvVehicleDeathmatch: return 'mpinventory'; case enums_1.BadgeStyle.Adversary: case enums_1.BadgeStyle.BaseJumping: case enums_1.BadgeStyle.Briefcase: case enums_1.BadgeStyle.MissionStar: case enums_1.BadgeStyle.Deathmatch: case enums_1.BadgeStyle.Castle: case enums_1.BadgeStyle.Trophy: case enums_1.BadgeStyle.RaceFlag: case enums_1.BadgeStyle.RaceFlagPlane: case enums_1.BadgeStyle.RaceFlagBicycle: case enums_1.BadgeStyle.RaceFlagPerson: case enums_1.BadgeStyle.RaceFlagCar: case enums_1.BadgeStyle.RaceFlagBoatAnchor: case enums_1.BadgeStyle.Rockstar: case enums_1.BadgeStyle.Stunt: case enums_1.BadgeStyle.StuntPremium: case enums_1.BadgeStyle.RaceFlagStuntJump: case enums_1.BadgeStyle.Shield: case enums_1.BadgeStyle.TeamDeathmatch: case enums_1.BadgeStyle.VehicleDeathmatch: return 'commonmenutu'; case enums_1.BadgeStyle.MpAmmoPickup: case enums_1.BadgeStyle.MpAmmo: case enums_1.BadgeStyle.MpCash: case enums_1.BadgeStyle.MpRp: case enums_1.BadgeStyle.MpSpectating: return 'mphud'; case enums_1.BadgeStyle.Sale: return 'mpshopsale'; case enums_1.BadgeStyle.GlobeWhite: case enums_1.BadgeStyle.GlobeRed: case enums_1.BadgeStyle.GlobeBlue: case enums_1.BadgeStyle.GlobeYellow: case enums_1.BadgeStyle.GlobeGreen: case enums_1.BadgeStyle.GlobeOrange: return 'mprankbadge'; case enums_1.BadgeStyle.CountryUsa: case enums_1.BadgeStyle.CountryUk: case enums_1.BadgeStyle.CountrySweden: case enums_1.BadgeStyle.CountryKorea: case enums_1.BadgeStyle.CountryJapan: case enums_1.BadgeStyle.CountryItaly: case enums_1.BadgeStyle.CountryGermany: case enums_1.BadgeStyle.CountryFrance: case enums_1.BadgeStyle.BrandAlbany: case enums_1.BadgeStyle.BrandAnnis: case enums_1.BadgeStyle.BrandBanshee: case enums_1.BadgeStyle.BrandBenefactor: case enums_1.BadgeStyle.BrandBf: case enums_1.BadgeStyle.BrandBollokan: case enums_1.BadgeStyle.BrandBravado: case enums_1.BadgeStyle.BrandBrute: case enums_1.BadgeStyle.BrandBuckingham: case enums_1.BadgeStyle.BrandCanis: case enums_1.BadgeStyle.BrandChariot: case enums_1.BadgeStyle.BrandCheval: case enums_1.BadgeStyle.BrandClassique: case enums_1.BadgeStyle.BrandCoil: case enums_1.BadgeStyle.BrandDeclasse: case enums_1.BadgeStyle.BrandDewbauchee: case enums_1.BadgeStyle.BrandDilettante: case enums_1.BadgeStyle.BrandDinka: case enums_1.BadgeStyle.BrandDundreary: case enums_1.BadgeStyle.BrandEmporer: case enums_1.BadgeStyle.BrandEnus: case enums_1.BadgeStyle.BrandFathom: case enums_1.BadgeStyle.BrandGalivanter: case enums_1.BadgeStyle.BrandGrotti: case enums_1.BadgeStyle.BrandHijak: case enums_1.BadgeStyle.BrandHvy: case enums_1.BadgeStyle.BrandImponte: case enums_1.BadgeStyle.BrandInvetero: case enums_1.BadgeStyle.BrandJacksheepe: case enums_1.BadgeStyle.BrandJobuilt: case enums_1.BadgeStyle.BrandKarin: case enums_1.BadgeStyle.BrandLampadati: case enums_1.BadgeStyle.BrandMaibatsu: case enums_1.BadgeStyle.BrandMammoth: case enums_1.BadgeStyle.BrandMtl: case enums_1.BadgeStyle.BrandNagasaki: case enums_1.BadgeStyle.BrandObey: case enums_1.BadgeStyle.BrandOcelot: case enums_1.BadgeStyle.BrandOverflod: case enums_1.BadgeStyle.BrandPed: case enums_1.BadgeStyle.BrandPegassi: case enums_1.BadgeStyle.BrandPfister: case enums_1.BadgeStyle.BrandPrincipe: case enums_1.BadgeStyle.BrandProgen: case enums_1.BadgeStyle.BrandSchyster: case enums_1.BadgeStyle.BrandShitzu: case enums_1.BadgeStyle.BrandSpeedophile: case enums_1.BadgeStyle.BrandStanley: case enums_1.BadgeStyle.BrandTruffade: case enums_1.BadgeStyle.BrandUbermacht: case enums_1.BadgeStyle.BrandVapid: case enums_1.BadgeStyle.BrandVulcar: case enums_1.BadgeStyle.BrandWeeny: case enums_1.BadgeStyle.BrandWestern: case enums_1.BadgeStyle.BrandWesternmotorcycle: case enums_1.BadgeStyle.BrandWillard: case enums_1.BadgeStyle.BrandZirconium: return 'mpcarhud'; case enums_1.BadgeStyle.BrandGrotti2: case enums_1.BadgeStyle.BrandLcc: case enums_1.BadgeStyle.BrandProgen2: case enums_1.BadgeStyle.BrandRune: return 'mpcarhud2'; case enums_1.BadgeStyle.Info: return 'shared'; default: return 'commonmenu'; } } static getBadgeSpriteWidthOffset(sprite) { return (40 - sprite.size.width) / 2; } static getBadgeSpriteHeightOffset(sprite) { return (40 - sprite.size.height) / 2; } static getBadgeSize(badge) { switch (badge) { case enums_1.BadgeStyle.Cash: case enums_1.BadgeStyle.Coke: case enums_1.BadgeStyle.Crown: case enums_1.BadgeStyle.Heroin: case enums_1.BadgeStyle.Meth: case enums_1.BadgeStyle.Weed: case enums_1.BadgeStyle.Adversary: case enums_1.BadgeStyle.BaseJumping: case enums_1.BadgeStyle.Briefcase: case enums_1.BadgeStyle.MissionStar: case enums_1.BadgeStyle.Deathmatch: case enums_1.BadgeStyle.Castle: case enums_1.BadgeStyle.Trophy: case enums_1.BadgeStyle.RaceFlag: case enums_1.BadgeStyle.RaceFlagPlane: case enums_1.BadgeStyle.RaceFlagBicycle: case enums_1.BadgeStyle.RaceFlagPerson: case enums_1.BadgeStyle.RaceFlagCar: case enums_1.BadgeStyle.RaceFlagBoatAnchor: case enums_1.BadgeStyle.Rockstar: case enums_1.BadgeStyle.Stunt: case enums_1.BadgeStyle.StuntPremium: case enums_1.BadgeStyle.RaceFlagStuntJump: case enums_1.BadgeStyle.Shield: case enums_1.BadgeStyle.TeamDeathmatch: case enums_1.BadgeStyle.VehicleDeathmatch: case enums_1.BadgeStyle.AudioMute: case enums_1.BadgeStyle.AudioInactive: case enums_1.BadgeStyle.AudioVol1: case enums_1.BadgeStyle.AudioVol2: case enums_1.BadgeStyle.AudioVol3: case enums_1.BadgeStyle.BrandAlbany: case enums_1.BadgeStyle.BrandAnnis: case enums_1.BadgeStyle.BrandBanshee: case enums_1.BadgeStyle.BrandBenefactor: case enums_1.BadgeStyle.BrandBf: case enums_1.BadgeStyle.BrandBollokan: case enums_1.BadgeStyle.BrandBravado: case enums_1.BadgeStyle.BrandBrute: case enums_1.BadgeStyle.BrandBuckingham: case enums_1.BadgeStyle.BrandCanis: case enums_1.BadgeStyle.BrandChariot: case enums_1.BadgeStyle.BrandCheval: case enums_1.BadgeStyle.BrandClassique: case enums_1.BadgeStyle.BrandCoil: case enums_1.BadgeStyle.BrandDeclasse: case enums_1.BadgeStyle.BrandDewbauchee: case enums_1.BadgeStyle.BrandDilettante: case enums_1.BadgeStyle.BrandDinka: case enums_1.BadgeStyle.BrandDundreary: case enums_1.BadgeStyle.BrandEmporer: case enums_1.BadgeStyle.BrandEnus: case enums_1.BadgeStyle.BrandFathom: case enums_1.BadgeStyle.BrandGalivanter: case enums_1.BadgeStyle.BrandGrotti: case enums_1.BadgeStyle.BrandHijak: case enums_1.BadgeStyle.BrandHvy: case enums_1.BadgeStyle.BrandImponte: case enums_1.BadgeStyle.BrandInvetero: case enums_1.BadgeStyle.BrandJacksheepe: case enums_1.BadgeStyle.BrandJobuilt: case enums_1.BadgeStyle.BrandKarin: case enums_1.BadgeStyle.BrandLampadati: case enums_1.BadgeStyle.BrandMaibatsu: case enums_1.BadgeStyle.BrandMammoth: case enums_1.BadgeStyle.BrandMtl: case enums_1.BadgeStyle.BrandNagasaki: case enums_1.BadgeStyle.BrandObey: case enums_1.BadgeStyle.BrandOcelot: case enums_1.BadgeStyle.BrandOverflod: case enums_1.BadgeStyle.BrandPed: case enums_1.BadgeStyle.BrandPegassi: case enums_1.BadgeStyle.BrandPfister: case enums_1.BadgeStyle.BrandPrincipe: case enums_1.BadgeStyle.BrandProgen: case enums_1.BadgeStyle.BrandSchyster: case enums_1.BadgeStyle.BrandShitzu: case enums_1.BadgeStyle.BrandSpeedophile: case enums_1.BadgeStyle.BrandStanley: case enums_1.BadgeStyle.BrandTruffade: case enums_1.BadgeStyle.BrandUbermacht: case enums_1.BadgeStyle.BrandVapid: case enums_1.BadgeStyle.BrandVulcar: case enums_1.BadgeStyle.BrandWeeny: case enums_1.BadgeStyle.BrandWestern: case enums_1.BadgeStyle.BrandWesternmotorcycle: case enums_1.BadgeStyle.BrandWillard: case enums_1.BadgeStyle.BrandZirconium: case enums_1.BadgeStyle.BrandGrotti2: case enums_1.BadgeStyle.BrandLcc: case enums_1.BadgeStyle.BrandProgen2: case enums_1.BadgeStyle.BrandRune: case enums_1.BadgeStyle.CountryUsa: case enums_1.BadgeStyle.CountryUk: case enums_1.BadgeStyle.CountrySweden: case enums_1.BadgeStyle.CountryKorea: case enums_1.BadgeStyle.CountryJapan: case enums_1.BadgeStyle.CountryItaly: case enums_1.BadgeStyle.CountryGermany: case enums_1.BadgeStyle.CountryFrance: return new utils_1.Size(30, 30); case enums_1.BadgeStyle.MedalSilver: case enums_1.BadgeStyle.MpAmmoPickup: case enums_1.BadgeStyle.MpAmmo: case enums_1.BadgeStyle.MpCash: case enums_1.BadgeStyle.MpRp: case enums_1.BadgeStyle.GlobeWhite: case enums_1.BadgeStyle.GlobeBlue: case enums_1.BadgeStyle.GlobeGreen: case enums_1.BadgeStyle.GlobeOrange: case enums_1.BadgeStyle.GlobeRed: case enums_1.BadgeStyle.GlobeYellow: case enums_1.BadgeStyle.InvArmWrestling: case enums_1.BadgeStyle.InvBasejump: case enums_1.BadgeStyle.InvMission: case enums_1.BadgeStyle.InvDarts: case enums_1.BadgeStyle.InvDeathmatch: case enums_1.BadgeStyle.InvDrug: case enums_1.BadgeStyle.InvCastle: case enums_1.BadgeStyle.InvGolf: case enums_1.BadgeStyle.InvBike: case enums_1.BadgeStyle.InvBoat: case enums_1.BadgeStyle.InvAnchor: case enums_1.BadgeStyle.InvCar: case enums_1.BadgeStyle.InvDollar: case enums_1.BadgeStyle.InvCoke: case enums_1.BadgeStyle.InvKey: case enums_1.BadgeStyle.InvData: case enums_1.BadgeStyle.InvHeli: case enums_1.BadgeStyle.InvHeorin: case enums_1.BadgeStyle.InvKeycard: case enums_1.BadgeStyle.InvMeth: case enums_1.BadgeStyle.InvBriefcase: case enums_1.BadgeStyle.InvLink: case enums_1.BadgeStyle.InvPerson: case enums_1.BadgeStyle.InvPlane: case enums_1.BadgeStyle.InvPlane2: case enums_1.BadgeStyle.InvQuestionmark: case enums_1.BadgeStyle.InvRemote: case enums_1.BadgeStyle.InvSafe: case enums_1.BadgeStyle.InvSteerWheel: case enums_1.BadgeStyle.InvWeapon: case enums_1.BadgeStyle.InvWeed: case enums_1.BadgeStyle.InvRaceFlagPlane: case enums_1.BadgeStyle.InvRaceFlagBicycle: case enums_1.BadgeStyle.InvRaceFlagBoatAnchor: case enums_1.BadgeStyle.InvRaceFlagPerson: case enums_1.BadgeStyle.InvRaceFlagCar: case enums_1.BadgeStyle.InvRaceFlagHelmet: case enums_1.BadgeStyle.InvShootingRange: case enums_1.BadgeStyle.InvSurvival: case enums_1.BadgeStyle.InvTeamDeathmatch: case enums_1.BadgeStyle.InvTennis: case enums_1.BadgeStyle.InvVehicleDeathmatch: return new utils_1.Size(25, 25); default: return new utils_1.Size(40, 40); } } get Text() { return this.text.caption; } set Text(value) { this.text.caption = value ? value.trim() : ''; } get Description() { if (!this.supportsDescription) { return null; } return this._description; } set Description(value) { if (!this.supportsDescription) { throw new Error('This item does not support description'); } this._description = value ? value.trim() : ''; this.formatDescription(); } get FormattedDescription() { return this._formattedDescription; } get BackColor() { return this._backColor; } set BackColor(value) { value = value || this._backColor; this._backColor = value; this.rectangle.color = value; } get HighlightedBackColor() { return this._highlightedBackColor; } set HighlightedBackColor(value) { value = value || this._highlightedBackColor; this._highlightedBackColor = value; this.selectedSprite.color = value; } get ForeColor() { return this._foreColor; } set ForeColor(value) { value = value || this._foreColor; this._foreColor = value; this.text.color = value; } get HighlightedForeColor() { return this._highlightedForeColor; } set HighlightedForeColor(value) { this._highlightedForeColor = value || this._highlightedForeColor; } get LeftBadge() { if (!this.supportsLeftBadge) { return null; } return this._leftBadge; } set LeftBadge(value) { if (!this.supportsLeftBadge) { throw new Error('This item does not support left badge'); } value = Number(value); this._leftBadge = value; this.badgeLeft.TextureDict = UIMenuItem.badgeToTextureDict(value); this.badgeLeft.size = UIMenuItem.getBadgeSize(value); } get RightBadge() { if (!this.supportsRightBadge) { return null; } return this._rightBadge; } set RightBadge(value) { if (!this.supportsRightBadge) { throw new Error('This item does not support right badge'); } value = Number(value); this._rightBadge = value; this.badgeRight.TextureDict = UIMenuItem.badgeToTextureDict(value); this.badgeRight.size = UIMenuItem.getBadgeSize(value); } get RightLabel() { if (!this.supportsRightLabel) { return null; } return this.labelText.caption; } set RightLabel(value) { if (!this.supportsRightLabel) { throw new Error('This item does not support right label'); } this.labelText.caption = value ? value.trim() : ''; } get IsMouseInBounds() { return this.parent.isMouseInBounds(this.rectangle.pos, this.rectangle.size); } get Panels() { if (!this.supportsPanels) { return null; } return this._panels; } set Panels(value) { if (!this.supportsPanels) { throw new Error('This item does not support panels'); } this._panels = value; } addPanel(panel) { if (!this.supportsPanels) { throw new Error('This item does not support panels'); } const panels = Array.isArray(panel) ? panel : [panel]; panels.forEach(p => { p.ParentItem = this; }); this._panels.push(...panels); } findPanelIndex(panel) { if (!this.supportsPanels) { throw new Error('This item does not support panels'); } const index = this._panels.findIndex(p => p.id === panel.id); return index !== -1 ? index : null; } removePanel(panelOrIndex) { if (!this.supportsPanels) { throw new Error('This item does not support panels'); } if (typeof panelOrIndex === 'number') { this._panels = this._panels.filter((p, index) => index !== panelOrIndex); } else { this._panels = this._panels.filter(p => p.id !== panelOrIndex.id); } } addEvent(event, ...args) { this._event = { event, args }; } fireEvent() { if (this._event) { TriggerEvent(this._event.event, ...this._event.args); } } formatDescription() { if (!this.parent) { return; } let input = this._description; if (input.length > 99) { input = input.slice(0, 99); } const maxPixelsPerLine = 425 + this.parent.WidthOffset; let aggregatePixels = 0; let output = ''; const words = input.split(' '); const spaceWidth = utils_1.measureString(' ', enums_1.Font.ChaletLondon, 0.33, __1.Menu.screenWidth); for (const word of words) { const offset = utils_1.measureString(word, enums_1.Font.ChaletLondon, 0.33, __1.Menu.screenWidth); aggregatePixels += offset; if (aggregatePixels > maxPixelsPerLine) { output = `${output} \n${word} `; aggregatePixels = offset + spaceWidth; } else { output = `${output}${word} `; aggregatePixels += spaceWidth; } } this._formattedDescription = output; } badgeToTextureName(badge) { const selected = this.selected; switch (badge) { case enums_1.BadgeStyle.None: return ''; case enums_1.BadgeStyle.Ammo: return selected ? 'shop_ammo_icon_b' : 'shop_ammo_icon_a'; case enums_1.BadgeStyle.Armor: return selected ? 'shop_armour_icon_b' : 'shop_armour_icon_a'; case enums_1.BadgeStyle.Barber: return selected ? 'shop_barber_icon_b' : 'shop_barber_icon_a'; case enums_1.BadgeStyle.Bike: return selected ? 'shop_garage_bike_icon_b' : 'shop_garage_bike_icon_a'; case enums_1.BadgeStyle.Car: return selected ? 'shop_garage_icon_b' : 'shop_garage_icon_a'; case enums_1.BadgeStyle.Cash: return 'mp_specitem_cash'; case enums_1.BadgeStyle.Clothing: return selected ? 'shop_clothing_icon_b' : 'shop_clothing_icon_a'; case enums_1.BadgeStyle.Coke: return 'mp_specitem_coke'; case enums_1.BadgeStyle.Crown: return 'mp_hostcrown'; case enums_1.BadgeStyle.Franklin: return selected ? 'shop_franklin_icon_b' : 'shop_franklin_icon_a'; case enums_1.BadgeStyle.Gun: return selected ? 'shop_gunclub_icon_b' : 'shop_gunclub_icon_a'; case enums_1.BadgeStyle.HealthHeart: return selected ? 'shop_health_icon_b' : 'shop_health_icon_a'; case enums_1.BadgeStyle.Heroin: return 'mp_specitem_heroin'; case enums_1.BadgeStyle.Lock: return 'shop_lock'; case enums_1.BadgeStyle.MakeupBrush: return selected ? 'shop_makeup_icon_b' : 'shop_makeup_icon_a'; case enums_1.BadgeStyle.Mask: return selected ? 'shop_mask_icon_b' : 'shop_mask_icon_a'; case enums_1.BadgeStyle.MedalBronze: return 'mp_medal_bronze'; case enums_1.BadgeStyle.MedalGold: return 'mp_medal_gold'; case enums_1.BadgeStyle.MedalSilver: return 'mp_medal_silver'; case enums_1.BadgeStyle.Meth: return 'mp_specitem_meth'; case enums_1.BadgeStyle.Michael: return selected ? 'shop_michael_icon_b' : 'shop_michael_icon_a'; case enums_1.BadgeStyle.Star: return 'shop_new_star'; case enums_1.BadgeStyle.Tattoo: return selected ? 'shop_tattoos_icon_b' : 'shop_tattoos_icon_a'; case enums_1.BadgeStyle.Tick: return 'shop_tick_icon'; case enums_1.BadgeStyle.Trevor: return selected ? 'shop_trevor_icon_b' : 'shop_trevor_icon_a'; case enums_1.BadgeStyle.Warning: return 'mp_alerttriangle'; case enums_1.BadgeStyle.Weed: return 'mp_specitem_weed'; case enums_1.BadgeStyle.Male: return 'leaderboard_male_icon'; case enums_1.BadgeStyle.Female: return 'leaderboard_female_icon'; case enums_1.BadgeStyle.LockArena: return 'shop_lock_arena'; case enums_1.BadgeStyle.Adversary: return 'adversary'; case enums_1.BadgeStyle.BaseJumping: return 'base_jumping'; case enums_1.BadgeStyle.Briefcase: return 'capture_the_flag'; case enums_1.BadgeStyle.MissionStar: return 'custom_mission'; case enums_1.BadgeStyle.Deathmatch: return 'deathmatch'; case enums_1.BadgeStyle.Castle: return 'gang_attack'; case enums_1.BadgeStyle.Trophy: return 'last_team_standing'; case enums_1.BadgeStyle.RaceFlag: return 'race'; case enums_1.BadgeStyle.RaceFlagPlane: return 'race_air'; case enums_1.BadgeStyle.RaceFlagBicycle: return 'race_bicycle'; case enums_1.BadgeStyle.RaceFlagPerson: return 'race_foot'; case enums_1.BadgeStyle.RaceFlagCar: return 'race_land'; case enums_1.BadgeStyle.RaceFlagBoatAnchor: return 'race_water'; case enums_1.BadgeStyle.Rockstar: return 'rockstar'; case enums_1.BadgeStyle.Stunt: return 'stunt'; case enums_1.BadgeStyle.StuntPremium: return 'stunt_premium'; case enums_1.BadgeStyle.RaceFlagStuntJump: return 'stunt_race'; case enums_1.BadgeStyle.Shield: return 'survival'; case enums_1.BadgeStyle.TeamDeathmatch: return 'team_deathmatch'; case enums_1.BadgeStyle.VehicleDeathmatch: return 'vehicle_deathmatch'; case enums_1.BadgeStyle.MpAmmoPickup: return 'ammo_pickup'; case enums_1.BadgeStyle.MpAmmo: return 'mp_anim_ammo'; case enums_1.BadgeStyle.MpCash: return 'mp_anim_cash'; case enums_1.BadgeStyle.MpRp: return 'mp_anim_rp'; case enums_1.BadgeStyle.MpSpectating: return 'spectating'; case enums_1.BadgeStyle.Sale: return 'saleicon'; case enums_1.BadgeStyle.GlobeWhite: case enums_1.BadgeStyle.GlobeRed: case enums_1.BadgeStyle.GlobeBlue: case enums_1.BadgeStyle.GlobeYellow: case enums_1.BadgeStyle.GlobeGreen: case enums_1.BadgeStyle.GlobeOrange: return 'globe'; case enums_1.BadgeStyle.InvArmWrestling: return 'arm_wrestling'; case enums_1.BadgeStyle.InvBasejump: return 'basejump'; case enums_1.BadgeStyle.InvMission: return 'custom_mission'; case enums_1.BadgeStyle.InvDarts: return 'darts'; case enums_1.BadgeStyle.InvDeathmatch: return 'deathmatch'; case enums_1.BadgeStyle.InvDrug: return 'drug_trafficking'; case enums_1.BadgeStyle.InvCastle: return 'gang_attack'; case enums_1.BadgeStyle.InvGolf: return 'golf'; case enums_1.BadgeStyle.InvBike: return 'mp_specitem_bike'; case enums_1.BadgeStyle.InvBoat: return 'mp_specitem_boat'; case enums_1.BadgeStyle.InvAnchor: return 'mp_specitem_boatpickup'; case enums_1.BadgeStyle.InvCar: return 'mp_specitem_car'; case enums_1.BadgeStyle.InvDollar: return 'mp_specitem_cash'; case enums_1.BadgeStyle.InvCoke: return 'mp_specitem_coke'; case enums_1.BadgeStyle.InvKey: return 'mp_specitem_cuffkeys'; case enums_1.BadgeStyle.InvData: return 'mp_specitem_data'; case enums_1.BadgeStyle.InvHeli: return 'mp_specitem_heli'; case enums_1.BadgeStyle.InvHeorin: return 'mp_specitem_heroin'; case enums_1.BadgeStyle.InvKeycard: return 'mp_specitem_keycard'; case enums_1.BadgeStyle.InvMeth: return 'mp_specitem_meth'; case enums_1.BadgeStyle.InvBriefcase: return 'mp_specitem_package'; case enums_1.BadgeStyle.InvLink: return 'mp_specitem_partnericon'; case enums_1.BadgeStyle.InvPerson: return 'mp_specitem_ped'; case enums_1.BadgeStyle.InvPlane: return 'mp_specitem_plane'; case enums_1.BadgeStyle.InvPlane2: return 'mp_specitem_plane2'; case enums_1.BadgeStyle.InvQuestionmark: return 'mp_specitem_randomobject'; case enums_1.BadgeStyle.InvRemote: return 'mp_specitem_remote'; case enums_1.BadgeStyle.InvSafe: return 'mp_specitem_safe'; case enums_1.BadgeStyle.InvSteerWheel: return 'mp_specitem_steer_wheel'; case enums_1.BadgeStyle.InvWeapon: return 'mp_specitem_weapons'; case enums_1.BadgeStyle.InvWeed: return 'mp_specitem_weed'; case enums_1.BadgeStyle.InvRaceFlagPlane: return 'race_air'; case enums_1.BadgeStyle.InvRaceFlagBicycle: return 'race_bike'; case enums_1.BadgeStyle.InvRaceFlagBoatAnchor: return 'race_boat'; case enums_1.BadgeStyle.InvRaceFlagPerson: return 'race_foot'; case enums_1.BadgeStyle.InvRaceFlagCar: return 'race_land'; case enums_1.BadgeStyle.InvRaceFlagHelmet: return 'race_offroad'; case enums_1.BadgeStyle.InvShootingRange: return 'shooting_range'; case enums_1.BadgeStyle.InvSurvival: return 'survival'; case enums_1.BadgeStyle.InvTeamDeathmatch: return 'team_deathmatch'; case enums_1.BadgeStyle.InvTennis: return 'tennis'; case enums_1.BadgeStyle.InvVehicleDeathmatch: return 'vehicle_deathmatch'; case enums_1.BadgeStyle.AudioMute: return 'leaderboard_audio_mute'; case enums_1.BadgeStyle.AudioInactive: return 'leaderboard_audio_inactive'; case enums_1.BadgeStyle.AudioVol1: return 'leaderboard_audio_1'; case enums_1.BadgeStyle.AudioVol2: return 'leaderboard_audio_2'; case enums_1.BadgeStyle.AudioVol3: return 'leaderboard_audio_3'; case enums_1.BadgeStyle.CountryUsa: return 'vehicle_card_icons_flag_usa'; case enums_1.BadgeStyle.CountryUk: return 'vehicle_card_icons_flag_uk'; case enums_1.BadgeStyle.CountrySweden: return 'vehicle_card_icons_flag_sweden'; case enums_1.BadgeStyle.CountryKorea: return 'vehicle_card_icons_flag_korea'; case enums_1.BadgeStyle.CountryJapan: return 'vehicle_card_icons_flag_japan'; case enums_1.BadgeStyle.CountryItaly: return 'vehicle_card_icons_flag_italy'; case enums_1.BadgeStyle.CountryGermany: return 'vehicle_card_icons_flag_germany'; case enums_1.BadgeStyle.CountryFrance: return 'vehicle_card_icons_flag_france'; case enums_1.BadgeStyle.BrandAlbany: return 'albany'; case enums_1.BadgeStyle.BrandAnnis: return 'annis'; case enums_1.BadgeStyle.BrandBanshee: return 'banshee'; case enums_1.BadgeStyle.BrandBenefactor: return 'benefactor'; case enums_1.BadgeStyle.BrandBf: return 'bf'; case enums_1.BadgeStyle.BrandBollokan: return 'bollokan'; case enums_1.BadgeStyle.BrandBravado: return 'bravado'; case enums_1.BadgeStyle.BrandBrute: return 'brute'; case enums_1.BadgeStyle.BrandBuckingham: return 'buckingham'; case enums_1.BadgeStyle.BrandCanis: return 'canis'; case enums_1.BadgeStyle.BrandChariot: return 'chariot'; case enums_1.BadgeStyle.BrandCheval: return 'cheval'; case enums_1.BadgeStyle.BrandClassique: return 'classique'; case enums_1.BadgeStyle.BrandCoil: return 'coil'; case enums_1.BadgeStyle.BrandDeclasse: return 'declasse'; case enums_1.BadgeStyle.BrandDewbauchee: return 'dewbauchee'; case enums_1.BadgeStyle.BrandDilettante: return 'dilettante'; case enums_1.BadgeStyle.BrandDinka: return 'dinka'; case enums_1.BadgeStyle.BrandDundreary: return 'dundreary'; case enums_1.BadgeStyle.BrandEmporer: return 'emporer'; case enums_1.BadgeStyle.BrandEnus: return 'enus'; case enums_1.BadgeStyle.BrandFathom: return 'fathom'; case enums_1.BadgeStyle.BrandGalivanter: return 'galivanter'; case enums_1.BadgeStyle.BrandGrotti: return 'grotti'; case enums_1.BadgeStyle.BrandHijak: return 'hijak'; case enums_1.BadgeStyle.BrandHvy: return 'hvy'; case enums_1.BadgeStyle.BrandImponte: return 'imponte'; case enums_1.BadgeStyle.BrandInvetero: return 'invetero'; case enums_1.BadgeStyle.BrandJacksheepe: return 'jacksheepe'; case enums_1.BadgeStyle.BrandJobuilt: return 'jobuilt'; case enums_1.BadgeStyle.BrandKarin: return 'karin'; case enums_1.BadgeStyle.BrandLampadati: return 'lampadati'; case enums_1.BadgeStyle.BrandMaibatsu: return 'maibatsu'; case enums_1.BadgeStyle.BrandMammoth: return 'mammoth'; case enums_1.BadgeStyle.BrandMtl: return 'mtl'; case enums_1.BadgeStyle.BrandNagasaki: return 'nagasaki'; case enums_1.BadgeStyle.BrandObey: return 'obey'; case enums_1.BadgeStyle.BrandOcelot: return 'ocelot'; case enums_1.BadgeStyle.BrandOverflod: return 'overflod'; case enums_1.BadgeStyle.BrandPed: return 'ped'; case enums_1.BadgeStyle.BrandPegassi: return 'pegassi'; case enums_1.BadgeStyle.BrandPfister: return 'pfister'; case enums_1.BadgeStyle.BrandPrincipe: return 'principe'; case enums_1.BadgeStyle.BrandProgen: return 'progen'; case enums_1.BadgeStyle.BrandSchyster: return 'schyster'; case enums_1.BadgeStyle.BrandShitzu: return 'shitzu'; case enums_1.BadgeStyle.BrandSpeedophile: return 'speedophile'; case enums_1.BadgeStyle.BrandStanley: return 'stanley'; case enums_1.BadgeStyle.BrandTruffade: return 'truffade'; case enums_1.BadgeStyle.BrandUbermacht: return 'ubermacht'; case enums_1.BadgeStyle.BrandVapid: return 'vapid'; case enums_1.BadgeStyle.BrandVulcar: return 'vulcar'; case enums_1.BadgeStyle.BrandWeeny: return 'weeny'; case enums_1.BadgeStyle.BrandWestern: return 'western'; case enums_1.BadgeStyle.BrandWesternmotorcycle: return 'westernmotorcycle'; case enums_1.BadgeStyle.BrandWillard: return 'willard'; case enums_1.BadgeStyle.BrandZirconium: return 'zirconium'; case enums_1.BadgeStyle.BrandGrotti2: return 'grotti_2'; case enums_1.BadgeStyle.BrandLcc: return 'lcc'; case enums_1.BadgeStyle.BrandProgen2: return 'progen'; case enums_1.BadgeStyle.BrandRune: return 'rune'; case enums_1.BadgeStyle.Info: return 'info_icon_32'; default: break; } } badgeToColor(badge) { const selected = this.selected; const enabled = this.enabled; switch (badge) { case enums_1.BadgeStyle.Crown: case enums_1.BadgeStyle.Tick: case enums_1.BadgeStyle.Male: case enums_1.BadgeStyle.Female: case enums_1.BadgeStyle.Lock: case enums_1.BadgeStyle.LockArena: case enums_1.BadgeStyle.Adversary: case enums_1.BadgeStyle.BaseJumping: case enums_1.BadgeStyle.Briefcase: case enums_1.BadgeStyle.MissionStar: case enums_1.BadgeStyle.Deathmatch: case enums_1.BadgeStyle.Castle: case enums_1.BadgeStyle.Trophy: case enums_1.BadgeStyle.RaceFlag: case enums_1.BadgeStyle.RaceFlagPlane: case enums_1.BadgeStyle.RaceFlagBicycle: case enums_1.BadgeStyle.RaceFlagPerson: case enums_1.BadgeStyle.RaceFlagCar: case enums_1.BadgeStyle.RaceFlagBoatAnchor: case enums_1.BadgeStyle.Rockstar: case enums_1.BadgeStyle.Stunt: case enums_1.BadgeStyle.StuntPremium: case enums_1.BadgeStyle.RaceFlagStuntJump: case enums_1.BadgeStyle.Shield: case enums_1.BadgeStyle.TeamDeathmatch: case enums_1.BadgeStyle.VehicleDeathmatch: case enums_1.BadgeStyle.MpSpectating: case enums_1.BadgeStyle.GlobeWhite: case enums_1.BadgeStyle.AudioMute: case enums_1.BadgeStyle.AudioInactive: case enums_1.BadgeStyle.AudioVol1: case enums_1.BadgeStyle.AudioVol2: case enums_1.BadgeStyle.AudioVol3: case enums_1.BadgeStyle.BrandAlbany: case enums_1.BadgeStyle.BrandAnnis: case enums_1.BadgeStyle.BrandBanshee: case enums_1.BadgeStyle.BrandBenefactor: case enums_1.BadgeStyle.BrandBf: case enums_1.BadgeStyle.BrandBollokan: case enums_1.BadgeStyle.BrandBravado: case enums_1.BadgeStyle.BrandBrute: case enums_1.BadgeStyle.BrandBuckingham: case enums_1.BadgeStyle.BrandCanis: case enums_1.BadgeStyle.BrandChariot: case enums_1.BadgeStyle.BrandCheval: case enums_1.BadgeStyle.BrandClassique: case enums_1.BadgeStyle.BrandCoil: case enums_1.BadgeStyle.BrandDeclasse: case enums_1.BadgeStyle.BrandDewbauchee: case enums_1.BadgeStyle.BrandDilettante: case enums_1.BadgeStyle.BrandDinka: case enums_1.BadgeStyle.BrandDundreary: case enums_1.BadgeStyle.BrandEmporer: case enums_1.BadgeStyle.BrandEnus: case enums_1.BadgeStyle.BrandFathom: case enums_1.BadgeStyle.BrandGalivanter: case enums_1.BadgeStyle.BrandGrotti: case enums_1.BadgeStyle.BrandHijak: case enums_1.BadgeStyle.BrandHvy: case enums_1.BadgeStyle.BrandImponte: case enums_1.BadgeStyle.BrandInvetero: case enums_1.BadgeStyle.BrandJacksheepe: case enums_1.BadgeStyle.BrandJobuilt: case enums_1.BadgeStyle.BrandKarin: case enums_1.BadgeStyle.BrandLampadati: case enums_1.BadgeStyle.BrandMaibatsu: case enums_1.BadgeStyle.BrandMammoth: case enums_1.BadgeStyle.BrandMtl: case enums_1.BadgeStyle.BrandNagasaki: case enums_1.BadgeStyle.BrandObey: case enums_1.BadgeStyle.BrandOcelot: case enums_1.BadgeStyle.BrandOverflod: case enums_1.BadgeStyle.BrandPed: case enums_1.BadgeStyle.BrandPegassi: case enums_1.BadgeStyle.BrandPfister: case enums_1.BadgeStyle.BrandPrincipe: case enums_1.BadgeStyle.BrandProgen: case enums_1.BadgeStyle.BrandSchyster: case enums_1.BadgeStyle.BrandShitzu: case enums_1.BadgeStyle.BrandSpeedophile: case enums_1.BadgeStyle.BrandStanley: case enums_1.BadgeStyle.BrandTruffade: case enums_1.BadgeStyle.BrandUbermacht: case enums_1.BadgeStyle.BrandVapid: case enums_1.BadgeStyle.BrandVulcar: case enums_1.BadgeStyle.BrandWeeny: case enums_1.BadgeStyle.BrandWestern: case enums_1.BadgeStyle.BrandWesternmotorcycle: case enums_1.BadgeStyle.BrandWillard: case enums_1.BadgeStyle.BrandZirconium: case enums_1.BadgeStyle.BrandGrotti2: case enums_1.BadgeStyle.BrandLcc: case enums_1.BadgeStyle.BrandProgen2: case enums_1.BadgeStyle.BrandRune: return selected ? enabled ? utils_1.Color.black : utils_1.Color.fromRgb(50, 50, 50) : enabled ? utils_1.Color.white : utils_1.Color.fromRgb(109, 109, 109); case enums_1.BadgeStyle.GlobeBlue: return enabled ? utils_1.Color.fromRgb(10, 103, 166) : utils_1.Color.fromRgb(11, 62, 117); case enums_1.BadgeStyle.GlobeGreen: return enabled ? utils_1.Color.fromRgb(10, 166, 85) : utils_1.Color.fromRgb(5, 71, 22); case enums_1.BadgeStyle.GlobeOrange: return enabled ? utils_1.Color.fromRgb(232, 145, 14) : utils_1.Color.fromRgb(133, 77, 12); case enums_1.BadgeStyle.GlobeRed: return enabled ? utils_1.Color.fromRgb(207, 43, 31) : utils_1.Color.fromRgb(110, 7, 7); case enums_1.BadgeStyle.GlobeYellow: return enabled ? utils_1.Color.fromRgb(232, 207, 14) : utils_1.Color.fromRgb(131, 133, 12); default: return enabled ? utils_1.Color.white : utils_1.Color.fromRgb(109, 109, 109); } } setVerticalPosition(y) { const yOffset = y + this.offset.Y; this.rectangle.pos.Y = yOffset + 144; this.selectedSprite.pos.Y = yOffset + 144; this.text.pos.Y = yOffset + 147; this.badgeLeft.pos.Y = yOffset + 142 + UIMenuItem.getBadgeSpriteHeightOffset(this.badgeLeft); this.badgeRight.pos.Y = yOffset + 142 + UIMenuItem.getBadgeSpriteHeightOffset(this.badgeRight); this.labelText.pos.Y = yOffset + 148; } draw() { if (this.selected) { this.selectedSprite.size.width = 431 + this.parent.WidthOffset; this.selectedSprite.pos.X = this.offset.X; this.selectedSprite.draw(__1.Menu.screenResolution); } else { this.rectangle.size.width = 431 + this.parent.WidthOffset; this.rectangle.pos.X = this.offset.X; this.rectangle.color = this.hovered ? UIMenuItem.defaultHoveredBackColor : this._backColor; this.rectangle.draw(undefined, __1.Menu.screenResolution); } this.text.color = this.enabled ? this.selected ? this._highlightedForeColor : this.hovered ? UIMenuItem.defaultHoveredForeColor : this._foreColor : new utils_1.Color(255, 163, 159, 148); if (this.supportsLeftBadge && this._leftBadge !== enums_1.BadgeStyle.None) { const widthOffset = UIMenuItem.getBadgeSpriteWidthOffset(this.badgeLeft); this.badgeLeft.pos.X = this.offset.X + widthOffset; this.text.pos.X = this.offset.X + 40; this.badgeLeft.textureName = this.badgeToTextureName(this._leftBadge); this.badgeLeft.color = this.badgeToColor(this._leftBadge); this.badgeLeft.draw(__1.Menu.screenResolution); } else { this.text.pos.X = this.offset.X + 8; } if (this.supportsRightBadge && this._rightBadge !== enums_1.BadgeStyle.None) { this.labelText.pos.X = -40; const widthOffset = UIMenuItem.getBadgeSpriteWidthOffset(this.badgeRight); this.badgeRight.pos.X = 431 + this.offset.X + this.parent.WidthOffset; this.badgeRight.pos.X -= this.badgeRight.size.width + widthOffset; this.badgeRight.textureName = this.badgeToTextureName(this._rightBadge); this.badgeRight.color = this.badgeToColor(this._rightBadge); this.badgeRight.draw(__1.Menu.screenResolution); } else { this.labelText.pos.X = -11; } if (this.supportsRightLabel && this.labelText.caption !== '') { this.labelText.pos.X += 431 + this.offset.X + this.parent.WidthOffset; this.labelText.color = this.text.color; this.labelText.draw(undefined, __1.Menu.screenResolution); } this.text.draw(undefined, __1.Menu.screenResolution); } } exports.UIMenuItem = UIMenuItem; UIMenuItem.defaultBackColor = utils_1.Color.empty; UIMenuItem.defaultHighlightedBackColor = utils_1.Color.white; UIMenuItem.defaultHoveredBackColor = new utils_1.Color(20, 255, 255, 255); UIMenuItem.defaultForeColor = utils_1.Color.whiteSmoke; UIMenuItem.defaultHoveredForeColor = UIMenuItem.defaultForeColor; UIMenuItem.defaultHighlightedForeColor = utils_1.Color.black;