#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;