From 1de28e880dc885b121dd5f80698c2a15f39798b4 Mon Sep 17 00:00:00 2001 From: hydrant Date: Tue, 27 Nov 2018 16:05:31 +0100 Subject: [PATCH] Aded business menu --- Client/Business/main.js | 40 +++++++++++++-- Client/inputhelper/index.js | 66 +++++++++++++++++++++++++ Client/inputhelper/web/inputhelper.css | 50 +++++++++++++++++++ Client/inputhelper/web/inputhelper.html | 32 ++++++++++++ 4 files changed, 185 insertions(+), 3 deletions(-) create mode 100644 Client/inputhelper/index.js create mode 100644 Client/inputhelper/web/inputhelper.css create mode 100644 Client/inputhelper/web/inputhelper.html diff --git a/Client/Business/main.js b/Client/Business/main.js index d33b42e6..fe4206c3 100644 --- a/Client/Business/main.js +++ b/Client/Business/main.js @@ -19,6 +19,8 @@ const ItemsCollection = NativeUI.ItemsCollection; const Color = NativeUI.Color; const ListItem = NativeUI.ListItem; +const InputHelper = require("inputhelper"); + mp.events.add('business_showHelp', (bizName, bizMoney) => { mp.game.ui.setTextComponentFormat('STRING'); mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um dein Business zu verwalten'); @@ -47,6 +49,10 @@ mp.events.add('business_removeHelp', (unbind) => { } }); +mp.events.add('business_updateMoney', (newMoney) => { + businessMoney = newMoney; +}); + function keyPressHandler() { mp.events.call('business_removeHelp', false); mp.gui.chat.show(false); @@ -65,9 +71,9 @@ function keyPressHandler() { bankAccountItem.SetRightLabel("~g~~h~" + businessMoney); mainMenu.AddItem(bankAccountItem); - var partnerItem = new UIMenuItem("Inteilhaber", "Verwalte den Inteilhaber"); - partnerItem.SetRightLabel("Niemand"); - mainMenu.AddItem(partnerItem); + //var partnerItem = new UIMenuItem("Inteilhaber", "Verwalte den Inteilhaber"); + //partnerItem.SetRightLabel("Niemand"); + //mainMenu.AddItem(partnerItem); mainMenu.Open(); @@ -87,6 +93,34 @@ function keyPressHandler() { var withdrawItem = new UIMenuItem("Auszahlen", "Zahle Geld von der Businesskasse aus"); bankMenu.AddItem(withdrawItem); + bankMenu.ItemSelect.on((item, index) => { + if (item === depositItem) { + var depositInput = new InputHelper("Wie viel Geld möchtest du auf deine Businesskasse einzahlen?"); + depositInput.show(); + depositInput.getValue((data) => { + var amount = parseInt(data); + if (isNaN(amount)) { + mp.game.graphics.notify('~r~Du musst eine Nummer eingeben!'); + return; + } + + mp.events.callRemote('Business_DepositMoney', amount); + }); + } else if (item === withdrawItem) { + var withdrawInput = new InputHelper("Wie viel Geld möchtest du von deiner Businesskasse abheben?"); + withdrawInput.show(); + withdrawInput.getValue((data) => { + var amount = parseInt(data); + if (isNaN(amount)) { + mp.game.graphics.notify('~r~Du musst eine Nummer eingeben!'); + return; + } + + mp.events.callRemote('Business_WithdrawMoney', amount); + }); + } + }); + bankMenu.MenuClose.on(() => { if (closeMenu) { closeMenu = false; diff --git a/Client/inputhelper/index.js b/Client/inputhelper/index.js new file mode 100644 index 00000000..93d636a1 --- /dev/null +++ b/Client/inputhelper/index.js @@ -0,0 +1,66 @@ +class InputHelper { + constructor(title) { + this.title = title; + + this.cefTitleCall = this.cefTitleCall.bind(this); + mp.events.add('cef_request_title', this.cefTitleCall); + + this.cefCallback = this.cefCallback.bind(this); + mp.events.add('cef_inputhelper_sendvalue', this.cefCallback); + + this.finish = this.finish.bind(this); + this.show = this.show.bind(this); + this.valueGetter = this.valueGetter.bind(this); + this.getValue = this.getValue.bind(this); + + this.value = undefined; + + mp.events.add('render', this.disableControls); + } + + disableControls() { + for (var i = 0; i <= 33; i++) { + mp.game.controls.disableAllControlActions(i); + } + } + + show() { + if (this.created) return; + this.created = true; + this.browser = mp.browsers.new('package://inputhelper/web/inputhelper.html'); + } + + finish() { + if (this.browser) { + mp.events.remove('cef_inputhelper_sendvalue'); + mp.events.remove('cef_request_title'); + mp.events.remove('render', this.disableControls); + this.browser.destroy(); + this.created = false; + } + } + + cefTitleCall() { + this.browser.execute(`setTitle('${this.title}')`); + } + + cefCallback(val) { + this.value = val; + this.finish(); + } + + valueGetter() { + return new Promise(resolve => { + setInterval(() => { + if (this.value !== undefined) resolve(this.value); + }, 50); + }); + } + + async getValue(callback) { + var getVal = await this.valueGetter(); + callback(getVal); + } +} + +exports = InputHelper; \ No newline at end of file diff --git a/Client/inputhelper/web/inputhelper.css b/Client/inputhelper/web/inputhelper.css new file mode 100644 index 00000000..dc873c5a --- /dev/null +++ b/Client/inputhelper/web/inputhelper.css @@ -0,0 +1,50 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +#black { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + z-index: -1; + background-color: rgba(0, 0, 0, .3); +} + +.input-main { + display: block; + width: 70%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + background-color: rgba(0, 0, 0, .8); + padding: 10px; +} + +.input-main h1 { + color: white; + font-size: 24px; + font-family: "Arial"; + font-weight: lighter; + margin-bottom: 5px; +} + +.input-main input { + width: 100%; + background-color: black; + outline: 0; + border: grey 1px solid; + color: white; + padding: 5px; + font-size: 20px; + font-family: "Arial"; + font-weight: lighter; +} + \ No newline at end of file diff --git a/Client/inputhelper/web/inputhelper.html b/Client/inputhelper/web/inputhelper.html new file mode 100644 index 00000000..ea0b6df1 --- /dev/null +++ b/Client/inputhelper/web/inputhelper.html @@ -0,0 +1,32 @@ + + + + + + +
+
+

+ +
+ + + + \ No newline at end of file