Start working on clan manager GUI

This commit is contained in:
Vortrex
2022-08-19 13:01:06 -05:00
parent 2e6fb905f4
commit f5f0be57aa

View File

@@ -0,0 +1,444 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// ===========================================================================
// FILE: clan-manager.js
// DESC: Provides clan manager GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let clanManager = {
window: null,
generalTabButton: null,
ranksTabButton: null,
membersTabButton: null,
vehiclesTabButton: null,
businessesTabButton: null,
housesTabButton: null,
generalTab: {
noPermissionsErrorLabel: null,
clanNameInput: null,
clanTagInput: null,
clanMOTDInput: null,
clanDiscordWebhookURLInput: null,
clanDiscordWebhookEnabledCheckbox: null,
clanDiscordWebhookSendVehicleEventsCheckbox: null,
clanDiscordWebhookSendHouseEventsCheckbox: null,
clanDiscordWebhookSendBusinessEventsCheckbox: null,
clanDiscordWebhookSendRankEventsCheckbox: null,
clanDiscordWebhookSendMemberEventsCheckbox: null,
clanDiscordWebhookEnabledLabel: null,
clanDiscordWebhookSendVehicleEventsLabel: null,
clanDiscordWebhookSendHouseEventsLabel: null,
clanDiscordWebhookSendBusinessEventsLabel: null,
clanDiscordWebhookSendRankEventsLabel: null,
clanDiscordWebhookSendMemberEventsLabel: null,
clanSaveButton: null,
},
ranksTab: {
noPermissionsErrorLabel: null,
ranks: [
]
},
membersTab: {
noPermissionsErrorLabel: null,
},
vehiclesTab: {
noPermissionsErrorLabel: null,
},
businessesTab: {
noPermissionsErrorLabel: null,
},
housesTab: {
noPermissionsErrorLabel: null,
},
};
class clanRankTab {
rankContainer = null;
rankNameLabel = null;
rankLevelLabel = null;
rankTagLabel = null;
rankExpandButton = null;
rankNameInput = null;
rankLevelNumberSelect = null;
rankTagInput = null;
rankPermissionStartTurfWarCheckbox = null;
rankPermissionStartPointWarCheckbox = null;
rankPermissionInviteMemberCheckbox = null;
rankPermissionSuspendMemberCheckbox = null;
rankPermissionRemoveMemberCheckbox = null;
rankPermissionMemberRankCheckbox = null;
rankPermissionClanTagCheckbox = null;
rankPermissionClanNameCheckbox = null;
rankPermissionManageVehiclesCheckbox = null;
rankPermissionManageHousesCheckbox = null;
rankPermissionManageBusinessesCheckbox = null;
rankPermissionManageNPCsCheckbox = null;
rankPermissionManageRanksCheckbox = null;
rankPermissionOwnerCheckbox = null;
rankPermissionStartTurfWarLabel = null;
rankPermissionStartPointWarLabel = null;
rankPermissionInviteMemberLabel = null;
rankPermissionSuspendMemberLabel = null;
rankPermissionRemoveMemberLabel = null;
rankPermissionMemberRankLabel = null;
rankPermissionClanTagLabel = null;
rankPermissionClanNameLabel = null;
rankPermissionManageVehiclesLabel = null;
rankPermissionManageHousesLabel = null;
rankPermissionManageBusinessesLabel = null;
rankPermissionManageNPCsLabel = null;
rankPermissionManageRanksLabel = null;
rankPermissionOwnerLabel = null;
rankSaveButton = null;
constructor(data) {
}
}
// ===========================================================================
function initClanManagerGUI() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Creating character select GUI ...`);
clanManager.window = mexui.window(game.width / 2 - 230, game.height / 2 - 170, 460, 340, 'CLAN MANAGER', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
},
title: {
textSize: 12.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 10.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
}
});
clanManager.window.titleBarIconSize = toVector2(0, 0);
clanManager.window.titleBarIconShown = false;
clanManager.window.titleBarHeight = 30;
clanManager.generalTabButton = clanManager.window.button(5, 5, 85, 20, 'GENERAL', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, switchClanManagerToGeneralTab);
clanManager.ranksTabButton = clanManager.window.button(95, 5, 85, 20, 'RANKS', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, switchClanManagerToRanksTab);
clanManager.membersTabButton = clanManager.window.button(185, 5, 85, 20, 'MEMBERS', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, switchClanManagerToMembersTab);
clanManager.businessesTabButton = clanManager.window.button(275, 5, 85, 20, 'BUSINESSES', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, switchClanManagerToBusinessesTab);
clanManager.housesTabButton = clanManager.window.button(365, 5, 85, 20, 'HOUSES', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, switchClanManagerToHousesTab);
clanManager.vehiclesTabButton = clanManager.window.button(455, 5, 85, 20, 'VEHICLES', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, switchClanManagerToVehiclesTab);
let gridWidth = 80 * (clanManager.window.width / 100);
let gridHeight = 80 * (clanManager.window.height / 100);
clanManager.ranksTab.grid = clanManager.window.grid(5, 30, 450, 200, {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
},
column: {
lineColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
header: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
},
cell: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
},
row: {
lineColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
});
}
// ===========================================================================
function switchClanManagerToBusinessesTab() {
hideAllClanManagerTabs();
showClanManagerBusinessesTab();
}
// ===========================================================================
function switchClanManagerToHousesTab() {
hideAllClanManagerTabs();
showClanManagerHousesTab();
}
// ===========================================================================
function switchClanManagerToGeneralTab() {
hideAllClanManagerTabs();
showClanManagerGeneralTab();
}
// ===========================================================================
function switchClanManagerToMembersTab() {
hideAllClanManagerTabs();
showClanManagerMembersTab();
}
// ===========================================================================
function switchClanManagerToRanksTab() {
hideAllClanManagerTabs();
showClanManagerRanksTab();
}
// ===========================================================================
function switchClanManagerToVehiclesTab() {
hideAllClanManagerTabs();
showClanManagerVehiclesTab();
}
// ===========================================================================
function hideAllClanManagerTabs() {
hideClanManagerGeneralTab();
hideClanManagerRanksTab();
hideClanManagerMembersTab();
hideClanManagerBusinessesTab();
hideClanManagerHousesTab();
hideClanManagerVehiclesTab();
}
// ===========================================================================
function hideClanManagerGeneralTab() {
for (let i in clanManager.generalTab) {
clanManager.generalTab[i].shown = false;
}
}
// ===========================================================================
function hideClanManagerRanksTab() {
for (let i in clanManager.ranksTab) {
clanManager.ranksTab[i].shown = false;
}
}
// ===========================================================================
function hideClanManagerMembersTab() {
for (let i in clanManager.membersTab) {
clanManager.membersTab[i].shown = false;
}
}
// ===========================================================================
function hideClanManagerBusinessesTab() {
for (let i in clanManager.businessesTab) {
clanManager.businessesTab[i].shown = false;
}
}
// ===========================================================================
function hideClanManagerHousesTab() {
for (let i in clanManager.housesTab) {
clanManager.housesTab[i].shown = false;
}
}
// ===========================================================================
function hideClanManagerVehiclesTab() {
for (let i in clanManager.vehiclesTab) {
clanManager.vehiclesTab[i].shown = false;
}
}
// ===========================================================================
function showClanManagerGeneralTab() {
for (let i in clanManager.generalTab) {
clanManager.generalTab[i].shown = true;
}
}
// ===========================================================================
function showClanManagerRanksTab() {
for (let i in clanManager.ranksTab) {
clanManager.ranksTab[i].shown = true;
}
}
// ===========================================================================
function showClanManagerMembersTab() {
for (let i in clanManager.membersTab) {
clanManager.membersTab[i].shown = true;
}
}
// ===========================================================================
function showClanManagerBusinessesTab() {
for (let i in clanManager.businessesTab) {
clanManager.businessesTab[i].shown = true;
}
}
// ===========================================================================
function showClanManagerHousesTab() {
for (let i in clanManager.housesTab) {
clanManager.housesTab[i].shown = true;
}
}
// ===========================================================================
function showClanManagerVehiclesTab() {
for (let i in clanManager.vehiclesTab) {
clanManager.vehiclesTab[i].shown = true;
}
}
// ===========================================================================
function requestClanManagerData() {
sendNetworkEventToServer("agrp.requestClanManagerData");
}
// ===========================================================================
function receiveClanManagerData(generalInfo, ranks, members, businesses, houses, vehicles) {
updateClanManagerData(generalInfo, ranks, members, businesses, houses, vehicles);
}
// ===========================================================================
function updateClanManagerData(generalInfo, ranks, members, businesses, houses, vehicles) {
for (let i in ranks) {
rankContainer[i] = null;
rankNameLabel[i] = mexui.window.text(5, 65, 200, 25, 'Cash: $0', {
main: {
textSize: 9.0,
textAlign: 0.0,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
}
});
rankLevelLabel[i] = null;
rankTagLabel[i] = null;
rankExpandButton[i] = null;
rankNameInput[i] = null;
rankLevelNumberSelect[i] = null;
rankTagInput[i] = null;
rankPermissionStartTurfWarCheckbox[i] = null;
rankPermissionStartPointWarCheckbox[i] = null;
rankPermissionInviteMemberCheckbox[i] = null;
rankPermissionSuspendMemberCheckbox[i] = null;
rankPermissionRemoveMemberCheckbox[i] = null;
rankPermissionMemberRankCheckbox[i] = null;
rankPermissionClanTagCheckbox[i] = null;
rankPermissionClanNameCheckbox[i] = null;
rankPermissionManageVehiclesCheckbox[i] = null;
rankPermissionManageHousesCheckbox[i] = null;
rankPermissionManageBusinessesCheckbox[i] = null;
rankPermissionManageNPCsCheckbox[i] = null;
rankPermissionManageRanksCheckbox[i] = null;
rankPermissionOwnerCheckbox[i] = null;
rankPermissionStartTurfWarLabel[i] = null;
rankPermissionStartPointWarLabel[i] = null;
rankPermissionInviteMemberLabel[i] = null;
rankPermissionSuspendMemberLabel[i] = null;
rankPermissionRemoveMemberLabel[i] = null;
rankPermissionMemberRankLabel[i] = null;
rankPermissionClanTagLabel[i] = null;
rankPermissionClanNameLabel[i] = null;
rankPermissionManageVehiclesLabel[i] = null;
rankPermissionManageHousesLabel[i] = null;
rankPermissionManageBusinessesLabel[i] = null;
rankPermissionManageNPCsLabel[i] = null;
rankPermissionManageRanksLabel[i] = null;
rankPermissionOwnerLabel[i] = null;
rankSaveButton[i] = null;
}
}
// ===========================================================================