Files
reallife-gamemode/ReallifeGamemode.Client/Business/cardealer.ts
2021-04-22 14:52:43 +02:00

110 lines
4.1 KiB
TypeScript

import * as NativeUI from '../libs/NativeUI';
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
const UIMenuSliderItem = NativeUI.UIMenuSliderItem;
const BadgeStyle = NativeUI.BadgeStyle;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
const Color = NativeUI.Color;
const ListItem = NativeUI.ListItem;
var screenRes = mp.game.graphics.getScreenResolution(0, 0);
import moneyFormat from '../moneyformat';
export default function carDealer(globalData: IGlobalData) {
var shopMenu: NativeUI.Menu;
mp.events.add("entityStreamIn", (entity: EntityMp) => {
if (!entity.isAVehicle()) return;
var labelId = entity.getVariable("shopVehicleTextLabel");
if (labelId === undefined) return;
var label: TextLabelMp = mp.labels.atRemoteId(labelId);
setShopVehicleTextLabel(entity as VehicleMp, label);
});
mp.events.addDataHandler("shopVehicleTextLabel", (entity: EntityMp, labelId: number) => {
var label = mp.labels.atRemoteId(labelId);
var veh = entity as VehicleMp;
setShopVehicleTextLabel(entity as VehicleMp, label);
});
function setShopVehicleTextLabel(entity: VehicleMp, label: TextLabelMp) {
if (label.text.indexOf("SHOPVEHICLE") === -1) return;
var realName = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(entity.model))
var text = label.text.replace("SHOPVEHICLE", realName);
label.text = text;
entity.freezePosition(true);
entity.setOnGroundProperly();
entity.setExplodesOnHighExplosionDamage(false);
}
mp.events.add('ShopVehicle_OpenMenu', (businessName, price, availableOptions: string[]) => {
var veh = mp.players.local.vehicle;
if (!veh) return;
mp.gui.chat.show(false);
shopMenu = new Menu("Fahrzeugkauf", "Kaufe ein neues Fahrzeug", new Point(0, screenRes.y / 3), null, null);
globalData.InMenu = true;
var carItem = new UIMenuItem("Fahrzeugname");
carItem.SetRightLabel(mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(veh.model)));
shopMenu.AddItem(carItem);
var shopItem = new UIMenuItem("Shop");
shopItem.SetRightLabel(businessName);
shopMenu.AddItem(shopItem);
var priceItem = new UIMenuItem("Preis");
priceItem.SetRightLabel("~g~$~s~ " + moneyFormat(price));
shopMenu.AddItem(priceItem);
var targetsCollection = new ItemsCollection(availableOptions);
var targetItem = new UIMenuListItem("Kaufen für", "Wähle den Besitzer aus", targetsCollection);
shopMenu.AddItem(targetItem);
shopMenu.ListChange.on((item, index) => {
if (item == targetItem) {
switch (targetItem.SelectedValue) {
case 'Spieler':
priceItem.SetRightLabel("~g~$~s~ " + moneyFormat(price));
break;
case 'Fraktion':
priceItem.SetRightLabel("~g~$~s~ " + moneyFormat(price * 1.5));
break;
}
}
})
var saveItem = new UIMenuItem("Kaufen");
saveItem.BackColor = new Color(0, 100, 0);
saveItem.HighlightedBackColor = new Color(0, 150, 0);
shopMenu.AddItem(saveItem);
var cancelItem = new UIMenuItem("Abbrechen");
cancelItem.BackColor = new Color(213, 0, 0);
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
shopMenu.AddItem(cancelItem);
shopMenu.ItemSelect.on((item, index) => {
if (item === cancelItem) {
shopMenu.Close();
} else if (item === saveItem) {
mp.events.callRemote("VehShop_BuyVehicle", targetItem.SelectedValue);
shopMenu.Close();
}
});
shopMenu.MenuClose.on(() => {
mp.gui.chat.show(true);
mp.players.local.taskLeaveVehicle(veh.handle, 0);
globalData.InMenu = false;
});
shopMenu.Open();
});
}