67 lines
2.7 KiB
TypeScript
67 lines
2.7 KiB
TypeScript
import * as NativeUI from '../libs/NativeUI';
|
|
|
|
export default function (globalData: IGlobalData) {
|
|
|
|
mp.events.add("SERVER:Job_ShowJobMenu", (jobName: string, data: any) => {
|
|
if (globalData.InMenu) return;
|
|
|
|
var menu = new NativeUI.Menu("Job", jobName, new NativeUI.Point(50, 50), null, null);
|
|
menu.AddItem(new NativeUI.UIMenuItem("Job starten"));
|
|
menu.AddItem(new NativeUI.UIMenuItem("Job beenden"));
|
|
|
|
globalData.InMenu = true;
|
|
|
|
data = JSON.parse(data);
|
|
|
|
if (data) {
|
|
if (data.Id === 1) { // Taxi Driver
|
|
var status = data.Status;
|
|
if (data.JobData.TaxiCalls && status === 0) { // Spieler hat keinen aktiven Auftrag
|
|
var calls = data.JobData.TaxiCalls;
|
|
var taxiCallsItem = new NativeUI.UIMenuItem("Taxi Aufträge");
|
|
var taxiCallsCount = calls.length;
|
|
taxiCallsItem.SetRightLabel(taxiCallsCount.toString());
|
|
menu.AddItem(taxiCallsItem);
|
|
|
|
if (taxiCallsCount > 0) {
|
|
var taxiCallsMenu = new NativeUI.Menu("Taxi-Aufträge", "Wähle einen Auftrag aus", new NativeUI.Point(50, 50), null, null);
|
|
calls.forEach(call => {
|
|
var item = new NativeUI.UIMenuItem(call.Name);
|
|
item.SetRightLabel(call.Distance.toString() + "m");
|
|
taxiCallsMenu.AddItem(item);
|
|
});
|
|
taxiCallsMenu.Visible = false;
|
|
menu.BindMenuToItem(taxiCallsMenu, taxiCallsItem);
|
|
|
|
taxiCallsMenu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
|
mp.events.callRemote("CLIENT:JobManager_TaxiJob_AcceptCall", item.Text);
|
|
menu.Close();
|
|
});
|
|
}
|
|
} else if (status === 1) { // Spieler hat aktiven Auftrag
|
|
var cancelTaxiContractItem = new NativeUI.UIMenuItem("Taxi-Auftrag abbrechen");
|
|
cancelTaxiContractItem.SetRightLabel(data.JobData.Name);
|
|
menu.AddItem(cancelTaxiContractItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
|
if (index === 0) { // Job starten
|
|
mp.events.callRemote("CLIENT:Job_StartJob");
|
|
} else if (index === 1) { // Job stoppen
|
|
mp.events.callRemote("CLIENT:Job_StopJob");
|
|
} else {
|
|
return;
|
|
}
|
|
menu.Close();
|
|
});
|
|
|
|
menu.MenuClose.on(() => {
|
|
globalData.InMenu = false;
|
|
});
|
|
|
|
menu.Open();
|
|
});
|
|
|
|
} |