summaryrefslogtreecommitdiffstats
path: root/Client/Functions/Client_ReplaceInventoryAmmo.sqf
blob: 810e4e26c2f793a1e21593aec2d50d803a6f5214 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Private ['_freeSpace','_futureSpace','_get','_limit','_magazines','_newMag','_newMagIsSide','_newMagSpace','_oldMags','_presentMags','_replacement','_rlIndex','_size','_spaceToReduce','_totalToReplace','_z'];
_newMag = _this select 0;
_oldMags = _this select 1;
_magazines = _this select 2;

_presentMags = [];
_replacement = [];
_size = 0;
_spaceToReduce = 0;

{
	Private['_cmag','_ct'];
	_cmag = _x;
	_ct = {_x == _cmag} count _oldMags;
	
	if (_ct > 0) then {
		_get = _cmag Call GetNamespace;
		_presentMags = _presentMags + [_cmag];
		_spaceToReduce = _spaceToReduce + (_get select QUERYGEARSPACE);
	};
} forEach _magazines;

if (_newMag == "") exitWith {_magazines - _presentMags};

_get = _newMag Call GetNamespace;
_newMagSpace = _get select QUERYGEARSPACE;
_newMagIsSide = _get select QUERYGEARHANDGUNPOOL;
_limit = if (_newMagIsSide) then {8} else {12};

if (_newMagIsSide) then {
	{
		_get = _x Call GetNamespace;
		
		if !(isNil '_get') then {
			if (_get select QUERYGEARHANDGUNPOOL) then {
				_size = _size + (_get select QUERYGEARSPACE);
			};
		};
	} forEach _magazines;	
} else {
	{
		_get = _x Call GetNamespace;
		
		if !(isNil '_get') then {
			if !(_get select QUERYGEARHANDGUNPOOL) then {
				_size = _size + (_get select QUERYGEARSPACE);
			};
		};
	} forEach _magazines;	
};

_totalToReplace = count _presentMags;
_freeSpace = _size - _spaceToReduce;

_futureSpace = _totalToReplace * _newMagSpace;
while {(_futureSpace + _freeSpace) > _limit} do {
	_totalToReplace = _totalToReplace - 1;
	_futureSpace = _totalToReplace * _newMagSpace;
};

for [{_z = 0},{_z < _totalToReplace},{_z = _z + 1}] do {_replacement = _replacement + [_newMag]};

_magazines = (_magazines - _presentMags) + _replacement;

_magazines