diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp new file mode 100644 index 0000000000..a39c94c4c5 --- /dev/null +++ b/addons/viewdistance/CfgVehicles.hpp @@ -0,0 +1,20 @@ +class CfgVehicles { + class Module_F; + class ACE_ModuleViewDistance : Module_F { + author = "$STR_ACE_Common_ACETeam"; + category = "ACE"; + displayName = "View Distance Limit"; + function = QFUNC(moduleViewDistance); + scope = 2; + isGlobal = 1; + //icon = ""; // needs an icon + class Arguments { + class ViewDistanceLimit { + displayName = "View Distance setting limit"; + description = "Sets the limit for how high clients can raise their view distance (< 10,000)"; + typeName = "NUMBER"; + defaultValue = 10000; + }; + }; + }; +}; \ No newline at end of file diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index 8f1fd94fc3..85cd16d387 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -1,4 +1,5 @@ #include "script_component.hpp" +[] call FUNC(moduleViewDistance); if (!hasInterface || !GVAR(enabled)) exitWith {}; [] call FUNC(initViewDistance); \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index f514951c20..e7529d6116 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -19,9 +19,12 @@ private ["_text","_new_view_distance","_view_distance_limit"]; +// Change the received index number into an actual view distance number as set in the config: _new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); + _view_distance_limit = [GVAR(topViewDistanceLimit)] call FUNC(returnViewDistanceValue); + if !GVAR(changeAllowed) then { _text = "You are not allowed to change the view distance!"; [_text,2] call EFUNC(common,displayTextStructured); diff --git a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf index 5e7d3da94b..582db6ea79 100644 --- a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf @@ -15,9 +15,15 @@ #include "script_component.hpp" -if (!isServer) exitWith {}; -/* +if (!isServer) exitWith { + GVAR(modulePresent) = false +}; + PARAMS_2(_logic,_activated); if !(_activated) exitWith {}; -*/ \ No newline at end of file + +GVAR(modulePresent) = true; +publicVariable QGVAR(modulePresent); + +diag_log text "[ACE]: ViewDistance Module Initialized."; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf new file mode 100644 index 0000000000..cfdb30fe05 --- /dev/null +++ b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf @@ -0,0 +1,26 @@ +/* + * Author: Winter + * Returns the view distance limit depending on either the config or (if present) the module. + * + * + * Arguments: + * None + * + * Return Value: + * View Distance Limit + * + * Example: + * [] call ace_viewdistance_fnc_returnViewDistanceLimit; + * + * Public: Yes + */ + +#include "script_component.hpp" + +if GVAR(modulePresent) then { + // module always takes priority + _view_distance_limit = +} else { + +}; +// To do: add a check against a module limit. \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf index ec55a2a755..0c14214371 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf @@ -17,9 +17,9 @@ #include "script_component.hpp" -private ["_index","_return"]; +PARAMS_1(_index); -_index = _this select 0; +private ["_return"]; _return = 0;