Merge remote-tracking branch 'origin' into agmRespawnPort

This commit is contained in:
bux578 2015-01-13 15:19:45 +01:00
commit 5ffe1fa3e5
1800 changed files with 69260 additions and 15790 deletions

4
.gitignore vendored
View File

@ -1,2 +1,4 @@
*.pbo
texHeaders.bin
*.swp
*.swo

View File

@ -1,23 +0,0 @@
/*
Author(s):
bux578
*/
0 spawn {
private ["_side"];
waitUntil {sleep 0.5; AGM_SwitchUnits_EnableSwitchUnits};
//_side = [west, east, independent, civilian] select AGM_SwitchUnits_SwitchUnitsAllowedForSide;
_sides = [];
if(AGM_SwitchUnits_SwitchToWest) then {_sides pushBack west};
if(AGM_SwitchUnits_SwitchToEast) then {_sides pushBack east};
if(AGM_SwitchUnits_SwitchToIndependent) then {_sides pushBack independent};
if(AGM_SwitchUnits_SwitchToCivilian) then {_sides pushBack civilian};
if (player getVariable ["AGM_CanSwitchUnits", false]) then {
[player, _sides] call AGM_SwitchUnits_fnc_initPlayer;
};
};

View File

@ -1,140 +0,0 @@
class CfgPatches {
class AGM_SwitchUnits {
units[] = {};
weapons[] = {};
requiredVersion = 0.60;
requiredAddons[] = {AGM_Core};
version = "0.95";
versionStr = "0.95";
versionAr[] = {0,95,0};
author[] = {"bux578"};
authorUrl = "https://github.com/bux578/";
};
};
class CfgFunctions {
class AGM_SwitchUnits {
class AGM_SwitchUnits {
file = "AGM_SwitchUnits\functions";
class addMapFunction;
class handleMapClick;
class initPlayer;
class isValidAi;
class markAiOnMap;
class module;
class nearestPlayers;
class switchBack;
class switchUnit;
};
};
};
class Extended_PostInit_EventHandlers {
class AGM_SwitchUnits {
clientInit = "call compile preprocessFileLineNumbers '\AGM_SwitchUnits\clientInit.sqf'";
};
};
class CfgVehicles {
class Module_F;
class AGM_ModuleSwitchUnits: Module_F {
author = "AGM Team";
category = "AGM";
displayName = "SwitchUnits System";
function = "AGM_SwitchUnits_fnc_module";
scope = 2;
isGlobal = 1;
icon = "\AGM_SwitchUnits\UI\IconSwitchUnits_ca.paa";
class Arguments {
class SwitchToWest {
displayName = "Switch to West?";
description = "Allow switching to west units?";
typeName = "BOOL";
class values {
class Yes {name = "Yes"; value = 1;};
class No {default = 1; name = "No"; value = 0;};
};
};
class SwitchToEast {
displayName = "Switch to East?";
description = "Allow switching to east units?";
typeName = "BOOL";
class values {
class Yes {name = "Yes"; value = 1;};
class No {default = 1; name = "No"; value = 0;};
};
};
class SwitchToIndependent {
displayName = "Switch to Independent?";
description = "Allow switching to independent units?";
typeName = "BOOL";
class values {
class Yes {name = "Yes"; value = 1;};
class No {default = 1; name = "No"; value = 0;};
};
};
class SwitchToCivilian {
displayName = "Switch to Civilian?";
description = "Allow switching to civilian units?";
typeName = "BOOL";
class values {
class Yes {name = "Yes"; value = 1;};
class No {default = 1; name = "No"; value = 0;};
};
};
class EnableSafeZone {
displayName = "Enable Safe Zone?";
description = "Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone.";
typeName = "BOOL";
class values {
class Yes {default = 1; name = "Yes"; value = 1;};
class No {name = "No"; value = 0;};
};
};
class SafeZoneRadius {
displayName = "Safe Zone Radius";
description = "The safe zone around players from a different team. Default: 200";
typeName = "NUMBER";
defaultValue = 100;
};
/*
class EnableSwitchUnits {
displayName = "Enable SwitchUnits?";
description = "Enable to switch to AI units? Default: No";
typeName = "BOOL";
class values {
class Yes {name = "Yes"; value = 1;};
class No {default = 1; name = "No"; value = 0;};
};
};
class SwitchUnitsAllowedForSide {
displayName = "Allow for which side?";
description = "Which side should be allowed to switch to AI units?";
typeName = "NUMBER";
class values {
class West {name = "West"; value = 0;};
class East {default = 1; name = "East"; value = 1;};
class Independent {name = "Independent"; value = 2;};
class Civilian {name = "Civilian"; value = 3;};
};
};*/
};
};
};
class AGM_Parameters_Numeric {
AGM_SwitchUnits_SafeZoneRadius = 100;
};
class AGM_Parameters_Boolean {
AGM_SwitchUnits_EnableSwitchUnits = 0;
AGM_SwitchUnits_SwitchToWest = 0;
AGM_SwitchUnits_SwitchToEast = 0;
AGM_SwitchUnits_SwitchToIndependent = 0;
AGM_SwitchUnits_SwitchToCivilian = 0;
AGM_SwitchUnits_EnableSafeZone = 1;
};

View File

@ -1,23 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_addMapFunction
Author(s):
bux578
Description:
Adds a mapClick Eventhandler
Parameters:
0: OBJECT - unit
1: ARRAY<OBJECT> - sided
Returns:
VOID
*/
private ["_unit"];
_unit = _this select 0;
["theMapClick", "onMapSingleClick", {
[_this, _pos, _shift, _alt] call AGM_SwitchUnits_fnc_handleMapClick;
}, [_unit, _sides]] call BIS_fnc_addStackedEventHandler;

View File

@ -1,41 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_handleMapClick
Author(s):
bux578
Description:
Finds the clicked unit
Parameters:
0: OBJECT - MapClickEventHandlerArgs
0: OBJECT - unit to switch to
1: ARRAY<OBJECT> - sides
Returns:
VOID
*/
private ["_args", "_currentPlayerUnit", "_sides", "_pos", "_sideNearest"];
_currentPlayerUnit = (_this select 0) select 0;
_sides = (_this select 0) select 1;
_pos = _this select 1;
_sideNearest = [];
{
if ([_x] call AGM_SwitchUnits_fnc_isValidAi && (side group _x in _sides)) then {
_sideNearest pushBack _x;
};
} forEach (nearestObjects [_pos, ["Man"], 20]);
if (count _sideNearest > 0) then {
private ["_switchUnit"];
_switchUnit = _sideNearest select 0;
[_currentPlayerUnit, _switchUnit] call AGM_SwitchUnits_fnc_switchUnit;
openMap false;
};

View File

@ -1,48 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_initPlayer
Author(s):
bux578
Description:
Initializes the player
Parameters:
0: OBJECT - player
1: ARRAY<OBJECT> - Array containing selected sides
Returns:
VOID
*/
private ["_playerUnit", "_sides"];
_playerUnit = _this select 0;
_sides = _this select 1;
if (vehicle _playerUnit == _playerUnit) then {
[_sides] call AGM_SwitchUnits_fnc_markAiOnMap;
_playerUnit setVariable ["AGM_SwitchUnits_IsPlayerUnit", true];
_playerUnit allowDamage false;
AGM_SwitchUnits_OriginalUnit = _playerUnit;
AGM_SwitchUnits_OriginalName = [_playerUnit] call AGM_Core_fnc_getName;
AGM_SwitchUnits_OriginalGroup = group _playerUnit;
// remove all starting gear of a player
removeAllWeapons _playerUnit;
removeGoggles _playerUnit;
removeHeadgear _playerUnit;
removeVest _playerUnit;
removeAllAssignedItems _playerUnit;
clearAllItemsFromBackpack _playerUnit;
removeBackpack _playerUnit;
_playerUnit linkItem "ItemMap";
removeUniform _playerUnit;
[_playerUnit, "AGM_SwitchUnits", true] call AGM_Core_fnc_setForceWalkStatus;
[_playerUnit, _sides] call AGM_SwitchUnits_fnc_addMapFunction;
};

View File

@ -1,25 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_isValidAi
Author(s):
bux578
Description:
Checks if AI is a valid target for switching
Parameters:
0: OBJECT - unit
Returns:
VOID
*/
private ["_unit"];
_unit = _this select 0;
!([_unit] call AGM_Core_fnc_isPlayer
|| {_unit in playableUnits}
|| {vehicle _unit != _unit}
|| {_unit getVariable ["AGM_SwitchUnits_IsPlayerUnit", false]}
|| {_unit getVariable ["AGM_SwitchUnits_IsPlayerControlled", false]})

View File

@ -1,64 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_markAiOnMap
Author(s):
bux578
Description:
Creates markers for AI units for given sides
Marks players in a different color
Parameters:
0: OBJECT - side
Returns:
VOID
*/
private ["_sidesToShow"];
_sidesToShow = _this select 0;
_sidesToShow spawn {
private ["_sides", "_allMarkerNames"];
_sides = _this;
_allMarkerNames = [];
while { true } do {
sleep 1.5;
// delete markers
{
deleteMarkerLocal _x;
} forEach _allMarkerNames;
// create markers
{
if (([_x] call AGM_SwitchUnits_fnc_isValidAi && (side group _x in _sides)) || (_x getVariable ["AGM_SwitchUnits_IsPlayerControlled", false])) then {
private ["_markerName", "_marker", "_markerColor"];
//_markerName = format ["%1", [_x] call AGM_Core_fnc_getName];
_markerName = str _x;
_marker = createMarkerLocal [_markerName, position _x];
_markerName setMarkerTypeLocal "mil_triangle";
_markerName setMarkerShapeLocal "ICON";
_markerName setMarkerSizeLocal [0.5,0.7];
_markerName setMarkerDirLocal getDir _x;
// commy's one liner magic
_markerColor = format ["Color%1", side group _x];
if ((_x getVariable ["AGM_SwitchUnits_IsPlayerControlled", false])) then {
_markerName setMarkerColorLocal "ColorOrange";
_markerName setMarkerTextLocal (_x getVariable ["AGM_SwitchUnits_PlayerControlledName",""]);
} else {
_markerName setMarkerColorLocal _markerColor;
_markerName setMarkerTextLocal (getText (configFile >> "CfgVehicles" >> typeOf _x >> "displayName"));
};
_allMarkerNames pushBack _markerName;
};
} forEach allUnits;
};
};

View File

@ -1,38 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_module
Author(s):
bux578
Description:
Initializes the SwitchUnits module
Parameters:
0: OBJECT - module logic
1: ARRAY<OBJECT> - list of affected units
2: BOOLEAN - isActivated
Returns:
BOOLEAN (Good practice to include one)
*/
if !(isServer) exitWith {};
_logic = _this select 0;
_activated = _this select 2;
if !(_activated) exitWith {};
AGM_SwitchUnits_Module = true;
["AGM_SwitchUnits_EnableSwitchUnits", true] call AGM_Core_fnc_setParameter;
[_logic, "AGM_SwitchUnits_SwitchToWest", "SwitchToWest"] call AGM_Core_fnc_readBooleanParameterFromModule;
[_logic, "AGM_SwitchUnits_SwitchToEast", "SwitchToEast"] call AGM_Core_fnc_readBooleanParameterFromModule;
[_logic, "AGM_SwitchUnits_SwitchToIndependent", "SwitchToIndependent"] call AGM_Core_fnc_readBooleanParameterFromModule;
[_logic, "AGM_SwitchUnits_SwitchToCivilian", "SwitchToCivilian"] call AGM_Core_fnc_readBooleanParameterFromModule;
[_logic, "AGM_SwitchUnits_EnableSafeZone", "EnableSafeZone"] call AGM_Core_fnc_readBooleanParameterFromModule;
[_logic, "AGM_SwitchUnits_SafeZoneRadius", "SafeZoneRadius"] call AGM_Core_fnc_readNumericParameterFromModule;
diag_log text "[AGM]: SwitchUnits Module Initialized.";

View File

@ -1,31 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_nearestPlayers
Author(s):
bux578
Description:
Returns an array of alive players in a given radius around a given location
Parameters:
0: POSTION - Center position
1: NUMBER - Radius
Returns:
ARRAY<OBJECT> - Player units
*/
private ["_position", "_radius", "_nearestPlayers"];
_position = _this select 0;
_radius = _this select 1;
_nearestPlayers = [];
{
if ([_x] call AGM_Core_fnc_isPlayer && {alive _x}) then {
_nearestPlayers pushBack _x;
};
} forEach (nearestObjects [_position, ["Man"], _radius]);
_nearestPlayers

View File

@ -1,29 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_switchBack
Author(s):
bux578
Description:
Switches back to the original player unit
This method needs to be "spawn"ed
Parameters:
0: OBJECT - original player unit
1: OBJECT - respawned unit
Returns:
VOID
*/
private ["_originalPlayerUnit", "_currentUnit"];
_originalPlayerUnit = _this select 0;
_currentUnit = _this select 1;
[_originalPlayerUnit] joinSilent AGM_SwitchUnits_OriginalGroup;
waitUntil {local _originalPlayerUnit};
selectPlayer _originalPlayerUnit;
deleteVehicle _currentUnit;

View File

@ -1,79 +0,0 @@
/*
Name: AGM_SwitchUnits_fnc_switchUnit
Author(s):
bux578
Description:
Selects the new given player unit
Parameters:
0: OBJECT - the unit to switch to
Returns:
VOID
*/
private ["_newUnit"];
_newUnit = _this select 1;
// don't switch to original player units
if (!([_newUnit] call AGM_SwitchUnits_fnc_isValidAi)) exitWith {};
_newUnit spawn {
private ["_unit", "_allNearestPlayers", "_oldUnit", "_respawnEhId", "_oldOwner", "_leave"];
_unit = _this;
_leave = false;
if (AGM_SwitchUnits_EnableSafeZone) then {
_allNearestPlayers = [position _unit, AGM_SwitchUnits_SafeZoneRadius] call AGM_SwitchUnits_fnc_nearestPlayers;
_nearestEnemyPlayers = [_allNearestPlayers, {((side AGM_SwitchUnits_OriginalGroup) getFriend (side _this) < 0.6) && !(_this getVariable ["AGM_SwitchUnits_IsPlayerControlled", false])}] call AGM_Core_fnc_filter;
if (count _nearestEnemyPlayers > 0) exitWith {
_leave = true;
};
};
// exitWith doesn't exit past the "if(EnableSafeZone)" block
if (_leave) exitWith {
[localize "STR_AGM_SwitchUnits_TooCloseToEnemy"] call AGM_Core_fnc_displayTextStructured;
};
// should switch locality
// This doesn't work anymore, because one's now able to switch to units from a different side
//[_unit] joinSilent group player;
[[_unit, player], "{(_this select 0) setVariable ['AGM_SwitchUnits_OriginalOwner', owner (_this select 0), true]; (_this select 0) setOwner owner (_this select 1)}", 1] call AGM_Core_fnc_execRemoteFnc;
_oldUnit = player;
waitUntil {sleep 0.2; local _unit};
_oldUnit setVariable ["AGM_SwitchUnits_IsPlayerControlled", false, true];
_oldUnit setVariable ["AGM_SwitchUnits_PlayerControlledName", "", true];
_respawnEhId = _unit getVariable ["AGM_SwitchUnits_RespawnEhId", -1];
if (_respawnEhId != -1) then {
_oldUnit removeEventHandler ["Respawn", _respawnEhId];
};
selectPlayer _unit;
_unit setVariable ["AGM_SwitchUnits_IsPlayerControlled", true, true];
_unit setVariable ["AGM_SwitchUnits_PlayerControlledName", AGM_SwitchUnits_OriginalName, true];
_respawnEhId = _unit addEventHandler ["Respawn", {
[AGM_SwitchUnits_OriginalUnit, _this select 0] spawn AGM_SwitchUnits_fnc_switchBack;
}];
_unit setVariable ["AGM_SwitchUnits_RespawnEhId", _respawnEhId, true];
// set owner back to original owner
_oldOwner = _oldUnit getVariable["AGM_SwitchUnits_OriginalOwner", -1];
if (_oldOwner > -1) then {
[[_oldUnit, _oldOwner], "{(_this select 0) setOwner (_this select 1)}", 1] call AGM_Core_fnc_execRemoteFnc;
};
[localize "STR_AGM_SwitchUnits_SwitchedUnit"] call AGM_Core_fnc_displayTextStructured;
};

View File

@ -0,0 +1,31 @@
class CfgFunctions {
class CSE {
class Configuration {
file = "cse\cse_f_configuration\functions";
class addKeyBindingForMenu_f { recompile = 1; };
class addKeyBindingForAction_f { recompile = 1; };
class onKeyPressed_f { recompile = 1; };
class onKeyReleased_f { recompile = 1; };
class getKeyBindingFromProfile_f { recompile = 1; };
class saveKeyBindingToProfile_f { recompile = 1; };
class updateActionKeyBinding_f { recompile = 1; };
class updateMenuKeyBinding_f { recompile = 1; };
class updateAllKeyBindings_f { recompile = 1; };
class settingsMenuUpdateKeyBinding_f { recompile = 1; };
class onSettingsMenuOpen { recompile = 1; };
class settingsMenuUpdateList { recompile = 1; };
class onListBoxShowSelectionChanged { recompile = 1; };
class settingsMenuUpdateKeyView { recompile = 1; };
class settingsDefineDetails_f { recompile = 1; };
class getSettingDetails_f { recompile = 1; };
class onListBoxKeyBindingChanged { recompile = 1; };
class onListBoxSettingsChanged { recompile = 1; };
class getClientSideOptionFromProfile_f { recompile = 1; };
class addClientSideOptions_f { recompile = 1; };
class saveClientSideOptionToProfile_f { recompile = 1; };
class updateClientSideOption_f { recompile = 1; };
class parseConfigForConfigurations { recompile = 1; };
class parseModuleForConfigurations { recompile = 1; };
};
};
};

View File

@ -0,0 +1,51 @@
class CfgHints
{
class Combat_Space_Enhancement
{
displayName = "Combat Space Enhancement";
class Cse_configure {
displayName = "Configuration";
displayNameShort = "Configuration";
description = "You can configure CSE keybindings and settings through the configuration menu.";
tip = "Keybindings and settings are stored in your profile.";
arguments[] = {};
image = "";
noImage = true;
};
class menuKeyBindings_subHint
{
displayName = "Menu Keybindings";
displayNameShort = "Menu Keybindings";
description = "Menu %11 will when their key is pressed open a menu.";
tip = "You can hold down the key for a longer period and when released, the menu will close.";
arguments[] = {
{"Keybindings"}
};
image = "";
noImage = true;
};
class actionKeyBindings_subHint
{
displayName = "Action Keybindings";
displayNameShort = "Action Keybindings";
description = "Action %11 are used for specific actions performed by the player character.";
tip = "Use Ctrl, Alt or Shift combinations to increase the amount of actions you can bind.";
arguments[] = {
{"Keybindings"}
};
image = "";
noImage = true;
};
class clientSettings
{
displayName = "Client Settings";
displayNameShort = "Client Settings";
description = "Client settings do not affect MP gameplay but allows players to customize their gameplay to their likings.";
tip = "If you are having low frames, try turning off some client settings..";
arguments[] = {};
image = "";
noImage = true;
};
};
};

View File

@ -0,0 +1,9 @@
class Combat_Space_Enhancement {
class EventHandlers {
class PostInit_EventHandlers {
class cse_f_configuration_handleKeys {
init = " call compile preprocessFile 'cse\cse_f_configuration\displayEventHandler_keys.sqf';"; // [configFile] call cse_fnc_parseConfigForConfigurations;
};
};
};
};

View File

@ -0,0 +1,3 @@
#include "gui\define.h"
#include "gui\settingsMenu.h"
#include "gui\pauseMenu.h"

View File

@ -0,0 +1,26 @@
#define _ARMA_
class CfgPatches
{
class cse_f_configuration
{
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"a3_ui_f", "cse_gui"};
version = "0.10.0_rc";
author[] = {"Combat Space Enhancement"};
authorUrl = "http://csemod.com";
};
};
class CfgAddons {
class PreloadAddons {
class cse_f_configuration {
list[] = {"cse_f_configuration"};
};
};
};
#include "CfgFunctions.h"
#include "CfgHints.h"
#include "Combat_Space_Enhancement.h"
#include "GUI.h"

View File

@ -0,0 +1,23 @@
if (isnil "CSE_F_KEYBINDINGS_MENUS") then {
CSE_F_KEYBINDINGS_MENUS = [];
};
if (isnil "CSE_F_KEYBINDINGS_ACTIONS") then {
CSE_F_KEYBINDINGS_ACTIONS = [];
};
if (isnil "CSE_F_CLIENT_SIDE_SETTINGS") then {
CSE_F_CLIENT_SIDE_SETTINGS = [];
};
CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F = false;
CSE_DISPLAY_MENU = false;
CSE_KEY_RELEASED = false;
CSE_DISABLE_KEY_INPUT_F = false;
CSE_KEY_COMBINATION_PRESSED = [0,0,0,0];
if (hasInterface) then {
[] spawn {
waitUntil {!isNull player && (player == player) && !(isNull (findDisplay 46))};
sleep 3;
cse_displayEventHandler_config_keyPressed_f = findDisplay 46 displayAddEventHandler ["keyDown", cse_fnc_onKeyPressed_f ];
cse_displayEventHandler_config_keyReleaded_f = findDisplay 46 displayAddEventHandler ["keyUp", cse_fnc_onKeyReleased_f];
};
};

View File

@ -0,0 +1,25 @@
/**
* fn_addClientSideOptions_f.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name", "_possibleValues", "_defaultValue"];
_name = _this select 0;
_possibleValues = _this select 1;
_defaultValue = _this select 2;
_onChange = _this select 3;
if (isnil "CSE_F_CLIENT_SIDE_SETTINGS") then {
CSE_F_CLIENT_SIDE_SETTINGS = [];
};
// missionNamespace setvariable[_name, _defaultValue];
CSE_F_CLIENT_SIDE_SETTINGS pushBack [ _name, _possibleValues, _defaultValue, _onChange];
[_name, _defaultValue] call _onChange;

View File

@ -0,0 +1,25 @@
/**
* fn_addKeyBindingForAction_f.sqf
* @Descr: Add a new action keybinding
* @Author: Glowbal
*
* @Arguments: [name STRING, keybinding ARRAY, action CODE]
* @Return: void
* @PublicAPI: true
*/
private ["_name","_keyBinding","_action","_idd","_keyCodePressed","_shiftPressed","_altPressed","_ctrlPressed"];
_name = _this select 0;
_keyBinding = _this select 1;
_action = _this select 2;
_keyCodePressed = _keyBinding select 0;
_shiftPressed = _keyBinding select 1;
_ctrlPressed = _keyBinding select 2;
_altPressed = _keyBinding select 3;
if (isnil "CSE_F_KEYBINDINGS_ACTIONS") then {
CSE_F_KEYBINDINGS_ACTIONS = [];
};
CSE_F_KEYBINDINGS_ACTIONS pushBack [ _name, _keyBinding, _action ];
[_name, "action"] call cse_fnc_saveKeyBindingToProfile_f;

View File

@ -0,0 +1,26 @@
/**
* fn_addKeyBindingForMenu_f.sqf
* @Descr: Add a new menu keybinding
* @Author: Glowbal
*
* @Arguments: [name STRING, keybinding ARRAY, action CODE]
* @Return: void
* @PublicAPI: true
*/
private ["_name","_keyBinding","_action","_idd","_keyCodePressed","_shiftPressed","_altPressed","_ctrlPressed"];
_name = _this select 0;
_keyBinding = _this select 1;
_action = _this select 2;
_idd = _this select 3;
_keyCodePressed = _keyBinding select 0;
_shiftPressed = _keyBinding select 1;
_ctrlPressed = _keyBinding select 2;
_altPressed = _keyBinding select 3;
if (isnil "CSE_F_KEYBINDINGS_MENUS") then {
CSE_F_KEYBINDINGS_MENUS = [];
};
CSE_F_KEYBINDINGS_MENUS pushBack [_name, _keyBinding, _action, _idd, [false, false] ];
[_name, "menu"] call cse_fnc_saveKeyBindingToProfile_f;

View File

@ -0,0 +1,17 @@
/**
* fn_getClientSideOptionFromProfile_f.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name","_default","_settingValue"];
_name = _this select 0;
_default = _this select 1;
_settingValue = profileNamespace getvariable ["cse_f_clientSideSetting_"+_name, _default];
_settingValue

View File

@ -0,0 +1,18 @@
/**
* fn_getKeyBindingFromProfile_f.sqf
* @Descr: Grab a keybinding settings saved in the profile.
* @Author: Glowbal
*
* @Arguments: [name STRING, type STRING (Can be: Action or Menu), defaultValue ARRAY (Format: [keyCode, shift, ctrl], alt)]
* @Return: ARRAY Format: [keyCode, shift, ctrl, alt]
* @PublicAPI: true
*/
private ["_name","_default","_keyBinding"];
_name = _this select 0;
_type = _this select 1;
_default = _this select 2;
_keyBinding = profileNamespace getvariable ["cse_f_keybinding_"+_type+"_"+_name, _default];
_keyBinding

View File

@ -0,0 +1,44 @@
/**
* fn_getSettingDetails_f.sqf
* @Descr: Returns the details of current setting
* @Author: Glowbal
*
* @Arguments: [name STRING, type STRING]
* @Return: ARRAY Array with the current settings
* @PublicAPI: false
*/
private ["_name","_type", "_title","_desc", "_return"];
_name = _this select 0;
_type = _this select 1;
_return = [_name,""];
if (isnil "CSE_SETTINGS_MENUS_DETAILS_F") then {
CSE_SETTINGS_MENUS_DETAILS_F = [];
CSE_SETTINGS_ACTIONS_DETAILS_F = [];
CSE_SETTINGS_CLIENTSIDE_DETAILS_F = [];
};
if (_type == "menu") then {
{
if (_name == (_x select 0)) exitwith {
_return = [_x select 1, _x select 2];
};
}foreach CSE_SETTINGS_MENUS_DETAILS_F;
} else {
if (_type == "action") then {
{
if (_name == (_x select 0)) exitwith {
_return = [_x select 1, _x select 2];
};
}foreach CSE_SETTINGS_ACTIONS_DETAILS_F;
} else {
{
if (_name == (_x select 0)) exitwith {
_return = [_x select 1, _x select 2, _x select 3];
};
}foreach CSE_SETTINGS_CLIENTSIDE_DETAILS_F;
};
};
_return

View File

@ -0,0 +1,105 @@
/**
* fn_onKeyPressed_f.sqf
* @Descr: Executed on a key pressed. Handles all CSE keybindings
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
// Returns the control, the keyboard code and the state of Shift, Ctrl and Alt.
private ["_control","_var","_keyBinding","_keyCodePressed","_shiftPressed","_ctrlPressed","_altPressed","_name","_onPressed","_idd", "_state","_STARTINGTIME","_handle", "_returnOnPressed"];
_control = _this select 0;
_keyCodePressed = _this select 1;
_shiftPressed = _this select 2;
_ctrlPressed = _this select 3;
_altPressed = _this select 4;
if (missionNamespace getVariable ['CSE_SETTINGS_MENU_OPEN', false]) exitwith {
false;
};
_returnOnPressed = false;
if ((findDisplay 46) == _control && _keyCodePressed != 0) then {
if ([player] call cse_fnc_canInteract) then {
{
_name = _x select 0;
_keyBinding = _x select 1;
_onPressed = _x select 2;
_idd = _x select 3;
_state = _x select 4;
_shiftBinding = _keyBinding select 1;
_ctrlBinding = _keyBinding select 2;
_altBinding = _keyBinding select 3;
if ((_keyBinding select 0) == _keyCodePressed) then {
if ((_shiftBinding == 0) && _shiftPressed) exitwith {};
if ((_shiftBinding == 1) && !_shiftPressed) exitwith {};
if ((_ctrlBinding == 0) && _ctrlPressed) exitwith {};
if ((_ctrlBinding == 1) && !_ctrlPressed) exitwith {};
if ((_altBinding == 0) && _altPressed) exitwith {};
if ((_altBinding == 1) && !_altPressed) exitwith {};
if (CSE_DISPLAY_MENU && !CSE_KEY_RELEASED) exitwith {};
if (CSE_DISPLAY_MENU && CSE_KEY_RELEASED) exitwith { closeDialog _idd;};
if (dialog) exitwith { closeDialog 0; };
_state set [ 0, true]; // activated/open , not released
_state set [ 1, false];
CSE_KEY_COMBINATION_PRESSED = _keyBinding;
CSE_DISPLAY_MENU = true;
CSE_KEY_RELEASED = false;
_handle = [_forEachIndex, time] spawn {
_menu = CSE_F_KEYBINDINGS_MENUS select (_this select 0);
_state = _menu select 4;
waituntil{CSE_KEY_RELEASED || (time - ((_this select 1) ) > (0.25 * accTime))};
if (!CSE_KEY_RELEASED) then {
waituntil {CSE_KEY_RELEASED};
closeDialog (_menu select 3);
} else {
CSE_KEY_RELEASED = true;
};
waituntil {!dialog};
_state set [ 0, false];
CSE_DISPLAY_MENU = false;
};
_returnOnPressed = _this call _onPressed;
};
}foreach CSE_F_KEYBINDINGS_MENUS;
if (isNil "_returnOnPressed") then {
{
_name = _x select 0;
_keyBinding = _x select 1;
_onPressed = _x select 2;
_shiftBinding = _keyBinding select 1;
_ctrlBinding = _keyBinding select 2;
_altBinding = _keyBinding select 3;
if ((_keyBinding select 0) == _keyCodePressed) then {
if ((_shiftBinding == 0) && _shiftPressed) exitwith {};
if ((_shiftBinding == 1) && !_shiftPressed) exitwith {};
if ((_ctrlBinding == 0) && _ctrlPressed) exitwith {};
if ((_ctrlBinding == 1) && !_ctrlPressed) exitwith {};
if ((_altBinding == 0) && _altPressed) exitwith {};
if ((_altBinding == 1) && !_altPressed) exitwith {};
CSE_KEY_COMBINATION_PRESSED = _keyBinding;
_returnOnPressed = _this call _onPressed;
};
}foreach CSE_F_KEYBINDINGS_ACTIONS;
};
};
};
if (isnil "_returnOnPressed") exitwith {false};
//_returnOnPressed
false;

View File

@ -0,0 +1,33 @@
/**
* fn_onKeyReleased_f.sqf
* @Descr: Handles all keyreleased from CSE
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
// _this = the control, the keyboard code and the state of Shift, Ctrl and Alt.
if (CSE_DISABLE_KEY_INPUT_F) exitwith {
(( _this select 1) > 0);
};
if ((findDisplay 46) == (_this select 0)) then {
_keyCodePressed = _this select 1;
{
_keyBinding = _x select 1;
_state = _x select 4;
if ((_keyBinding select 0) == _keyCodePressed) then {
if (!(_state select 0) ) exitwith {};
_state set [ 0, false];
CSE_KEY_RELEASED = true;
};
}foreach CSE_F_KEYBINDINGS_MENUS;
} else {
false;
};
false;

View File

@ -0,0 +1,54 @@
/**
* fn_onListBoxKeyBindingChanged.sqf
* @Descr: called when the listbox keybinding has changed. Updates the configuration menu with new information.
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_settingsMenu","_ctrlSelected","_ctrlPressed","_ctrlTextLabel","_keyCodePressed","_shiftSelected","_shiftPressed","_altSelected","_altPressed","_possibleOptions",'_keyBinding',"_fnc","_collection"];
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_shiftSelected = lbCurSel 400;
_ctrlSelected = lbCurSel 401;
_altSelected = lbCurSel 402;
_possibleOptions = [0,1,2];
if (_shiftSelected < 0) then {
_shiftSelected = 0;
};
if (_ctrlSelected < 0) then {
_ctrlSelected = 0;
};
if (_altSelected < 0) then {
_altSelected = 0;
};
_func = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "menu": {cse_fnc_updateMenuKeyBinding_F};
case "action": {cse_fnc_updateActionKeyBinding_F};
default {{}};
};
_collection = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "menu": {CSE_F_KEYBINDINGS_MENUS};
case "action": {CSE_F_KEYBINDINGS_ACTIONS};
default {[]};
};
if (count _collection > 0) then {
_selectedSetting = (lbCurSel (_settingsMenu displayCtrl 200));
if (_selectedSetting > (count _collection)) then {
_selectedSetting = count _collection - 1;
};
if (_selectedSetting < 0) then {
_selectedSetting = 0;
};
_nameOfSetting = (_collection select _selectedSetting) select 0;
_keyBinding = [_nameOfSetting,CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F,[0,0,0,0]] call cse_fnc_getKeyBindingFromProfile_F;
_keyBinding = [_keyBinding select 0, _possibleOptions select _shiftSelected, _possibleOptions select _ctrlSelected, _possibleOptions select _altSelected];
[_nameOfSetting,_keyBinding] call _func;
[false] call cse_fnc_settingsMenuUpdateList;
};

View File

@ -0,0 +1,40 @@
/**
* fn_onListBoxSettingsChanged.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_settingsMenu", "_ctrlTextLabel", "_optionSelected", "_func", "_collection", "_selectedSetting", "_nameOfSetting"];
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_optionSelected = lbCurSel 400;
if (_optionSelected < 0) then {
_optionSelected = 0;
};
_func = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "option": {cse_fnc_updateClientSideOption_F};
default {{}};
};
_collection = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "option": {CSE_F_CLIENT_SIDE_SETTINGS};
default {[]};
};
if !(_collection isEqualTo []) then {
_selectedSetting = (lbCurSel (_settingsMenu displayCtrl 200));
if (_selectedSetting > (count _collection)) then {
_selectedSetting = count _collection - 1;
};
if (_selectedSetting < 0) then {
_selectedSetting = 0;
};
_nameOfSetting = (_collection select _selectedSetting) select 0;
[_nameOfSetting, _optionSelected] call _func;
[_nameOfSetting, _optionSelected] call ((_collection select _selectedSetting) select 3);
[false] call cse_fnc_settingsMenuUpdateList;
};

View File

@ -0,0 +1,55 @@
/**
* fn_onListBoxShowSelectionChanged.sqf
* @Descr: called when the listbox selection has changed. Updates configuration menu information
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_first", "_settingsMenu", "_ctrlLb", "_ctrlLbShow"];
_first = (_this select 0);
disableSerialization;
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_ctrlLbShow = _settingsMenu displayCtrl 100;
if (isnil "_first") then {
_ctrlLbShow lbSetCurSel (_this select 1);
};
if ((_this select 1) > -1) then {
private ["_options"];
_options = ["menu","action", "option", "color"];
CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F = _options select (_this select 1);
[true] call cse_fnc_settingsMenuUpdateList;
_textOptions = ["Menu Keybindings", "Action Keybindings", "Client Settings"];
ctrlSetText [13, ("Current selected settings list: " + (_textOptions select (_this select 1)))];
if (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F == "color") exitwith {};
if ((_this select 1) > 1) then {
(_settingsMenu displayCtrl 400) ctrlShow true;
lbClear 400;
(_settingsMenu displayCtrl 401) ctrlShow false;
(_settingsMenu displayCtrl 402) ctrlShow false;
(_settingsMenu displayCtrl 301) ctrlSetText "Value:";
(_settingsMenu displayCtrl 302) ctrlSetText "";
(_settingsMenu displayCtrl 303) ctrlSetText "";
} else {
(_settingsMenu displayCtrl 400) ctrlShow true;
LbClear 400;
_ctrlLb = _settingsMenu displayCtrl 400;
_ctrlLb lbadd "No";
_ctrlLb lbadd "Yes";
_ctrlLb lbadd "Ignore";
(_settingsMenu displayCtrl 401) ctrlShow true;
(_settingsMenu displayCtrl 402) ctrlShow true;
(_settingsMenu displayCtrl 301) ctrlSetText "Shift:";
(_settingsMenu displayCtrl 302) ctrlSetText "Ctrl:";
(_settingsMenu displayCtrl 303) ctrlSetText "Alt:";
};
};

View File

@ -0,0 +1,104 @@
/**
* fn_onSettingsMenuOpen.sqf
* @Descr: called when the settings or configuration menu has opened. Do not use anywhere else.
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_ctrlLbShow = _settingsMenu displayCtrl 100;
_ctrlLbShow lbadd "Menu Keybindings";
_ctrlLbShow lbadd "Action Keybindings";
_ctrlLbShow lbadd "Client Settings";
_ctrlLbShow lbadd "Colors";
_ctrlLbShow lbSetCurSel 0;
(_settingsMenu displayCtrl 1003) ctrlEnable false;
//lbadd[100,"Other settings"];
CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F = false;
_settingsMenu displayAddEventHandler ["KeyDown", {
_keyCodePressed = _this select 1;
_shiftPressed = _this select 2;
_ctrlPressed = _this select 3;
_altPressed = _this select 4;
_var = uiNamespace getVariable 'cse_settingsMenu';
if (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F != "option") then {
if !(isnil "_var") then {
if (CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F) then {
if (_keyCodePressed > 1) then {
[_keyCodePressed,_shiftPressed, _ctrlPressed, _altPressed] call cse_fnc_settingsMenuUpdateKeyBinding_F;
true;
} else {
false;
};
} else {
false;
};
} else {
false;
};
} else {
false;
};
}];
_settingsMenu displayAddEventHandler ["KeyUp", {
_keyCodePressed = _this select 1;
_shiftPressed = _this select 2;
_ctrlPressed = _this select 3;
_altPressed = _this select 4;
_var = uiNamespace getVariable 'cse_settingsMenu';
if (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F != "option") then {
if !(isnil "_var") then {
if (CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F) then {
if (_keyCodePressed > 1) then {
CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F = false;
true;
} else {
false;
};
} else {
false;
};
} else {
false;
};
} else {
false;
};
}];
(_settingsMenu displayCtrl 200) ctrlSetEventHandler ["LBSelChanged", "_this call cse_fnc_settingsMenuUpdateKeyView;"];
_textOptions = ["Menu Keybindings", "Action Keybindings"];
(_settingsMenu displayCtrl 13) ctrlSetText ("Current selected settings list: " + (_textOptions select 0));
_ctrlLb = _settingsMenu displayCtrl 400;
_ctrlLb lbadd "No";
_ctrlLb lbadd "Yes";
_ctrlLb lbadd "Ignore";
_ctrlLb ctrlSetEventHandler ["LBSelChanged", "if (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F != 'option') then { _this call cse_fnc_onListBoxKeyBindingChanged; } else { _this call cse_fnc_onListBoxSettingsChanged; };"];
_ctrlLb = _settingsMenu displayCtrl 401;
_ctrlLb lbadd "No";
_ctrlLb lbadd "Yes";
_ctrlLb lbadd "Ignore";
_ctrlLb ctrlSetEventHandler ["LBSelChanged", " _this call cse_fnc_onListBoxKeyBindingChanged;"];
_ctrlLb = _settingsMenu displayCtrl 402;
_ctrlLb lbadd "No";
_ctrlLb lbadd "Yes";
_ctrlLb lbadd "Ignore";
_ctrlLb ctrlSetEventHandler ["LBSelChanged", " _this call cse_fnc_onListBoxKeyBindingChanged;"];
CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F = false;
CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F = "menu";
[true] call cse_fnc_settingsMenuUpdateList;
(_settingsMenu displayCtrl 200) lbSetCurSel 0;

View File

@ -0,0 +1,22 @@
/**
* fn_parseConfigForConfigurations.sqf
* @Descr: Collect all configurations defined in CfgModules
* @Author: Glowbal
*
* @Arguments: [config CONFIG]
* @Return: nil
* @PublicAPI: false
*/
#define MENU_KEYBINDING 1
#define ACTION_KEYBINDING 2
#define CLIENT_SETTING 3
private ["_config","_cfgRoot","_amountOfClasses","_i","_moduleName","_configurationClass","_nOfConfgClasses","_j","_configuration","_configurationName","_title","_desc","_defaultValue","_code","_idd","_availableSettings","_valuesCfg","_nOfValues","_k"];
_config = _this select 0;
_cfgRoot = (_config >> "Combat_Space_Enhancement" >> "CfgModules");
_amountOfClasses = count _cfgRoot;
for [{_i=0}, {_i < _amountOfClasses}, {_i=_i+1}] do {
[ConfigName (_cfgRoot select _i)] call cse_fnc_parseModuleForConfigurations;
};

View File

@ -0,0 +1,63 @@
/**
* fn_parseModuleForConfigurations.sqf
* @Descr: Collects all configurations defined in the CfgModules entry
* @Author: Glowbal
*
* @Arguments: [cfgModulesName STRING (Name of the module defined in CfgModules)]
* @Return: nil
* @PublicAPI: false
*/
#define MENU_KEYBINDING 1
#define ACTION_KEYBINDING 2
#define CLIENT_SETTING 3
private ["_config","_cfgRoot","_amountOfClasses","_i","_moduleName","_configurationClass","_nOfConfgClasses","_j","_configuration","_configurationName","_title","_desc","_defaultValue","_code","_idd","_availableSettings","_valuesCfg","_nOfValues","_k"];
_moduleName = _this select 0;
_cfgRoot = (configFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _moduleName);
if (isClass (_cfgRoot >> "Configurations")) then {
_configurationClass = (_cfgRoot >> "Configurations");
_nOfConfgClasses = count _configurationClass;
for [{_j=0}, {_j < _nOfConfgClasses}, {_j=_j+1}] do {
_configuration = _configurationClass select _j;
_configurationName = ConfigName _configuration;
_title = [_configuration, "title", ""] call BIS_fnc_returnConfigEntry;
_desc = [_configuration, "description", ""] call BIS_fnc_returnConfigEntry;
switch (getNumber(_configuration >> "type")) do {
case MENU_KEYBINDING: {
_defaultValue = [_configuration, "value", [0,0,0,0]] call BIS_fnc_returnConfigEntry;
_code = compile (format["disableSerialization; if (['%1'] call cse_fnc_isModuleEnabled_F) then {", _moduleName] + ([_configuration, "onPressed", ""] call BIS_fnc_returnConfigEntry) + "};");
_idd = [_configuration, "idd", 0] call BIS_fnc_returnConfigEntry;
[format["name: %1, default %2, code %3, idd %4, title %5, desc %6",_configurationName, _defaultValue, _code, _idd, _title, _desc]] call cse_fnc_debug;
[_configurationName, ([_configurationName,"menu",_defaultValue] call cse_fnc_getKeyBindingFromProfile_F), _code, _idd] call cse_fnc_addKeyBindingForMenu_F;
[_configurationName,"menu", _title, _desc] call cse_fnc_settingsDefineDetails_F;
};
case ACTION_KEYBINDING: {
_defaultValue = [_configuration, "value", [0,0,0,0]] call BIS_fnc_returnConfigEntry;
_code = compile (format["disableSerialization; if (['%1'] call cse_fnc_isModuleEnabled_F) then {", _moduleName] + ([_configuration, "onPressed", ""] call BIS_fnc_returnConfigEntry) + "};");
[format["name: %1, default %2, code %3, title %4, desc %5",_configurationName, _defaultValue, _code, _title, _desc]] call cse_fnc_debug;
[_configurationName, ([_configurationName,"action",_defaultValue] call cse_fnc_getKeyBindingFromProfile_F), _code] call cse_fnc_addKeyBindingForAction_F;
[_configurationName,"action", _title, _desc] call cse_fnc_settingsDefineDetails_F;
};
case CLIENT_SETTING: {
_defaultValue = [_configuration, "value", 0] call BIS_fnc_returnConfigEntry;
_code = compile (format["disableSerialization; if (['%1'] call cse_fnc_isModuleEnabled_F) then {", _moduleName] + ([_configuration, "onChanged", ""] call BIS_fnc_returnConfigEntry) + "};");
_availableSettings = [];
_valuesCfg = (_configuration >> "Values");
if (isClass _valuesCfg) then {
_nOfValues = count _valuesCfg;
for [{_k=0}, {_k < _amountOfClasses}, {_k=_k+1}] do {
if (isClass (_valuesCfg select _k)) then {
_availableSettings pushback (configName (_valuesCfg select _k));
};
};
};
};
default {}; // invalid, do nothing
};
};
};

View File

@ -0,0 +1,25 @@
/**
* fn_saveClientSideOptionToProfile_f.sqf
* @Descr: Save the clientside option to the profile.
* @Author: Glowbal
*
* @Arguments: [name STRING (Name of setting)]
* @Return: BOOL True if saved.
* @PublicAPI: false
*/
private ["_name","_nameSelected", "_saved"];
_name = _this select 0;
if (isnil "CSE_F_CLIENT_SIDE_SETTINGS") then {
CSE_F_CLIENT_SIDE_SETTINGS = [];
};
_saved = false;
{
_nameSelected = _x select 0;
if (_nameSelected == _name) exitwith {
profileNamespace setvariable ["cse_f_clientSideSetting_"+_name, _x select 2];
_saved = true;
};
}foreach CSE_F_CLIENT_SIDE_SETTINGS;
_saved

View File

@ -0,0 +1,41 @@
/**
* fn_saveKeyBindingToProfile_f.sqf
* @Descr: Saves a keybinding to the profile
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name","_nameSelected", "_saved", "_type"];
_name = _this select 0;
_type = _this select 1;
if (isnil "CSE_F_KEYBINDINGS_MENUS") then {
CSE_F_KEYBINDINGS_MENUS = [];
};
if (isnil "CSE_F_KEYBINDINGS_ACTIONS") then {
CSE_F_KEYBINDINGS_ACTIONS = [];
};
_saved = false;
if (_type == "menu") then {
{
_nameSelected = _x select 0;
if (_nameSelected == _name) exitwith {
profileNamespace setvariable ["cse_f_keybinding_menu_"+_name, _x select 1];
_saved = true;
};
}foreach CSE_F_KEYBINDINGS_MENUS;
} else {
if (_type == "action") then {
{
_nameSelected = _x select 0;
if (_nameSelected == _name) exitwith {
profileNamespace setvariable ["cse_f_keybinding_action_"+_name, _x select 1];
_saved = true;
};
}foreach CSE_F_KEYBINDINGS_ACTIONS;
};
};
_saved

View File

@ -0,0 +1,33 @@
/**
* fn_settingsDefineDetails_f.sqf
* @Descr:
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name","_type", "_title","_descr"];
_name = _this select 0;
_type = _this select 1;
_title = _this select 2;
_descr = _this select 3;
if (isnil "CSE_SETTINGS_MENUS_DETAILS_F") then {
CSE_SETTINGS_MENUS_DETAILS_F = [];
CSE_SETTINGS_ACTIONS_DETAILS_F = [];
CSE_SETTINGS_CLIENTSIDE_DETAILS_F = [];
};
if (_type == "menu") then {
CSE_SETTINGS_MENUS_DETAILS_F pushback [_name, _title, _descr];
} else {
if (_type == "action") then {
CSE_SETTINGS_ACTIONS_DETAILS_F pushback [_name, _title, _descr];
} else {
if (_type == "option") then {
CSE_SETTINGS_CLIENTSIDE_DETAILS_F pushback [_name, _title, _descr];
};
};
};

View File

@ -0,0 +1,65 @@
/**
* fn_settingsMenuUpdateKeyBinding_f.sqf
* @Descr:
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_settingsMenu","_ctrlSelected","_ctrlPressed","_ctrlTextLabel","_keyCodePressed","_shiftSelected","_shiftPressed","_altSelected","_altPressed","_possibleOptions",'_keyBinding',"_fnc","_collection"];
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_ctrlTextLabel = (_settingsMenu displayCtrl 300);
_keyCodePressed = _this select 0;
_shiftPressed = _this select 1;
_ctrlPressed = _this select 2;
_altPressed = _this select 3;
ctrlSetText [252, ''];
//(_settingsMenu displayCtrl 300) ctrlSetText ("Key: " + (keyName _keyCodePressed));
_shiftSelected = lbCurSel 400;
_ctrlSelected = lbCurSel 401;
_altSelected = lbCurSel 402;
_possibleOptions = [0,1,2];
if (_shiftSelected < 0) then {
_shiftSelected = 0;
};
if (_ctrlSelected < 0) then {
_ctrlSelected = 0;
};
if (_altSelected < 0) then {
_altSelected = 0;
};
_keyBinding = [_keyCodePressed, _possibleOptions select _shiftSelected, _possibleOptions select _ctrlSelected, _possibleOptions select _altSelected];
//CSE_CURRENT_KEYBINDING_SETTING_NAME_F = ["cse_sys_weaponRestAction","action"];
_func = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "menu": {cse_fnc_updateMenuKeyBinding_F};
case "action": {cse_fnc_updateActionKeyBinding_F};
case "option": {{}};
default {{}};
};
_collection = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "menu": {CSE_F_KEYBINDINGS_MENUS};
case "action": {CSE_F_KEYBINDINGS_ACTIONS};
case "option": {CSE_F_CLIENT_SIDE_SETTINGS};
default {[]};
};
if (count _collection > 0) then {
_selectedSetting = (lbCurSel 200);
if (_selectedSetting > (count _collection)) then {
_selectedSetting = count _collection - 1;
};
if (_selectedSetting < 0) then {
_selectedSetting = 0;
};
_nameOfSetting = (_collection select _selectedSetting) select 0;
[_nameOfSetting,_keyBinding] call _func;
[true] call cse_fnc_settingsMenuUpdateList;
};

View File

@ -0,0 +1,74 @@
/**
* fn_settingsMenuUpdateKeyView.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_setting","_ctrlList","_collection","_settingsMenu", "_keybinding","_keyCode","_shiftPressed","_altPressed","_ctrlPressed"];
disableSerialization;
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_ctrlList = _settingsMenu displayCtrl 200;
_collection = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "menu": {CSE_F_KEYBINDINGS_MENUS};
case "action": {CSE_F_KEYBINDINGS_ACTIONS};
case "option": {CSE_F_CLIENT_SIDE_SETTINGS};
default {[]};
};
if (count _collection > 0) then {
_selectedSetting = (lbCurSel _ctrlList);
if (_selectedSetting > (count _collection)) then {
_selectedSetting = count _collection - 1;
};
if (_selectedSetting < 0) exitwith {
_selectedSetting = 0;
};
_setting = _collection select _selectedSetting;
_details = [_setting select 0, CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F] call cse_fnc_getSettingDetails_F;
(_settingsMenu displayCtrl 250) ctrlSetText (_details select 0);
(_settingsMenu displayCtrl 251) ctrlSetText (_details select 1);
if (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F != "option") then {
_keybinding = _setting select 1;
_keyCode = _keybinding select 0;
_shiftPressed = _keybinding select 1;
_ctrlPressed = _keybinding select 2;
_altPressed = _keybinding select 3;
_keyBindingText = keyName _keyCode;
if (_keyBindingText == '""') then {
_keyBindingText = "No key assigned";
};
(_settingsMenu displayCtrl 300) ctrlSetText ("Key: " + _keyBindingText);
lbClear 400;
lbadd [400, "No"];
lbadd [400, "Yes"];
lbadd [400, "Ignore"];
(_settingsMenu displayCtrl 400) lbSetCurSel _shiftPressed;
(_settingsMenu displayCtrl 401) lbSetCurSel _ctrlPressed;
(_settingsMenu displayCtrl 402) lbSetCurSel _altPressed;
} else {
_possibleValues = _setting select 1;
_settingsValue = _setting select 2;
lbClear 400;
_settingsText = (_possibleValues select _settingsValue); // expecting: value [[any, TEXT (DESCRIPTION)]]
(_settingsMenu displayCtrl 300) ctrlSetText ("Setting: " + _settingsText);
{
lbAdd [400, _x];
}foreach _possibleValues;
(_settingsMenu displayCtrl 400) lbSetCurSel _settingsValue;
};
};

View File

@ -0,0 +1,56 @@
/**
* fn_settingsMenuUpdateList.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_settingsMenu","_ctrlList","_collection","_keyBindingText","_keybinding", "_updateKeyView"];
disableSerialization;
_updateKeyView = [_this, 0, true, [true]] call BIS_fnc_Param;
_settingsMenu = uiNamespace getVariable 'cse_settingsMenu';
_ctrlList = _settingsMenu displayCtrl 200;
_collection = switch (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F) do {
case "menu": {CSE_F_KEYBINDINGS_MENUS};
case "action": {CSE_F_KEYBINDINGS_ACTIONS};
case "option": {CSE_F_CLIENT_SIDE_SETTINGS};
default {[]};
};
lbclear _ctrlList;
if (CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F != "option") then {
{
_keybinding = (_x select 1);
_keyBindingText = keyName (_keybinding select 0);
if (_keyBindingText == '""') then {
_keyBindingText = "";
} else {
if ((_keybinding select 1) == 1) then {
_keyBindingText = _keyBindingText + " + shift";
};
if ((_keybinding select 2) == 1) then {
_keyBindingText = _keyBindingText + " + ctrl";
};
if ((_keybinding select 3) == 1) then {
_keyBindingText = _keyBindingText + " + alt";
};
};
_ctrlList lbadd (([_x select 0, CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F] call cse_fnc_getSettingDetails_F) select 0);
_ctrlList lbadd (_keyBindingText);
}foreach _collection;
} else {
{
_settingsText = ((_x select 1) select (_x select 2));
_ctrlList lbadd (([_x select 0, CSE_SETTINGS_MENU_CURRENT_SETTING_LIST_F] call cse_fnc_getSettingDetails_F) select 0);
_ctrlList lbadd (_settingsText);
}foreach _collection;
};
if (_updateKeyView) then {
[] call cse_fnc_settingsMenuUpdateKeyView;
};

View File

@ -0,0 +1,24 @@
/**
* fn_updateActionKeybinding_f.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name","_keyBinding","_action","_idd","_keyCodePressed","_shiftPressed","_altPressed","_ctrlPressed"];
_name = _this select 0;
_keyBinding = _this select 1;
if (isnil "CSE_F_KEYBINDINGS_ACTIONS") then {
CSE_F_KEYBINDINGS_ACTIONS = [];
};
{
if ((_x select 0) == _name) exitwith {
_x set [ 1, _keyBinding];
};
}foreach CSE_F_KEYBINDINGS_ACTIONS;
[_name,"action"] call cse_fnc_saveKeyBindingToProfile_F;

View File

@ -0,0 +1,23 @@
/**
* fn_updateAllKeyBindings_f.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name","_currentKeyBinding"];
{
_name = _x select 0;
_currentKeyBinding = _x select 1;
_x set [1,([_name, _currentKeyBinding, "menu"] call cse_fnc_getKeyBindingFromProfile_F)];
}foreach CSE_F_KEYBINDINGS_MENUS;
{
_name = _x select 0;
_currentKeyBinding = _x select 1;
_x set [1,([_name, _currentKeyBinding, "action"] call cse_fnc_getKeyBindingFromProfile_F)];
}foreach CSE_F_KEYBINDINGS_ACTIONS;

View File

@ -0,0 +1,24 @@
/**
* fn_updateClientSideOption_f.sqf
* @Descr:
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: true
*/
private ["_name","_keyBinding","_action","_idd","_keyCodePressed","_shiftPressed","_altPressed","_ctrlPressed"];
_name = _this select 0;
_keyBinding = _this select 1;
if (isnil "CSE_F_CLIENT_SIDE_SETTINGS") then {
CSE_F_CLIENT_SIDE_SETTINGS = [];
};
{
if ((_x select 0) == _name) exitwith {
_x set [ 2, _keyBinding];
};
}foreach CSE_F_CLIENT_SIDE_SETTINGS;
[_name] spawn cse_fnc_saveClientSideOptionToProfile_F;

View File

@ -0,0 +1,24 @@
/**
* fn_updateMenuKeyBinding_f.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_name","_keyBinding","_action","_idd","_keyCodePressed","_shiftPressed","_altPressed","_ctrlPressed"];
_name = _this select 0;
_keyBinding = _this select 1;
if (isnil "CSE_F_KEYBINDINGS_MENUS") then {
CSE_F_KEYBINDINGS_MENUS = [];
};
{
if ((_x select 0) == _name) exitwith {
_x set [ 1, _keyBinding];
};
}foreach CSE_F_KEYBINDINGS_MENUS;
[_name,"menu"] call cse_fnc_saveKeyBindingToProfile_F;

View File

@ -0,0 +1,797 @@
#ifndef CSE_DEFINE_H
#define CSE_DEFINE_H
// define.hpp
#define true 1
#define false 0
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
#define CT_LISTBOX 5
#define CT_TOOLBOX 6
#define CT_CHECKBOXES 7
#define CT_PROGRESS 8
#define CT_HTML 9
#define CT_STATIC_SKEW 10
#define CT_ACTIVETEXT 11
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_CONTEXT_MENU 14
#define CT_CONTROLS_GROUP 15
#define CT_SHORTCUTBUTTON 16
#define CT_XKEYDESC 40
#define CT_XBUTTON 41
#define CT_XLISTBOX 42
#define CT_XSLIDER 43
#define CT_XCOMBO 44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT 80
#define CT_OBJECT_ZOOM 81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK 98
#define CT_ANIMATED_USER 99
#define CT_MAP 100
#define CT_MAP_MAIN 101
#define CT_LISTNBOX 102
// Static styles
#define ST_POS 0x0F
#define ST_HPOS 0x03
#define ST_VPOS 0x0C
#define ST_LEFT 0x00
#define ST_RIGHT 0x01
#define ST_CENTER 0x02
#define ST_DOWN 0x04
#define ST_UP 0x08
#define ST_VCENTER 0x0c
#define ST_TYPE 0xF0
#define ST_SINGLE 0
#define ST_MULTI 16
#define ST_TITLE_BAR 32
#define ST_PICTURE 48
#define ST_FRAME 64
#define ST_BACKGROUND 80
#define ST_GROUP_BOX 96
#define ST_GROUP_BOX2 112
#define ST_HUD_BACKGROUND 128
#define ST_TILE_PICTURE 144
#define ST_WITH_RECT 160
#define ST_LINE 176
#define ST_SHADOW 0x100
#define ST_NO_RECT 0x200 // this style works for CT_STATIC in conjunction with ST_MULTI
#define ST_KEEP_ASPECT_RATIO 0x800
#define ST_TITLE ST_TITLE_BAR + ST_CENTER
// Slider styles
#define SL_DIR 0x400
#define SL_VERT 0
#define SL_HORZ 0x400
#define SL_TEXTURES 0x10
// Listbox styles
#define LB_TEXTURES 0x10
#define LB_MULTI 0x20
#define FontCSE "PuristaMedium"
class cse_gui_backgroundBase {
type = CT_STATIC;
idc = -1;
style = ST_PICTURE;
colorBackground[] = {0,0,0,0};
colorText[] = {1, 1, 1, 1};
font = FontCSE;
text = "";
sizeEx = 0.032;
};
class cse_gui_editBase
{
access = 0;
type = 2;
x = 0;
y = 0;
h = 0.04;
w = 0.2;
colorBackground[] =
{
0,
0,
0,
1
};
colorText[] =
{
0.95,
0.95,
0.95,
1
};
colorSelection[] =
{
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])",
1
};
autocomplete = "";
text = "";
size = 0.2;
style = "0x00 + 0x40";
font = "PuristaMedium";
shadow = 2;
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
colorDisabled[] =
{
1,
1,
1,
0.25
};
};
class cse_gui_buttonBase {
idc = -1;
type = 16;
style = ST_LEFT;
text = "";
action = "";
x = 0.0;
y = 0.0;
w = 0.25;
h = 0.04;
size = 0.03921;
sizeEx = 0.03921;
color[] = {1.0, 1.0, 1.0, 1};
color2[] = {1.0, 1.0, 1.0, 1};
/*colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.5])"};
colorbackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.4};
colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25};
colorFocused[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])", 0.8};
colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.8};
*/
colorBackground[] = {1,1,1,0.95};
colorbackground2[] = {1,1,1,0.95};
colorDisabled[] = {1,1,1,0.6};
colorFocused[] = {1,1,1,1};
colorBackgroundFocused[] = {1,1,1,1};
periodFocus = 1.2;
periodOver = 0.8;
default = false;
class HitZone {
left = 0.00;
top = 0.00;
right = 0.00;
bottom = 0.00;
};
class ShortcutPos {
left = 0.00;
top = 0.00;
w = 0.00;
h = 0.00;
};
class TextPos {
left = 0.002;
top = 0.0004;
right = 0.0;
bottom = 0.00;
};
textureNoShortcut = "";
animTextureNormal = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureDisabled = "cse\cse_gui\data\buttonDisabled_gradient.paa";
animTextureOver = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureFocused = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTexturePressed = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureDefault = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
period = 0.5;
font = FontCSE;
soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1};
soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.0,0};
soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.07,1};
soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1};
class Attributes {
font = FontCSE;
color = "#E5E5E5";
align = "center";
shadow = "true";
};
class AttributesImage {
font = FontCSE;
color = "#E5E5E5";
align = "left";
shadow = "true";
};
};
class cse_gui_RscProgress {
type = 8;
style = 0;
colorFrame[] = {1,1,1,0.7};
colorBar[] = {1,1,1,0.7};
texture = "#(argb,8,8,3)color(1,1,1,0.7)";
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class cse_gui_staticBase {
idc = -1;
type = CT_STATIC;
x = 0.0;
y = 0.0;
w = 0.183825;
h = 0.104575;
style = ST_LEFT;
font = FontCSE;
sizeEx = 0.03921;
colorText[] = {0.95, 0.95, 0.95, 1.0};
colorBackground[] = {0, 0, 0, 0};
text = "";
};
class RscListBox;
class cse_gui_listBoxBase : RscListBox{
type = CT_LISTBOX;
style = ST_MULTI;
font = FontCSE;
sizeEx = 0.03921;
color[] = {1, 1, 1, 1};
colorText[] = {0.543, 0.5742, 0.4102, 1.0};
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
colorSelect[] = {0.95, 0.95, 0.95, 1};
colorSelect2[] = {0.95, 0.95, 0.95, 1};
colorSelectBackground[] = {0, 0, 0, 1};
colorSelectBackground2[] = {0.543, 0.5742, 0.4102, 1.0};
colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25};
period = 1.2;
rowHeight = 0.03;
colorBackground[] = {0, 0, 0, 1};
maxHistoryDelay = 1.0;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
soundSelect[] = {"",0.1,1};
soundExpand[] = {"",0.1,1};
soundCollapse[] = {"",0.1,1};
class ListScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
class ScrollBar {
color[] = {1, 1, 1, 0.6};
colorActive[] = {1, 1, 1, 1};
colorDisabled[] = {1, 1, 1, 0.3};
thumb = "";
arrowFull = "";
arrowEmpty = "";
border = "";
};
};
class cse_gui_listNBox {
access = 0;
type = CT_LISTNBOX;// 102;
style =ST_MULTI;
w = 0.4;
h = 0.4;
font = FontCSE;
sizeEx = 0.031;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
columns[] = {0.0};
color[] = {1, 1, 1, 1};
rowHeight = 0.03;
colorBackground[] = {0, 0, 0, 0.2};
colorText[] = {1,1, 1, 1.0};
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
colorSelect[] = {0.95, 0.95, 0.95, 1};
colorSelect2[] = {0.95, 0.95, 0.95, 1};
colorSelectBackground[] = {0, 0, 0, 0.0};
colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5};
colorActive[] = {0,0,0,1};
colorDisabled[] = {0,0,0,0.3};
rows = 1;
drawSideArrows = 0;
idcLeft = -1;
idcRight = -1;
maxHistoryDelay = 1;
soundSelect[] = {"", 0.1, 1};
period = 1;
shadow = 2;
class ScrollBar {
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
border = "#(argb,8,8,3)color(1,1,1,1)";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
thumb = "#(argb,8,8,3)color(1,1,1,1)";
};
class ListScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
};
class RscCombo;
class cse_gui_comboBoxBase: RscCombo {
idc = -1;
type = 4;
style = "0x10 + 0x200";
x = 0;
y = 0;
w = 0.3;
h = 0.035;
color[] = {0,0,0,0.6};
colorActive[] = {1,0,0,1};
colorBackground[] = {0,0,0,1};
colorDisabled[] = {1,1,1,0.25};
colorScrollbar[] = {1,0,0,1};
colorSelect[] = {0,0,0,1};
colorSelectBackground[] = {1,1,1,0.7};
colorText[] = {1,1,1,1};
arrowEmpty = "";
arrowFull = "";
wholeHeight = 0.45;
font = FontCSE;
sizeEx = 0.031;
soundSelect[] = {"\A3\ui_f\data\sound\RscCombo\soundSelect",0.1,1};
soundExpand[] = {"\A3\ui_f\data\sound\RscCombo\soundExpand",0.1,1};
soundCollapse[] = {"\A3\ui_f\data\sound\RscCombo\soundCollapse",0.1,1};
maxHistoryDelay = 1.0;
class ScrollBar
{
color[] = {0.3,0.3,0.3,0.6};
colorActive[] = {0.3,0.3,0.3,1};
colorDisabled[] = {0.3,0.3,0.3,0.3};
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
border = "";
};
class ComboScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {0.3,0.3,0.3,0.6};
colorActive[] = {0.3,0.3,0.3,1};
colorDisabled[] = {0.3,0.3,0.3,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
};
class cse_gui_mapBase {
moveOnEdges = 1;
x = "SafeZoneXAbs";
y = "SafeZoneY + 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "SafeZoneWAbs";
h = "SafeZoneH - 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
type = 100; // Use 100 to hide markers
style = 48;
shadow = 0;
ptsPerSquareSea = 5;
ptsPerSquareTxt = 3;
ptsPerSquareCLn = 10;
ptsPerSquareExp = 10;
ptsPerSquareCost = 10;
ptsPerSquareFor = 9;
ptsPerSquareForEdge = 9;
ptsPerSquareRoad = 6;
ptsPerSquareObj = 9;
showCountourInterval = 0;
scaleMin = 0.001;
scaleMax = 1.0;
scaleDefault = 0.16;
maxSatelliteAlpha = 0.85;
alphaFadeStartScale = 0.35;
alphaFadeEndScale = 0.4;
colorBackground[] = {0.969,0.957,0.949,1.0};
colorSea[] = {0.467,0.631,0.851,0.5};
colorForest[] = {0.624,0.78,0.388,0.5};
colorForestBorder[] = {0.0,0.0,0.0,0.0};
colorRocks[] = {0.0,0.0,0.0,0.3};
colorRocksBorder[] = {0.0,0.0,0.0,0.0};
colorLevels[] = {0.286,0.177,0.094,0.5};
colorMainCountlines[] = {0.572,0.354,0.188,0.5};
colorCountlines[] = {0.572,0.354,0.188,0.25};
colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6};
colorCountlinesWater[] = {0.491,0.577,0.702,0.3};
colorPowerLines[] = {0.1,0.1,0.1,1.0};
colorRailWay[] = {0.8,0.2,0.0,1.0};
colorNames[] = {0.1,0.1,0.1,0.9};
colorInactive[] = {1.0,1.0,1.0,0.5};
colorOutside[] = {0.0,0.0,0.0,1.0};
colorTracks[] = {0.84,0.76,0.65,0.15};
colorTracksFill[] = {0.84,0.76,0.65,1.0};
colorRoads[] = {0.7,0.7,0.7,1.0};
colorRoadsFill[] = {1.0,1.0,1.0,1.0};
colorMainRoads[] = {0.9,0.5,0.3,1.0};
colorMainRoadsFill[] = {1.0,0.6,0.4,1.0};
colorGrid[] = {0.1,0.1,0.1,0.6};
colorGridMap[] = {0.1,0.1,0.1,0.6};
colorText[] = {1, 1, 1, 0.85};
font = "PuristaMedium";
sizeEx = 0.0270000;
stickX[] = {0.20, {"Gamma", 1.00, 1.50} };
stickY[] = {0.20, {"Gamma", 1.00, 1.50} };
onMouseButtonClick = "";
onMouseButtonDblClick = "";
fontLabel = "PuristaMedium";
sizeExLabel = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontGrid = "TahomaB";
sizeExGrid = 0.02;
fontUnits = "TahomaB";
sizeExUnits = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontNames = "PuristaMedium";
sizeExNames = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
fontInfo = "PuristaMedium";
sizeExInfo = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontLevel = "TahomaB";
sizeExLevel = 0.02;
text = "#(argb,8,8,3)color(1,1,1,1)";
class ActiveMarker {
color[] = {0.30, 0.10, 0.90, 1.00};
size = 50;
};
class Legend
{
x = "SafeZoneX + ( ((safezoneW / safezoneH) min 1.2) / 40)";
y = "SafeZoneY + safezoneH - 4.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "3.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
font = "PuristaMedium";
sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
colorBackground[] = {1,1,1,0.5};
color[] = {0,0,0,1};
};
class Task
{
icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa";
iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa";
iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa";
iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa";
iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa";
color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"};
colorCreated[] = {1,1,1,1};
colorCanceled[] = {0.7,0.7,0.7,1};
colorDone[] = {0.7,1,0.3,1};
colorFailed[] = {1,0.3,0.2,1};
size = 27;
importance = 1;
coefMin = 1;
coefMax = 1;
};
class Waypoint
{
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
color[] = {0,0,0,1};
size = 20;
importance = "1.2 * 16 * 0.05";
coefMin = 0.900000;
coefMax = 4;
};
class WaypointCompleted
{
icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa";
color[] = {0,0,0,1};
size = 20;
importance = "1.2 * 16 * 0.05";
coefMin = 0.900000;
coefMax = 4;
};
class CustomMark
{
icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa";
size = 24;
importance = 1;
coefMin = 1;
coefMax = 1;
color[] = {0,0,0,1};
};
class Command
{
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
size = 18;
importance = 1;
coefMin = 1;
coefMax = 1;
color[] = {1,1,1,1};
};
class Bush
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = "14/2";
importance = "0.2 * 14 * 0.05 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Rock
{
icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa";
color[] = {0.1,0.1,0.1,0.8};
size = 12;
importance = "0.5 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class SmallTree
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = 12;
importance = "0.6 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Tree
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = 12;
importance = "0.9 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class busstop
{
icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class fuelstation
{
icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class hospital
{
icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class church
{
icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class lighthouse
{
icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class power
{
icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powersolar
{
icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powerwave
{
icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powerwind
{
icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class quay
{
icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class shipwreck
{
icon = "\A3\ui_f\data\map\mapcontrol\shipwreck_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class transmitter
{
icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class watertower
{
icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class Cross
{
icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {0,0,0,1};
};
class Chapel
{
icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {0,0,0,1};
};
class Bunker
{
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 14;
importance = "1.5 * 14 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Fortress
{
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 16;
importance = "2 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Fountain
{
icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa";
size = 11;
importance = "1 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Ruin
{
icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa";
size = 16;
importance = "1.2 * 16 * 0.05";
coefMin = 1;
coefMax = 4;
color[] = {0,0,0,1};
};
class Stack
{
icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa";
size = 20;
importance = "2 * 16 * 0.05";
coefMin = 0.9;
coefMax = 4;
color[] = {0,0,0,1};
};
class Tourism
{
icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa";
size = 16;
importance = "1 * 16 * 0.05";
coefMin = 0.7;
coefMax = 4;
color[] = {0,0,0,1};
};
class ViewTower
{
icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa";
size = 16;
importance = "2.5 * 16 * 0.05";
coefMin = 0.5;
coefMax = 4;
color[] = {0,0,0,1};
};
};
#endif

View File

@ -0,0 +1,46 @@
class CSE_Open_SettingsMenu_BtnBase : cse_gui_buttonBase {
idc = -1;
text = "Configure [CSE]";
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)";
y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY";
w = "14 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)";
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)";
animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
color[] = {1, 1, 1, 1};
color2[] = {0,0,0, 1};
colorBackgroundFocused[] = {1,1,1,1};
colorBackground[] = {1,1,1,1};
colorbackground2[] = {1,1,1,1};
colorDisabled[] = {0.5,0.5,0.5,0.8};
colorFocused[] = {0,0,0,1};
periodFocus = 1;
periodOver = 1;
action = "(findDisplay 49) closeDisplay 0; createDialog 'cse_settingsMenu';";
};
class RscStandardDisplay;
class RscDisplayMPInterrupt: RscStandardDisplay {
class controls {
class cse_Open_settingsMenu_Btn : CSE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayInterruptEditorPreview: RscStandardDisplay {
class controls {
class cse_Open_settingsMenu_Btn : CSE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayInterrupt: RscStandardDisplay {
class controls {
class cse_Open_settingsMenu_Btn : CSE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayInterruptEditor3D: RscStandardDisplay {
class controls {
class cse_Open_settingsMenu_Btn : CSE_Open_SettingsMenu_BtnBase {};
};
};

View File

@ -0,0 +1,259 @@
class cse_settingsMenu {
idd = 145246;
movingEnable = false;
onLoad = "uiNamespace setVariable ['cse_settingsMenu', _this select 0]; [] call cse_fnc_onSettingsMenuOpen; ['cse_settingsMenu', true] call cse_fnc_gui_blurScreen;missionNamespace setVariable ['CSE_SETTINGS_MENU_OPEN', true];";
onUnload = "uiNamespace setVariable ['cse_settingsMenu', nil]; saveProfileNamespace; ['cse_settingsMenu', false] call cse_fnc_gui_blurScreen; missionNamespace setVariable ['CSE_SETTINGS_MENU_OPEN', nil];";
class controlsBackground {
class HeaderBackground: cse_gui_backgroundBase{
idc = -1;
type = CT_STATIC;
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
style = ST_LEFT + ST_SHADOW;
font = "PuristaMedium";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
colorText[] = {0.95, 0.95, 0.95, 0.75};
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
text = "";
};
class CenterBackground: HeaderBackground {
y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
h = "2.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "";
colorText[] = {0, 0, 0, "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
colorBackground[] = {0,0,0,"(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
};
class LeftBackground: CenterBackground {
y = "4.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
h = "12.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "25 * (((safezoneW / safezoneH) min 1.2) / 40)";
};
class RightBackground: LeftBackground {
x = "26.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
w = "12.9 * (((safezoneW / safezoneH) min 1.2) / 40)";
};
};
class controls {
class HeaderName {
idc = 1;
type = CT_STATIC;
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
style = ST_LEFT + ST_SHADOW;
font = "PuristaMedium";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
colorText[] = {0.95, 0.95, 0.95, 0.75};
colorBackground[] = {0,0,0,0};
text = "Configure [CSE]";
};
class actionClose : cse_gui_buttonBase {
idc = 10;
text = "Close";
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "17.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "6 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)";
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)";
animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
color[] = {1, 1, 1, 1};
color2[] = {0,0,0, 1};
colorBackgroundFocused[] = {1,1,1,1};
colorBackground[] = {1,1,1,1};
colorbackground2[] = {1,1,1,1};
colorDisabled[] = {0.5,0.5,0.5,0.8};
colorFocused[] = {0,0,0,1};
periodFocus = 1;
periodOver = 1;
action = "closedialog 0;";
};
class actionUnassign: actionClose {
idc = 11;
text = "Unassign";
x = "33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "17.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
action = "[0, 0, 0, 0] call cse_fnc_settingsMenuUpdateKeyBinding_F;";
};
class labelShow : cse_gui_staticBase {
idc = 12;
x = "2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "2.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "4 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "Show:";
};
class labelShow2: cse_gui_staticBase {
idc = 13;
x = "2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "3.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "30 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "";
};
class selectionAction_1 : cse_gui_buttonBase {
idc = 1000;
text = "Menus";
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "9.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
color[] = {1, 1, 1, 1};
color2[] = {0,0,0, 1};
colorBackgroundFocused[] = {1,1,1,1};
colorBackground[] = {1,1,1,1};
colorbackground2[] = {1,1,1,1};
colorDisabled[] = {0.5,0.5,0.5,0.8};
colorFocused[] = {0,0,0,1};
periodFocus = 1;
periodOver = 1;
action = "[nil, 0] call cse_fnc_onListBoxShowSelectionChanged;";
};
class selectionAction_2 : selectionAction_1 {
idc = 1001;
text = "Actions";
x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
action = "[nil, 1] call cse_fnc_onListBoxShowSelectionChanged;";
};
class selectionAction_3 : selectionAction_1 {
idc = 1002;
text = "Settings";
x = "20 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
action = "[nil, 2] call cse_fnc_onListBoxShowSelectionChanged;";
};
class selectionAction_4 : selectionAction_1 {
idc = 1003;
text = "Colors";
x = "29.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
action = "[nil, 3] call cse_fnc_onListBoxShowSelectionChanged;";
};
class listBoxSettingsList: cse_gui_listNBox {
idc = 200;
x = "2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "5.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "23 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)";
colorBackground[] = {0, 0, 0, 0.9};
colorSelectBackground[] = {0, 0, 0, 0.9};
columns[] = {0.0, 0.5};
};
class labelTitle: cse_gui_staticBase {
idc = 250;
x = "27.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "5.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "10 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
};
class labelKey: cse_gui_staticBase {
idc = 300;
x = "27.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "6.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "10 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "Key:";
};
class Label2: labelKey {
idc = 301;
y = "7.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
text = "Shift:";
};
class Label3: labelKey {
idc = 302;
y = "8.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
text = "Ctrl:";
};
class Label4: labelKey {
idc = 303;
y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
text = "Alt:";
};
class comboBox1: cse_gui_comboBoxBase {
idc = 400;
x = "32.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "7.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "6 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class comboBox2: comboBox1 {
idc = 401;
y = "8.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
};
class comboBox3: comboBox1 {
idc = 402;
y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
};
class labelDesc: cse_gui_staticBase {
idc = 251;
x = "27.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "11 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "11 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "";
style = ST_LEFT + ST_MULTI;
lineSpacing = 1;
sizeEx = 0.03;
};
class actionEdit: actionClose {
idc = 150;
text = "Edit";
x = "26.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "17.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
action = "if (!CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F) then{ ctrlSetText [252, 'Press the key you want to assign to this action..']; CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F = true; };";
};
class actionCancel: actionClose {
idc = 151;
text = "Cancel";
x = "20 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "17.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
action = "ctrlSetText [252, '']; CSE_SETTINGS_MENU_EDIT_CURRENT_SETTING_F = false; ";
};
class notificationDesc: cse_gui_staticBase {
idc = 252;
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "18 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "";
style = ST_CENTER + ST_SHADOW;
sizeEx = 0.05;
};
class selectionAction_5 : selectionAction_1 {
idc = 1100;
text = "Fix Animation";
x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "17.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "6 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
action = "if ([player] call cse_fnc_canInteract && {animationState player == 'deadState' || animationState player == 'unconscious'} && {(vehicle player == player)}) then { [player, 'amovppnemstpsnonwnondnon'] call cse_fnc_broadcastAnim; };";
};
};
};

View File

@ -0,0 +1,20 @@
class CfgFunctions {
class CSE {
class eventhandlers {
file = "cse\cse_f_eh\functions";
class initialization_f {
preInit = 1;
postInit = 1;
recompile = 1;
};
class eventHandler_f { recompile = 1; };
class HandleHeal_EH_F { recompile = 1; };
class HandleDamage_EH_F { recompile = 1; };
class customEventHandler_F { recompile = 1; };
class getCustomResults_F { recompile = 1; };
class setEventhandler_f { recompile = 1; };
class removeEventHandler_f { recompile = 1; };
class addModuleEventHandlers_f { recompile = 1; };
};
};
};

View File

@ -0,0 +1,180 @@
class CfgVehicles {
class All;
class AllVehicles : All {
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class Man;
class CAManBase: Man {
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class SoldierGB : CAManBase{
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class SoldierWB : CAManBase {
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class SoldierEB : CAManBase{
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class B_Soldier_base_F: SoldierWB {
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class B_Soldier_03_f: B_Soldier_base_F {
class EventHandlers {
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
HandleHeal = "[_this,'handleHeal'] call CSE_fnc_HandleHeal_EH_F;";
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class LandVehicle;
class Car: LandVehicle {
class EventHandlers {
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class Tank: LandVehicle {
class EventHandlers {
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class Air;
class Helicopter: Air {
class EventHandlers {
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class Plane: Air {
class EventHandlers {
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
class Ship: AllVehicles {
class EventHandlers {
local = "_this call cse_eh_cba_compat_local;";
killed = "_this call cse_eh_cba_compat_Killed";
firedNear = "_this call cse_eh_cba_compat_FiredNear";
fired = "_this call cse_eh_cba_compat_Fired";
respawn = "_this call cse_eh_cba_compat_Respawn";
Take = "_this call cse_eh_cba_compat_Take";
Put = "_this call cse_eh_cba_compat_Put";
GetIn = "_this call cse_eh_cba_compat_GetIn";
GetOut = "_this call cse_eh_cba_compat_GetOut";
};
};
};

View File

@ -0,0 +1,13 @@
class Combat_Space_Enhancement {
class EventHandlers {
class PreInit_EventHandlers {
class cse_xeh_fired_eventHandler_Compat {
init = "call compile preprocessFile 'cse\cse_f_eh\cba_compat_init.sqf';";
};
};
};
class CustomResults {};
class CustomEventHandlers {};
};

View File

@ -0,0 +1,103 @@
class Extended_Fired_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH
{
Fired = "[_this,'fired'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_HandleDamage_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH
{
handleDamage = "[_this,'handleDamage'] call CSE_fnc_HandleDamage_EH_F;";
};
};
};
class Extended_FiredNear_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH
{
FiredNear = "[_this,'firedNear'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_Killed_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH
{
Killed = "[_this,'killed'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_Local_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH
{
Local = "[_this,'local'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_Respawn_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH {
Respawn = "[_this,'respawn'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_Take_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH {
Take = "[_this,'take'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_Put_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH {
Put = "[_this,'put'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_GetIn_Eventhandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH {
GetIn = "[_this,'getIn'] call cse_fnc_eventHandler_F;";
};
};
};
class Extended_GetOut_EventHandlers
{
class AllVehicles
{
class cse_CBA_COMPAT_XEH {
GetOut = "[_this,'getOut'] call cse_fnc_eventHandler_F;";
};
};
};

View File

@ -0,0 +1,19 @@
/**
* cba_compat_init.sqf
* @Descr: CBA compatability wrapper.
* @Author: Glowbal
*
* @Arguments: []
* @Return: void
* @PublicAPI: false
*/
cse_eh_cba_compat_local = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'local'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_Respawn = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'respawn'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_Killed = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'killed'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_FiredNear = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'firedNear'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_Fired = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'fired'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_Take = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'Take'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_Put = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'Put'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_GetIn = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'GetIn'] call cse_fnc_eventHandler_F;} } else {{}};
cse_eh_cba_compat_GetOut = if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then { {[_this,'GetOut'] call cse_fnc_eventHandler_F;} } else {{}};

View File

@ -0,0 +1,31 @@
class CfgPatches
{
class cse_f_eh
{
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {/*"cba_extended_eventhandlers", "cba_xeh", "extended_eventhandlers"*/ "A3_Characters_F","A3_Boat_F","A3_animals_f","A3_air_f","A3_soft_f","A3_static_f","A3_weapons_f","a3_structures_f"};
version = "0.10.0_rc";
author[] = {"Combat Space Enhancement"};
authorUrl = "http://csemod.com";
};
};
class CfgAddons {
class PreloadAddons {
class cse_f_eh {
list[] = {"cse_f_eh"};
};
};
};
/* Event handlers */
#include "CfgVehicles.h"
/* For CBA Compatability */
#include "Extended_Init_EventHandlers.h"
/* Ensures that the functions are being compiled */
#include "CfgFunctions.h"
/* To ensure that the custom eventhandler classes exist */
#include "Combat_Space_Enhancement.h"

View File

@ -0,0 +1,54 @@
/**
* fn_HandleHeal_eh_f.sqf
* @Descr: Execute the handleHeal Eventhandlers. Is currently bugged due to Arma Engine problem?
* @Author: Glowbal
*
* @Arguments: []
* @Return: BOOL Returns true if handleHeal has been fully handled
* @PublicAPI: false
*/
private ["_vehicle","_allPreInitHandlers","_handle","_totalValue","_cfg","_amountOfHandlers", "_newCfg","_returnValue","_ehCfg"];
_vehicle = (_this select 0) select 1;
_handle = _this select 1;
_allPreInitHandlers = [];
if (!local _vehicle) exitwith {};
if (isnil "CSE_fnc_HandleHeal_EH_F") then {
CSE_fnc_HandleHeal_EH_F = compile preProcessFileLineNumbers '\cse\cse_f_eh\fn_HandleHeal_EH_F.sqf';
};
if (isnil "CSE_F_MODULE_OBJ_EH") then {
CSE_F_MODULE_OBJ_EH = [];
};
{
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _x);
if (isClass _cfg) then {
if (isClass (_cfg >> "EventHandlers")) then {
_numberOfEH = count (_cfg >> "EventHandlers");
for "_j" from 0 to (_numberOfEH -1) /* step +1 */ do {
//for [{_j=0}, {_j< _numberOfEH}, {_j=_j+1}] do {
_ehCfg = ((_cfg >> "EventHandlers") select _j);
if (isClass _ehCfg) then {
if (_vehicle isKindOf (ConfigName _ehCfg)) then {
_allPreInitHandlers pushback compile getText(_ehCfg >> _handle);
};
};
};
};
};
}foreach CSE_F_MODULE_OBJ_EH;
{
private ["_returnValue"];
_returnValue = (_this select 0) call _x;
}foreach _allPreInitHandlers;
[_allPreInitHandlers] call cse_fnc_debug;
AISFinishHeal [(_this select 0) select 0, (_this select 0) select 1, (_this select 0) select 2];
if (count _allPreInitHandlers > 0) then {
true;
} else {
false;
};

View File

@ -0,0 +1,64 @@
/**
* fn_addModuleEventhandlers_f.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_entity", "_handle", "_eventHandlerName", "_eventHandlerCollection", "_cfg", "_numberOfEH", "_ehCfg", "_classType", "_text", "_code", "_eventHandlerCollection","_collectedEHIDs", "_collectedID_VarName"];
_entity = _this select 0;
_handle = _this select 1;
_eventHandlerName = ("cse_f_eventhandler_" + _handle);
_eventHandlerCollection = missionNamespace getvariable _eventHandlerName;
if (isnil "_eventHandlerCollection") then {
_eventHandlerCollection = [];
{
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _x >> "EventHandlers");
if (isClass (_cfg)) then {
_numberOfEH = count (_cfg);
for "_EHiterator" from 0 to (_numberOfEH -1) do {
_ehCfg = ((_cfg) select _EHiterator);
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_text = getText(_ehCfg >> _handle);
if (_text != "") then {
_code = (compile _text);
_eventHandlerCollection pushBack [_classType, _code, _x];
true;
};
};
};
};
}count CSE_F_MODULE_OBJ_EH;
missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection];
if (isnil "cse_f_eventhandlers_collection") then {
cse_f_eventhandlers_collection = [];
};
cse_f_eventhandlers_collection pushBack _eventHandlerName;
};
_collectedID_VarName = format["cse_addModuleEventHandlers_f_%1_ids", _handle];
// clear all module eventhandlers first
_collectedEHIDs = _entity getvariable [_collectedID_VarName, []];
{
[_entity, _handle, _x] call cse_fnc_removeEventHandler_F;
}foreach _collectedEHIDs;
// now we add the new ones
_collectedEHIDs = [];
{
if (_entity isKindOf (_x select 0)) then {
_collectedEHIDs pushback (format["cse_moduleEventhandlerID_", _foreachIndex]);
[_entity, _handle, format["cse_moduleEventhandlerID_", _foreachIndex], _x select 1] call cse_fnc_setEventhandler_f;
};
}foreach _eventHandlerCollection;
// Store the new IDs
_entity setvariable [_collectedID_VarName, _collectedEHIDs];

View File

@ -0,0 +1,61 @@
/**
* fn_customEventHandler_f.sqf
* @Descr: Execute a custom defined eventhandler.
* @Author: Glowbal
*
* @Arguments: [arguments ANY, handle STRING (The name of the eventhandler)]
* @Return: ARRAY Array containing the results of the called eventhandlers.
* @PublicAPI: true
*/
private ["_arguments","_handle","_ehCfg","_eventHandlerCollection","_eventHandlerName","_cfg","_code","_classType", "_return"];
_arguments = _this select 0;
_handle = _this select 1;
_eventHandlerName = ("cse_f_custom_eventhandler_" + _handle);
_eventHandlerCollection = missionNamespace getvariable _eventHandlerName;
if (isnil "_eventHandlerCollection") then {
_eventHandlerCollection = [];
[format["caching Custom Eventhandler: %1",_handle]] call cse_fnc_debug;
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CustomEventHandlers" >> _handle);
if (isClass _cfg) then {
_numberOfEH = count _cfg;
for "_EHiterator" from 0 to (_numberOfEH -1) /* step +1 */ do {
//for [{_EHiterator=0}, {(_EHiterator< _numberOfEH)}, {_EHiterator=_EHiterator+1}] do {
_ehCfg = _cfg select _EHiterator;
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_code = (compile getText(_ehCfg >> "onCall"));
_eventHandlerCollection pushback [_classType, _code];
true;
};
};
};
_cfg = (MissionConfigFile >> "Combat_Space_Enhancement" >> "CustomEventHandlers" >> _handle);
if (isClass _cfg) then {
_numberOfEH = count _cfg;
for "_EHiterator" from 0 to (_numberOfEH -1) /* step +1 */ do {
//for [{_EHiterator=0}, {(_EHiterator< _numberOfEH)}, {_EHiterator=_EHiterator+1}] do {
_ehCfg = _cfg select _EHiterator;
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_code = (compile getText(_ehCfg >> "onCall"));
_eventHandlerCollection pushback [_classType, _code];
true;
};
};
};
missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection];
[format["Custom Eventhandler: %1 cache: %2",_handle, _eventHandlerCollection]] call cse_fnc_debug;
};
_return = [];
{
_return pushback (_arguments call (_x select 1));
}foreach _eventHandlerCollection;
_return

View File

@ -0,0 +1,65 @@
/**
* fn_eventHandler_f.sqf
* @Descr: Execute eventhandlers
* @Author: Glowbal
*
* @Arguments: []
* @Return: void
* @PublicAPI: false
*/
private ["_args","_handle","_entity","_cfgFile","_cfg","_numberOfEH","_ehCfg","_value", "_code", "_eventHandlerCollection", "_classType", "_eventHandlerName"];
_args = _this select 0;
_handle = _this select 1;
_entity = _args select 0;
if (isnil "CSE_F_MODULE_OBJ_EH") then {
CSE_F_MODULE_OBJ_EH = [];
};
if (!(local _entity) && _handle != "fired") exitwith {};
_eventHandlerName = ("cse_f_eventhandler_" + _handle);
_eventHandlerCollection = missionNamespace getvariable _eventHandlerName;
if (isnil "_eventHandlerCollection") then {
_eventHandlerCollection = [];
{
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _x >> "EventHandlers");
if (isClass (_cfg)) then {
_numberOfEH = count (_cfg);
for "_EHiterator" from 0 to (_numberOfEH -1) do {
_ehCfg = ((_cfg) select _EHiterator);
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_text = getText(_ehCfg >> _handle);
if (_text != "") then {
_code = (compile _text);
_eventHandlerCollection pushBack [_classType, _code, _x];
true;
};
};
};
};
}count CSE_F_MODULE_OBJ_EH;
missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection];
if (isnil "cse_f_eventhandlers_collection") then {
cse_f_eventhandlers_collection = [];
};
cse_f_eventhandlers_collection pushBack _eventHandlerName;
};
_setHandler = _entity getvariable ("cse_f_setEventhandler_" + _handle);
if (isnil "_setHandler") then {
{
if (_entity isKindOf (_x select 0)) then {
_args call (_x select 1);
};
false;
}count _eventHandlerCollection;
} else {
{
_args call (_X select 1);
false;
}count _setHandler;
};

View File

@ -0,0 +1,42 @@
/**
* fn_getCustomResults_f.sqf
* @Descr: Executes custom results eventhandlers, collects their output and returns this.
* @Author: Glowbal
*
* @Arguments: [arguments ANY, handle STRING]
* @Return: ARRAY Collection of all return values of all executed CustomResult handlers
* @PublicAPI: true
*/
private ["_arguments","_handle","_ehCfg","_eventHandlerCollection","_eventHandlerName","_cfg","_code","_classType", "_return"];
_arguments = _this select 0;
_handle = _this select 1;
_eventHandlerName = ("cse_f_custom_results_eventhandler_" + _handle);
_eventHandlerCollection = missionNamespace getvariable _eventHandlerName;
if (isnil "_eventHandlerCollection") then {
_eventHandlerCollection = [];
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CustomResults" >> _handle);
if (isClass _cfg) then {
_numberOfEH = count _cfg;
for [{_EHiterator=0}, {(_EHiterator< _numberOfEH)}, {_EHiterator=_EHiterator+1}] do {
_ehCfg = _cfg select _EHiterator;
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_code = (compile getText(_ehCfg >> "onCall"));
_eventHandlerCollection set [ count _eventHandlerCollection, [_classType, _code]];
true;
};
};
};
missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection];
};
_return = [];
{
_return set [ count _return, _arguments call (_x select 1) ];
}foreach _eventHandlerCollection;
_return

View File

@ -0,0 +1,79 @@
/**
* fn_handleDamage_eh_f.sqf
* @Descr: Execute the handleDamage Eventhandler
* @Author: Glowbal
*
* @Arguments: []
* @Return: NUMBER Returns a number based on output of executed eventhandlers
* @PublicAPI: false
*/
private ["_vehicle","_allPreInitHandlers","_handle","_totalValue","_cfg","_amountOfHandlers", "_newCfg","_returnValue","_ehCfg", "_fullDamage", "_returnDamage"];
_vehicle = (_this select 0) select 0;
_handle = _this select 1;
if (!local _vehicle) exitwith {};
if (_vehicle isKindOf "CAManBase") then {
_name = _vehicle getVariable "cse_name";
if (isNil "_name") then {
_vehicle setvariable ["cse_name", name _vehicle, true];
};
};
_eventHandlerName = "cse_f_eventhandler_handleDamage";
_eventHandlerCollection = missionNamespace getvariable _eventHandlerName;
if (isnil "_eventHandlerCollection") then {
_eventHandlerCollection = [];
if (isnil "CSE_F_MODULE_OBJ_EH") then {
CSE_F_MODULE_OBJ_EH = [];
};
{
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _x);
if (isClass _cfg) then {
if (isClass (_cfg >> "EventHandlers")) then {
_numberOfEH = count (_cfg >> "EventHandlers");
for "_j" from 0 to (_numberOfEH -1) /* step +1 */ do {
//for [{_j=0}, {_j< _numberOfEH}, {_j=_j+1}] do {
_ehCfg = ((_cfg >> "EventHandlers") select _j);
if (isClass _ehCfg) then {
if (getText(_ehCfg >> _handle) != "") then {
_eventHandlerCollection pushBack [(ConfigName _ehCfg), compile getText(_ehCfg >> _handle)];
};
};
};
};
};
}foreach CSE_F_MODULE_OBJ_EH;
missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection];
if (isnil "cse_f_eventhandlers_collection") then {
cse_f_eventhandlers_collection = [];
};
cse_f_eventhandlers_collection pushBack _eventHandlerName;
};
_returnDamage = (_this select 0) select 2;
{
if (_vehicle isKindOf (_x select 0)) then {
private "_returnValue";
_returnValue = (_this select 0) call (_x select 1);
if (!isnil "_returnValue") then {
if (typeName _returnValue == typeName 0) then {
_returnDamage = _returnValue;
};
};
};
}foreach _eventHandlerCollection;
if (typeName _returnDamage == typeName 0) then {
if (_returnDamage >= 0.9) then {
if (isnil "CSE_ENABLE_REVIVE_F") then {
CSE_ENABLE_REVIVE_F = 0;
};
if ((CSE_ENABLE_REVIVE_F == 1 && isPlayer _vehicle) || (CSE_ENABLE_REVIVE_F == 2)) then {
_returnDamage = 0.9;
};
};
} else {
_returnDamage = (_this select 0) select 2;
};
_returnDamage

View File

@ -0,0 +1,55 @@
/**
* fn_initialization_f.sqf
* @Descr: Grabs all pre and post init defined events from the config files and executes those.
* @Author: Glowbal
*
* @Arguments: [setToExecute STRING]
* @Return: void
* @PublicAPI: false
*/
private ["_allPreInitHandlers","_cfg","_cfgOpt","_text"];
_allPreInitHandlers = [];
if ((_this select 0) == "preInit") then {
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "EventHandlers" >> "PreInit_EventHandlers");
for "_i" from 0 to ((count _cfg)-1) /* step +1 */ do {
_this spawn (compile (getText ((_cfg select _i) >> "init")));
};
} else {
if ((_this select 0) == "postInit") then {
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "EventHandlers" >> "PostInit_EventHandlers");
for "_i" from 0 to ((count _cfg)-1) /* step +1 */ do {
_this spawn (compile (getText ((_cfg select _i) >> "init")));
};
};
};
if (isnil "CSE_F_EH_ALLOW_MISSION_CONFIG") then {
CSE_F_EH_ALLOW_MISSION_CONFIG = true;
};
if (CSE_F_EH_ALLOW_MISSION_CONFIG) then {
_allPreInitHandlers = [];
if ((_this select 0) == "preInit") then {
_cfg = (missionConfigFile >> "Combat_Space_Enhancement" >> "EventHandlers" >> "PreInit_EventHandlers");
for "_i" from 0 to ((count _cfg)-1) /* step +1 */ do {
_this spawn (compile (getText ((_cfg select _i) >> "init")));
};
} else {
if ((_this select 0) == "postInit") then {
_cfg = (missionConfigFile >> "Combat_Space_Enhancement" >> "EventHandlers" >> "PostInit_EventHandlers");
for "_i" from 0 to ((count _cfg)-1) /* step +1 */ do {
_this spawn (compile (getText ((_cfg select _i) >> "init")));
};
};
};
};
if ((_this select 0) == "postInit") then {
cse_postInit = true;
};

View File

@ -0,0 +1,33 @@
/**
* fn_removeEventhandler_f.sqf
* @Descr: Removes an eventhandler with the specified ID
* @Author: Glowbal
*
* @Arguments: [object OBJECT, handler STRING, id STRING]
* @Return: nil
* @PublicAPI: true
*/
private ["_obj", "_handler", "_id", "_varName", "_handlers", "_newHandlers"];
_obj = _this select 0;
_handler = _this select 1;
_id = _this select 2;
_varName = "cse_f_setEventhandler_" + _handler;
_handlers = _obj getvariable [_varName, []];
_newHandlers = [];
{
if (_x select 0 != _id) then {
_newHandlers pushback _x;
};
}foreach _handlers;
if (count _newHandlers > 0) then {
_obj setvariable [_varName, _newHandlers];
} else {
// remove and default to original CSE handlers
_obj setvariable [_varName, nil];
};
true;

View File

@ -0,0 +1,35 @@
/**
* fn_setEventhandler_f.sqf
* @Descr: Set the event handler for a specific object. Stacks. Overwrites the CSE module eventhandlers.
* @Author: Glowbal
*
* @Arguments: [object OBJECT, handler STRING, id STRING, code CODE]
* @Return: nil
* @PublicAPI: true
*/
private ["_obj", "_handler", "_id", "_code", "_varName", "_handlers", "_found"];
_obj = _this select 0;
_handler = _this select 1;
_id = _this select 2;
_code = _this select 3;
_varName = "cse_f_setEventhandler_" + _handler;
_handlers = _obj getvariable [_varName, []];
_found = -1;
{
if (_x select 0 == _id) exitwith {
_found = _foreachIndex;
};
}foreach _handlers;
if (_found < 0) then {
_handlers pushback [_id, _code];
} else {
_handlers set [_found, [_id, _code]];
};
_obj setvariable [_varName, _handlers];
true;

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project name="Combat Space Enhancement">
<Package name="cse_sys_weaponrest">
<Container ID="WeaponResting">
</Container>
</Package>
</Project>

View File

@ -0,0 +1,22 @@
class CfgFunctions
{
class CSE
{
class Modules
{
file = "cse\cse_f_modules\functions";
class initalizeModule_F { recompile = 1; };
class isModuleEnabled_F { recompile = 1; };
class getModule_f { recompile = 1; };
class getModuleCondition_f { recompile = 1; };
class getModules_f { recompile = 1; };
class initalizeModuleObjEH { recompile = 1; };
class moduleIsActive_f { recompile = 1; };
class enableModule_f { recompile = 1; };
class getCfgModuleInits_f { recompile = 1; };
class getCfgModuleArguments_f { recompile = 1; };
class remoteModuleInit { recompile = 1; };
};
};
};

View File

@ -0,0 +1,21 @@
class Combat_Space_Enhancement {
class EventHandlers {
class PreInit_EventHandlers {
class cse_f_modules {
init = " call compile preprocessFile 'cse\cse_f_modules\init.sqf';";
};
};
class PostInit_EventHandlers {
class cse_f_modules {
init = " call compile preprocessFile 'cse\cse_f_modules\post-init.sqf';";
};
};
};
class CustomEventHandlers {
/**
* Called when the enableModule_f function is called. Third argument is whatever or not the module has initalized.
*/
class moduleEnabled_f; // [moduleName, arguments, enabled]
};
};

View File

@ -0,0 +1,23 @@
class CfgPatches
{
class cse_f_modules
{
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"cse_main"};
version = "0.10.0_rc";
author[] = {"Combat Space Enhancement"};
authorUrl = "http://csemod.com";
};
};
class CfgAddons {
class PreloadAddons {
class cse_f_modules {
list[] = {"cse_f_modules"};
};
};
};
#include "CfgFunctions.h"
#include "Combat_Space_Enhancement.h"

View File

@ -0,0 +1,36 @@
/**
* fn_enableModule_f.sqf
* @Descr: Enable a CSE Module
* @Author: Glowbal
*
* @Arguments: [moduleName STRING, arguments ARRAY (Format: [[name STRING, value ANY]])]
* @Return: void
* @PublicAPI: true
*/
private ["_moduleName", "_arguments", "_moduleInfo"];
_moduleName = _this select 0;
_arguments = _this select 1;
[format["enableModule_f %1 %2",_this, ([_moduleName] call cse_fnc_isModuleEnabled_F)]] call cse_fnc_debug;
if ([_moduleName] call cse_fnc_isModuleEnabled_F) exitwith {
[[_moduleName, _arguments, false],"moduleEnabled_f"] call cse_fnc_customEventHandler_F;
};
if (isnil "CSE_F_MODULE_OBJ_EH") then {
CSE_F_MODULE_OBJ_EH = [];
};
CSE_F_MODULE_OBJ_EH pushback _moduleName;
_initField = getText(ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _moduleName >> "init");
_arguments call compile _initField;
if !(isnil "cse_f_eventhandlers_collection") then {
{
missionNamespace setvariable [_x, nil]; // clear all eventhandlers.
}foreach cse_f_eventhandlers_collection;
};
[_moduleName] call cse_fnc_parseModuleForConfigurations;
[[_moduleName, _arguments, true],"moduleEnabled_f"] call cse_fnc_customEventHandler_F;
[format["Initalize module: %1 COMPLETED. Arguments: %2", _moduleName, _arguments], 3] call cse_fnc_debug;

View File

@ -0,0 +1,98 @@
/**
* fn_getCfgModuleArguments_f.sqf
* @Descr: Grab Module arguments for a specific module in a config file.
* @Author: Glowbal
*
* @Arguments: [moduleName STRING (The classname of the CSE module), configPath CONFIG (Path to the module Config)]
* @Return: ARRAY An array with parameters for given module. If the parameters for the provided module have not been found within the config, default values will be used.
* @PublicAPI: true
*/
private ["_configOfModule","_collectedInits","_cfgRoot","_amountOfClasses","_i","_arguments","_moduleName","_CfgVehEntry","_CfgModuleEntry","_moduleArguments","_j","_cfg","_value","_typeNameArgument", "_return"];
_moduleName = _this select 0;
_configOfModule = _this select 1;
_return = [];
// Array for collection all initalization arguments for the given module.
_arguments = [];
// Grab necessary config entries
_CfgVehEntry = (ConfigFile >> "CfgVehicles" >> _moduleName);
_CfgModuleEntry = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _moduleName);
if (isClass _CfgModuleEntry) then {
if (isClass _CfgVehEntry) then {
// init with parameters
_moduleArguments = (_CfgVehEntry >> "Arguments");
if (isClass _moduleArguments) then {
// Looping through the expected arguments, based on what is defined in the module Argument Class in CfgVehicles.
for [{_j=0}, {_j < (count _moduleArguments)}, {_j=_j+1}] do {
// if the argument is a class, parse it. Otherwise we will be ignoring it.
if (isClass (_moduleArguments select _j)) then {
// Grab the value from the argument defined in the description.ext and current class.
_value = 0; // (_configOfModule >> configName(_moduleArguments select _j)) call bis_fnc_getCfgData;
// This will be used to validate the retrieved value for a proper value.
_typeNameArgument = getText((_moduleArguments select _j) >> "typeName");
call {
if (_typeNameArgument == "BOOL") exitwith {
_value = getNumber(_configOfModule >> configName(_moduleArguments select _j)) == 1;
};
if (_typeNameArgument == "NUMBER") exitwith {
_value = getNumber(_configOfModule >> configName(_moduleArguments select _j));
};
if (_typeNameArgument == "STRING") exitwith {
_value = getText(_configOfModule >> configName(_moduleArguments select _j));
};
};
// If the argument is defined in the description.ext, we will validate the typeName of the argument and store it in the argument array.
if (!isnil "_value") then {
if (typeName _value == _typeNameArgument || TRUE) then { // lets assume the values are correct until we write a function to properly compare the typeNames.
_arguments pushback [(ConfigName (_moduleArguments select _j)), _value];
} else {
// Incase the typeName is invalid, we will set a default value and store this instead.
call {
if (_typeNameArgument == "BOOL") exitwith {
_value = getNumber((_moduleArguments select _j) >> "defaultValue") == 1;
};
if (_typeNameArgument == "NUMBER") exitwith {
_value = getNumber((_moduleArguments select _j) >> "defaultValue");
};
if (_typeNameArgument == "STRING") exitwith {
_value = getText((_moduleArguments select _j) >> "defaultValue");
};
};
[format["Module Argument has not been set %1 %2. Module need to be replaced. Value used: %4", _moduleName, (ConfigName (_moduleArguments select _j)), _typeNameArgument, _value], 1] call cse_fnc_debug;
_arguments pushback [(ConfigName (_moduleArguments select _j)), _value];
};
} else {
[format["Value is nil for %1 %2", _moduleName, (ConfigName (_moduleArguments select _j))], 1] call cse_fnc_debug;
// Because the value has not been defined, we will use a default value instead.
// TODO implement defaultValue retrieval for non defined arguments.
_value = "";
if (_typeNameArgument != "") then {
call {
if (_typeNameArgument == "BOOL") exitwith {
_value = getNumber((_moduleArguments select _j) >> "defaultValue") == 1;
};
if (_typeNameArgument == "NUMBER") exitwith {
_value = getNumber((_moduleArguments select _j) >> "defaultValue");
};
if (_typeNameArgument == "STRING") exitwith {
_value = getText((_moduleArguments select _j) >> "defaultValue");
};
};
[format["Module Argument has not been set %1 %2. Module need to be replaced. Value used: %4", _moduleName, (ConfigName (_moduleArguments select _j)), _typeNameArgument, _value], 1] call cse_fnc_debug;
_arguments pushback [(ConfigName (_moduleArguments select _j)), _value];
};
};
};
};
};
} else {
// init with no parameters. We do not have to collect anything for this.
};
};
_arguments

View File

@ -0,0 +1,28 @@
/**
* fn_getCfgModuleInits_f.sqf
* @Descr: Grab all defined modules in the given config space, collect their arguments and return them.
* @Author: Glowbal
*
* @Arguments: [config CONFIG (For example: MissionConfigFile or ConfigFile)]
* @Return: ARRAY Array with format: [[moduleName STRING, moduleArgs ARRAY (Format: [argumentName STRING, value ANY])], ...]
* @PublicAPI: false
*/
private ["_config","_collectedInits","_cfgRoot","_amountOfClasses","_i","_arguments","_moduleName","_CfgVehEntry","_CfgModuleEntry","_moduleArguments","_j","_cfg","_value","_moduleArgs"];
_config = [_this, 0, MissionConfigFile, [MissionConfigFile]] call BIS_fnc_Param;
_collectedInits = [];
_cfgRoot = (_config >> "Combat_Space_Enhancement" >> "Modules");
_amountOfClasses = count _cfgRoot;
for [{_i=0}, {_i < _amountOfClasses}, {_i=_i+1}] do {
if (isClass (_cfgRoot select _i)) then {
_moduleName = ConfigName (_cfgRoot select _i);
_disableConfigExecution = getNumber (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _moduleName >> "disableConfigExecution");
if (_disableConfigExecution > 0) exitwith {};
if (!([_moduleName] call cse_fnc_isModuleEnabled_f)) then {
_moduleArgs = [_moduleName, (_cfgRoot select _i)] call cse_fnc_getCfgModuleArguments_f;
_collectedInits pushback [_moduleName, _moduleArgs];
};
};
};
_collectedInits

View File

@ -0,0 +1,20 @@
/**
* fn_getModuleCondition_f.sqf
* @Descr: N/A DEPRECATED
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_moduleName","_condition","_return","_cfgFile"];
_moduleName = _this select 0;
_return = "";
_cfgFile = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _moduleName);
if (isClass _cfgFile) then {
_return = format["CSE_MODULE_CONDITION_%1",_moduleName];
};
_return

View File

@ -0,0 +1,22 @@
/**
* fn_getModule_f.sqf
* @Descr: Gets module information. DEPRECATED
* @Author: Glowbal
*
* @Arguments: [ModuleName STRING]
* @Return: ARRAY Returns an array with [ModuleName STRING, initLine STRING]
* @PublicAPI: false
*/
private ["_module","_cfg","_init","_name"];
_moduleName = _this select 0;
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _moduleName);
_module = [];
if (isClass _cfg) then {
_init = getText (_cfg >> "init");
_name = getText (_cfg >> "name");
//_module set [count _module,[_name,_init]];
_module = [_name,_init];
};
_module

View File

@ -0,0 +1,15 @@
/**
* fn_getModules_f.sqf
* @Descr: Returns all current active CSE Modules
* @Author: Glowbal
*
* @Arguments: []
* @Return: ARRAY List of all current Modules [moduleName STRING (Module classname), ...]
* @PublicAPI: true
*/
if (isnil "CSE_F_MODULE_OBJ_EH") then {
CSE_F_MODULE_OBJ_EH = [];
};
CSE_F_MODULE_OBJ_EH;

View File

@ -0,0 +1,59 @@
/**
* fn_initalizeModuleObjEH.sqf
* @Descr: initalize module Object init Eventhandlers. DEPRICATED. DO NOT USE.
* @Author: Glowbal
*
* @Arguments: [object OBJECT, eventhandler STRING]
* @Return: void
* @PublicAPI: false
*/
private ["_entity","_handle","_cfg","_ehCfg","_numberOfEH"];
_entity = (_this select 0) select 0;
_handle = _this select 1;
if (!local _entity) exitwith{};
if (isnil "cse_postInit") then {
_this spawn {
private ["_entity"];
_entity = (_this select 0) select 0;
_handle = _this select 1;
waituntil{(!isnil 'cse_postInit')};
{
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _x);
if (isClass _cfg) then {
if (isClass (_cfg >> "EventHandlers")) then {
_numberOfEH = count (_cfg >> "EventHandlers");
for [{_j=0}, {_j< _numberOfEH}, {_j=_j+1}] do {
_ehCfg = ((_cfg >> "EventHandlers") select _j);
if (isClass _ehCfg) then {
if (_entity isKindOf (ConfigName _ehCfg)) then {
(_this select 0) call (compile getText(_ehCfg >> _handle));
};
};
};
};
};
}foreach (call cse_fnc_getModules);
};
} else {
if (!local _entity) exitwith{};
{
_cfg = (ConfigFile >> "Combat_Space_Enhancement" >> "CfgModules" >> _x);
if (isClass _cfg) then {
if (isClass (_cfg >> "EventHandlers")) then {
_numberOfEH = count (_cfg >> "EventHandlers");
for [{_j=0}, {_j< _numberOfEH}, {_j=_j+1}] do {
_ehCfg = ((_cfg >> "EventHandlers") select _j);
if (isClass _ehCfg) then {
if (_entity isKindOf (ConfigName _ehCfg)) then {
(_this select 0) call (compile getText(_ehCfg >> _handle));
};
};
};
};
};
}foreach (call cse_fnc_getModules);
};

View File

@ -0,0 +1,59 @@
/**
* fn_initalizeModule_F.sqf
* @Descr: Initalize a CSE Module. To be called through the BI A3 Module Framework
* @Author: Glowbal
*
* @Arguments: []
* @Return: void
* @PublicAPI: true
*/
private ["_moduleName","_arguments","_logic","_units", "_activated","_cfg", "_moduleInfo", "_value", "_typeNameArgument"];
if (count _this > 1) then {
_moduleName = typeOf (_this select 0);
} else {
_moduleName = _this select 0;
};
[format["Initalize module: %1 IN QUE",_moduleName], 3] call cse_fnc_debug;
waituntil {(!isnil 'cse_f_modules')};
[format["Initalize module: %1 STARTED",_moduleName], 3] call cse_fnc_debug;
_arguments = [];
if (count _this >1) then {
_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param;
_units = [_this,1,[],[[]]] call BIS_fnc_param;
_activated = [_this,2,true,[true]] call BIS_fnc_param;
_moduleName = typeOf _logic;
_cfg = (ConfigFile >> "CfgVehicles" >> _moduleName >> "Arguments");
if (isClass _cfg) then {
for [{_i=0}, {_i < (count _cfg)}, {_i=_i+1}] do {
if (isClass (_cfg select _i)) then {
_value = _logic getvariable (ConfigName (_cfg select _i));
if (!isnil "_value") then {
_arguments pushback [(ConfigName (_cfg select _i)), _value];
} else {
_typeNameArgument = getText ((_cfg select _i) >> "typeName");
_value = "";
if (_typeNameArgument != "") then {
call {
if (_typeNameArgument == "BOOL") exitwith {
_value = getNumber((_cfg select _i) >> "defaultValue") == 1;
};
if (_typeNameArgument == "NUMBER") exitwith {
_value = getNumber((_cfg select _i) >> "defaultValue");
};
if (_typeNameArgument == "STRING") exitwith {
_value = getText((_cfg select _i) >> "defaultValue");
};
};
[format["Module Argument has not been set %1 %2. Module need to be replaced. Value used: %4", _moduleName, (ConfigName (_cfg select _i)), _typeNameArgument, _value], 1] call cse_fnc_debug;
_arguments pushback [(ConfigName (_cfg select _i)), _value];
};
};
};
};
};
} else {
_moduleName = _this select 0;
};
[_moduleName, _arguments] call cse_fnc_enableModule_f;

View File

@ -0,0 +1,14 @@
/**
* fn_isModuleEnabled_F.sqf
* @Descr: Check if given CSE Module class is enabled
* @Author: Glowbal
*
* @Arguments: [moduleName STRING]
* @Return: BOOL Returns true if module is currently enabled
* @PublicAPI: true
*/
if (isnil "CSE_F_MODULE_OBJ_EH") then {
CSE_F_MODULE_OBJ_EH = [];
};
((_this select 0) in CSE_F_MODULE_OBJ_EH);

View File

@ -0,0 +1,19 @@
/**
* fn_moduleIsActive_f.sqf
* @Descr: Check if given module name is active. DEPRICATED. DO NOT USE.
* @Author: Glowbal
*
* @Arguments: [moduleName STRING]
* @Return: BOOL Returns true if moduel is currently active
* @PublicAPI: false
*/
private ["_moduleName","_return","_condition"];
_moduleName = _this select 0;
_return = false;
_condition = [_moduleNAme] call cse_fnc_getModuleCondition_F;
if (!isnil "_condition") then {
call compile format["_return = %1;",_condition];
};
_return

View File

@ -0,0 +1,17 @@
/**
* fn_remoteModuleInit.sqf
* @Descr: Called by remote execution script to initialize modules.
* @Author: Glowbal
*
* @Arguments: [[moduleName STRING, arguments ARRAY (Format: [argumentName STRING, value ANY])], ...]
* @Return: nil
* @PublicAPI: false
*/
private ["_toinitalizeModules"];
_toinitalizeModules = _this select 0;
sleep 5;
{
[format["initalize module through Cfg REMOTE: %1",_x]] call cse_fnc_debug;
_x call cse_fnc_enableModule_f;
}foreach _toinitalizeModules;

View File

@ -0,0 +1,3 @@
cse_f_modules = true;

View File

@ -0,0 +1,21 @@
// Collect cfg modules and initalize them.
[] spawn {
// by waiting, we ensure that CSE Config modules aren't initalized before the modules have been.
sleep 5;
_toinitalizeModules = [MissionConfigFile] call cse_fnc_getCfgModuleInits_f;
{
[format["initalize module through cfg: %1",_x]] call cse_fnc_debug;
_x call cse_fnc_enableModule_f;
}foreach _toinitalizeModules;
// Check if we want to collect server side modules
_allowCfg = ((getNumber(MissionConfigFile >> "Combat_Space_Enhancement" >> "DisableModuleConfig")) == 0);
if (isServer && _allowCfg) then {
_toinitalizeModules = [configFile] call cse_fnc_getCfgModuleInits_f;
[format["initalize modules through server cfg: %1",_toinitalizeModules]] call cse_fnc_debug;
if !(_toinitalizeModules isEqualTo []) then {
[[_toinitalizeModules], "cse_fnc_remoteModuleInit", true, true] spawn BIS_fnc_MP;
};
};
};

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project name="Combat Space Enhancement">
<Package name="cse_f_modules">
<Container ID="Modules">
</Container>
</Package>
</Project>

View File

@ -0,0 +1,49 @@
class CfgFunctions {
class CSE {
class Carry {
file = "cse\cse_f_states\carry\functions";
class carryObj { recompile = 1; };
class carriedByObj { recompile = 1; };
class getCarriedObj { recompile = 1; };
class getCarriedBy { recompile = 1; };
class beingCarried { recompile = 1; };
class setCarriedBy { recompile = 1; }; /* Should not be used by other developers */
};
class Unconscious {
file = "cse\cse_f_states\unconscious\functions";
class setUnconsciousState { recompile = 1; };
class isUnconscious { recompile = 1; };
class getUnconsciousCondition { recompile = 1; };
class registerUnconsciousCondition { recompile = 1; };
class setCaptiveSwitch { recompile = 1; };
class moveToTempGroup { recompile = 1; };
class canGoUnconsciousState { recompile = 1; };
class setWeaponsCorrectUnconscious { recompile = 1; };
};
class Visual {
file = "cse\cse_f_states\visual\functions";
class effectPain { recompile = 1; };
class effectBleeding { recompile = 1; };
class effectBlackOut { recompile = 1; };
};
class Movement {
file = "cse\cse_f_states\movement\functions";
class limitMovementSpeed { recompile = 1; };
class limitSpeed { recompile = 1; };
};
class Arrest {
file = "cse\cse_f_states\arrest\functions";
class setArrestState { recompile = 1; };
class isArrested { recompile = 1; };
};
class LoadPerson {
file = "cse\cse_f_states\LoadPerson\functions";
class loadPerson_F { recompile = 1; };
class loadPersonLocal_F {recompile = 1; };
class makeCopyOfBody_F { recompile = 1; };
class makeCopyOfBodyLocal_F { recompile = 1; };
class unloadPerson_F { recompile = 1; };
class cleanUpCopyOfBody_F { recompile = 1; };
};
};
};

View File

@ -0,0 +1,26 @@
class Combat_Space_Enhancement
{
class EventHandlers
{
class PostInit_EventHandlers
{
class cse_f_states
{
init = " call compile preprocessFile 'cse\cse_f_states\init.sqf';";
};
};
};
class CustomEventHandlers {
class setUnconsciousState {}; // [unit, bool]
class setArrestState {}; // [unit, bool]
class carryObject {}; // [_unit, _to, _fallDown],"carryObject"
class carryObjectDropped {
class cleanUpCopiesAfterDrag { // [unit, droppedObject]
onCall = "[_this select 1] call cse_fnc_cleanUpCopyOfBody_f;";
};
};
};
};

View File

@ -0,0 +1,11 @@
/**
* fn_isArrested.sqf
* @Descr: Check if unit is in arrested state
* @Author: Glowbal
*
* @Arguments: [unit OBJECT]
* @Return: BOOL Returns true if unit or object is in arrest state
* @PublicAPI: true
*/
((_this select 0) getvariable ["cse_state_arrested",false])

View File

@ -0,0 +1,43 @@
/**
* fn_setArrestState.sqf
* @Descr: Set a unit in arrest state
* @Author: Glowbal
*
* @Arguments: [unitToBeArrested OBJECT, setArrested BOOL]
* @Return: void
* @PublicAPI: true
*/
private ["_unit","_setArrest"];
_unit = [_this, 0, objNull, [objNull]] call BIS_fnc_Param;
_setArrest = [_this, 1, false, [false]] call BIS_fnc_Param;
if (_setArrest) then {
[_unit, "cse_state_arrested", true] call cse_fnc_setVariable;
if ([_unit] call cse_fnc_isAwake) then {
if (vehicle _unit == _unit) then {
[_unit,"UnaErcPoslechVelitele2",true] call cse_fnc_broadcastAnim;
};
};
if (IsPlayer _unit) then {
[["arrested", true],"cse_fnc_disableUserInput_f",_unit,false] call BIS_fnc_MP;
};
_unit disableAI "Move";
_unit disableAI "ANIM";
} else {
[_unit, "cse_state_arrested", false] call cse_fnc_setVariable;
if ([_unit] call cse_fnc_isAwake) then {
if (vehicle _unit == _unit) then {
[_unit,"",true] call cse_fnc_broadcastAnim;
};
_unit enableAI "Move";
_unit enableAI "ANIM";
};
if (IsPlayer _unit) then {
[["arrested", false],"cse_fnc_disableUserInput_f",_unit,false] call BIS_fnc_MP;
};
};
[[_unit, _setArrest],"setArrestState"] call cse_fnc_customEventHandler_F;

View File

@ -0,0 +1,13 @@
/**
* fn_beingCarried.sqf
* @Descr: Check if object is being carried
* @Author: Glowbal
*
* @Arguments: [object OBJECT]
* @Return: BOOL True if object is being carried
* @PublicAPI: true
*/
private["_object"];
_object = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_Param;
!(isNull ([_object] call cse_fnc_getCarriedObj));

View File

@ -0,0 +1,15 @@
/**
* fn_carriedByObj.sqf
* @Descr: Check if object A is being carried by object B.
* @Author: Glowbal
*
* @Arguments: [object OBJECT, unit OBJECT]
* @Return: BOOL True if B is carrying A.
* @PublicAPI: true
*/
private ["_unit","_to"];
_to = _this select 0;
_unit = _this select 1;
([_to] call cse_fnc_getCarriedBy == [_unit] call cse_fnc_getCarriedBy);

View File

@ -0,0 +1,74 @@
/**
* fn_carryObj.sqf
* @Descr: Have a unit carry an object. Use ObjNull for second parameter if you want the unit to carry nothing
* @Author: Glowbal
*
* @Arguments: [unit OBJECT, objectToCarry OBJECT, attachToVector ARRAY (Optional)]
* @Return: BOOL Returns true if succesful
* @PublicAPI: true
*/
private ["_unit","_to","_return", "_fallDown", "_carriedObj", "_positionUnit"];
_unit = [_this, 0,ObjNull, [ObjNull]] call bis_fnc_param;
_to = [_this, 1,ObjNull, [ObjNull]] call bis_fnc_param;
_fallDown = false;
if (count _this > 3) then {
_fallDown = _this select 3;
};
_return = false;
[format["fnc_carryObj - UNIT: %1 ATTEMPTS TO CARRY %2",_unit,_to],2] call cse_fnc_debug;
if (((typeName _to) == "OBJECT" && (isNull ([_unit] call cse_fnc_getCarriedObj))) || isNull _to) then {
if (vehicle _unit != _unit) exitwith {};
if (!isNull _to) then {
if ((isNull ([_to] call cse_fnc_getCarriedObj)) && ([_unit] call cse_fnc_canInteract)) then {
_return = true;
_unit setvariable ["cse_carriedObj",_to,true];
if (_fallDown) then {
// [_unit,_fallDown] call cse_fnc_limitMovementSpeed;
};
[_to, _unit] call cse_fnc_setCarriedBy;
if (count _this > 2) then {
if (count (_this select 2) == 3) then {
_to attachTo [_unit,(_this select 2)];
[format["fnc_carryObj - UNIT: %1 TO %2 - attachTo offset: %3",_unit,_to,(_this select 2)],2] call cse_fnc_debug;
};
} else {
[format["fnc_carryObj - UNIT: %1 TO %2 - Script expects external handling of attachTo Command. Exiting",_unit,_to],2] call cse_fnc_debug;
};
[[_unit, _to, _fallDown],"carryObject"] call cse_fnc_customEventHandler_F;
};
} else {
if (!isNull ([_unit] call cse_fnc_getCarriedObj)) then {
[format["fnc_carryObj - UNIT: %1 DROPING CARRIED OBJECT",_unit],2] call cse_fnc_debug;
_carriedObj = ([_unit] call cse_fnc_getCarriedObj);
detach _carriedObj;
//_carriedObj setPosATL [(getPosATL _carriedObj) select 0, (getPosATL _carriedObj) select 1,0];
if (!surfaceIsWater getPos _unit) then {
_positionUnit = getPosATL _carriedObj;
_positionUnit set [2, ((getPosATL _unit) select 2) + 0.1];
_carriedObj setPosATL _positionUnit;
} else {
_positionUnit = getPosASL _carriedObj;
_positionUnit set [2, ((getPosASL _unit) select 2) + 0.1];
_carriedObj setPosASL _positionUnit;
};
[[_unit, _carriedObj],"carryObjectDropped"] call cse_fnc_customEventHandler_F;
[[_unit] call cse_fnc_getCarriedObj, objNull] call cse_fnc_setCarriedBy;
_unit setvariable ["cse_carriedObj",_to,true];
_return = true;
[[_unit, _to, _fallDown],"carryObject"] call cse_fnc_customEventHandler_F;
};
};
} else {
[format["fnc_carryObj - UNIT: %1 FAILED TO CARRY %2 - not an object or already carrying",_unit,_to],2] call cse_fnc_debug;
};
//[format["UNIT: %1 ATTEMPTS TO CARRY %2",_unit,_to],2] call cse_fnc_debug;
_return

View File

@ -0,0 +1,14 @@
/**
* fn_getCarriedBy.sqf
* @Descr: Get the object that is carrying given unit or object
* @Author: Glowbal
*
* @Arguments: [unit OBJECT]
* @Return: OBJECT Returns the object that is carrying the unit. Otherwise returns ObjNull
* @PublicAPI: true
*/
private ["_unit","_return"];
_unit = [_this, 0, objNull, [objNull]] call BIS_fnc_param;
_return = _unit getvariable ["cse_carriedBy",objNull];
_return

View File

@ -0,0 +1,14 @@
/**
* fn_getCarriedObj.sqf
* @Descr: Grab the registered carried object
* @Author: Glowbal
*
* @Arguments: [unit OBJECT]
* @Return: OBJECT Returns the object that the unit is currently carrying. If not carrying, returns ObjNull
* @PublicAPI: true
*/
private ["_unit","_return"];
_unit = _this select 0;
_return = _unit getvariable ["cse_carriedObj",objNull];
_return

View File

@ -0,0 +1,20 @@
/**
* fn_setCarriedBy.sqf
* @Descr: Registers an object being carried by another object
* @Author: Glowbal
*
* @Arguments: [unitToBeCarried OBJECT, objectCarrying OBJECT]
* @Return: BOOL True if succesfully registered
* @PublicAPI: false
*/
private ["_unit","_to","_return"];
_unit = [_this, 0, ObjNull,[ObjNull]] call BIS_fnc_Param;
_to = [_this, 1, ObjNull,[ObjNull]] call BIS_fnc_Param;
_return = false;
if ((isNull ([_unit] call cse_fnc_getCarriedBy)) || isNull _to) then {
_return = true;
_unit setvariable ["cse_carriedBy",_to,true];
};
_return

View File

@ -0,0 +1,26 @@
#define _ARMA_
class CfgPatches
{
class cse_f_states
{
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"cse_main"};
version = "0.5";
author[] = {"Combat Space Enhancement"};
authorUrl = "http://csemod.com";
};
};
class CfgAddons {
class PreloadAddons {
class cse_f_states {
list[] = {"cse_f_states"};
};
};
};
#include "CfgFunctions.h"
#include "Combat_Space_Enhancement.h"
#include "define.hpp"
#include "visual\empty.hpp"
#include "visual\effects.hpp"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,797 @@
#ifndef CSE_DEFINE_H
#define CSE_DEFINE_H
// define.hpp
#define true 1
#define false 0
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
#define CT_LISTBOX 5
#define CT_TOOLBOX 6
#define CT_CHECKBOXES 7
#define CT_PROGRESS 8
#define CT_HTML 9
#define CT_STATIC_SKEW 10
#define CT_ACTIVETEXT 11
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_CONTEXT_MENU 14
#define CT_CONTROLS_GROUP 15
#define CT_SHORTCUTBUTTON 16
#define CT_XKEYDESC 40
#define CT_XBUTTON 41
#define CT_XLISTBOX 42
#define CT_XSLIDER 43
#define CT_XCOMBO 44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT 80
#define CT_OBJECT_ZOOM 81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK 98
#define CT_ANIMATED_USER 99
#define CT_MAP 100
#define CT_MAP_MAIN 101
#define CT_LISTNBOX 102
// Static styles
#define ST_POS 0x0F
#define ST_HPOS 0x03
#define ST_VPOS 0x0C
#define ST_LEFT 0x00
#define ST_RIGHT 0x01
#define ST_CENTER 0x02
#define ST_DOWN 0x04
#define ST_UP 0x08
#define ST_VCENTER 0x0c
#define ST_TYPE 0xF0
#define ST_SINGLE 0
#define ST_MULTI 16
#define ST_TITLE_BAR 32
#define ST_PICTURE 48
#define ST_FRAME 64
#define ST_BACKGROUND 80
#define ST_GROUP_BOX 96
#define ST_GROUP_BOX2 112
#define ST_HUD_BACKGROUND 128
#define ST_TILE_PICTURE 144
#define ST_WITH_RECT 160
#define ST_LINE 176
#define ST_SHADOW 0x100
#define ST_NO_RECT 0x200 // this style works for CT_STATIC in conjunction with ST_MULTI
#define ST_KEEP_ASPECT_RATIO 0x800
#define ST_TITLE ST_TITLE_BAR + ST_CENTER
// Slider styles
#define SL_DIR 0x400
#define SL_VERT 0
#define SL_HORZ 0x400
#define SL_TEXTURES 0x10
// Listbox styles
#define LB_TEXTURES 0x10
#define LB_MULTI 0x20
#define FontCSE "PuristaMedium"
class cse_gui_backgroundBase {
type = CT_STATIC;
idc = -1;
style = ST_PICTURE;
colorBackground[] = {0,0,0,0};
colorText[] = {1, 1, 1, 1};
font = FontCSE;
text = "";
sizeEx = 0.032;
};
class cse_gui_editBase
{
access = 0;
type = 2;
x = 0;
y = 0;
h = 0.04;
w = 0.2;
colorBackground[] =
{
0,
0,
0,
1
};
colorText[] =
{
0.95,
0.95,
0.95,
1
};
colorSelection[] =
{
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])",
1
};
autocomplete = "";
text = "";
size = 0.2;
style = "0x00 + 0x40";
font = "PuristaMedium";
shadow = 2;
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
colorDisabled[] =
{
1,
1,
1,
0.25
};
};
class cse_gui_buttonBase {
idc = -1;
type = 16;
style = ST_LEFT;
text = "";
action = "";
x = 0.0;
y = 0.0;
w = 0.25;
h = 0.04;
size = 0.03921;
sizeEx = 0.03921;
color[] = {1.0, 1.0, 1.0, 1};
color2[] = {1.0, 1.0, 1.0, 1};
/*colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.5])"};
colorbackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.4};
colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25};
colorFocused[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])", 0.8};
colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.8};
*/
colorBackground[] = {1,1,1,0.95};
colorbackground2[] = {1,1,1,0.95};
colorDisabled[] = {1,1,1,0.6};
colorFocused[] = {1,1,1,1};
colorBackgroundFocused[] = {1,1,1,1};
periodFocus = 1.2;
periodOver = 0.8;
default = false;
class HitZone {
left = 0.00;
top = 0.00;
right = 0.00;
bottom = 0.00;
};
class ShortcutPos {
left = 0.00;
top = 0.00;
w = 0.00;
h = 0.00;
};
class TextPos {
left = 0.002;
top = 0.0004;
right = 0.0;
bottom = 0.00;
};
textureNoShortcut = "";
animTextureNormal = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureDisabled = "cse\cse_gui\data\buttonDisabled_gradient.paa";
animTextureOver = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureFocused = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTexturePressed = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureDefault = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
period = 0.5;
font = FontCSE;
soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1};
soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.0,0};
soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.07,1};
soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1};
class Attributes {
font = FontCSE;
color = "#E5E5E5";
align = "center";
shadow = "true";
};
class AttributesImage {
font = FontCSE;
color = "#E5E5E5";
align = "left";
shadow = "true";
};
};
class cse_gui_RscProgress {
type = 8;
style = 0;
colorFrame[] = {1,1,1,0.7};
colorBar[] = {1,1,1,0.7};
texture = "#(argb,8,8,3)color(1,1,1,0.7)";
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class cse_gui_staticBase {
idc = -1;
type = CT_STATIC;
x = 0.0;
y = 0.0;
w = 0.183825;
h = 0.104575;
style = ST_LEFT;
font = FontCSE;
sizeEx = 0.03921;
colorText[] = {0.95, 0.95, 0.95, 1.0};
colorBackground[] = {0, 0, 0, 0};
text = "";
};
class RscListBox;
class cse_gui_listBoxBase : RscListBox{
type = CT_LISTBOX;
style = ST_MULTI;
font = FontCSE;
sizeEx = 0.03921;
color[] = {1, 1, 1, 1};
colorText[] = {0.543, 0.5742, 0.4102, 1.0};
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
colorSelect[] = {0.95, 0.95, 0.95, 1};
colorSelect2[] = {0.95, 0.95, 0.95, 1};
colorSelectBackground[] = {0, 0, 0, 1};
colorSelectBackground2[] = {0.543, 0.5742, 0.4102, 1.0};
colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25};
period = 1.2;
rowHeight = 0.03;
colorBackground[] = {0, 0, 0, 1};
maxHistoryDelay = 1.0;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
soundSelect[] = {"",0.1,1};
soundExpand[] = {"",0.1,1};
soundCollapse[] = {"",0.1,1};
class ListScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
class ScrollBar {
color[] = {1, 1, 1, 0.6};
colorActive[] = {1, 1, 1, 1};
colorDisabled[] = {1, 1, 1, 0.3};
thumb = "";
arrowFull = "";
arrowEmpty = "";
border = "";
};
};
class cse_gui_listNBox {
access = 0;
type = CT_LISTNBOX;// 102;
style =ST_MULTI;
w = 0.4;
h = 0.4;
font = FontCSE;
sizeEx = 0.031;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
columns[] = {0.0};
color[] = {1, 1, 1, 1};
rowHeight = 0.03;
colorBackground[] = {0, 0, 0, 0.2};
colorText[] = {1,1, 1, 1.0};
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
colorSelect[] = {0.95, 0.95, 0.95, 1};
colorSelect2[] = {0.95, 0.95, 0.95, 1};
colorSelectBackground[] = {0, 0, 0, 0.0};
colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5};
colorActive[] = {0,0,0,1};
colorDisabled[] = {0,0,0,0.3};
rows = 1;
drawSideArrows = 0;
idcLeft = -1;
idcRight = -1;
maxHistoryDelay = 1;
soundSelect[] = {"", 0.1, 1};
period = 1;
shadow = 2;
class ScrollBar {
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
border = "#(argb,8,8,3)color(1,1,1,1)";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
thumb = "#(argb,8,8,3)color(1,1,1,1)";
};
class ListScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
};
class RscCombo;
class cse_gui_comboBoxBase: RscCombo {
idc = -1;
type = 4;
style = "0x10 + 0x200";
x = 0;
y = 0;
w = 0.3;
h = 0.035;
color[] = {0,0,0,0.6};
colorActive[] = {1,0,0,1};
colorBackground[] = {0,0,0,1};
colorDisabled[] = {1,1,1,0.25};
colorScrollbar[] = {1,0,0,1};
colorSelect[] = {0,0,0,1};
colorSelectBackground[] = {1,1,1,0.7};
colorText[] = {1,1,1,1};
arrowEmpty = "";
arrowFull = "";
wholeHeight = 0.45;
font = FontCSE;
sizeEx = 0.031;
soundSelect[] = {"\A3\ui_f\data\sound\RscCombo\soundSelect",0.1,1};
soundExpand[] = {"\A3\ui_f\data\sound\RscCombo\soundExpand",0.1,1};
soundCollapse[] = {"\A3\ui_f\data\sound\RscCombo\soundCollapse",0.1,1};
maxHistoryDelay = 1.0;
class ScrollBar
{
color[] = {0.3,0.3,0.3,0.6};
colorActive[] = {0.3,0.3,0.3,1};
colorDisabled[] = {0.3,0.3,0.3,0.3};
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
border = "";
};
class ComboScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {0.3,0.3,0.3,0.6};
colorActive[] = {0.3,0.3,0.3,1};
colorDisabled[] = {0.3,0.3,0.3,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
};
class cse_gui_mapBase {
moveOnEdges = 1;
x = "SafeZoneXAbs";
y = "SafeZoneY + 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "SafeZoneWAbs";
h = "SafeZoneH - 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
type = 100; // Use 100 to hide markers
style = 48;
shadow = 0;
ptsPerSquareSea = 5;
ptsPerSquareTxt = 3;
ptsPerSquareCLn = 10;
ptsPerSquareExp = 10;
ptsPerSquareCost = 10;
ptsPerSquareFor = 9;
ptsPerSquareForEdge = 9;
ptsPerSquareRoad = 6;
ptsPerSquareObj = 9;
showCountourInterval = 0;
scaleMin = 0.001;
scaleMax = 1.0;
scaleDefault = 0.16;
maxSatelliteAlpha = 0.85;
alphaFadeStartScale = 0.35;
alphaFadeEndScale = 0.4;
colorBackground[] = {0.969,0.957,0.949,1.0};
colorSea[] = {0.467,0.631,0.851,0.5};
colorForest[] = {0.624,0.78,0.388,0.5};
colorForestBorder[] = {0.0,0.0,0.0,0.0};
colorRocks[] = {0.0,0.0,0.0,0.3};
colorRocksBorder[] = {0.0,0.0,0.0,0.0};
colorLevels[] = {0.286,0.177,0.094,0.5};
colorMainCountlines[] = {0.572,0.354,0.188,0.5};
colorCountlines[] = {0.572,0.354,0.188,0.25};
colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6};
colorCountlinesWater[] = {0.491,0.577,0.702,0.3};
colorPowerLines[] = {0.1,0.1,0.1,1.0};
colorRailWay[] = {0.8,0.2,0.0,1.0};
colorNames[] = {0.1,0.1,0.1,0.9};
colorInactive[] = {1.0,1.0,1.0,0.5};
colorOutside[] = {0.0,0.0,0.0,1.0};
colorTracks[] = {0.84,0.76,0.65,0.15};
colorTracksFill[] = {0.84,0.76,0.65,1.0};
colorRoads[] = {0.7,0.7,0.7,1.0};
colorRoadsFill[] = {1.0,1.0,1.0,1.0};
colorMainRoads[] = {0.9,0.5,0.3,1.0};
colorMainRoadsFill[] = {1.0,0.6,0.4,1.0};
colorGrid[] = {0.1,0.1,0.1,0.6};
colorGridMap[] = {0.1,0.1,0.1,0.6};
colorText[] = {1, 1, 1, 0.85};
font = "PuristaMedium";
sizeEx = 0.0270000;
stickX[] = {0.20, {"Gamma", 1.00, 1.50} };
stickY[] = {0.20, {"Gamma", 1.00, 1.50} };
onMouseButtonClick = "";
onMouseButtonDblClick = "";
fontLabel = "PuristaMedium";
sizeExLabel = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontGrid = "TahomaB";
sizeExGrid = 0.02;
fontUnits = "TahomaB";
sizeExUnits = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontNames = "PuristaMedium";
sizeExNames = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
fontInfo = "PuristaMedium";
sizeExInfo = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontLevel = "TahomaB";
sizeExLevel = 0.02;
text = "#(argb,8,8,3)color(1,1,1,1)";
class ActiveMarker {
color[] = {0.30, 0.10, 0.90, 1.00};
size = 50;
};
class Legend
{
x = "SafeZoneX + ( ((safezoneW / safezoneH) min 1.2) / 40)";
y = "SafeZoneY + safezoneH - 4.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "3.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
font = "PuristaMedium";
sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
colorBackground[] = {1,1,1,0.5};
color[] = {0,0,0,1};
};
class Task
{
icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa";
iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa";
iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa";
iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa";
iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa";
color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"};
colorCreated[] = {1,1,1,1};
colorCanceled[] = {0.7,0.7,0.7,1};
colorDone[] = {0.7,1,0.3,1};
colorFailed[] = {1,0.3,0.2,1};
size = 27;
importance = 1;
coefMin = 1;
coefMax = 1;
};
class Waypoint
{
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
color[] = {0,0,0,1};
size = 20;
importance = "1.2 * 16 * 0.05";
coefMin = 0.900000;
coefMax = 4;
};
class WaypointCompleted
{
icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa";
color[] = {0,0,0,1};
size = 20;
importance = "1.2 * 16 * 0.05";
coefMin = 0.900000;
coefMax = 4;
};
class CustomMark
{
icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa";
size = 24;
importance = 1;
coefMin = 1;
coefMax = 1;
color[] = {0,0,0,1};
};
class Command
{
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
size = 18;
importance = 1;
coefMin = 1;
coefMax = 1;
color[] = {1,1,1,1};
};
class Bush
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = "14/2";
importance = "0.2 * 14 * 0.05 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Rock
{
icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa";
color[] = {0.1,0.1,0.1,0.8};
size = 12;
importance = "0.5 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class SmallTree
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = 12;
importance = "0.6 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Tree
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = 12;
importance = "0.9 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class busstop
{
icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class fuelstation
{
icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class hospital
{
icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class church
{
icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class lighthouse
{
icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class power
{
icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powersolar
{
icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powerwave
{
icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powerwind
{
icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class quay
{
icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class shipwreck
{
icon = "\A3\ui_f\data\map\mapcontrol\shipwreck_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class transmitter
{
icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class watertower
{
icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class Cross
{
icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {0,0,0,1};
};
class Chapel
{
icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {0,0,0,1};
};
class Bunker
{
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 14;
importance = "1.5 * 14 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Fortress
{
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 16;
importance = "2 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Fountain
{
icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa";
size = 11;
importance = "1 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Ruin
{
icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa";
size = 16;
importance = "1.2 * 16 * 0.05";
coefMin = 1;
coefMax = 4;
color[] = {0,0,0,1};
};
class Stack
{
icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa";
size = 20;
importance = "2 * 16 * 0.05";
coefMin = 0.9;
coefMax = 4;
color[] = {0,0,0,1};
};
class Tourism
{
icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa";
size = 16;
importance = "1 * 16 * 0.05";
coefMin = 0.7;
coefMax = 4;
color[] = {0,0,0,1};
};
class ViewTower
{
icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa";
size = 16;
importance = "2.5 * 16 * 0.05";
coefMin = 0.5;
coefMax = 4;
color[] = {0,0,0,1};
};
};
#endif

View File

@ -0,0 +1,104 @@
/*
*/
cse_fnc_setCanSwitchAnim = {
private ["_unit","_to","_return"];
_unit = _this select 0;
_to = _this select 1;
_return = false;
if (((typeName _to) == "BOOL")) then {
_unit setvariable ["cse_canSwitchAnimation",_to,true];
_return = true;
};
_return
};
cse_fnc_getCanSwitchAnim = {
private ["_unit","_return"];
_unit = _this select 0;
_return = _unit getvariable "cse_canSwitchAnimation";
_return
};
cse_fnc_setCurrentMenu = {
_unit = _this select 0;
_to = _this select 1;
_return = false;
if ((typeName _to) == "STRING") then {
_unit setvariable ["cse_currentMenu",_to,true];
_return = true;
};
_return
};
cse_fnc_getCurrentMenu = {
_unit = _this select 0;
_return = _unit getvariable ["cse_currentMenu",""];
_return
};
cse_fnc_changeBlurialVisionState = {
private ["_unit","_to"];
_unit = _this select 0;
_to = _this select 1;
_return = false;
if (((typeName _to) == "SCALAR")) then {
if (_to < -1) then {
_to = -1;
} else {
if (_to > 1) then {
_to = 1;
};
};
_unit setvariable ["cse_blurialVisualState", [_unit] call cse_fnc_getBlurialVisionState + _to,false];
_return = true;
};
_return
};
cse_fnc_getBlurialVisionState = {
private ["_unit"];
_unit = _this select 0;
_return = _unit getvariable ["cse_blurialVisualState",0];
_return
};
// EVERYTHING BELOW HERE IS STILL WORK IN PROGRESS
cse_fnc_setMovementState = {
private ["_unit","_to"];
_unit = _this select 0;
_to = _this select 1;
_return = false;
if (((typeName _to) == "SCALAR")) then {
_unit setvariable ["cse_movementState",_to,false];
_return = true;
};
_return
};
cse_fnc_getMovementState = {
private ["_unit"];
_unit = _this select 0;
_return = _unit getvariable ["cse_movementState",0];
_return
};
cse_fnc_setHearingState = {
private ["_unit","_to"];
_unit = _this select 0;
_to = _this select 1;
_return = false;
if (((typeName _to) == "SCALAR")) then {
_unit setvariable ["cse_hearingState",_to,false];
_return = true;
};
_return
};
cse_fnc_getHearingState = {
private ["_unit"];
_unit = _this select 0;
_return = _unit getvariable ["cse_hearingState",0];
_return
};

View File

@ -0,0 +1,37 @@
/*
*/
call compileFinal preprocessFile "cse\cse_f_states\functions.sqf";
if (!isDedicated) then {
45 cutRsc ["RscCSEScreenEffectsBlack","PLAIN"];
};
if (isServer) then {
CSE_LOGIC_OBJECT = (createGroup sideLogic) createUnit ["logic", [1,1,1], [], 0, "FORM"];
publicVariable "CSE_LOGIC_OBJECT";
};
["cse_isDead",false,true,"cse"] call cse_fnc_defineVariable;
["cse_isDeadPlayer", false, true, "cse"] call cse_fnc_defineVariable;
["cse_state_arrested",false,true,"cse"] call cse_fnc_defineVariable;
["cse_state_unconscious",false,true,"cse"] call cse_fnc_defineVariable;
["CSE_ENABLE_REVIVE_SETDEAD_F",0,false,"cse"] call cse_fnc_defineVariable;
["cse_carriedBy",objNull,false,"cse"] call cse_fnc_defineVariable;
if (isnil "CSE_MARKED_FOR_GABAGE_COLLECTION") then {
CSE_MARKED_FOR_GABAGE_COLLECTION = [];
};
[] spawn {
waituntil {
{
deleteVehicle _x;
false;
}count CSE_MARKED_FOR_GABAGE_COLLECTION;
CSE_MARKED_FOR_GABAGE_COLLECTION = CSE_MARKED_FOR_GABAGE_COLLECTION - [objNull];
false;
};
};

View File

@ -0,0 +1,24 @@
/**
* fn_cleanUpCopyOfBody_f.sqf
* @Descr: Called from a custom eventhandler to ensure that any copies of bodies are cleaned up.
* @Author: Glowbal
*
* @Arguments: [unit OBJECT]
* @Return: BOOL
* @PublicAPI: true
*/
private ["_unit", "_copy"];
_unit = _this select 0;
_copy = _unit getvariable "cse_copyOfBody_f";
if (isnil "_copy") exitwith {false};
[format["Cleaning up a copy of Body: %1 %2", _unit, _copy]] call cse_fnc_debug;
// lets clean it up
_unit setvariable ["cse_originalCopy_f", nil, true];
_unit setvariable ["cse_copyOfBody_f", nil, true];
if (!isNull _copy) then {
deleteVehicle _copy;
};
true;

Some files were not shown because too many files have changed in this diff Show More