initial files

This commit is contained in:
Samuele Lorefice
2025-05-24 16:17:33 +02:00
commit 9e023649ac
477 changed files with 118566 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
waitUntil {!isNil "save_is_loaded"};
waitUntil {!isNil "KP_liberation_production"};
waitUntil {save_is_loaded};
sectors_recalculating = false;
sectors_timer = false;
["Production management started", "PRODUCTION"] call KPLIB_fnc_log;
private _start = 0;
while {GRLIB_endgame == 0} do {
recalculate_sectors = false;
if (((count (allPlayers - entities "HeadlessClient_F")) > 0) && ((count KP_liberation_production) > 0)) then {
waitUntil {sleep 0.5; !sectors_recalculating};
sectors_recalculating = true;
private _time_update = false;
if (sectors_timer) then {_time_update = true; sectors_timer = false;};
_start = diag_tickTime;
if (KP_liberation_production_debug > 0) then {[format ["Production interval started: %1 - _time_update: %2", diag_tickTime, _time_update], "PRODUCTION"] call KPLIB_fnc_log;};
private _tempProduction = [];
{
private _storageArray = [];
private _supplyValue = 0;
private _ammoValue = 0;
private _fuelValue = 0;
private _time = _x select 8;
private _storage = nearestObjects [(markerPos (_x select 1)), [KP_liberation_small_storage_building], 100];
_storage = _storage select {(_x getVariable ["KP_liberation_storage_type",-1]) == 1};
if ((count _storage) > 0) then {
_storage = (_storage select 0);
_storageArray = [(getPosATL _storage),(getDir _storage),(vectorUpVisual _storage)];
if (_time_update) then {
if ((_time - 1) < 1) then {
_time = KP_liberation_production_interval;
if (((count (attachedObjects _storage)) < 12) && !((_x select 7) == 3)) then {
private _crateType = KP_liberation_supply_crate;
switch (_x select 7) do {
case 1: {_crateType = KP_liberation_ammo_crate; stats_ammo_produced = stats_ammo_produced + 100;};
case 2: {_crateType = KP_liberation_fuel_crate; stats_fuel_produced = stats_fuel_produced + 100;};
default {_crateType = KP_liberation_supply_crate; stats_supplies_produced = stats_supplies_produced + 100;};
};
private _crate = [_crateType, 100, getPosATL _storage] call KPLIB_fnc_createCrate;
[_crate, _storage] call KPLIB_fnc_crateToStorage;
};
} else {
_time = _time - 1;
};
};
{
switch ((typeOf _x)) do {
case KP_liberation_supply_crate: {_supplyValue = _supplyValue + (_x getVariable ["KP_liberation_crate_value",0]);};
case KP_liberation_ammo_crate: {_ammoValue = _ammoValue + (_x getVariable ["KP_liberation_crate_value",0]);};
case KP_liberation_fuel_crate: {_fuelValue = _fuelValue + (_x getVariable ["KP_liberation_crate_value",0]);};
default {[format ["Invalid object (%1) at storage area", (typeOf _x)], "ERROR"] call KPLIB_fnc_log;};
};
} forEach (attachedObjects _storage);
};
_tempProduction pushBack [
(markerText (_x select 1)),
(_x select 1),
(_x select 2),
_storageArray,
(_x select 4),
(_x select 5),
(_x select 6),
(_x select 7),
_time,
_supplyValue,
_ammoValue,
_fuelValue
];
if (KP_liberation_production_debug > 0) then {[format ["Production Update: %1", _tempProduction select _forEachIndex], "PRODUCTION"] call KPLIB_fnc_log;};
} forEach KP_liberation_production;
_tempProduction sort true;
KP_liberation_production = +_tempProduction;
sectors_recalculating = false;
};
if (KP_liberation_production_debug > 0) then {[format ["Production interval finished - Time needed: %1 seconds", diag_tickTime - _start], "PRODUCTION"] call KPLIB_fnc_log;};
waitUntil {sleep 1; recalculate_sectors};
};