From ca226325829c70933db1b7e83c8601bb4212e31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 7 Dec 2017 04:00:46 +0100 Subject: [PATCH 01/15] initial commit --- bwa3_comp_ace/CfgEventhandlers.hpp | 5 + bwa3_comp_ace/CfgVehicles.hpp | 11 ++ bwa3_comp_ace/XEH_PREP.sqf | 2 + bwa3_comp_ace/XEH_preInit.sqf | 21 +++ bwa3_comp_ace/config.cpp | 2 + bwa3_comp_ace/dialog.hpp | 129 ++++++++++++++++++ .../functions/fn_canOpenAmmoDialog.sqf | 7 + bwa3_comp_ace/functions/fn_openAmmoDialog.sqf | 109 +++++++++++++++ bwa3_comp_ace/script_component.h | 9 +- bwa3_comp_ace/stringtable.xml | 12 ++ 10 files changed, 306 insertions(+), 1 deletion(-) create mode 100644 bwa3_comp_ace/CfgEventhandlers.hpp create mode 100644 bwa3_comp_ace/XEH_PREP.sqf create mode 100644 bwa3_comp_ace/XEH_preInit.sqf create mode 100644 bwa3_comp_ace/dialog.hpp create mode 100644 bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf create mode 100644 bwa3_comp_ace/functions/fn_openAmmoDialog.sqf diff --git a/bwa3_comp_ace/CfgEventhandlers.hpp b/bwa3_comp_ace/CfgEventhandlers.hpp new file mode 100644 index 0000000..b928bc2 --- /dev/null +++ b/bwa3_comp_ace/CfgEventhandlers.hpp @@ -0,0 +1,5 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/bwa3_comp_ace/CfgVehicles.hpp b/bwa3_comp_ace/CfgVehicles.hpp index 6aa1cf8..d26fe30 100644 --- a/bwa3_comp_ace/CfgVehicles.hpp +++ b/bwa3_comp_ace/CfgVehicles.hpp @@ -160,6 +160,17 @@ class CfgVehicles { class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { position = "[0,-1.5,1.3]"; + class BWA3_AmmoDialog { + displayName = "$STR_BWA3_Comp_Ace_ConfigureAmmoLoad"; + selection = ""; + position = ""; + showDisabled = 0; + priority = 2; + distance = 4; + icon = "\A3\ui_f\data\igui\cfg\simpletasks\types\rearm_ca.paa"; + condition = "[_target] call BWA3_fnc_canOpenAmmoDialog"; + statement = "[_target,[0]] call BWA3_fnc_openAmmoDialog"; + }; }; class BWA3_CamoNet_show { diff --git a/bwa3_comp_ace/XEH_PREP.sqf b/bwa3_comp_ace/XEH_PREP.sqf new file mode 100644 index 0000000..685f93c --- /dev/null +++ b/bwa3_comp_ace/XEH_PREP.sqf @@ -0,0 +1,2 @@ +PREP(canOpenAmmoDialog); +PREP(openAmmoDialog); diff --git a/bwa3_comp_ace/XEH_preInit.sqf b/bwa3_comp_ace/XEH_preInit.sqf new file mode 100644 index 0000000..bd47b7a --- /dev/null +++ b/bwa3_comp_ace/XEH_preInit.sqf @@ -0,0 +1,21 @@ +#include "script_component.h" + +ADDON = false; + +#include "XEH_PREP.sqf" + +ADDON = true; + +If (isNil "BWA3_ammoDialogDistance") then { + BWA3_ammoDialogDistance = 25; +}; + +[ + "BWA3_ammoDialogAllowed", + "CHECKBOX", + "STR_BWA3_Comp_Ace_ConfigureAmmoLoadAllowed", + localize "STR_BWA3_FactionClassBundeswehrName", + true, + 1 +] call CBA_Settings_fnc_init; + diff --git a/bwa3_comp_ace/config.cpp b/bwa3_comp_ace/config.cpp index a9283c7..5d07003 100644 --- a/bwa3_comp_ace/config.cpp +++ b/bwa3_comp_ace/config.cpp @@ -16,3 +16,5 @@ class CfgPatches { #include "CfgAmmo.hpp" #include "CfgGlasses.hpp" #include "CfgRecoils.hpp" +#include "CfgEventhandlers.hpp" +#include "dialog.hpp" diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp new file mode 100644 index 0000000..41932dc --- /dev/null +++ b/bwa3_comp_ace/dialog.hpp @@ -0,0 +1,129 @@ +#include "\a3\ui_f\hpp\defineCommon.inc" +#include "\a3\ui_f\hpp\defineResincl.inc" + +/*extern*/ class RscText; +/*extern*/ class RscButtonMenu; + + +class BWA3_AmmoDialog { + idd = IDD_BWA3_MAGAZINEDIALOG; + name = "$STR_BWA3_Comp_Ace_AmmoDialog"; + enableSimulation = 1; + //onLoad = "call BWA3_fnc_onLoad_Ammo"; + //onUnload = "call BWA3_fnc_onUnload_Ammo"; + + class Controls { + class TextTitlebar: RscText { + idc = IDC_BWA3_MAGAZINEDIALOG_TITLE; + text = "$STR_BWA3_Comp_Ace_AmmoDialog"; + x = GUI_GRID_CENTER_X; + y = GUI_GRID_CENTER_Y; + w = GUI_GRID_W * 24; + h = GUI_GRID_H; + sizeEx = GUI_TEXT_SIZE_MEDIUM; + colorBackground[] = {"(profileNamespace getVariable ['GUI_BCG_RGB_R', 0.13])","(profileNamespace getVariable ['GUI_BCG_RGB_G', 0.54])","(profileNamespace getVariable ['GUI_BCG_RGB_B', 0.21])",1}; + }; + class BackgroundDialog: RscText { + idc = IDC_BWA3_MAGAZINEDIALOG_BACK; + x = GUI_GRID_CENTER_X; + y = GUI_GRID_CENTER_Y + GUI_GRID_H; + w = GUI_GRID_W * 24; + h = GUI_GRID_H * 15; + colorBackground[] = {0,0,0,0.3}; + text = ""; + }; + class ButtonApply: RscButtonMenu { + idc = IDC_OK; + //action = QUOTE(call FUNC(onButtonApply)); + text = "$STR_ui_debug_but_apply"; + x = GUI_GRID_CENTER_X + GUI_GRID_W * 16; + y = GUI_GRID_CENTER_Y + GUI_GRID_H * 16; + w = GUI_GRID_W * 8; + h = GUI_GRID_H; + }; + class ButtonClose: ButtonApply { + idc = IDC_CANCEL; + text = "$STR_disp_cancel"; + //action = QUOTE(call FUNC(onButtonClose)); + x = GUI_GRID_CENTER_X + GUI_GRID_W * 8; + }; + class ControlsTable { + idc = IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE; + x = GUI_GRID_CENTER_X + GUI_GRID_W; + y = GUI_GRID_CENTER_Y + GUI_GRID_H * 2; + w = GUI_GRID_W * 22; + h = GUI_GRID_H * 13; + + type = CT_CONTROLS_TABLE; + style = SL_TEXTURES; + + lineSpacing = 0; + rowHeight = 1 * GUI_GRID_H; + headerHeight = 1 * GUI_GRID_H; + + firstIDC = IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE_START; + lastIDC = IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE_END; + + selectedRowColorFrom[] = {0.7, 0.85, 1, 0.25}; + selectedRowColorTo[] = {0.7, 0.85, 1, 0.5}; + selectedRowAnimLength = 1.2; + + class VScrollBar: ScrollBar { + width = GUI_GRID_W * 0.8; + autoScrollEnabled = 0; + autoScrollDelay = 1; + autoScrollRewind = 1; + autoScrollSpeed = 1; + }; + + class HScrollBar: ScrollBar { + height = 0; + }; + + class HeaderTemplate { + class HeaderBackground { + controlBaseClassPath[] = {"RscText"}; + columnX = 0; + columnW = GUI_GRID_W * 22; + controlOffsetY = 0; + }; + class Column1 { + controlBaseClassPath[] = {"RscText"}; + columnX = GUI_GRID_W * 3; + columnW = GUI_GRID_W * 16; + controlOffsetY = 0; + }; + }; + + class RowTemplate { + class RowBackground { + controlBaseClassPath[] = {"RscText"}; + columnX = 0; + columnW = GUI_GRID_W * 22; + controlOffsetY = 0; + }; + class Column1 { + controlBaseClassPath[] = {"RscText"}; + columnX = 0; + columnW = 7 * GUI_GRID_W; + controlOffsetY = 0; + }; + class Column2 { + controlBaseClassPath[] = {"RscXSliderH"}; + columnX = 8 * GUI_GRID_W; + columnW = 10 * GUI_GRID_W; + controlOffsetY = 0.1 * GUI_GRID_H; + controlH = 0.8 * GUI_GRID_H; + }; + class Column3 { + controlBaseClassPath[] = {"RscEdit"}; + columnX = 19 * GUI_GRID_W; + columnW = 2 * GUI_GRID_W; + controlOffsetY = 0; + controlH = 1 * GUI_GRID_H; + }; + }; + + }; + }; +}; diff --git a/bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf b/bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf new file mode 100644 index 0000000..b92b26a --- /dev/null +++ b/bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf @@ -0,0 +1,7 @@ +params ["_target"]; + +private _vehicles = nearestObjects [_target, ["Air", "LandVehicle", "Slingload_base_F", "ReammoBox_F"], BWA3_ammoDialogDistance]; +private _filter = ["transportAmmo", "ace_rearm_defaultSupply"] select (["ace_rearm"] call ace_common_fnc_isModLoaded); +private _rearmVehicles = {(getNumber (configFile >> "CfgVehicles" >> typeOf _x >> _filter)) > 0} count _vehicles; + +(_rearmVehicles > 0 && {[ace_player, _target] call ace_common_fnc_canInteractWith} && {missionNamespace getVariable ["BWA3_ammoDialogAllowed", true]}) diff --git a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf new file mode 100644 index 0000000..bd5ab84 --- /dev/null +++ b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf @@ -0,0 +1,109 @@ +#include "\BWA3_Comp_ACE\script_component.h" + +params [["_vehicle", objNull, [objNull]], ["_turret", [0], [[]]]]; + +If !(createDialog "BWA3_AmmoDialog") exitWith {}; + +disableSerialization; + +private _dialog = findDisplay IDD_BWA3_MAGAZINEDIALOG; +_dialog setVariable ["BWA3_ammoDialog_curvehicle", _vehicle]; +_dialog setVariable ["BWA3_ammoDialog_turret", _turret]; +private _ctrlTable = _dialog displayCtrl IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE; + +(ctAddHeader _ctrlTable) params ["_headerindex", "_headercontrols"]; +_headercontrols params ["_background", "_headertext"]; +_background ctrlSetBackgroundColor [ + (profileNamespace getVariable ['GUI_BCG_RGB_R', 0.13]), + (profileNamespace getVariable ['GUI_BCG_RGB_G', 0.54]), + (profileNamespace getVariable ['GUI_BCG_RGB_B', 0.21]), + 0.5 +]; +_headertext ctrlsetText getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); + + +private _MaxAmmoAmount = count (getArray((_this call CBA_fnc_getTurret) >> "magazines")); +private _Weapons = _vehicle weaponsTurret _turret; +private _curMagazinesTurret = _vehicle magazinesTurret _turret; + +private _possibleMagazines = []; +{ + _possibleMagazines append (getArray(configFile >> "CfgWeapons" >> _x >> "magazines")); + nil +} count (_vehicle weaponsTurret _turret); + +// filter the not usefull magazines +_possibleMagazines = _possibleMagazines select { + (_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) || + {getNumber(configFile >> "CfgMagazines" >> _x >> "scope") isEqualTo 1} +}; + +private _hashInit = []; +{ + private _curMag = _x; + _hashInit pushBack [_curMag,({_x == _curMag} count _curMagazinesTurret) min _MaxAmmoAmount]; + nil +} count _possibleMagazines; + +_dialog setVariable ["BWA3_ammoDialog_ammoHash", [_hashInit] call CBA_fnc_hashCreate]; +_dialog setVariable ["BWA3_ammoDialog_MaxAmmoAmount", _MaxAmmoAmount]; + +{ + private _curMag = _x; + private _curAmount = ({_x == _curMag} count _curMagazinesTurret) min _MaxAmmoAmount; + (ctAddRow _ctrlTable) params ["_index","_controls"]; + _controls params ["_background","_ctrlText","_ctrlSlider","_ctrlEdit"]; + _ctrlText ctrlsetText getText(configFile >> "CfgMagazines" >> _curMag >> "displayNameShort"); + + _ctrlSlider sliderSetRange [0,_MaxAmmoAmount]; + _ctrlSlider sliderSetPosition _curAmount; + _ctrlSlider setVariable ["BWA3_ammoDialog_ctrlEdit", _ctrlEdit]; + _ctrlSlider setVariable ["BWA3_ammoDialog_Ammo", _curMag]; + _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { + params ["_ctrlSlider", "_value"]; + private _ctrlEdit = _ctrlSlider getVariable "BWA3_ammoDialog_ctrlEdit"; + _value = round _value; + _ctrlEdit ctrlSetText (str _value); + private _hash = (ctrlParent _ctrlSlider) getVariable "BWA3_ammoDialog_ammoHash"; + [_hash, _ctrlSlider getVariable "BWA3_ammoDialog_ammo", _value] call CBA_fnc_hashSet; + }]; + + _ctrlEdit ctrlSetText str _curAmount; + _ctrlEdit setVariable ["BWA3_ammoDialog_ctrlSlider", _ctrlSlider]; + _ctrlEdit ctrlAddEventHandler ["KeyUp", { + params ["_ctrlEdit"]; + private _ctrlSlider = _ctrlEdit getVariable "BWA3_ammoDialog_ctrlSlider"; + private _value = parseNumber ctrlText _ctrlEdit; + _ctrlSlider sliderSetPosition (round _value); + private _hash = (ctrlParent _ctrlSlider) getVariable "BWA3_ammoDialog_ammoHash"; + [_hash, _ctrlSlider getVariable "BWA3_ammoDialog_ammo", _value] call CBA_fnc_hashSet; + + }]; + _ctrlEdit ctrlAddEventHandler ["KillFocus", { + params ["_ctrlEdit"]; + private _ctrlSlider = _ctrlEdit getVariable "BWA3_ammoDialog_ctrlSlider"; + private _value = sliderPosition _ctrlSlider; + _value = round _value; + _ctrlEdit ctrlSetText (str _value); + private _hash = (ctrlParent _ctrlSlider) getVariable "BWA3_ammoDialog_ammoHash"; + [_hash, _ctrlSlider getVariable "BWA3_ammoDialog_ammo", _value] call CBA_fnc_hashSet; + }]; + + nil +} count _possibleMagazines; + +_dialog displayAddEventHandler ["Unload", { + params ["_dialog","_exitCode"]; + if !(_exitCode isEqualTo 1) exitWith {}; + private _vehicle = _dialog getVariable "BWA3_ammoDialog_curvehicle"; + private _turret = _dialog getVariable "BWA3_ammoDialog_turret"; + private _hash = _dialog getVariable "BWA3_ammoDialog_ammoHash"; + { + private _ammo = _x; + private _amount = [_hash, _ammo] call CBA_fnc_hashGet; + _vehicle removeMagazinesTurret [_ammo, _turret]; + for "_i" from 1 to _amount do { + _vehicle addMagazineTurret [_ammo, _turret]; + }; + } count ([_hash] call CBA_fnc_hashKeys); +}]; diff --git a/bwa3_comp_ace/script_component.h b/bwa3_comp_ace/script_component.h index 4f4863b..e790911 100644 --- a/bwa3_comp_ace/script_component.h +++ b/bwa3_comp_ace/script_component.h @@ -1,3 +1,10 @@ -//#include "\bwa3_common\script_component.h" +#include "\bwa3_common\script_component.h" #define ADDON BWA3_Comp_ACE + +#define IDD_BWA3_MAGAZINEDIALOG 10815 +#define IDC_BWA3_MAGAZINEDIALOG_TITLE 10816 +#define IDC_BWA3_MAGAZINEDIALOG_BACK 10817 +#define IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE 10818 +#define IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE_START 10819 +#define IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE_END 10900 diff --git a/bwa3_comp_ace/stringtable.xml b/bwa3_comp_ace/stringtable.xml index 49d08aa..5786cae 100644 --- a/bwa3_comp_ace/stringtable.xml +++ b/bwa3_comp_ace/stringtable.xml @@ -17,5 +17,17 @@ 磁性感应器 (底部攻击) 磁性感應器 (底部攻擊) + + Ammunition Dialog + Munitionsauswahl + + + Configure Ammo Load + Munitionsauswahl + + + Ammodialog allowed + Munitionsauswahl erlaubt + From 0490fbe48528ae38bdb91d660355f7736f33897e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 7 Dec 2017 04:07:38 +0100 Subject: [PATCH 02/15] dialog moved --- bwa3_comp_ace/dialog.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp index 41932dc..2be5267 100644 --- a/bwa3_comp_ace/dialog.hpp +++ b/bwa3_comp_ace/dialog.hpp @@ -16,7 +16,7 @@ class BWA3_AmmoDialog { class TextTitlebar: RscText { idc = IDC_BWA3_MAGAZINEDIALOG_TITLE; text = "$STR_BWA3_Comp_Ace_AmmoDialog"; - x = GUI_GRID_CENTER_X; + x = GUI_GRID_CENTER_X + GUI_GRID_W * 8; y = GUI_GRID_CENTER_Y; w = GUI_GRID_W * 24; h = GUI_GRID_H; @@ -25,18 +25,18 @@ class BWA3_AmmoDialog { }; class BackgroundDialog: RscText { idc = IDC_BWA3_MAGAZINEDIALOG_BACK; - x = GUI_GRID_CENTER_X; + x = GUI_GRID_CENTER_X + GUI_GRID_W * 8; y = GUI_GRID_CENTER_Y + GUI_GRID_H; w = GUI_GRID_W * 24; h = GUI_GRID_H * 15; - colorBackground[] = {0,0,0,0.3}; + colorBackground[] = {0,0,0,0.5}; text = ""; }; class ButtonApply: RscButtonMenu { idc = IDC_OK; //action = QUOTE(call FUNC(onButtonApply)); text = "$STR_ui_debug_but_apply"; - x = GUI_GRID_CENTER_X + GUI_GRID_W * 16; + x = GUI_GRID_CENTER_X + GUI_GRID_W * 24; y = GUI_GRID_CENTER_Y + GUI_GRID_H * 16; w = GUI_GRID_W * 8; h = GUI_GRID_H; @@ -45,11 +45,11 @@ class BWA3_AmmoDialog { idc = IDC_CANCEL; text = "$STR_disp_cancel"; //action = QUOTE(call FUNC(onButtonClose)); - x = GUI_GRID_CENTER_X + GUI_GRID_W * 8; + x = GUI_GRID_CENTER_X + GUI_GRID_W * 16; }; class ControlsTable { idc = IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE; - x = GUI_GRID_CENTER_X + GUI_GRID_W; + x = GUI_GRID_CENTER_X + GUI_GRID_W * 9; y = GUI_GRID_CENTER_Y + GUI_GRID_H * 2; w = GUI_GRID_W * 22; h = GUI_GRID_H * 13; From a8c909ca5542bbe93bfc52baf818c77816d69456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 7 Dec 2017 04:18:27 +0100 Subject: [PATCH 03/15] missing ace_interact_menu requirement --- bwa3_comp_ace/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bwa3_comp_ace/config.cpp b/bwa3_comp_ace/config.cpp index 5d07003..29b77ea 100644 --- a/bwa3_comp_ace/config.cpp +++ b/bwa3_comp_ace/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = 0.1; - requiredAddons[] = {BWA3_Common, BWA3_Eagle, BWA3_Weapons, BWA3_VehicleWeapons, BWA3_Explosives, BWA3_Units, BWA3_Puma, BWA3_Leopard2A6M, BWA3_Tiger}; + requiredAddons[] = {BWA3_Common, BWA3_Eagle, BWA3_Weapons, BWA3_VehicleWeapons, BWA3_Explosives, BWA3_Units, BWA3_Puma, BWA3_Leopard2A6M, BWA3_Tiger, ace_interact_menu}; versionAr[] = {1,0,0}; }; }; From 20f10dfd18961ceddc2a40d88328bb3ffea76031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 7 Dec 2017 11:09:54 +0100 Subject: [PATCH 04/15] max Magazines - The maximum Magazine Storage is now recognized. - can be overwritten for each vehicle individually --- bwa3_comp_ace/dialog.hpp | 14 +-- bwa3_comp_ace/functions/fn_openAmmoDialog.sqf | 110 +++++++++--------- 2 files changed, 65 insertions(+), 59 deletions(-) diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp index 2be5267..2d114e6 100644 --- a/bwa3_comp_ace/dialog.hpp +++ b/bwa3_comp_ace/dialog.hpp @@ -57,9 +57,9 @@ class BWA3_AmmoDialog { type = CT_CONTROLS_TABLE; style = SL_TEXTURES; - lineSpacing = 0; - rowHeight = 1 * GUI_GRID_H; - headerHeight = 1 * GUI_GRID_H; + lineSpacing = 0.1 * GUI_GRID_H; + rowHeight = 1.1 * GUI_GRID_H; + headerHeight = 1.2 * GUI_GRID_H; firstIDC = IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE_START; lastIDC = IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE_END; @@ -111,15 +111,15 @@ class BWA3_AmmoDialog { class Column2 { controlBaseClassPath[] = {"RscXSliderH"}; columnX = 8 * GUI_GRID_W; - columnW = 10 * GUI_GRID_W; - controlOffsetY = 0.1 * GUI_GRID_H; + columnW = 11 * GUI_GRID_W; + controlOffsetY = 0.3 * GUI_GRID_H; controlH = 0.8 * GUI_GRID_H; }; class Column3 { controlBaseClassPath[] = {"RscEdit"}; - columnX = 19 * GUI_GRID_W; + columnX = 20 * GUI_GRID_W; columnW = 2 * GUI_GRID_W; - controlOffsetY = 0; + controlOffsetY = 0.3 * GUI_GRID_H; controlH = 1 * GUI_GRID_H; }; }; diff --git a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf index bd5ab84..c4bd12e 100644 --- a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf +++ b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf @@ -2,13 +2,14 @@ params [["_vehicle", objNull, [objNull]], ["_turret", [0], [[]]]]; -If !(createDialog "BWA3_AmmoDialog") exitWith {}; +If ((!alive _vehicle) || {!(createDialog "BWA3_AmmoDialog")}) exitWith {}; disableSerialization; +BWA3_Comp_ACE_ammoDialog_curVehicle = _vehicle; +BWA3_Comp_ACE_ammoDialog_curTurret = _turret; + private _dialog = findDisplay IDD_BWA3_MAGAZINEDIALOG; -_dialog setVariable ["BWA3_ammoDialog_curvehicle", _vehicle]; -_dialog setVariable ["BWA3_ammoDialog_turret", _turret]; private _ctrlTable = _dialog displayCtrl IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE; (ctAddHeader _ctrlTable) params ["_headerindex", "_headercontrols"]; @@ -19,91 +20,96 @@ _background ctrlSetBackgroundColor [ (profileNamespace getVariable ['GUI_BCG_RGB_B', 0.21]), 0.5 ]; -_headertext ctrlsetText getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - +_headertext ctrlsetText getText(configFile >> "CfgVehicles" >> typeOf BWA3_Comp_ACE_ammoDialog_curVehicle >> "displayName"); -private _MaxAmmoAmount = count (getArray((_this call CBA_fnc_getTurret) >> "magazines")); -private _Weapons = _vehicle weaponsTurret _turret; -private _curMagazinesTurret = _vehicle magazinesTurret _turret; +BWA3_Comp_ACE_ammoDialog_curHash = [] call CBA_fnc_hashCreate; +BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount = BWA3_Comp_ACE_ammoDialog_curVehicle getVariable ["BWA3_comp_ace_maxMagazineLoad", count (getArray((_this call CBA_fnc_getTurret) >> "magazines"))]; +private _Weapons = BWA3_Comp_ACE_ammoDialog_curVehicle weaponsTurret BWA3_Comp_ACE_ammoDialog_curTurret; +private _curMagazinesTurret = BWA3_Comp_ACE_ammoDialog_curVehicle magazinesTurret BWA3_Comp_ACE_ammoDialog_curTurret; -private _possibleMagazines = []; { - _possibleMagazines append (getArray(configFile >> "CfgWeapons" >> _x >> "magazines")); - nil -} count (_vehicle weaponsTurret _turret); + private _possibleMagazines = getArray(configFile >> "CfgWeapons" >> _x >> "magazines"); + _possibleMagazines = _possibleMagazines select { + (_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) || + {getNumber(configFile >> "CfgMagazines" >> _x >> "scope") isEqualTo 1} + }; -// filter the not usefull magazines -_possibleMagazines = _possibleMagazines select { - (_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) || - {getNumber(configFile >> "CfgMagazines" >> _x >> "scope") isEqualTo 1} -}; - -private _hashInit = []; -{ - private _curMag = _x; - _hashInit pushBack [_curMag,({_x == _curMag} count _curMagazinesTurret) min _MaxAmmoAmount]; + { + private _curMag = _x; + [BWA3_Comp_ACE_ammoDialog_curHash, _curMag, [({_x == _curMag} count _curMagazinesTurret) min BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount]] call CBA_fnc_hashSet; + nil + } count _possibleMagazines; nil -} count _possibleMagazines; +} count (BWA3_Comp_ACE_ammoDialog_curVehicle weaponsTurret BWA3_Comp_ACE_ammoDialog_curTurret); + +#define UPDATE_VALUES private _curMagazinesAmout = BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount - _value; \ +{ \ + ([BWA3_Comp_ACE_ammoDialog_curHash, _x] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; \ + If ((_curMagazineAmount - _curAmount) <= 0) then { \ + _curAmount = _curMagazineAmount; \ + _ctrlSlider sliderSetPosition _curAmount; \ + _ctrlEdit setText str _curAmount; \ + [BWA3_Comp_ACE_ammoDialog_curHash, _x, [_curAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; \ + }; \ + _curMagazinesAmout = _curMagazineAmount - _curAmount; \ +} count (([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys) - [_curMagazine]); \ +[BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine, [_value, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet -_dialog setVariable ["BWA3_ammoDialog_ammoHash", [_hashInit] call CBA_fnc_hashCreate]; -_dialog setVariable ["BWA3_ammoDialog_MaxAmmoAmount", _MaxAmmoAmount]; { - private _curMag = _x; - private _curAmount = ({_x == _curMag} count _curMagazinesTurret) min _MaxAmmoAmount; + private _curMagazine = _x; + ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curMagazineAmount"]; + (ctAddRow _ctrlTable) params ["_index","_controls"]; _controls params ["_background","_ctrlText","_ctrlSlider","_ctrlEdit"]; - _ctrlText ctrlsetText getText(configFile >> "CfgMagazines" >> _curMag >> "displayNameShort"); + _ctrlText ctrlsetText getText(configFile >> "CfgMagazines" >> _curMagazine >> "displayNameShort"); + + _ctrlSlider sliderSetRange [0, BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount]; + _ctrlSlider sliderSetPosition _curMagazineAmount; + _ctrlSlider setVariable ["BWA3_ammoDialog_magazineClass", _curMagazine]; - _ctrlSlider sliderSetRange [0,_MaxAmmoAmount]; - _ctrlSlider sliderSetPosition _curAmount; - _ctrlSlider setVariable ["BWA3_ammoDialog_ctrlEdit", _ctrlEdit]; - _ctrlSlider setVariable ["BWA3_ammoDialog_Ammo", _curMag]; _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { params ["_ctrlSlider", "_value"]; - private _ctrlEdit = _ctrlSlider getVariable "BWA3_ammoDialog_ctrlEdit"; + private _curMagazine = _ctrlSlider getVariable "BWA3_ammoDialog_magazineClass"; + ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; _value = round _value; _ctrlEdit ctrlSetText (str _value); - private _hash = (ctrlParent _ctrlSlider) getVariable "BWA3_ammoDialog_ammoHash"; - [_hash, _ctrlSlider getVariable "BWA3_ammoDialog_ammo", _value] call CBA_fnc_hashSet; + UPDATE_VALUES; }]; - _ctrlEdit ctrlSetText str _curAmount; - _ctrlEdit setVariable ["BWA3_ammoDialog_ctrlSlider", _ctrlSlider]; + _ctrlEdit ctrlSetText str _curMagazineAmount; + _ctrlEdit setVariable ["BWA3_ammoDialog_magazineClass", _curMagazine]; _ctrlEdit ctrlAddEventHandler ["KeyUp", { params ["_ctrlEdit"]; - private _ctrlSlider = _ctrlEdit getVariable "BWA3_ammoDialog_ctrlSlider"; + private _curMagazine = _ctrlEdit getVariable "BWA3_ammoDialog_magazineClass"; + ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; private _value = parseNumber ctrlText _ctrlEdit; _ctrlSlider sliderSetPosition (round _value); - private _hash = (ctrlParent _ctrlSlider) getVariable "BWA3_ammoDialog_ammoHash"; - [_hash, _ctrlSlider getVariable "BWA3_ammoDialog_ammo", _value] call CBA_fnc_hashSet; - + UPDATE_VALUES; }]; _ctrlEdit ctrlAddEventHandler ["KillFocus", { params ["_ctrlEdit"]; - private _ctrlSlider = _ctrlEdit getVariable "BWA3_ammoDialog_ctrlSlider"; + private _curMagazine = _ctrlEdit getVariable "BWA3_ammoDialog_magazineClass"; + ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; private _value = sliderPosition _ctrlSlider; _value = round _value; _ctrlEdit ctrlSetText (str _value); - private _hash = (ctrlParent _ctrlSlider) getVariable "BWA3_ammoDialog_ammoHash"; - [_hash, _ctrlSlider getVariable "BWA3_ammoDialog_ammo", _value] call CBA_fnc_hashSet; + UPDATE_VALUES; }]; + [BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine, [_curMagazineAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; nil -} count _possibleMagazines; +} count ([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys); _dialog displayAddEventHandler ["Unload", { params ["_dialog","_exitCode"]; if !(_exitCode isEqualTo 1) exitWith {}; - private _vehicle = _dialog getVariable "BWA3_ammoDialog_curvehicle"; - private _turret = _dialog getVariable "BWA3_ammoDialog_turret"; - private _hash = _dialog getVariable "BWA3_ammoDialog_ammoHash"; { private _ammo = _x; - private _amount = [_hash, _ammo] call CBA_fnc_hashGet; - _vehicle removeMagazinesTurret [_ammo, _turret]; + ([BWA3_Comp_ACE_ammoDialog_curHash, _ammo] call CBA_fnc_hashGet) params ["_amount"]; + BWA3_Comp_ACE_ammoDialog_curVehicle removeMagazinesTurret [_ammo, BWA3_Comp_ACE_ammoDialog_curTurret]; for "_i" from 1 to _amount do { - _vehicle addMagazineTurret [_ammo, _turret]; + BWA3_Comp_ACE_ammoDialog_curVehicle addMagazineTurret [_ammo, BWA3_Comp_ACE_ammoDialog_curTurret]; }; - } count ([_hash] call CBA_fnc_hashKeys); + } count ([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys); }]; From a9893161cbf667c56adfe6a65c176d3775a36359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 7 Dec 2017 20:53:09 +0100 Subject: [PATCH 05/15] Puma action --- bwa3_comp_ace/CfgVehicles.hpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bwa3_comp_ace/CfgVehicles.hpp b/bwa3_comp_ace/CfgVehicles.hpp index d26fe30..dd9aafc 100644 --- a/bwa3_comp_ace/CfgVehicles.hpp +++ b/bwa3_comp_ace/CfgVehicles.hpp @@ -73,6 +73,17 @@ class CfgVehicles { class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { position = "[0,-1.0,1.3]"; + class BWA3_AmmoDialog { + displayName = "$STR_BWA3_Comp_Ace_ConfigureAmmoLoad"; + selection = ""; + position = ""; + showDisabled = 0; + priority = 2; + distance = 4; + icon = "\A3\ui_f\data\igui\cfg\simpletasks\types\rearm_ca.paa"; + condition = "[_target] call BWA3_fnc_canOpenAmmoDialog"; + statement = "[_target,[0]] call BWA3_fnc_openAmmoDialog"; + }; }; class BWA3_CamoNet_show { From e8e324e5fe2cc99393358c0939ead34a28beb5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 7 Dec 2017 20:53:29 +0100 Subject: [PATCH 06/15] missing typo fix --- bwa3_comp_ace/functions/fn_openAmmoDialog.sqf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf index c4bd12e..93e9f3f 100644 --- a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf +++ b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf @@ -45,13 +45,14 @@ private _curMagazinesTurret = BWA3_Comp_ACE_ammoDialog_curVehicle magazinesTurre #define UPDATE_VALUES private _curMagazinesAmout = BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount - _value; \ { \ ([BWA3_Comp_ACE_ammoDialog_curHash, _x] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; \ - If ((_curMagazineAmount - _curAmount) <= 0) then { \ - _curAmount = _curMagazineAmount; \ + If ((_curMagazinesAmout - _curAmount) <= 0) then { \ + _curAmount = _curMagazinesAmout; \ _ctrlSlider sliderSetPosition _curAmount; \ - _ctrlEdit setText str _curAmount; \ + _ctrlEdit ctrlsetText str _curAmount; \ [BWA3_Comp_ACE_ammoDialog_curHash, _x, [_curAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; \ }; \ - _curMagazinesAmout = _curMagazineAmount - _curAmount; \ + _curMagazinesAmout = _curMagazinesAmout - _curAmount; \ + nil \ } count (([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys) - [_curMagazine]); \ [BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine, [_value, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet From 59fb3d54cc366d54e7a5df7ef6ba90451d0a13d5 Mon Sep 17 00:00:00 2001 From: Dorbedo Date: Fri, 8 Dec 2017 08:29:59 +0100 Subject: [PATCH 07/15] renamed variables, namespace changed --- bwa3_comp_ace/CfgVehicles.hpp | 12 +- bwa3_comp_ace/XEH_PREP.sqf | 5 +- bwa3_comp_ace/XEH_preInit.sqf | 8 +- bwa3_comp_ace/dialog.hpp | 8 +- ...ialog.sqf => fn_canOpenMagazineDialog.sqf} | 4 +- bwa3_comp_ace/functions/fn_loadMagazines.sqf | 29 ++++ bwa3_comp_ace/functions/fn_openAmmoDialog.sqf | 116 --------------- .../functions/fn_openMagazineDialog.sqf | 139 ++++++++++++++++++ bwa3_comp_ace/stringtable.xml | 14 +- 9 files changed, 197 insertions(+), 138 deletions(-) rename bwa3_comp_ace/functions/{fn_canOpenAmmoDialog.sqf => fn_canOpenMagazineDialog.sqf} (70%) create mode 100644 bwa3_comp_ace/functions/fn_loadMagazines.sqf delete mode 100644 bwa3_comp_ace/functions/fn_openAmmoDialog.sqf create mode 100644 bwa3_comp_ace/functions/fn_openMagazineDialog.sqf diff --git a/bwa3_comp_ace/CfgVehicles.hpp b/bwa3_comp_ace/CfgVehicles.hpp index dd9aafc..02b0970 100644 --- a/bwa3_comp_ace/CfgVehicles.hpp +++ b/bwa3_comp_ace/CfgVehicles.hpp @@ -73,7 +73,7 @@ class CfgVehicles { class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { position = "[0,-1.0,1.3]"; - class BWA3_AmmoDialog { + class BWA3_MagazineDialog { displayName = "$STR_BWA3_Comp_Ace_ConfigureAmmoLoad"; selection = ""; position = ""; @@ -81,8 +81,8 @@ class CfgVehicles { priority = 2; distance = 4; icon = "\A3\ui_f\data\igui\cfg\simpletasks\types\rearm_ca.paa"; - condition = "[_target] call BWA3_fnc_canOpenAmmoDialog"; - statement = "[_target,[0]] call BWA3_fnc_openAmmoDialog"; + condition = "[_target] call BWA3_fnc_canOpenMagazineDialog"; + statement = "[_target,[0]] call BWA3_fnc_OpenMagazineDialog"; }; }; @@ -171,7 +171,7 @@ class CfgVehicles { class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { position = "[0,-1.5,1.3]"; - class BWA3_AmmoDialog { + class BWA3_MagazineDialog { displayName = "$STR_BWA3_Comp_Ace_ConfigureAmmoLoad"; selection = ""; position = ""; @@ -179,8 +179,8 @@ class CfgVehicles { priority = 2; distance = 4; icon = "\A3\ui_f\data\igui\cfg\simpletasks\types\rearm_ca.paa"; - condition = "[_target] call BWA3_fnc_canOpenAmmoDialog"; - statement = "[_target,[0]] call BWA3_fnc_openAmmoDialog"; + condition = "[_target] call BWA3_fnc_canOpenMagazineDialog"; + statement = "[_target,[0]] call BWA3_fnc_OpenMagazineDialog"; }; }; diff --git a/bwa3_comp_ace/XEH_PREP.sqf b/bwa3_comp_ace/XEH_PREP.sqf index 685f93c..a17ded2 100644 --- a/bwa3_comp_ace/XEH_PREP.sqf +++ b/bwa3_comp_ace/XEH_PREP.sqf @@ -1,2 +1,3 @@ -PREP(canOpenAmmoDialog); -PREP(openAmmoDialog); +PREP(canOpenMagazineDialog); +PREP(OpenMagazineDialog); +PREP(loadMagazines); \ No newline at end of file diff --git a/bwa3_comp_ace/XEH_preInit.sqf b/bwa3_comp_ace/XEH_preInit.sqf index bd47b7a..6e56dd8 100644 --- a/bwa3_comp_ace/XEH_preInit.sqf +++ b/bwa3_comp_ace/XEH_preInit.sqf @@ -6,14 +6,14 @@ ADDON = false; ADDON = true; -If (isNil "BWA3_ammoDialogDistance") then { - BWA3_ammoDialogDistance = 25; +If (isNil "BWA3_MagazineDialogDistance") then { + BWA3_MagazineDialogDistance = 25; }; [ - "BWA3_ammoDialogAllowed", + "BWA3_MagazineDialogAllowed", "CHECKBOX", - "STR_BWA3_Comp_Ace_ConfigureAmmoLoadAllowed", + "STR_BWA3_Comp_Ace_ConfigureMagazinesLoadAllowed", localize "STR_BWA3_FactionClassBundeswehrName", true, 1 diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp index 2d114e6..2c0b8aa 100644 --- a/bwa3_comp_ace/dialog.hpp +++ b/bwa3_comp_ace/dialog.hpp @@ -5,17 +5,15 @@ /*extern*/ class RscButtonMenu; -class BWA3_AmmoDialog { +class BWA3_MagazineDialog { idd = IDD_BWA3_MAGAZINEDIALOG; - name = "$STR_BWA3_Comp_Ace_AmmoDialog"; + name = "$STR_BWA3_Comp_Ace_MagazineDialog"; enableSimulation = 1; - //onLoad = "call BWA3_fnc_onLoad_Ammo"; - //onUnload = "call BWA3_fnc_onUnload_Ammo"; class Controls { class TextTitlebar: RscText { idc = IDC_BWA3_MAGAZINEDIALOG_TITLE; - text = "$STR_BWA3_Comp_Ace_AmmoDialog"; + text = "$STR_BWA3_Comp_Ace_MagazineDialog"; x = GUI_GRID_CENTER_X + GUI_GRID_W * 8; y = GUI_GRID_CENTER_Y; w = GUI_GRID_W * 24; diff --git a/bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf b/bwa3_comp_ace/functions/fn_canOpenMagazineDialog.sqf similarity index 70% rename from bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf rename to bwa3_comp_ace/functions/fn_canOpenMagazineDialog.sqf index b92b26a..921eb25 100644 --- a/bwa3_comp_ace/functions/fn_canOpenAmmoDialog.sqf +++ b/bwa3_comp_ace/functions/fn_canOpenMagazineDialog.sqf @@ -1,7 +1,7 @@ params ["_target"]; -private _vehicles = nearestObjects [_target, ["Air", "LandVehicle", "Slingload_base_F", "ReammoBox_F"], BWA3_ammoDialogDistance]; +private _vehicles = nearestObjects [_target, ["Air", "LandVehicle", "Slingload_base_F", "ReammoBox_F"], BWA3_MagazineDialogDistance]; private _filter = ["transportAmmo", "ace_rearm_defaultSupply"] select (["ace_rearm"] call ace_common_fnc_isModLoaded); private _rearmVehicles = {(getNumber (configFile >> "CfgVehicles" >> typeOf _x >> _filter)) > 0} count _vehicles; -(_rearmVehicles > 0 && {[ace_player, _target] call ace_common_fnc_canInteractWith} && {missionNamespace getVariable ["BWA3_ammoDialogAllowed", true]}) +(_rearmVehicles > 0 && {[ace_player, _target] call ace_common_fnc_canInteractWith} && {missionNamespace getVariable ["BWA3_MagazineDialogAllowed", true]}) diff --git a/bwa3_comp_ace/functions/fn_loadMagazines.sqf b/bwa3_comp_ace/functions/fn_loadMagazines.sqf new file mode 100644 index 0000000..384b303 --- /dev/null +++ b/bwa3_comp_ace/functions/fn_loadMagazines.sqf @@ -0,0 +1,29 @@ + + +params ["_vehicle", "_turret", ["_magazinesToLoad", [], [[]]], ["_magazinesToUnload", [], [[]]]]; + +If ((_magazinesToLoad isEqualTo []) && {_magazinesToUnload isEqualTo []}) exitWith {}; + + +[ + 5, + _this, + { + // load one mag + params ["_vehicle", "_turret", "_magazines"]; + + private _curMagazine = _magazines deleteAt 0; + _vehicle addMagazineTurret [_curMagazine, _turret]; + + If (_magazines isEqualTo []) exitWith {}; + + [_vehicle, _turret, _magazines] call BWA3_fnc_loadMagazines; + }, + { + [localize "STR_BWA3_Comp_Ace_loadingStopped", false, 5] call ace_common_fnc_displayText; + }, + "STR_BWA3_Comp_Ace_loadingMagazines", + { + [ACE_player, _vehicle] call ace_common_fnc_canInteractWith + } +] call ace_common_fnc_progressBar; diff --git a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf b/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf deleted file mode 100644 index 93e9f3f..0000000 --- a/bwa3_comp_ace/functions/fn_openAmmoDialog.sqf +++ /dev/null @@ -1,116 +0,0 @@ -#include "\BWA3_Comp_ACE\script_component.h" - -params [["_vehicle", objNull, [objNull]], ["_turret", [0], [[]]]]; - -If ((!alive _vehicle) || {!(createDialog "BWA3_AmmoDialog")}) exitWith {}; - -disableSerialization; - -BWA3_Comp_ACE_ammoDialog_curVehicle = _vehicle; -BWA3_Comp_ACE_ammoDialog_curTurret = _turret; - -private _dialog = findDisplay IDD_BWA3_MAGAZINEDIALOG; -private _ctrlTable = _dialog displayCtrl IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE; - -(ctAddHeader _ctrlTable) params ["_headerindex", "_headercontrols"]; -_headercontrols params ["_background", "_headertext"]; -_background ctrlSetBackgroundColor [ - (profileNamespace getVariable ['GUI_BCG_RGB_R', 0.13]), - (profileNamespace getVariable ['GUI_BCG_RGB_G', 0.54]), - (profileNamespace getVariable ['GUI_BCG_RGB_B', 0.21]), - 0.5 -]; -_headertext ctrlsetText getText(configFile >> "CfgVehicles" >> typeOf BWA3_Comp_ACE_ammoDialog_curVehicle >> "displayName"); - -BWA3_Comp_ACE_ammoDialog_curHash = [] call CBA_fnc_hashCreate; -BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount = BWA3_Comp_ACE_ammoDialog_curVehicle getVariable ["BWA3_comp_ace_maxMagazineLoad", count (getArray((_this call CBA_fnc_getTurret) >> "magazines"))]; -private _Weapons = BWA3_Comp_ACE_ammoDialog_curVehicle weaponsTurret BWA3_Comp_ACE_ammoDialog_curTurret; -private _curMagazinesTurret = BWA3_Comp_ACE_ammoDialog_curVehicle magazinesTurret BWA3_Comp_ACE_ammoDialog_curTurret; - -{ - private _possibleMagazines = getArray(configFile >> "CfgWeapons" >> _x >> "magazines"); - _possibleMagazines = _possibleMagazines select { - (_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) || - {getNumber(configFile >> "CfgMagazines" >> _x >> "scope") isEqualTo 1} - }; - - { - private _curMag = _x; - [BWA3_Comp_ACE_ammoDialog_curHash, _curMag, [({_x == _curMag} count _curMagazinesTurret) min BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount]] call CBA_fnc_hashSet; - nil - } count _possibleMagazines; - nil -} count (BWA3_Comp_ACE_ammoDialog_curVehicle weaponsTurret BWA3_Comp_ACE_ammoDialog_curTurret); - -#define UPDATE_VALUES private _curMagazinesAmout = BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount - _value; \ -{ \ - ([BWA3_Comp_ACE_ammoDialog_curHash, _x] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; \ - If ((_curMagazinesAmout - _curAmount) <= 0) then { \ - _curAmount = _curMagazinesAmout; \ - _ctrlSlider sliderSetPosition _curAmount; \ - _ctrlEdit ctrlsetText str _curAmount; \ - [BWA3_Comp_ACE_ammoDialog_curHash, _x, [_curAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; \ - }; \ - _curMagazinesAmout = _curMagazinesAmout - _curAmount; \ - nil \ -} count (([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys) - [_curMagazine]); \ -[BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine, [_value, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet - - -{ - private _curMagazine = _x; - ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curMagazineAmount"]; - - (ctAddRow _ctrlTable) params ["_index","_controls"]; - _controls params ["_background","_ctrlText","_ctrlSlider","_ctrlEdit"]; - _ctrlText ctrlsetText getText(configFile >> "CfgMagazines" >> _curMagazine >> "displayNameShort"); - - _ctrlSlider sliderSetRange [0, BWA3_Comp_ACE_ammoDialog_MaxMagazineAmount]; - _ctrlSlider sliderSetPosition _curMagazineAmount; - _ctrlSlider setVariable ["BWA3_ammoDialog_magazineClass", _curMagazine]; - - _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { - params ["_ctrlSlider", "_value"]; - private _curMagazine = _ctrlSlider getVariable "BWA3_ammoDialog_magazineClass"; - ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; - _value = round _value; - _ctrlEdit ctrlSetText (str _value); - UPDATE_VALUES; - }]; - - _ctrlEdit ctrlSetText str _curMagazineAmount; - _ctrlEdit setVariable ["BWA3_ammoDialog_magazineClass", _curMagazine]; - _ctrlEdit ctrlAddEventHandler ["KeyUp", { - params ["_ctrlEdit"]; - private _curMagazine = _ctrlEdit getVariable "BWA3_ammoDialog_magazineClass"; - ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; - private _value = parseNumber ctrlText _ctrlEdit; - _ctrlSlider sliderSetPosition (round _value); - UPDATE_VALUES; - }]; - _ctrlEdit ctrlAddEventHandler ["KillFocus", { - params ["_ctrlEdit"]; - private _curMagazine = _ctrlEdit getVariable "BWA3_ammoDialog_magazineClass"; - ([BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; - private _value = sliderPosition _ctrlSlider; - _value = round _value; - _ctrlEdit ctrlSetText (str _value); - UPDATE_VALUES; - }]; - - [BWA3_Comp_ACE_ammoDialog_curHash, _curMagazine, [_curMagazineAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; - nil -} count ([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys); - -_dialog displayAddEventHandler ["Unload", { - params ["_dialog","_exitCode"]; - if !(_exitCode isEqualTo 1) exitWith {}; - { - private _ammo = _x; - ([BWA3_Comp_ACE_ammoDialog_curHash, _ammo] call CBA_fnc_hashGet) params ["_amount"]; - BWA3_Comp_ACE_ammoDialog_curVehicle removeMagazinesTurret [_ammo, BWA3_Comp_ACE_ammoDialog_curTurret]; - for "_i" from 1 to _amount do { - BWA3_Comp_ACE_ammoDialog_curVehicle addMagazineTurret [_ammo, BWA3_Comp_ACE_ammoDialog_curTurret]; - }; - } count ([BWA3_Comp_ACE_ammoDialog_curHash] call CBA_fnc_hashKeys); -}]; diff --git a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf new file mode 100644 index 0000000..0775b8e --- /dev/null +++ b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf @@ -0,0 +1,139 @@ +#include "\BWA3_Comp_ACE\script_component.h" + +params [["_vehicle", objNull, [objNull]], ["_turret", [0], [[]]]]; + +If ((!alive _vehicle) || {!(createDialog "BWA3_MagazineDialog")}) exitWith {}; + +disableSerialization; + +private _dialog = findDisplay IDD_BWA3_comp_ace_magazineDialog; +private _ctrlTable = _dialog displayCtrl IDC_BWA3_comp_ace_magazineDialog_CONTROLSTABLE; + +_dialog setVariable ["BWA3_comp_ace_magazineDialog_vehicle", _vehicle]; +_dialog setVariable ["BWA3_comp_ace_magazineDialog_turret", _turret]; + +(ctAddHeader _ctrlTable) params ["_headerindex", "_headercontrols"]; +_headercontrols params ["_background", "_headertext"]; +_background ctrlSetBackgroundColor [ + (profileNamespace getVariable ['GUI_BCG_RGB_R', 0.13]), + (profileNamespace getVariable ['GUI_BCG_RGB_G', 0.54]), + (profileNamespace getVariable ['GUI_BCG_RGB_B', 0.21]), + 0.5 +]; +_headertext ctrlsetText getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); + +private _hash = [] call CBA_fnc_hashCreate; +_dialog setVariable ["BWA3_comp_ace_magazineDialog_hash", _hash]; +private _MaxMagazineAmount = _vehicle getVariable ["BWA3_maxMagazineLoad", count (getArray((_this call CBA_fnc_getTurret) >> "magazines"))]; +_dialog setVariable ["BWA3_comp_ace_magazineDialog_MaxMagazineAmount", _MaxMagazineAmount]; +private _Weapons = _vehicle weaponsTurret _turret; +private _curMagazinesTurret = _vehicle magazinesTurret _turret; + +{ + private _possibleMagazines = getArray(configFile >> "CfgWeapons" >> _x >> "magazines"); + _possibleMagazines = _possibleMagazines select { + (_x isKindOf ["VehicleMagazine", configFile >> "CfgMagazines"]) || + {getNumber(configFile >> "CfgMagazines" >> _x >> "scope") isEqualTo 1} + }; + + { + private _curMag = _x; + [_hash, _curMag, [({_x == _curMag} count _curMagazinesTurret) min _MaxMagazineAmount]] call CBA_fnc_hashSet; + nil + } count _possibleMagazines; + nil +} count (_vehicle weaponsTurret _turret); + +#define UPDATE_VALUES private _curMagazinesAmout = ((ctrlParent _ctrl) getVariable "BWA3_comp_ace_magazineDialog_MaxMagazineAmount") - _value; \ +{ \ + ([_hash, _x] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"]; \ + If ((_curMagazinesAmout - _curAmount) <= 0) then { \ + _curAmount = _curMagazinesAmout; \ + _ctrlSlider sliderSetPosition _curAmount; \ + _ctrlEdit ctrlsetText str _curAmount; \ + [_hash, _x, [_curAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; \ + }; \ + _curMagazinesAmout = _curMagazinesAmout - _curAmount; \ + nil \ +} count (([_hash] call CBA_fnc_hashKeys) - [_curMagazine]); \ +[_hash, _curMagazine, [_value, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet + +#define GET_VALUES private _curMagazine = _ctrl getVariable "BWA3_comp_ace_magazineDialog_magazineClass"; \ +private _hash = _ctrl getVariable "BWA3_comp_ace_magazineDialog_hash"; \ +([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"] + + + +{ + private _curMagazine = _x; + ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_curMagazineAmount"]; + + (ctAddRow _ctrlTable) params ["_index","_controls"]; + _controls params ["_background","_ctrlText","_ctrlSlider","_ctrlEdit"]; + _ctrlText ctrlsetText getText(configFile >> "CfgMagazines" >> _curMagazine >> "displayNameShort"); + + _ctrlSlider sliderSetRange [0, _MaxMagazineAmount]; + _ctrlSlider sliderSetPosition _curMagazineAmount; + _ctrlSlider setVariable ["BWA3_comp_ace_magazineDialog_magazineClass", _curMagazine]; + + _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { + params ["_ctrl", "_value"]; + GET_VALUES; + _value = round _value; + _ctrlEdit ctrlSetText (str _value); + UPDATE_VALUES; + }]; + + _ctrlEdit ctrlSetText str _curMagazineAmount; + _ctrlEdit setVariable ["BWA3_comp_ace_magazineDialog_magazineClass", _curMagazine]; + _ctrlEdit ctrlAddEventHandler ["KeyUp", { + params ["_ctrl"]; + GET_VALUES; + private _value = parseNumber ctrlText _ctrlEdit; + _ctrlSlider sliderSetPosition (round _value); + UPDATE_VALUES; + }]; + _ctrlEdit ctrlAddEventHandler ["KillFocus", { + params ["_ctrl"]; + GET_VALUES; + private _value = sliderPosition _ctrlSlider; + _value = round _value; + _ctrlEdit ctrlSetText (str _value); + UPDATE_VALUES; + }]; + + [_hash, _curMagazine, [_curMagazineAmount, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet; + nil +} count ([_hash] call CBA_fnc_hashKeys); + +_dialog displayAddEventHandler ["Unload", { + params ["_dialog","_exitCode"]; + if !(_exitCode isEqualTo 1) exitWith {}; + + private _vehicle = _dialog getVariable "BWA3_comp_ace_magazineDialog_vehicle"; + private _turret = _dialog getVariable "BWA3_comp_ace_magazineDialog_turret"; + private _hash = _dialog getVariable "BWA3_comp_ace_magazineDialog_hash"; + + /* + for testing purpose - to be removed later + */ + if (missionNamespace getVariable ["BWA3_testing", true]) exitWith { + { + private _ammo = _x; + ([_hash, _ammo] call CBA_fnc_hashGet) params ["_amount"]; + _vehicle removeMagazinesTurret [_ammo, _turret]; + for "_i" from 1 to _amount do { + _vehicle addMagazineTurret [_ammo, _turret]; + }; + } count ([_hash] call CBA_fnc_hashKeys); + }; + + private _magazines = []; + { + private _curMagazine = _x; + ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_amount"]; + _magazines pushBack [_curMagazine, _amount]; + } count ([_hash] call CBA_fnc_hashKeys); + + [_vehicle, _turret, _magazines] call BWA3_fnc_loadMagazines; +}]; diff --git a/bwa3_comp_ace/stringtable.xml b/bwa3_comp_ace/stringtable.xml index 5786cae..20920ff 100644 --- a/bwa3_comp_ace/stringtable.xml +++ b/bwa3_comp_ace/stringtable.xml @@ -17,7 +17,7 @@ 磁性感应器 (底部攻击) 磁性感應器 (底部攻擊) - + Ammunition Dialog Munitionsauswahl @@ -25,9 +25,17 @@ Configure Ammo Load Munitionsauswahl - - Ammodialog allowed + + Magazine dialog allowed Munitionsauswahl erlaubt + + Loading Magazine... + Magazin wird verladen... + + + Loading Magazine stopped + Magazine verladen abgebrochen + From b73af9e706b7fed08992c3bfcb5cc04f45894695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 8 Dec 2017 22:16:23 +0100 Subject: [PATCH 08/15] fix --- bwa3_comp_ace/functions/fn_openMagazineDialog.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf index 0775b8e..bbc1a24 100644 --- a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf +++ b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf @@ -6,8 +6,8 @@ If ((!alive _vehicle) || {!(createDialog "BWA3_MagazineDialog")}) exitWith {}; disableSerialization; -private _dialog = findDisplay IDD_BWA3_comp_ace_magazineDialog; -private _ctrlTable = _dialog displayCtrl IDC_BWA3_comp_ace_magazineDialog_CONTROLSTABLE; +private _dialog = findDisplay IDD_BWA3_MAGAZINEDIALOG; +private _ctrlTable = _dialog displayCtrl IDC_BWA3_MAGAZINEDIALOG_CONTROLSTABLE; _dialog setVariable ["BWA3_comp_ace_magazineDialog_vehicle", _vehicle]; _dialog setVariable ["BWA3_comp_ace_magazineDialog_turret", _turret]; @@ -59,7 +59,7 @@ private _curMagazinesTurret = _vehicle magazinesTurret _turret; [_hash, _curMagazine, [_value, _ctrlSlider, _ctrlEdit]] call CBA_fnc_hashSet #define GET_VALUES private _curMagazine = _ctrl getVariable "BWA3_comp_ace_magazineDialog_magazineClass"; \ -private _hash = _ctrl getVariable "BWA3_comp_ace_magazineDialog_hash"; \ +private _hash = (ctrlParent _ctrl) getVariable "BWA3_comp_ace_magazineDialog_hash"; \ ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"] From d630e726f6be632b85b999d56ce90f5a546879dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 8 Dec 2017 22:18:09 +0100 Subject: [PATCH 09/15] fix2 --- bwa3_comp_ace/functions/fn_openMagazineDialog.sqf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf index bbc1a24..bc03b37 100644 --- a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf +++ b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf @@ -125,14 +125,21 @@ _dialog displayAddEventHandler ["Unload", { for "_i" from 1 to _amount do { _vehicle addMagazineTurret [_ammo, _turret]; }; + nil } count ([_hash] call CBA_fnc_hashKeys); }; + private _curMagazinesTurret = _vehicle magazinesTurret _turret; + private _magazines = []; { private _curMagazine = _x; ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_amount"]; + + _amount = _amount - ({_x == _curMagazine} count _curMagazinesTurret); + _magazines pushBack [_curMagazine, _amount]; + nil; } count ([_hash] call CBA_fnc_hashKeys); [_vehicle, _turret, _magazines] call BWA3_fnc_loadMagazines; From 9f1741e9fc8bd211394c40b8fd159b7ce02bac6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 9 Dec 2017 00:32:01 +0100 Subject: [PATCH 10/15] reloading time added --- bwa3_comp_ace/functions/fn_loadMagazines.sqf | 56 ++++++++++++++----- .../functions/fn_openMagazineDialog.sqf | 21 +------ bwa3_comp_ace/stringtable.xml | 4 +- 3 files changed, 44 insertions(+), 37 deletions(-) diff --git a/bwa3_comp_ace/functions/fn_loadMagazines.sqf b/bwa3_comp_ace/functions/fn_loadMagazines.sqf index 384b303..f55aeb8 100644 --- a/bwa3_comp_ace/functions/fn_loadMagazines.sqf +++ b/bwa3_comp_ace/functions/fn_loadMagazines.sqf @@ -1,29 +1,55 @@ -params ["_vehicle", "_turret", ["_magazinesToLoad", [], [[]]], ["_magazinesToUnload", [], [[]]]]; +params ["_vehicle", "_turret", ["_magazines", [], [[]]]]; -If ((_magazinesToLoad isEqualTo []) && {_magazinesToUnload isEqualTo []}) exitWith {}; +If (_magazines isEqualTo []) exitWith {}; +// magazine specific reloadTime +private _reloadTime = getNumber(configFile >> "CfgMagazines" >> ((_magazines select 0) select 0) >> "BWA3_magazinesReloadTime"); +If (_reloadTime == 0) then {_reloadTime = 5;}; [ - 5, - _this, + _reloadTime, + [_vehicle, _turret, _magazines], { // load one mag - params ["_vehicle", "_turret", "_magazines"]; - - private _curMagazine = _magazines deleteAt 0; - _vehicle addMagazineTurret [_curMagazine, _turret]; - - If (_magazines isEqualTo []) exitWith {}; - - [_vehicle, _turret, _magazines] call BWA3_fnc_loadMagazines; + + (_this select 0) params ["_vehicle", "_turret", "_magazines"]; + + (_magazines select 0) params ["_curMagazine", "_targetAmount"]; + + private _curAmount = {_x isEqualTo _curMagazine} count ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)}); + + + private _modify = _targetAmount - _curAmount; + + test = [_curMagazine,(_targetAmount - _curAmount)]; + + If (_modify < 0) then { + // remove a mag + _vehicle removeMagazinesTurret [_curMagazine, _turret]; + for "_i" from 1 to (_curAmount - 1) do { + _vehicle addMagazineTurret [_curMagazine, _turret]; + }; + }; + If (_modify > 0) then { + // add a mag + _vehicle removeMagazinesTurret [_curMagazine, _turret]; + for "_i" from 1 to (_curAmount + 1) do { + _vehicle addMagazineTurret [_curMagazine, _turret]; + }; + }; + If (abs _modify <= 1) then { + _magazines deleteAt 0; + }; + + [_vehicle, _turret, _magazines] call BWA3_fnc_loadMagazines; }, { [localize "STR_BWA3_Comp_Ace_loadingStopped", false, 5] call ace_common_fnc_displayText; }, - "STR_BWA3_Comp_Ace_loadingMagazines", + "STR_BWA3_Comp_Ace_rearming", { - [ACE_player, _vehicle] call ace_common_fnc_canInteractWith - } + [ACE_player, _vehicle] call ace_common_fnc_canInteractWith + } ] call ace_common_fnc_progressBar; diff --git a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf index bc03b37..17d0592 100644 --- a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf +++ b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf @@ -27,7 +27,7 @@ _dialog setVariable ["BWA3_comp_ace_magazineDialog_hash", _hash]; private _MaxMagazineAmount = _vehicle getVariable ["BWA3_maxMagazineLoad", count (getArray((_this call CBA_fnc_getTurret) >> "magazines"))]; _dialog setVariable ["BWA3_comp_ace_magazineDialog_MaxMagazineAmount", _MaxMagazineAmount]; private _Weapons = _vehicle weaponsTurret _turret; -private _curMagazinesTurret = _vehicle magazinesTurret _turret; +private _curMagazinesTurret = ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)}); { private _possibleMagazines = getArray(configFile >> "CfgWeapons" >> _x >> "magazines"); @@ -114,29 +114,10 @@ _dialog displayAddEventHandler ["Unload", { private _turret = _dialog getVariable "BWA3_comp_ace_magazineDialog_turret"; private _hash = _dialog getVariable "BWA3_comp_ace_magazineDialog_hash"; - /* - for testing purpose - to be removed later - */ - if (missionNamespace getVariable ["BWA3_testing", true]) exitWith { - { - private _ammo = _x; - ([_hash, _ammo] call CBA_fnc_hashGet) params ["_amount"]; - _vehicle removeMagazinesTurret [_ammo, _turret]; - for "_i" from 1 to _amount do { - _vehicle addMagazineTurret [_ammo, _turret]; - }; - nil - } count ([_hash] call CBA_fnc_hashKeys); - }; - - private _curMagazinesTurret = _vehicle magazinesTurret _turret; - private _magazines = []; { private _curMagazine = _x; ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_amount"]; - - _amount = _amount - ({_x == _curMagazine} count _curMagazinesTurret); _magazines pushBack [_curMagazine, _amount]; nil; diff --git a/bwa3_comp_ace/stringtable.xml b/bwa3_comp_ace/stringtable.xml index 20920ff..6c09aae 100644 --- a/bwa3_comp_ace/stringtable.xml +++ b/bwa3_comp_ace/stringtable.xml @@ -30,8 +30,8 @@ Munitionsauswahl erlaubt - Loading Magazine... - Magazin wird verladen... + Rearming... + Aufmunitionieren... Loading Magazine stopped From 4770d562c5f3d38bbec02edcde243b6d7eec4ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 9 Dec 2017 01:47:51 +0100 Subject: [PATCH 11/15] second working version rearming time added --- bwa3_comp_ace/CfgMagazines.hpp | 13 +++++++++ bwa3_comp_ace/functions/fn_loadMagazines.sqf | 28 +++++++++---------- .../functions/fn_openMagazineDialog.sqf | 15 ++++++---- bwa3_comp_ace/stringtable.xml | 14 ++++++---- 4 files changed, 46 insertions(+), 24 deletions(-) diff --git a/bwa3_comp_ace/CfgMagazines.hpp b/bwa3_comp_ace/CfgMagazines.hpp index 4eed5b5..9349dc3 100644 --- a/bwa3_comp_ace/CfgMagazines.hpp +++ b/bwa3_comp_ace/CfgMagazines.hpp @@ -8,6 +8,19 @@ class CfgMagazines { ACE_isBelt = 1; }; + class 60Rnd_30mm_APFSDS_shells; + class BWA3_240Rnd_APFSDS_shells: 60Rnd_30mm_APFSDS_shells { + BWA3_MagazineRearmTime = 30; + }; + class 140Rnd_30mm_MP_shells; + class BWA3_160Rnd_HE_shells: 140Rnd_30mm_MP_shells { + BWA3_MagazineRearmTime = 30; + }; + + class BWA3_160Rnd_ABM_shells: BWA3_160Rnd_HE_shells { + BWA3_MagazineRearmTime = 30; + }; + class BWA3_DM31AT_Mag: CA_Magazine { ACE_explosives_Placeable = 1; useAction = 0; diff --git a/bwa3_comp_ace/functions/fn_loadMagazines.sqf b/bwa3_comp_ace/functions/fn_loadMagazines.sqf index f55aeb8..79e3cb3 100644 --- a/bwa3_comp_ace/functions/fn_loadMagazines.sqf +++ b/bwa3_comp_ace/functions/fn_loadMagazines.sqf @@ -1,41 +1,37 @@ - - params ["_vehicle", "_turret", ["_magazines", [], [[]]]]; If (_magazines isEqualTo []) exitWith {}; // magazine specific reloadTime -private _reloadTime = getNumber(configFile >> "CfgMagazines" >> ((_magazines select 0) select 0) >> "BWA3_magazinesReloadTime"); -If (_reloadTime == 0) then {_reloadTime = 5;}; +private _reloadTime = getNumber(configFile >> "CfgMagazines" >> ((_magazines select 0) select 0) >> "BWA3_MagazineRearmTime"); +If (_reloadTime == 0) then {_reloadTime = 7;}; + +private _curMagazine = (_magazines select 0) select 0; +private _addMagazine = ({(_x select 0) isEqualTo _curMagazine} count ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)})) < ((_magazines select 0) select 1); + + [ _reloadTime, [_vehicle, _turret, _magazines], { - // load one mag - (_this select 0) params ["_vehicle", "_turret", "_magazines"]; (_magazines select 0) params ["_curMagazine", "_targetAmount"]; - private _curAmount = {_x isEqualTo _curMagazine} count ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)}); - + private _curAmount = {(_x select 0) isEqualTo _curMagazine} count ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)}); private _modify = _targetAmount - _curAmount; - test = [_curMagazine,(_targetAmount - _curAmount)]; - If (_modify < 0) then { - // remove a mag _vehicle removeMagazinesTurret [_curMagazine, _turret]; for "_i" from 1 to (_curAmount - 1) do { _vehicle addMagazineTurret [_curMagazine, _turret]; }; }; If (_modify > 0) then { - // add a mag _vehicle removeMagazinesTurret [_curMagazine, _turret]; - for "_i" from 1 to (_curAmount + 1) do { + for "_i" from (_curAmount + 1) to 1 step -1 do { _vehicle addMagazineTurret [_curMagazine, _turret]; }; }; @@ -48,7 +44,11 @@ If (_reloadTime == 0) then {_reloadTime = 5;}; { [localize "STR_BWA3_Comp_Ace_loadingStopped", false, 5] call ace_common_fnc_displayText; }, - "STR_BWA3_Comp_Ace_rearming", + If (_addMagazine) then { + format[localize "STR_BWA3_Comp_Ace_addMagazine", getText(configFile >> "CfgMagazines" >> _curMagazine >> "displayNameShort")]; + } else { + format[localize "STR_BWA3_Comp_Ace_removeMagazine", getText(configFile >> "CfgMagazines" >> _curMagazine >> "displayNameShort")]; + }, { [ACE_player, _vehicle] call ace_common_fnc_canInteractWith } diff --git a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf index 17d0592..3083bac 100644 --- a/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf +++ b/bwa3_comp_ace/functions/fn_openMagazineDialog.sqf @@ -27,7 +27,7 @@ _dialog setVariable ["BWA3_comp_ace_magazineDialog_hash", _hash]; private _MaxMagazineAmount = _vehicle getVariable ["BWA3_maxMagazineLoad", count (getArray((_this call CBA_fnc_getTurret) >> "magazines"))]; _dialog setVariable ["BWA3_comp_ace_magazineDialog_MaxMagazineAmount", _MaxMagazineAmount]; private _Weapons = _vehicle weaponsTurret _turret; -private _curMagazinesTurret = ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)}); +private _curMagazinesTurret = (((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)})) apply {_x select 0}; { private _possibleMagazines = getArray(configFile >> "CfgWeapons" >> _x >> "magazines"); @@ -62,8 +62,6 @@ private _curMagazinesTurret = ((magazinesAllTurrets _vehicle) select {((_x selec private _hash = (ctrlParent _ctrl) getVariable "BWA3_comp_ace_magazineDialog_hash"; \ ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_curAmount", "_ctrlSlider", "_ctrlEdit"] - - { private _curMagazine = _x; ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_curMagazineAmount"]; @@ -119,9 +117,16 @@ _dialog displayAddEventHandler ["Unload", { private _curMagazine = _x; ([_hash, _curMagazine] call CBA_fnc_hashGet) params ["_amount"]; - _magazines pushBack [_curMagazine, _amount]; + // make sure to remove magazines before adding magazines + private _curAmount = {(_x select 0) isEqualTo _curMagazine} count ((magazinesAllTurrets _vehicle) select {((_x select 1) isEqualTo _turret) && ((_x select 2) > 0)}); + If (_curAmount < _amount) then { + _magazines pushBack [_curMagazine, _amount]; + }; + If (_curAmount > _amount) then { + _magazines = [[_curMagazine, _amount]] + _magazines; + }; nil; } count ([_hash] call CBA_fnc_hashKeys); - [_vehicle, _turret, _magazines] call BWA3_fnc_loadMagazines; + [BWA3_fnc_loadMagazines, [_vehicle, _turret, _magazines]] call CBA_fnc_execNextFrame; }]; diff --git a/bwa3_comp_ace/stringtable.xml b/bwa3_comp_ace/stringtable.xml index 6c09aae..eefb522 100644 --- a/bwa3_comp_ace/stringtable.xml +++ b/bwa3_comp_ace/stringtable.xml @@ -29,13 +29,17 @@ Magazine dialog allowed Munitionsauswahl erlaubt - - Rearming... - Aufmunitionieren... + + Loading %1... + Lade %1... + + + Removing %1... + Entlade %1... - Loading Magazine stopped - Magazine verladen abgebrochen + Rearming stopped + Aufmunitionieren abgebrochen From 5c059b961b3ddddc77dc2d68cc27d2535959e9e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 9 Dec 2017 11:29:21 +0100 Subject: [PATCH 12/15] including of a3 files --- bwa3_comp_ace/dialog.hpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp index 2c0b8aa..2be1707 100644 --- a/bwa3_comp_ace/dialog.hpp +++ b/bwa3_comp_ace/dialog.hpp @@ -1,10 +1,16 @@ -#include "\a3\ui_f\hpp\defineCommon.inc" -#include "\a3\ui_f\hpp\defineResincl.inc" +/* + copied macros from: "\a3\ui_f\hpp\defineCommon.inc" +*/ +#define GUI_GRID_WAbs ((safezoneW / safezoneH) min 1.2) +#define GUI_GRID_HAbs (GUI_GRID_WAbs / 1.2) +#define GUI_GRID_W (GUI_GRID_WAbs / 40) +#define GUI_GRID_H (GUI_GRID_HAbs / 25) +#define GUI_GRID_CENTER_X (safezoneX + (safezoneW - GUI_GRID_CENTER_WAbs)/2) +#define GUI_GRID_CENTER_Y (safezoneY + (safezoneH - GUI_GRID_CENTER_HAbs)/2) /*extern*/ class RscText; /*extern*/ class RscButtonMenu; - class BWA3_MagazineDialog { idd = IDD_BWA3_MAGAZINEDIALOG; name = "$STR_BWA3_Comp_Ace_MagazineDialog"; @@ -18,7 +24,7 @@ class BWA3_MagazineDialog { y = GUI_GRID_CENTER_Y; w = GUI_GRID_W * 24; h = GUI_GRID_H; - sizeEx = GUI_TEXT_SIZE_MEDIUM; + sizeEx = GUI_GRID_H; colorBackground[] = {"(profileNamespace getVariable ['GUI_BCG_RGB_R', 0.13])","(profileNamespace getVariable ['GUI_BCG_RGB_G', 0.54])","(profileNamespace getVariable ['GUI_BCG_RGB_B', 0.21])",1}; }; class BackgroundDialog: RscText { @@ -31,8 +37,7 @@ class BWA3_MagazineDialog { text = ""; }; class ButtonApply: RscButtonMenu { - idc = IDC_OK; - //action = QUOTE(call FUNC(onButtonApply)); + idc = 1; text = "$STR_ui_debug_but_apply"; x = GUI_GRID_CENTER_X + GUI_GRID_W * 24; y = GUI_GRID_CENTER_Y + GUI_GRID_H * 16; @@ -40,9 +45,8 @@ class BWA3_MagazineDialog { h = GUI_GRID_H; }; class ButtonClose: ButtonApply { - idc = IDC_CANCEL; + idc = 2; text = "$STR_disp_cancel"; - //action = QUOTE(call FUNC(onButtonClose)); x = GUI_GRID_CENTER_X + GUI_GRID_W * 16; }; class ControlsTable { @@ -52,8 +56,8 @@ class BWA3_MagazineDialog { w = GUI_GRID_W * 22; h = GUI_GRID_H * 13; - type = CT_CONTROLS_TABLE; - style = SL_TEXTURES; + type = 19; + style = 0x10; lineSpacing = 0.1 * GUI_GRID_H; rowHeight = 1.1 * GUI_GRID_H; @@ -73,11 +77,9 @@ class BWA3_MagazineDialog { autoScrollRewind = 1; autoScrollSpeed = 1; }; - class HScrollBar: ScrollBar { height = 0; }; - class HeaderTemplate { class HeaderBackground { controlBaseClassPath[] = {"RscText"}; @@ -92,7 +94,6 @@ class BWA3_MagazineDialog { controlOffsetY = 0; }; }; - class RowTemplate { class RowBackground { controlBaseClassPath[] = {"RscText"}; @@ -121,7 +122,6 @@ class BWA3_MagazineDialog { controlH = 1 * GUI_GRID_H; }; }; - }; }; }; From e71873ca115b3e74d305e1ee613cf23921286800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 9 Dec 2017 11:33:01 +0100 Subject: [PATCH 13/15] script_macros copied --- bwa3_comp_ace/script_component.h | 2 +- bwa3_comp_ace/script_macros.h | 82 ++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 bwa3_comp_ace/script_macros.h diff --git a/bwa3_comp_ace/script_component.h b/bwa3_comp_ace/script_component.h index e790911..e66ecd0 100644 --- a/bwa3_comp_ace/script_component.h +++ b/bwa3_comp_ace/script_component.h @@ -1,4 +1,4 @@ -#include "\bwa3_common\script_component.h" +#include "script_macros.h" #define ADDON BWA3_Comp_ACE diff --git a/bwa3_comp_ace/script_macros.h b/bwa3_comp_ace/script_macros.h new file mode 100644 index 0000000..ea2d676 --- /dev/null +++ b/bwa3_comp_ace/script_macros.h @@ -0,0 +1,82 @@ + +#define MACRO_ADDWEAPON(WEAPON,COUNT) class _xx_##WEAPON { \ + weapon = #WEAPON; \ + count = COUNT; \ +} + +#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ +} + +#define MACRO_ADDMAGAZINE(MAGAZINE,COUNT) class _xx_##MAGAZINE { \ + magazine = #MAGAZINE; \ + count = COUNT; \ +} + +#define MACRO_ADDBACKPACK(BACKPACK,COUNT) class _xx_##BACKPACK { \ + backpack = #BACKPACK; \ + count = COUNT; \ +} + +#define QUOTE(text) #text + +#define COMPILE_FILE(func) compile preprocessFileLineNumbers '\ADDON\func##.sqf' + +#ifdef DISABLE_FUNCTION_CACHE + #define PREP(func) BWA3_fnc_##func = compileFinal preprocessFileLineNumbers '\ADDON\functions\fn_##func.sqf' +#else + #define PREP(func) BWA3_fnc_##func = if (isNil {uiNamespace getVariable 'BWA3_fnc_##func'}) then {compileFinal preprocessFileLineNumbers '\ADDON\functions\fn_##func.sqf'} else {uiNamespace getVariable 'BWA3_fnc_##func'} +#endif + +#define FORMAT_1(message,arg1) format [message, arg1] +#define FORMAT_2(message,arg1,arg2) format [message, arg1, arg2] +#define FORMAT_3(message,arg1,arg2,arg3) format [message, arg1, arg2, arg3] +#define FORMAT_4(message,arg1,arg2,arg3,arg4) format [message, arg1, arg2, arg3, arg4] +#define FORMAT_5(message,arg1,arg2,arg3,arg4,arg5) format [message, arg1, arg2, arg3, arg4, arg5] +#define FORMAT_6(message,arg1,arg2,arg3,arg4,arg5,arg6) format [message, arg1, arg2, arg3, arg4, arg5, arg6] +#define FORMAT_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7) format [message, arg1, arg2, arg3, arg4, arg5, arg6, arg7] +#define FORMAT_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) format [message, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8] + +#define BWA3_LOG(level,message) diag_log text BWA3_LOGFORMAT(level,message) +#define BWA3_LOGFORMAT(level,message) FORMAT_2(QUOTE([BWA3] %1: %2),level,message) + +#define BWA3_LOGERROR(message) BWA3_LOG("ERROR",message) +#define BWA3_LOGERROR_1(message,arg1) BWA3_LOGERROR(FORMAT_1(message,arg1)) +#define BWA3_LOGERROR_2(message,arg1,arg2) BWA3_LOGERROR(FORMAT_2(message,arg1,arg2)) +#define BWA3_LOGERROR_3(message,arg1,arg2,arg3) BWA3_LOGERROR(FORMAT_3(message,arg1,arg2,arg3)) +#define BWA3_LOGERROR_4(message,arg1,arg2,arg3,arg4) BWA3_LOGERROR(FORMAT_4(message,arg1,arg2,arg3,arg4)) +#define BWA3_LOGERROR_5(message,arg1,arg2,arg3,arg4,arg5) BWA3_LOGERROR(FORMAT_5(message,arg1,arg2,arg3,arg4,arg5)) +#define BWA3_LOGERROR_6(message,arg1,arg2,arg3,arg4,arg5,arg6) BWA3_LOGERROR(FORMAT_6(message,arg1,arg2,arg3,arg4,arg5,arg6)) +#define BWA3_LOGERROR_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7) BWA3_LOGERROR(FORMAT_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7)) +#define BWA3_LOGERROR_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) BWA3_LOGERROR(FORMAT_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)) + +#define BWA3_LOGWARNING(message) BWA3_LOG("WARNING",message) +#define BWA3_LOGWARNING_1(message,arg1) BWA3_LOGWARNING(FORMAT_1(message,arg1)) +#define BWA3_LOGWARNING_2(message,arg1,arg2) BWA3_LOGWARNING(FORMAT_2(message,arg1,arg2)) +#define BWA3_LOGWARNING_3(message,arg1,arg2,arg3) BWA3_LOGWARNING(FORMAT_3(message,arg1,arg2,arg3)) +#define BWA3_LOGWARNING_4(message,arg1,arg2,arg3,arg4) BWA3_LOGWARNING(FORMAT_4(message,arg1,arg2,arg3,arg4)) +#define BWA3_LOGWARNING_5(message,arg1,arg2,arg3,arg4,arg5) BWA3_LOGWARNING(FORMAT_5(message,arg1,arg2,arg3,arg4,arg5)) +#define BWA3_LOGWARNING_6(message,arg1,arg2,arg3,arg4,arg5,arg6) BWA3_LOGWARNING(FORMAT_6(message,arg1,arg2,arg3,arg4,arg5,arg6)) +#define BWA3_LOGWARNING_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7) BWA3_LOGWARNING(FORMAT_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7)) +#define BWA3_LOGWARNING_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) BWA3_LOGWARNING(FORMAT_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)) + +#define BWA3_LOGINFO(message) BWA3_LOG("INFO",message) +#define BWA3_LOGINFO_1(message,arg1) BWA3_LOGINFO(FORMAT_1(message,arg1)) +#define BWA3_LOGINFO_2(message,arg1,arg2) BWA3_LOGINFO(FORMAT_2(message,arg1,arg2)) +#define BWA3_LOGINFO_3(message,arg1,arg2,arg3) BWA3_LOGINFO(FORMAT_3(message,arg1,arg2,arg3)) +#define BWA3_LOGINFO_4(message,arg1,arg2,arg3,arg4) BWA3_LOGINFO(FORMAT_4(message,arg1,arg2,arg3,arg4)) +#define BWA3_LOGINFO_5(message,arg1,arg2,arg3,arg4,arg5) BWA3_LOGINFO(FORMAT_5(message,arg1,arg2,arg3,arg4,arg5)) +#define BWA3_LOGINFO_6(message,arg1,arg2,arg3,arg4,arg5,arg6) BWA3_LOGINFO(FORMAT_6(message,arg1,arg2,arg3,arg4,arg5,arg6)) +#define BWA3_LOGINFO_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7) BWA3_LOGINFO(FORMAT_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7)) +#define BWA3_LOGINFO_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) BWA3_LOGINFO(FORMAT_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)) + +#define BWA3_LOGDEBUG(message) BWA3_LOG("DEBUG",message) +#define BWA3_LOGDEBUG_1(message,arg1) BWA3_LOGDEBUG(FORMAT_1(message,arg1)) +#define BWA3_LOGDEBUG_2(message,arg1,arg2) BWA3_LOGDEBUG(FORMAT_2(message,arg1,arg2)) +#define BWA3_LOGDEBUG_3(message,arg1,arg2,arg3) BWA3_LOGDEBUG(FORMAT_3(message,arg1,arg2,arg3)) +#define BWA3_LOGDEBUG_4(message,arg1,arg2,arg3,arg4) BWA3_LOGDEBUG(FORMAT_4(message,arg1,arg2,arg3,arg4)) +#define BWA3_LOGDEBUG_5(message,arg1,arg2,arg3,arg4,arg5) BWA3_LOGDEBUG(FORMAT_5(message,arg1,arg2,arg3,arg4,arg5)) +#define BWA3_LOGDEBUG_6(message,arg1,arg2,arg3,arg4,arg5,arg6) BWA3_LOGDEBUG(FORMAT_6(message,arg1,arg2,arg3,arg4,arg5,arg6)) +#define BWA3_LOGDEBUG_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7) BWA3_LOGDEBUG(FORMAT_7(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7)) +#define BWA3_LOGDEBUG_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) BWA3_LOGDEBUG(FORMAT_8(message,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)) From a846ea4740dbb4fad995921dfc48f9af9e723eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 9 Dec 2017 11:41:44 +0100 Subject: [PATCH 14/15] scrollbar --- bwa3_comp_ace/dialog.hpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp index 2be1707..de13cd8 100644 --- a/bwa3_comp_ace/dialog.hpp +++ b/bwa3_comp_ace/dialog.hpp @@ -70,15 +70,25 @@ class BWA3_MagazineDialog { selectedRowColorTo[] = {0.7, 0.85, 1, 0.5}; selectedRowAnimLength = 1.2; - class VScrollBar: ScrollBar { + class VScrollBar { + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,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 = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + shadow = 0; + scrollSpeed = 0.06; width = GUI_GRID_W * 0.8; autoScrollEnabled = 0; autoScrollDelay = 1; autoScrollRewind = 1; autoScrollSpeed = 1; }; - class HScrollBar: ScrollBar { + class HScrollBar: VScrollBar { height = 0; + width = 0; }; class HeaderTemplate { class HeaderBackground { From f06700f402ad27cf0c1d92d54598808f51c70a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 9 Dec 2017 12:24:13 +0100 Subject: [PATCH 15/15] macro fix --- bwa3_comp_ace/dialog.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bwa3_comp_ace/dialog.hpp b/bwa3_comp_ace/dialog.hpp index de13cd8..eef1924 100644 --- a/bwa3_comp_ace/dialog.hpp +++ b/bwa3_comp_ace/dialog.hpp @@ -1,12 +1,12 @@ /* copied macros from: "\a3\ui_f\hpp\defineCommon.inc" */ -#define GUI_GRID_WAbs ((safezoneW / safezoneH) min 1.2) -#define GUI_GRID_HAbs (GUI_GRID_WAbs / 1.2) -#define GUI_GRID_W (GUI_GRID_WAbs / 40) -#define GUI_GRID_H (GUI_GRID_HAbs / 25) -#define GUI_GRID_CENTER_X (safezoneX + (safezoneW - GUI_GRID_CENTER_WAbs)/2) -#define GUI_GRID_CENTER_Y (safezoneY + (safezoneH - GUI_GRID_CENTER_HAbs)/2) +#define GUI_GRID_WAbs ((safezoneW / safezoneH) min 1.2) +#define GUI_GRID_HAbs (GUI_GRID_WAbs / 1.2) +#define GUI_GRID_W (GUI_GRID_WAbs / 40) +#define GUI_GRID_H (GUI_GRID_HAbs / 25) +#define GUI_GRID_CENTER_X (safezoneX + (safezoneW - GUI_GRID_WAbs)/2) +#define GUI_GRID_CENTER_Y (safezoneY + (safezoneH - GUI_GRID_HAbs)/2) /*extern*/ class RscText; /*extern*/ class RscButtonMenu;