#include "..\script_component.hpp" /* * File: fnc_buildUIPayload.sqf * Author: IDSolutions * Date: 2026-03-13 * Public: No * * Description: * Builds the browser hydrate payload for the store UI from current client state. * * Arguments: * None * * Return Value: * Store UI payload [HASHMAP] */ private _storeState = createHashMap; private _budget = 50000; private _creditLine = 0; private _cashBalance = 0; private _bankBalance = 0; private _orgFunds = 0; private _orgId = ""; private _orgName = ""; private _orgOwnerUid = ""; private _orgCreditLines = createHashMap; private _playerUid = getPlayerUID player; private _playerVar = toLowerANSI (vehicleVarName player); private _isOrgLeader = false; private _isDefaultOrg = false; private _isDefaultOrgCeo = false; if !(isNil QGVAR(StoreClass)) then { _storeState = GVAR(StoreClass) call ["getStoreState", []]; _budget = _storeState getOrDefault ["budget", _budget]; }; if !(isNil QEGVAR(bank,BankClass)) then { _cashBalance = EGVAR(bank,BankClass) call ["get", ["cash", 0]]; _bankBalance = EGVAR(bank,BankClass) call ["get", ["bank", 0]]; }; if !(isNil QEGVAR(org,OrgClass)) then { _orgId = EGVAR(org,OrgClass) call ["get", ["id", ""]]; _orgName = EGVAR(org,OrgClass) call ["get", ["name", ""]]; _orgOwnerUid = EGVAR(org,OrgClass) call ["get", ["owner", ""]]; _orgFunds = EGVAR(org,OrgClass) call ["get", ["funds", 0]]; _orgCreditLines = EGVAR(org,OrgClass) call ["get", ["credit_lines", createHashMap]]; _isDefaultOrg = (_orgId isEqualTo "default") || { toLowerANSI _orgOwnerUid isEqualTo "server" }; _isOrgLeader = _orgOwnerUid isEqualTo _playerUid; _isDefaultOrgCeo = _isDefaultOrg && { _playerVar isEqualTo "ceo" }; }; if (_orgCreditLines isEqualType createHashMap) then { private _playerCreditLine = _orgCreditLines getOrDefault [_playerUid, createHashMap]; if (_playerCreditLine isEqualType createHashMap) then { _creditLine = _playerCreditLine getOrDefault ["amount", 0]; }; }; private _canUseOrgFunds = _isOrgLeader || _isDefaultOrgCeo; private _orgFundsEnabled = _canUseOrgFunds && { _orgFunds > 0 }; private _paymentSources = [ createHashMapFromArray [ ["id", "cash"], ["label", "Cash"], ["balance", _cashBalance], ["enabled", _cashBalance > 0], ["detail", "Use on-hand cash carried by the player."] ], createHashMapFromArray [ ["id", "bank"], ["label", "Bank"], ["balance", _bankBalance], ["enabled", _bankBalance > 0], ["detail", "Charge the player bank account."] ], createHashMapFromArray [ ["id", "org_funds"], ["label", "Org Funds"], ["balance", _orgFunds], ["enabled", _orgFundsEnabled], ["detail", [ "Only organization leaders or the default-org CEO can use treasury funds.", [ "Charge organization treasury funds.", "No organization funds are currently available." ] select _orgFundsEnabled ] select _canUseOrgFunds] ], createHashMapFromArray [ ["id", "credit_line"], ["label", "Credit Line"], ["balance", _creditLine], ["enabled", _creditLine > 0], ["detail", [ "No approved credit line is assigned to this member.", "Use the approved procurement credit line." ] select (_creditLine > 0)] ] ]; createHashMapFromArray [ ["session", createHashMapFromArray [ ["actorName", name player], ["actorUid", _playerUid], ["approval", "Field Access"], ["orgId", _orgId], ["orgName", _orgName], ["orgLeader", _isOrgLeader], ["defaultOrgCeo", _isDefaultOrgCeo], ["canUseOrgFunds", _canUseOrgFunds] ]], ["storeConfig", createHashMapFromArray [ ["budget", _budget], ["creditLine", _creditLine], ["availability", _storeState getOrDefault ["availability", "In-Stock"]], ["moduleState", _storeState getOrDefault ["moduleState", "Preview"]], ["paymentSources", _paymentSources], ["defaultPaymentSource", "cash"] ]], ["cartItems", []] ]