Zum testen: rentcar system
This commit is contained in:
102
ReallifeGamemode.Client/util/rentcar.ts
Normal file
102
ReallifeGamemode.Client/util/rentcar.ts
Normal file
@@ -0,0 +1,102 @@
|
||||
import * as NativeUI from '../libs/NativeUI';
|
||||
|
||||
const Menu = NativeUI.Menu;
|
||||
const UIMenuItem = NativeUI.UIMenuItem;
|
||||
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||
const Point = NativeUI.Point;
|
||||
const ItemsCollection = NativeUI.ItemsCollection;
|
||||
const Color = NativeUI.Color;
|
||||
|
||||
|
||||
let screenRes = mp.game.graphics.getScreenResolution(0, 0);
|
||||
|
||||
let sendItem = new UIMenuItem("Mieten", "Fahrzeug Mieten");
|
||||
sendItem.BackColor = new Color(13, 71, 161);
|
||||
sendItem.HighlightedBackColor = new Color(25, 118, 210);
|
||||
|
||||
let cancelItem = new UIMenuItem("Abbrechen", "");
|
||||
cancelItem.BackColor = new Color(213, 0, 0);
|
||||
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
|
||||
|
||||
|
||||
export default function rentCar(globalData: IGlobalData) {
|
||||
|
||||
var rentcarMenu: NativeUI.Menu;
|
||||
var vehiclesToRent: RentcarProperty[] = [];
|
||||
var vehicleNames: string[] = [];
|
||||
var vehiclePrices: number[] = [];
|
||||
var selectedIndex: number;
|
||||
|
||||
var payTimer;
|
||||
var totalTime: number = 0;
|
||||
var totalBill: number = 0;
|
||||
|
||||
mp.events.add('showRentcarMenu', (vehiclestring, rentcarLocation) => {
|
||||
if (globalData.InMenu) {
|
||||
return;
|
||||
}
|
||||
|
||||
globalData.InMenu = true;
|
||||
|
||||
vehiclesToRent = JSON.parse(vehiclestring);
|
||||
|
||||
vehicleNames = [];
|
||||
vehiclePrices = [];
|
||||
for (let entry of vehiclesToRent) {
|
||||
vehicleNames.push(entry.Name);
|
||||
vehiclePrices.push(entry.Price);
|
||||
}
|
||||
|
||||
rentcarMenu = new Menu("Fahrzeugverleih", "", new Point(0, screenRes.y / 3), null, null);
|
||||
rentcarMenu.AddItem(new UIMenuListItem("Fahrzeug", vehiclePrices[0] + "$ alle 5 Minuten", new ItemsCollection(vehicleNames)));
|
||||
|
||||
rentcarMenu.AddItem(sendItem);
|
||||
rentcarMenu.AddItem(cancelItem);
|
||||
rentcarMenu.Visible = true;
|
||||
//outeText = "Route 1";
|
||||
|
||||
selectedIndex = 0;
|
||||
|
||||
rentcarMenu.ListChange.on((item: NativeUI.UIMenuListItem, index) => {
|
||||
switch (item.Text) {
|
||||
case "Fahrzeug":
|
||||
item.Description = vehiclePrices[index] + "$ alle 5 Minuten";
|
||||
selectedIndex = index;
|
||||
//item.Description = item.SelectedValue;
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
rentcarMenu.ItemSelect.on((item) => {
|
||||
if (item.Text === "Mieten") {
|
||||
mp.events.callRemote("SERVER:rentcarBooked", vehicleNames[selectedIndex], vehiclePrices[selectedIndex], rentcarLocation);
|
||||
rentcarMenu.Close();
|
||||
globalData.InMenu = false;
|
||||
} else if (item.Text === "Abbrechen") {
|
||||
rentcarMenu.Close();
|
||||
globalData.InMenu = false;
|
||||
}
|
||||
});
|
||||
|
||||
rentcarMenu.MenuClose.on(() => {
|
||||
globalData.InMenu = false;
|
||||
});
|
||||
});
|
||||
|
||||
mp.events.add('triggerRentcarTimer', (interval, pricePerInterval) => {
|
||||
clearInterval(payTimer);
|
||||
|
||||
payTimer = setInterval(() => {
|
||||
totalTime += interval;
|
||||
totalBill += pricePerInterval;
|
||||
|
||||
if (totalTime != 0) {
|
||||
mp.events.callRemote("SERVER:updateRentCarBill", totalBill, totalTime);
|
||||
}
|
||||
}, interval * 1000);
|
||||
});
|
||||
|
||||
mp.events.add('abortRentcarTimer', () => {
|
||||
clearInterval(payTimer);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user