add cityhall menu, add self interaction menu (Arrow Down), fix freecam, add group creation, move (faction) invite from commands to menu
This commit is contained in:
123
ReallifeGamemode.Client/Interaction/interactionmenu.ts
Normal file
123
ReallifeGamemode.Client/Interaction/interactionmenu.ts
Normal file
@@ -0,0 +1,123 @@
|
||||
import * as NativeUI from 'NativeUI';
|
||||
import InputHelper from '../inputhelper';
|
||||
|
||||
const Menu = NativeUI.Menu;
|
||||
const UIMenuItem = NativeUI.UIMenuItem;
|
||||
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
|
||||
const BadgeStyle = NativeUI.BadgeStyle;
|
||||
const Point = NativeUI.Point;
|
||||
const ItemsCollection = NativeUI.ItemsCollection;
|
||||
const Color = NativeUI.Color;
|
||||
|
||||
export default function (globalData: GlobalData) {
|
||||
|
||||
var menuClose = false;
|
||||
|
||||
var accountItem = new UIMenuItem("Account", "Account Informationen");
|
||||
|
||||
var factionItem = new UIMenuItem("Fraktion", "Verwalte deine Fraktion");
|
||||
var groupItem = new UIMenuItem("Gruppe", "Verwalte deine Gruppe");
|
||||
|
||||
|
||||
mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean) => {
|
||||
var accountData: AccountData = JSON.parse(accountDataJson);
|
||||
|
||||
var menu = getInteractionMenu();
|
||||
|
||||
menu.AddItem(accountItem);
|
||||
menu.BindMenuToItem(getAccountMenu(accountData), accountItem);
|
||||
|
||||
if (faction) {
|
||||
factionItem.SetRightLabel(faction);
|
||||
menu.AddItem(factionItem);
|
||||
menu.BindMenuToItem(getFactionMenu(faction), factionItem);
|
||||
}
|
||||
|
||||
if (group) {
|
||||
groupItem.SetRightLabel(group);
|
||||
menu.AddItem(groupItem);
|
||||
menu.BindMenuToItem(getGroupMenu(group), groupItem);
|
||||
}
|
||||
|
||||
var items: Array<string> = new Array<string>();
|
||||
if (factionInvite) items.push("Fraktion");
|
||||
if (groupInvite) items.push("Gruppe");
|
||||
var acceptItem = new UIMenuListItem("Einladung annehmen", "", new ItemsCollection(items));
|
||||
|
||||
if (items.length !== 0) menu.AddItem(acceptItem);
|
||||
|
||||
menu.Visible = true;
|
||||
mp.gui.chat.show(false);
|
||||
globalData.Interaction = true;
|
||||
|
||||
menu.MenuClose.on(() => {
|
||||
globalData.Interaction = false;
|
||||
mp.gui.chat.show(true);
|
||||
})
|
||||
});
|
||||
|
||||
function getInteractionMenu(): NativeUI.Menu {
|
||||
return new Menu("Hauptmenü", "Interaktionen | " + mp.players.local.name, new Point(50, 50), null, null);
|
||||
}
|
||||
|
||||
function getAccountMenu(data: AccountData): NativeUI.Menu {
|
||||
var accountMenu = new NativeUI.Menu("Account", mp.players.local.name, new Point(50, 50), null, null);
|
||||
|
||||
var menuItem = new UIMenuItem("Fraktion");
|
||||
menuItem.SetRightLabel(data.faction);
|
||||
accountMenu.AddItem(menuItem);
|
||||
|
||||
menuItem = new UIMenuItem("Fraktionsrang");
|
||||
menuItem.SetRightLabel(data.factionRank);
|
||||
accountMenu.AddItem(menuItem);
|
||||
|
||||
menuItem = new UIMenuItem("Gruppe");
|
||||
menuItem.SetRightLabel(data.group);
|
||||
accountMenu.AddItem(menuItem);
|
||||
|
||||
menuItem = new UIMenuItem("Gruppenrang");
|
||||
menuItem.SetRightLabel(data.groupRank);
|
||||
accountMenu.AddItem(menuItem);
|
||||
|
||||
menuItem = new UIMenuItem("Registrierungsdatum");
|
||||
menuItem.SetRightLabel(data.regDate);
|
||||
accountMenu.AddItem(menuItem);
|
||||
|
||||
menuItem = new UIMenuItem("Adminrang");
|
||||
menuItem.SetRightLabel(data.adminLevel);
|
||||
accountMenu.AddItem(menuItem);
|
||||
|
||||
accountMenu.Visible = false;
|
||||
return accountMenu;
|
||||
}
|
||||
|
||||
function getFactionMenu(faction: string): NativeUI.Menu {
|
||||
var factionMenu = new NativeUI.Menu("Fraktion", faction, new Point(50, 50), null, null);
|
||||
factionMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
||||
factionMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
||||
factionMenu.Visible = false;
|
||||
|
||||
factionMenu.ItemSelect.on((item, index) => {
|
||||
if (index === 0) { // Inviten
|
||||
var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?");
|
||||
input.show();
|
||||
input.getValue(name => {
|
||||
mp.events.callRemote("CLIENT:InteractionMenu_InviteFaction", name);
|
||||
});
|
||||
} else if (index === 1) { // Uninviten
|
||||
}
|
||||
})
|
||||
|
||||
return factionMenu;
|
||||
}
|
||||
|
||||
function getGroupMenu(group: string): NativeUI.Menu {
|
||||
var groupMenu = new NativeUI.Menu("Gruppe", group, new Point(50, 50), null, null);
|
||||
groupMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
||||
groupMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
||||
groupMenu.Visible = false;
|
||||
|
||||
return groupMenu;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user