199 lines
6.8 KiB
Plaintext
199 lines
6.8 KiB
Plaintext
#include "..\script_component.hpp"
|
|
|
|
/*
|
|
* Author: IDSolutions
|
|
* Handles the UI events.
|
|
*
|
|
* Arguments:
|
|
* None
|
|
*
|
|
* Return Value:
|
|
* None
|
|
*
|
|
* Example:
|
|
* call forge_client_org_fnc_handleUIEvents;
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_control", "_isConfirmDialog", "_message"];
|
|
|
|
private _alert = fromJSON _message;
|
|
private _event = _alert get "event";
|
|
private _data = _alert get "data";
|
|
// private _display = displayChild findDisplay 46;
|
|
|
|
private _fnc_execBridge = {
|
|
params ["_control", "_fnName", "_payload"];
|
|
|
|
private _json = toJSON _payload;
|
|
_control ctrlWebBrowserAction ["ExecJS", format ["OrgUIBridge.%1(%2)", _fnName, _json]];
|
|
};
|
|
|
|
private _fnc_buildPortalPayload = {
|
|
private _orgData = GVAR(OrgClass) get "org";
|
|
|
|
private _name = _orgData getOrDefault ["name", "Unknown Organization"];
|
|
private _id = _orgData getOrDefault ["id", ""];
|
|
private _ownerUid = _orgData getOrDefault ["owner", ""];
|
|
private _funds = _orgData getOrDefault ["funds", 0];
|
|
private _reputation = _orgData getOrDefault ["reputation", 0];
|
|
private _assetsRaw = _orgData getOrDefault ["assets", createHashMap];
|
|
private _membersRaw = _orgData getOrDefault ["members", createHashMap];
|
|
private _fleetRaw = _orgData getOrDefault ["fleet", createHashMap];
|
|
private _headquarters = _orgData getOrDefault ["headquarters", "ArmA Verse"];
|
|
private _type = _orgData getOrDefault ["type", "Organization"];
|
|
private _status = _orgData getOrDefault ["status", "Operational"];
|
|
private _isDefaultOrg = (_orgData getOrDefault ["default", false])
|
|
|| {toLower _id isEqualTo "default"}
|
|
|| {toLower _ownerUid isEqualTo "server"};
|
|
|
|
private _playerName = name player;
|
|
private _playerUid = getPlayerUID player;
|
|
private _playerVar = vehicleVarName player;
|
|
private _sessionRole = "Member";
|
|
private _sessionIsCeo = _isDefaultOrg && {_playerVar isEqualTo "ceo"};
|
|
private _ownerName = ["", "Server"] select (toLower _ownerUid isEqualTo "server");
|
|
|
|
private _membersList = [];
|
|
{
|
|
private _memberData = _y;
|
|
private _memberName = _memberData getOrDefault ["name", "Unknown"];
|
|
private _memberUid = _memberData getOrDefault ["uid", ""];
|
|
|
|
if (_memberUid isEqualTo _ownerUid && {_ownerName isEqualTo ""}) then {
|
|
_ownerName = _memberName;
|
|
};
|
|
|
|
if (_memberUid isEqualTo _playerUid) then {
|
|
_sessionRole = "Member";
|
|
};
|
|
|
|
_membersList pushBack (createHashMapFromArray [
|
|
["name", _memberName]
|
|
]);
|
|
} forEach _membersRaw;
|
|
|
|
if (_ownerName isEqualTo "" && {_ownerUid isEqualTo _playerUid}) then {
|
|
_ownerName = _playerName;
|
|
};
|
|
|
|
if (_ownerName isEqualTo "" && {_ownerUid isNotEqualTo ""}) then {
|
|
_ownerName = "Unknown Owner";
|
|
};
|
|
|
|
if (_ownerUid isEqualTo _playerUid) then {
|
|
_sessionRole = "Leader";
|
|
};
|
|
|
|
private _assetsList = [];
|
|
{
|
|
private _assetData = _y;
|
|
_assetsList pushBack (createHashMapFromArray [
|
|
["name", _assetData getOrDefault ["name", "Unknown Asset"]],
|
|
["type", _assetData getOrDefault ["type", "items"]],
|
|
["quantity", str (_assetData getOrDefault ["quantity", 0])]
|
|
]);
|
|
} forEach _assetsRaw;
|
|
|
|
private _fleetList = [];
|
|
{
|
|
private _vehicleData = _y;
|
|
_fleetList pushBack (createHashMapFromArray [
|
|
["name", _vehicleData getOrDefault ["name", "Unknown Vehicle"]],
|
|
["type", _vehicleData getOrDefault ["type", "other"]],
|
|
["status", _vehicleData getOrDefault ["status", "Unknown"]],
|
|
["damage", _vehicleData getOrDefault ["damage", "0%"]]
|
|
]);
|
|
} forEach _fleetRaw;
|
|
|
|
private _roadmap = [
|
|
createHashMapFromArray [
|
|
["name", "Contracts Board"],
|
|
["status", "Planned"],
|
|
["detail", "Track payouts, assignments, and claim approvals."]
|
|
],
|
|
createHashMapFromArray [
|
|
["name", "Diplomacy"],
|
|
["status", "Future Review"],
|
|
["detail", "Possible future module pending a full design and scope review."]
|
|
],
|
|
createHashMapFromArray [
|
|
["name", "Logistics Queue"],
|
|
["status", "Future Review"],
|
|
["detail", "Possible future module pending a full design and scope review."]
|
|
],
|
|
createHashMapFromArray [
|
|
["name", "Permissions"],
|
|
["status", "Future Review"],
|
|
["detail", "Possible future module pending a full design and scope review."]
|
|
]
|
|
];
|
|
|
|
createHashMapFromArray [
|
|
["session", createHashMapFromArray [
|
|
["actorName", _playerName],
|
|
["actorUid", _playerUid],
|
|
["role", _sessionRole],
|
|
["ceo", _sessionIsCeo]
|
|
]],
|
|
["portalData", createHashMapFromArray [
|
|
["org", createHashMapFromArray [
|
|
["name", _name],
|
|
["tag", _id],
|
|
["type", _type],
|
|
["status", _status],
|
|
["headquarters", _headquarters],
|
|
["owner", _ownerName],
|
|
["ownerUid", _ownerUid],
|
|
["isDefault", _isDefaultOrg]
|
|
]],
|
|
["funds", _funds],
|
|
["reputation", _reputation],
|
|
["members", _membersList],
|
|
["fleet", _fleetList],
|
|
["assets", _assetsList],
|
|
["activity", []],
|
|
["roadmap", _roadmap]
|
|
]]
|
|
]
|
|
};
|
|
|
|
diag_log format ["[FORGE:Client:Org] Handling UI event: %1 with data: %2", _event, _data];
|
|
|
|
switch (_event) do {
|
|
case "org::close": { closeDialog 1; };
|
|
case "org::login::request": {
|
|
private _email = toLower (_data getOrDefault ["email", ""]);
|
|
private _password = _data getOrDefault ["password", ""];
|
|
private _orgData = GVAR(OrgClass) get "org";
|
|
private _orgId = _orgData getOrDefault ["id", ""];
|
|
private _orgName = _orgData getOrDefault ["name", ""];
|
|
|
|
if (_email isEqualTo "" || {_password isEqualTo ""}) exitWith {
|
|
[_control, "receiveLoginFailure", createHashMapFromArray [
|
|
["message", "Enter both email and password."]
|
|
]] call _fnc_execBridge;
|
|
};
|
|
|
|
if (_orgId isEqualTo "" && {_orgName isEqualTo ""}) exitWith {
|
|
[_control, "receiveLoginFailure", createHashMapFromArray [
|
|
["message", "No organization data is available for this player."]
|
|
]] call _fnc_execBridge;
|
|
};
|
|
|
|
[_control, "receiveLoginSuccess", call _fnc_buildPortalPayload] call _fnc_execBridge;
|
|
};
|
|
case "org::ready": {
|
|
[_control, "receive", createHashMapFromArray [
|
|
["event", "org::ready"],
|
|
["data", createHashMapFromArray [
|
|
["loaded", true]
|
|
]]
|
|
]] call _fnc_execBridge;
|
|
};
|
|
default { hint format ["Unhandled UI event: %1", _event]; };
|
|
};
|
|
|
|
true;
|