Epoch/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Start.sqf
He-Man a84326d446 Added optional Classnames for Service Point Pos.
- Added optional Classnames for Service Point Pos
- Some Cleanups and Script optimization
2017-04-01 16:03:32 +02:00

109 lines
4.1 KiB
Plaintext

/*
Author: [Ignatz] He-Man
Contributors: Aaron Clark - EpochMod.com
Description:
Service Point StartScript for A3 Epoch
Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/servicepoint/EPOCH_SP_Start.sqf
*/
private ['_missingammo','_ownedcompletemags','_magname','_actionTitle','_costs','_vehicle','_refuel_costs','_refuel_updateInterval','_refuel_amount','_costsFree','_repair_costs','_fnc_getCosts','_fnc_actionTitle'];
Ignatz_Refuel = nil;
Ignatz_Repair = nil;
Ignatz_Rearm0 = nil;
Ignatz_Rearm1 = nil;
Ignatz_Rearm2 = nil;
Ignatz_Rearm3 = nil;
_vehicle = vehicle player;
_repair_costs = ["CfgServicePoint", "repair_costs", []] call EPOCH_fnc_returnConfigEntryV2;
_refuel_costs = ["CfgServicePoint", "refuel_costs", []] call EPOCH_fnc_returnConfigEntryV2;
_refuel_updateInterval = ["CfgServicePoint", "refuel_updateInterval", 1] call EPOCH_fnc_returnConfigEntryV2;
_refuel_amount = ["CfgServicePoint", "refuel_amount", 0.1] call EPOCH_fnc_returnConfigEntryV2;
_repairTime = ["CfgServicePoint", "repairTime", 1.2] call EPOCH_fnc_returnConfigEntryV2;
_VehiclesAndAmmo = ["CfgServicePoint", "VehiclesAndAmmo", []] call EPOCH_fnc_returnConfigEntryV2;
_Ignatz_SP_Array = [];
_costsFree = 'free';
_fnc_getCosts = {
private ['_typeName','_vehicle','_costs','_cost'];
_vehicle = _this select 0;
_costs = _this select 1;
_cost = 0;
{
_typeName = _x select 0;
if (_vehicle isKindOf _typeName) exitWith {
_cost = _x select 1;
};
} forEach _costs;
_cost
};
_fnc_actionTitle = {
private ['_itemName','_displayName','_actionName','_costs','_costsText','_actionTitle'];
_actionName = _this select 0;
_costs = _this select 1;
_costsText = _costsFree;
if (_costs > 0) then {
_costsText = format ['%1 Crypto',_costs];
};
_actionTitle = format ['%1 (%2)', _actionName, _costsText];
_actionTitle
};
{
if ((typeof _vehicle) == _x select 0) exitwith {
{
_ammotype = _x select 0;
_turret = _x select 1;
_maxmags = _x select 2;
_costs = _x select 3;
_ammocount = getNumber (configfile >> "CfgMagazines" >> (_x select 0) >> "count");
_maxammototal = _maxmags*_ammocount;
_totalammocount = 0;
{
if (_ammotype isequalto (_x select 0) && _turret isequalto (_x select 1)) then {
_totalammocount = _totalammocount + (_x select 2);
};
} foreach (magazinesAllTurrets _vehicle);
if (_totalammocount < _maxammototal) then {
for '_i' from 1 to 10 do {
if (_totalammocount < _i*_ammocount) exitwith {
_ownedcompletemags = _i-1;
_missingammo = _ammocount*_i - _totalammocount;
_costs = round (_costs/_ammocount*_missingammo);
};
};
_magname = getText (configFile >> 'CfgMagazines' >> _ammotype >> 'displayName');
if (_magname isequalto '') then {
_magname = _ammotype;
};
_reloagmags = _ownedcompletemags+1;
_actionTitle = format['Rearm %1 with %2 round %3 (%4 Crypto)',getText (configFile >> 'Cfgvehicles' >> typeOf _vehicle >> 'displayName'),_missingammo,_magname, _costs];
_Ignatz_SP_Array pushback [_actionTitle,[_vehicle,_ammotype,_turret,_reloagmags,_ammocount,_costs]];
};
} foreach (_x select 1);
};
} foreach _VehiclesAndAmmo;
_costs = [_vehicle, _refuel_costs] call _fnc_getCosts;
_actionTitle = [format['Refuel %1',getText (configFile >> 'Cfgvehicles' >> typeOf _vehicle >> 'displayName')], _costs] call _fnc_actionTitle;
Ignatz_Refuel = [_actionTitle,[_vehicle,[_costs, _refuel_updateInterval,_refuel_amount]]];
_costs = [_vehicle, _repair_costs] call _fnc_getCosts;
_actionTitle = [format['Repair %1',getText (configFile >> 'Cfgvehicles' >> typeOf _vehicle >> 'displayName')], _costs] call _fnc_actionTitle;
Ignatz_Repair = [_actionTitle,[_vehicle,[_costs, _repairTime]]];
if (count _Ignatz_SP_Array > 0) then {Ignatz_Rearm0 = _Ignatz_SP_Array select 0;};
if (count _Ignatz_SP_Array > 1) then {Ignatz_Rearm1 = _Ignatz_SP_Array select 1;};
if (count _Ignatz_SP_Array > 2) then {Ignatz_Rearm2 = _Ignatz_SP_Array select 2;};
if (count _Ignatz_SP_Array > 3) then {Ignatz_Rearm3 = _Ignatz_SP_Array select 3;};
true