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