initial files
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
private ["_dialog", "_logi_count", "_listselect", "_selectedGroup", "_detailControls", "_nearfob", "_logi_destinations", "_mapdisplay", "_tempvariable"];
|
||||
|
||||
_dialog = createDialog "liberation_logistic";
|
||||
_logi_count = 0;
|
||||
_listselect = -1;
|
||||
_selectedGroup = [];
|
||||
_detailControls = [
|
||||
75805,75806,75807,75808,75809,758010,758011,758012,758013,758014,758015,758016,758017,758018,
|
||||
758019,758020,758021,758022,758023,758024,758025,758026,758027,758028,758029,758030,758031,
|
||||
758032,758080,758081
|
||||
];
|
||||
_nearfob = [] call KPLIB_fnc_getNearestFob;
|
||||
_logi_destinations = [];
|
||||
|
||||
{
|
||||
_logi_destinations pushBack [(format ["FOB %1", military_alphabet select _forEachIndex]), (_x select 0), (_x select 1), (_x select 2), (_x select 3)];
|
||||
} forEach KP_liberation_fob_resources;
|
||||
|
||||
{
|
||||
_logi_destinations pushBack [(_x select 0), (markerPos (_x select 1)), (_x select 9), (_x select 10), (_x select 11)];
|
||||
} forEach KP_liberation_production;
|
||||
|
||||
_logi_destinations sort true;
|
||||
|
||||
addLogiGroup = 0;
|
||||
deleteLogiGroup = 0;
|
||||
buyLogiTruck = 0;
|
||||
sellLogiTruck = 0;
|
||||
saveConvoySettings = 0;
|
||||
convoyStandby = 0;
|
||||
logiError = 0;
|
||||
_tempvariable = nil;
|
||||
|
||||
disableSerialization;
|
||||
|
||||
waitUntil {dialog};
|
||||
|
||||
_mapdisplay = ((findDisplay 75802) displayCtrl 758098);
|
||||
|
||||
ctrlMapAnimClear _mapdisplay;
|
||||
|
||||
while {dialog && (alive player)} do {
|
||||
|
||||
"spawn_marker" setMarkerPosLocal markers_reset;
|
||||
|
||||
ctrlEnable [75803, false];
|
||||
ctrlEnable [75804, false];
|
||||
ctrlEnable [758021, false];
|
||||
ctrlEnable [758022, false];
|
||||
ctrlEnable [758024, false];
|
||||
ctrlEnable [758025, false];
|
||||
ctrlEnable [758026, false];
|
||||
ctrlEnable [758027, false];
|
||||
ctrlEnable [758029, false];
|
||||
ctrlEnable [758030, false];
|
||||
ctrlEnable [758031, false];
|
||||
ctrlEnable [758032, false];
|
||||
ctrlEnable [758080, false];
|
||||
ctrlEnable [758081, false];
|
||||
|
||||
if (addLogiGroup == 1) then {
|
||||
addLogiGroup = 0;
|
||||
[_selectedGroup] remoteExec ["add_logiGroup_remote_call",2];
|
||||
waitUntil {sleep 0.5; _logi_count != (count KP_liberation_logistics)};
|
||||
};
|
||||
|
||||
if (deleteLogiGroup == 1) then {
|
||||
deleteLogiGroup = 0;
|
||||
[_selectedGroup] remoteExec ["del_logiGroup_remote_call",2];
|
||||
lbSetCurSel [75802,-1];
|
||||
waitUntil {sleep 0.5; _logi_count != (count KP_liberation_logistics)};
|
||||
};
|
||||
|
||||
if (buyLogiTruck == 1) then {
|
||||
buyLogiTruck = 0;
|
||||
_tempvariable = _selectedGroup select 1;
|
||||
[_listselect, _nearfob, clientOwner, KP_liberation_supplies, KP_liberation_ammo, KP_liberation_fuel] remoteExec ["add_logiTruck_remote_call",2];
|
||||
waitUntil {sleep 0.5; (_tempvariable != ((KP_liberation_logistics select _listselect) select 1)) || (logiError == 1)};
|
||||
};
|
||||
|
||||
if (sellLogiTruck == 1) then {
|
||||
sellLogiTruck = 0;
|
||||
_tempvariable = _selectedGroup select 1;
|
||||
[_listselect, _nearfob, clientOwner] remoteExec ["del_logiTruck_remote_call",2];
|
||||
waitUntil {sleep 0.5; (_tempvariable != ((KP_liberation_logistics select _listselect) select 1)) || (logiError == 1)};
|
||||
};
|
||||
|
||||
if (saveConvoySettings == 1) then {
|
||||
saveConvoySettings = 0;
|
||||
if (((lbCurSel 758024) != -1) && ((lbCurSel 758029) != -1)) then {
|
||||
[_listselect, ((_logi_destinations select lbCurSel 758024) select 1), [parseNumber ctrlText 758025,parseNumber ctrlText 758026,parseNumber ctrlText 758027], ((_logi_destinations select lbCurSel 758029) select 1), [parseNumber ctrlText 758030,parseNumber ctrlText 758031,parseNumber ctrlText 758032], clientOwner] remoteExec ["save_logi_remote_call",2];
|
||||
waitUntil {sleep 0.5; (!(_selectedGroup isEqualTo (KP_liberation_logistics select _listselect))) || (logiError == 1)};
|
||||
} else {
|
||||
hint localize "STR_LOGISTIC_SAVE_ERROR";
|
||||
};
|
||||
};
|
||||
|
||||
if (convoyStandby == 1) then {
|
||||
convoyStandby = 0;
|
||||
[_listselect, clientOwner] remoteExec ["abort_logi_remote_call",2];
|
||||
waitUntil {sleep 0.5; (!(_selectedGroup isEqualTo (KP_liberation_logistics select _listselect))) || (logiError == 1)};
|
||||
};
|
||||
|
||||
logiError = 0;
|
||||
_tempvariable = nil;
|
||||
ctrlEnable [75803, true];
|
||||
|
||||
if (_logi_count != (count KP_liberation_logistics)) then {
|
||||
_logi_count = (count KP_liberation_logistics);
|
||||
lbClear 75802;
|
||||
{
|
||||
lbAdd [75802, (_x select 0)];
|
||||
} forEach KP_liberation_logistics;
|
||||
};
|
||||
|
||||
if ((_logi_count > 0) && (lbCurSel 75802 == -1)) then {
|
||||
lbSetCurSel [75802,0];
|
||||
};
|
||||
|
||||
_listselect = (lbCurSel 75802);
|
||||
|
||||
if ((_listselect != -1) && (_logi_count > 0)) then {
|
||||
{ctrlShow [_x, true]} forEach _detailControls;
|
||||
|
||||
_selectedGroup = +(KP_liberation_logistics select _listselect);
|
||||
|
||||
if ((_selectedGroup select 7) == 0) then {
|
||||
ctrlEnable [758021, true];
|
||||
|
||||
if ((_selectedGroup select 1) <= 0) then {
|
||||
ctrlEnable [75804, true];
|
||||
} else {
|
||||
ctrlEnable [758022, true];
|
||||
ctrlEnable [758024, true];
|
||||
ctrlEnable [758025, true];
|
||||
ctrlEnable [758026, true];
|
||||
ctrlEnable [758027, true];
|
||||
ctrlEnable [758029, true];
|
||||
ctrlEnable [758030, true];
|
||||
ctrlEnable [758031, true];
|
||||
ctrlEnable [758032, true];
|
||||
ctrlEnable [758080, true];
|
||||
};
|
||||
};
|
||||
|
||||
ctrlSetText [75805, (_selectedGroup select 0)];
|
||||
|
||||
switch ((_selectedGroup select 7)) do {
|
||||
case 0: {ctrlSetText[758011, "-"]; ctrlSetText[75807, localize "STR_LOGISTIC_STANDBY"];};
|
||||
case 1: {ctrlSetText[758011, "B"]; ctrlSetText[75807, localize "STR_LOGISTIC_LOADING"]; ctrlEnable [758081, true]; "spawn_marker" setMarkerPosLocal (_selectedGroup select 2); _mapdisplay ctrlMapAnimAdd [0.5, 0.2,(_selectedGroup select 2)]; ctrlMapAnimCommit _mapdisplay;};
|
||||
case 2: {ctrlSetText[758011, "B"]; ctrlSetText[75807, localize "STR_LOGISTIC_TRAVEL"]; ctrlEnable [758081, true];};
|
||||
case 3: {ctrlSetText[758011, "A"]; ctrlSetText[75807, localize "STR_LOGISTIC_LOADING"]; ctrlEnable [758081, true]; "spawn_marker" setMarkerPosLocal (_selectedGroup select 3); _mapdisplay ctrlMapAnimAdd [0.5, 0.2,(_selectedGroup select 3)]; ctrlMapAnimCommit _mapdisplay;};
|
||||
case 4: {ctrlSetText[758011, "A"]; ctrlSetText[75807, localize "STR_LOGISTIC_TRAVEL"]; ctrlEnable [758081, true];};
|
||||
case 5: {ctrlSetText[758011, "A"]; ctrlSetText[75807, localize "STR_LOGISTIC_ABORT"];};
|
||||
case 6: {ctrlSetText[758011, "B"]; ctrlSetText[75807, localize "STR_LOGISTIC_ABORT"];};
|
||||
};
|
||||
|
||||
((findDisplay 75802) displayCtrl 75809) ctrlSetTextColor [1,1,1,1];
|
||||
if ((_selectedGroup select 8) != -1) then {
|
||||
switch (_selectedGroup select 9) do {
|
||||
case 2: {((findDisplay 75802) displayCtrl 75809) ctrlSetTextColor [0.9,0,0,1]; ctrlSetText[75809, localize "STR_LOGISTIC_NOSPACE"];};
|
||||
case 3: {((findDisplay 75802) displayCtrl 75809) ctrlSetTextColor [0.9,0,0,1]; ctrlSetText[75809, localize "STR_LOGISTIC_NORESSOURCES"];};
|
||||
default {ctrlSetText[75809,(format [localize "STR_PRODUCTION_MINUTES",(_selectedGroup select 8)])];};
|
||||
};
|
||||
} else {
|
||||
ctrlSetText[75809, "-"];
|
||||
};
|
||||
|
||||
ctrlSetText [758014, (str (_selectedGroup select 1))];
|
||||
ctrlSetText [758016, (str ((_selectedGroup select 6) select 0))];
|
||||
ctrlSetText [758018, (str ((_selectedGroup select 6) select 1))];
|
||||
ctrlSetText [758020, (str ((_selectedGroup select 6) select 2))];
|
||||
|
||||
lbClear 758024;
|
||||
lbClear 758029;
|
||||
{
|
||||
lbAdd [758024, format ["%1 (%2/%3/%4)",(_x select 0), (_x select 2), (_x select 3), (_x select 4)]];
|
||||
lbAdd [758029, format ["%1 (%2/%3/%4)",(_x select 0), (_x select 2), (_x select 3), (_x select 4)]];
|
||||
} forEach _logi_destinations;
|
||||
|
||||
if (!((_selectedGroup select 2) isEqualTo [0,0,0])) then {
|
||||
ctrlShow [758024,false];
|
||||
ctrlShow [758033,true];
|
||||
{
|
||||
// Why the hell does "if ((_selectedGroup select 2) isEqualTo (_x select 1)) ..." return false? -.-
|
||||
if (((_selectedGroup select 2) distance2D (_x select 1) < 10)) exitWith {ctrlSetText [758033, _x select 0];};
|
||||
} forEach _logi_destinations;
|
||||
} else {
|
||||
ctrlShow [758024,true];
|
||||
ctrlShow [758033,false];
|
||||
};
|
||||
|
||||
if (!((_selectedGroup select 3) isEqualTo [0,0,0])) then {
|
||||
ctrlShow [758029,false];
|
||||
ctrlShow [758034,true];
|
||||
{
|
||||
if (((_selectedGroup select 3) distance2D (_x select 1) < 10)) exitWith {ctrlSetText [758034, _x select 0];};
|
||||
} forEach _logi_destinations;
|
||||
} else {
|
||||
ctrlShow [758029,true];
|
||||
ctrlShow [758034,false];
|
||||
};
|
||||
|
||||
ctrlSetText [758025, (str ((_selectedGroup select 4) select 0))];
|
||||
ctrlSetText [758026, (str ((_selectedGroup select 4) select 1))];
|
||||
ctrlSetText [758027, (str ((_selectedGroup select 4) select 2))];
|
||||
|
||||
ctrlSetText [758030, (str ((_selectedGroup select 5) select 0))];
|
||||
ctrlSetText [758031, (str ((_selectedGroup select 5) select 1))];
|
||||
ctrlSetText [758032, (str ((_selectedGroup select 5) select 2))];
|
||||
|
||||
} else {
|
||||
{ctrlShow [_x, false]} forEach _detailControls;
|
||||
_selectedGroup = [];
|
||||
};
|
||||
|
||||
waitUntil {
|
||||
!dialog
|
||||
|| !(alive player)
|
||||
|| (lbCurSel 75802) != _listselect
|
||||
|| addLogiGroup != 0
|
||||
|| deleteLogiGroup != 0
|
||||
|| buyLogiTruck != 0
|
||||
|| sellLogiTruck != 0
|
||||
|| saveConvoySettings != 0
|
||||
|| convoyStandby != 0
|
||||
};
|
||||
};
|
||||
|
||||
"spawn_marker" setMarkerPosLocal markers_reset;
|
||||
Reference in New Issue
Block a user