Improve House system

This commit is contained in:
hydrant
2019-07-30 12:42:02 +02:00
parent f30036ca15
commit abba223f57
7 changed files with 645 additions and 619 deletions

View File

@@ -10,12 +10,7 @@ export default function house(globalData: GlobalData) {
var keyBound = false;
mp.events.add("SERVER:ShowHouseMenu", (dataStr, state: number) => {
houseData = JSON.parse(dataStr);
houseState = state;
mp.gui.chat.push(state.toString());
mp.gui.chat.push(dataStr);
mp.events.add("SERVER:ShowHouseMenu", () => {
mp.game.ui.setTextComponentFormat('STRING');
mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um das Hausmenü öffnen');
mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1);
@@ -24,13 +19,18 @@ export default function house(globalData: GlobalData) {
keyBound = true;
});
mp.events.add("SERVER:SetHouseData", (dataStr, state) => {
houseData = JSON.parse(dataStr);
houseState = state;
});
function keyPressHandler() {
mp.gui.chat.push("open menu");
mp.game.ui.clearHelp(true);
var subTitle = houseData.Type;
if (houseData.OwnerName) {
subTitle += " von " + houseData.OwnerData;
subTitle += " von " + houseData.OwnerName;
}
houseMenu = new Menu("Hausverwaltung", subTitle, new Point(50, 50), null, null);
@@ -39,15 +39,14 @@ export default function house(globalData: GlobalData) {
mp.gui.chat.push(houseState.toString());
var rentInItem: UIMenuItem;
var cancelOwnRentalItem: UIMenuItem;
var buyHouseItem: UIMenuItem;
var setRentalFeeItem: UIMenuItem;
var cancelRentalsItem: UIMenuItem;
var houseRentals = 0;
if (houseData.Rentals) houseRentals = houseData.Rentals.length;
var houseRentals = houseData.Rentals.length;
if (houseState === -1) { // Keine Beziehung zum Haus
mp.gui.chat.push("einmieten");
@@ -65,21 +64,38 @@ export default function house(globalData: GlobalData) {
setRentalFeeItem.SetRightLabel(moneyFormat(houseData.RentalFee, 0) + "$");
houseMenu.AddItem(setRentalFeeItem);
cancelRentalsItem = new UIMenuItem("Mieter", "Liste deine Mieter auf");
cancelRentalsItem.SetRightLabel(houseRentals.toString());
if (houseRentals > 0) {
cancelRentalsItem = new UIMenuItem("Mieter", "Liste deine Mieter auf");
cancelRentalsItem.SetRightLabel(houseRentals.toString());
houseMenu.AddItem(cancelRentalsItem);
var cancelRentalsMenu = new Menu("Mieter", "Kündige einen Mieter", new Point(50, 50), null, null);
cancelRentalsMenu.Visible = false;
houseData.Rentals.forEach(rental => {
var item = new UIMenuItem(rental.Name, "");
var item = new UIMenuItem(rental, "");
item.SetRightLabel("Kündigen");
cancelRentalsMenu.AddItem(item);
});
cancelRentalsMenu.ItemSelect.on((item: UIMenuItem, index: number) => {
mp.events.callRemote("CLIENT:House_CancelUserRental", item.Text);
houseRentals--;
cancelRentalsItem.SetRightLabel(houseRentals.toString());
if (houseRentals === 0) {
cancelRentalsMenu.Visible = false;
houseMenu.Visible = true;
houseMenu.RemoveItem(cancelRentalsItem);
}
cancelRentalsMenu.RemoveItem(item);
});
houseMenu.BindMenuToItem(cancelRentalsMenu, cancelRentalsItem);
}
} else if (houseState === 2) {
cancelOwnRentalItem = new UIMenuItem("Mietvertrag kündigen", "Ziehe aus der Wohnung aus");
houseMenu.AddItem(cancelOwnRentalItem);
}
var cancelItem = new UIMenuItem("Abbrechen");
@@ -97,6 +113,7 @@ export default function house(globalData: GlobalData) {
mp.events.call("SERVER:CloseHouseMenu");
} else if (item === setRentalFeeItem) {
var rentalFeeInput = new InputHelper("Wie viel soll die Miete betragen?", globalData);
rentalFeeInput.show();
rentalFeeInput.getValue(data => {
if (isNaN(data)) {
return;
@@ -107,13 +124,20 @@ export default function house(globalData: GlobalData) {
mp.events.callRemote("CLIENT:House_SetRentalFee", rentalFee);
mp.events.call("SERVER:CloseHouseMenu");
});
} else if (item === rentInItem) {
mp.events.callRemote("CLIENT:House_RentInHouse");
} else if (item === cancelOwnRentalItem) {
mp.events.callRemote("CLIENT:House_CancelOwnRental");
}
});
houseMenu.MenuClose.on(() => {
globalData.InMenu = false;
});
}
mp.events.add("SERVER:CloseHouseMenu", () => {
mp.game.ui.clearHelp(true);
globalData.InMenu = false;
if (houseMenu != null) {
houseMenu.Close();
}