From 1c2ebd04526d8d69e06c031af3ee27157e026d63 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 09:39:01 +0100 Subject: [PATCH 01/31] add ace arsenal button to main menu --- addons/arsenal/RscDisplayMain.hpp | 36 +++ addons/arsenal/config.cpp | 3 +- .../missions/Arsenal.VR/description.ext | 26 +++ .../arsenal/missions/Arsenal.VR/fn_closed.sqf | 33 +++ .../missions/Arsenal.VR/fn_createTarget.sqf | 54 +++++ .../missions/Arsenal.VR/fn_onPauseScript.sqf | 11 + .../arsenal/missions/Arsenal.VR/fn_opened.sqf | 15 ++ addons/arsenal/missions/Arsenal.VR/init.sqf | 215 ++++++++++++++++++ .../arsenal/missions/Arsenal.VR/mission.sqm | 163 +++++++++++++ addons/arsenal/stringtable.xml | 8 + 10 files changed, 563 insertions(+), 1 deletion(-) create mode 100644 addons/arsenal/RscDisplayMain.hpp create mode 100644 addons/arsenal/missions/Arsenal.VR/description.ext create mode 100644 addons/arsenal/missions/Arsenal.VR/fn_closed.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/fn_opened.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/init.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/mission.sqm diff --git a/addons/arsenal/RscDisplayMain.hpp b/addons/arsenal/RscDisplayMain.hpp new file mode 100644 index 0000000000..3ea05b9e3f --- /dev/null +++ b/addons/arsenal/RscDisplayMain.hpp @@ -0,0 +1,36 @@ +class RscStandardDisplay; +class RscDisplayMain: RscStandardDisplay { + class controls { + class GroupSingleplayer: RscControlsGroupNoScrollbars { + class Controls; + }; + class GroupTutorials: GroupSingleplayer { + h = "(6 * 1.5) * (pixelH * pixelGrid * 2)"; + + class Controls: Controls { + class Bootcamp; + class VRTraining; + class Arsenal; + class GVAR(mission): Arsenal { + idc = -1; + text = CSTRING(Mission); + tooltip = CSTRING(Mission_tooltip); + y = "(3 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; + onbuttonclick = QUOTE(playMission [ARR_2('','PATHTOF(missions\Arsenal.VR)')]); + animTextureNormal = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; //@todo custom icons + animTextureDisabled = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; + animTextureOver = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenuHover_ca.paa"; + animTextureFocused = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenuHover_ca.paa"; + animTexturePressed = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; + animTextureDefault = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; + }; + class FieldManual: Bootcamp { + y = "(4 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; + }; + class CommunityGuides: Bootcamp { + y = "(5 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; + }; + }; + }; + }; +}; diff --git a/addons/arsenal/config.cpp b/addons/arsenal/config.cpp index dcf101e172..0c3000ab3c 100644 --- a/addons/arsenal/config.cpp +++ b/addons/arsenal/config.cpp @@ -37,4 +37,5 @@ class Cfg3DEN { }; #include "ui\RscAttributes.hpp" -#include "CfgEventHandlers.hpp" \ No newline at end of file +#include "CfgEventHandlers.hpp" +#include "RscDisplayMain.hpp" diff --git a/addons/arsenal/missions/Arsenal.VR/description.ext b/addons/arsenal/missions/Arsenal.VR/description.ext new file mode 100644 index 0000000000..9d80b70fc4 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/description.ext @@ -0,0 +1,26 @@ +dev = "Karel"; +author = $STR_A3_Bohemia_Interactive; + +onLoadName = $STR_A3_Arsenal; +overviewText = $STR_A3_Arsenal_overviewText; +overviewPicture = "\A3\Ui_f\data\Logos\arsenal_1024_ca.paa"; + +briefing = 0; +debriefing = 0; + +doneKeys[] = {"BIS_Arsenal.Map_VR_done"}; +onPauseScript[] = {"arsenal_fnc_onPauseScript"}; + +class CfgFunctions +{ + class Arsenal + { + class Misc + { + class createTarget {file = "fn_createTarget.sqf";}; + class onPauseScript {file = "fn_onPauseScript.sqf";}; + class opened {file = "fn_opened.sqf";}; + class closed {file = "fn_closed.sqf";}; + }; + }; +}; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/fn_closed.sqf b/addons/arsenal/missions/Arsenal.VR/fn_closed.sqf new file mode 100644 index 0000000000..464149a348 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/fn_closed.sqf @@ -0,0 +1,33 @@ +if !(_this select 1) then { + { + { + if (_x iskindof "VR_CoverObject_base_F") then { + [_x,0] call bis_fnc_setheight; + } else { + _x enablesimulation true; + _x hideobject false; + }; + } foreach ([_x] + crew _x); + } foreach (allmissionobjects "All"); + { + _unit = _x; + removevest _unit; + removebackpack _unit; + removeheadgear _unit; + removegoggles _unit; + removeallweapons _unit; + _unit addvest vest player; + _unit addbackpack backpack player; + _unit addheadgear headgear player; + _unit addgoggles goggles player; + _unit addweapon primaryweapon player; + _unit addweapon secondaryweapon player; + _unit addweapon handgunweapon player; + {_unit addprimaryweaponitem _x;} foreach (primaryweaponitems player); + {_unit addsecondaryweaponitem _x;} foreach (secondaryweaponitems player); + {_unit addhandgunitem _x;} foreach (handgunitems player); + } foreach (entities "B_Soldier_VR_F" + entities "O_Soldier_VR_F" + entities "I_Soldier_VR_F"); + + ("RscVRMeta" call bis_fnc_rscLayer) cutrsc ["RscVRMeta","plain"]; +}; +player setvariable ["BIS_drawLines",true]; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf new file mode 100644 index 0000000000..6eb7070190 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf @@ -0,0 +1,54 @@ +private ["_pos","_side","_obj","_grp","_type","_target"]; +_pos = [_this,0,[],[[],objnull]] call bis_fnc_param; +_type = [_this,1,"B_Soldier_VR_F",["",objnull]] call bis_fnc_param; + +_obj = _pos; +_grp = grpnull; +_var = ""; + +if (typename _obj == typename objnull) then { + _grp = group _obj; + _type = typeof _obj; + _pos = _obj getvariable ["pos",position objnull]; + _var = _obj getvariable ["var",""]; + [_obj,true] call bis_fnc_VREffectKilled; +} else { + _grp = creategroup east; +}; +if (_var == "") then {_var = "t" + str round random 999999;}; + +_target = _grp createunit [_type,[10,10,0],[],0,"none"]; +if !(isnull (missionnamespace getvariable ["BIS_fnc_arsenal_target",objnull])) then {_target hideobject true}; +_target setpos _pos; +_target setdir ([_pos,player] call bis_fnc_dirto); +_target dowatch position player; +_target addrating -10e10; +_target setunitpos "up"; +_target setbehaviour "careless"; +_target setcombatmode "blue"; +_target setspeedmode "limited"; +_target disableai "target"; +_target disableai "autotarget"; +_target allowfleeing 0; +_target setspeaker "base"; +_target spawn {_this setspeaker "base";}; +player reveal [_target,4]; + +_target addvest vest player; +_target addbackpack backpack player; +_target addheadgear headgear player; +_target addgoggles goggles player; +_target addweapon primaryweapon player; +_target addweapon secondaryweapon player; +_target addweapon handgunweapon player; + +_target setvehiclevarname _var; +missionnamespace setvariable [_var,_target]; + +_target switchmove "amovpercmstpslowwrfldnon"; +_target setvariable ["pos",_pos]; +_target setvariable ["var",_var]; +_target addeventhandler ["killed",{_this spawn arsenal_fnc_createTarget;}]; +[_target] call bis_fnc_VRHitpart; + +_target \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf b/addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf new file mode 100644 index 0000000000..52b7d71e7d --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf @@ -0,0 +1,11 @@ +disableserialization; +_display = _this select 0; + +_ctrlButtonAbort = _display displayctrl 104; +_ctrlButtonAbort ctrlsettext localize (["STR_A3_Arsenal","STR_A3_Garage"] select (missionnamespace getvariable ["bis_typeLast",0])); +_ctrlButtonAbort ctrlseteventhandler [ + "buttonclick", + "(ctrlparent (_this select 0)) closedisplay 2; ['Open',true] spawn (uinamespace getvariable (['bis_fnc_arsenal','bis_fnc_garage'] select bis_typeLast)); true" +]; + +true \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/fn_opened.sqf b/addons/arsenal/missions/Arsenal.VR/fn_opened.sqf new file mode 100644 index 0000000000..0bc5f67366 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/fn_opened.sqf @@ -0,0 +1,15 @@ +_player = missionnamespace getvariable ["BIS_fnc_arsenal_center",player]; +{ + { + if (_x iskindof "VR_CoverObject_base_F") then { + [_x,-10] call bis_fnc_setheight; //--- Move cover objects below ground instead, they have unexplainable problem with hideObject + } else { + _x enablesimulation false; + _x hideobject true; + }; + } foreach ([_x] + crew _x - [_player]); +} foreach (allmissionobjects "All" - [_player]); + +("RscVRMeta" call bis_fnc_rscLayer) cuttext ["","plain"]; +player setvariable ["BIS_drawLines",false]; +player setfatigue 0; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/init.sqf b/addons/arsenal/missions/Arsenal.VR/init.sqf new file mode 100644 index 0000000000..61e9055d18 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/init.sqf @@ -0,0 +1,215 @@ +"init" call bis_fnc_startloadingscreen; +//enableenvironment false; +enablesaving [false,false]; +player allowdamage false; +activateKey format ["BIS_%1.%2_done", missionName, worldName]; + +cuttext ["","black in",1e10]; + +waituntil {!isnull (finddisplay 46)}; +player switchmove "amovpercmstpslowwrfldnon"; +player call bis_fnc_traceBullets; + +//--- Static targets in various distance +{ + _pos = [player,_x,180 + _foreachindex] call bis_fnc_relpos; + [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; +} foreach [10,20,30,40,50,100,500,1000,2000]; + +//--- Target line +_pos = [player,20,90] call bis_fnc_relpos; +for "_i" from 0 to 5 do { + _iPos = [(_pos select 0),(_pos select 1) - 3 + _i,0]; + [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; +}; + +//--- Target cluster +_pos = [player,20,-90] call bis_fnc_relpos; +for "_i" from 0 to 8 do { + _index = floor (_i / 3); + _iPos = [ + (_pos select 0) + _index * 1.5, + (_pos select 1) + 1.5 + (_i % 3), + 0 + ]; + _target = [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; + + _target switchmove (["aidlpercmstpslowwrfldnon","aidlpknlmstpslowwrfldnon_ai","aidlppnemstpsraswrfldnon_ai"] select _index); + _target setunitpos (["up","middle","down"] select _index); +}; + +//--- Target patrol +_grp = creategroup east; +{ + _wp = _grp addwaypoint [[player,10,_x] call bis_fnc_relpos,0]; + if (_foreachindex == 4) then {_wp setwaypointtype "cycle";}; +} foreach [0,90,180,270,0]; + +_pos = [player,10,0] call bis_fnc_relpos; +for "_i" from 0 to 1 do { + _target = [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; + [_target] join _grp; + _target stop false; + _target enableai "move"; + _target setspeedmode "limited"; +}; + +//--- Armored vehicles +_vehicles = []; +if (isclass (configfile >> "cfgvehicles" >> "Land_VR_Target_MRAP_01_F")) then { + _step = 15; + _posCenter = [position player select 0,(position player select 1) + 30,0]; + { + _row = _foreachindex; + _rowCount = (count _x - 1) * 0.5; + { + _pos = [ + (_posCenter select 0) + (-_rowCount + _foreachindex) * _step, + (_posCenter select 1) + _row * _step, + 0 + ]; + _veh = createvehicle [_x,_pos,[],0,"none"]; + _veh setpos _pos; + _veh setdir 180; + _veh setvelocity [0,0,-1]; + [_veh] call bis_fnc_VRHitpart; + _marker = _veh call bis_fnc_boundingboxmarker; + _marker setmarkercolor "colororange"; + _vehicles pushback _veh; + } foreach _x; + } foreach [ + [ + "Land_VR_Target_MRAP_01_F", + "Land_VR_Target_APC_Wheeled_01_F", + "Land_VR_Target_MBT_01_cannon_F" + ], + [ + "Land_VR_Target_MRAP_01_F", + "Land_VR_Target_APC_Wheeled_01_F", + "Land_VR_Target_MBT_01_cannon_F" + ] + ]; +}; +_vehicles spawn { + waituntil { + _allDisabled = true; + { + _hitalive = _x getvariable ["bis_fnc_VRHitParts_hitalive",[]]; + _allDisabled = _allDisabled && ({!_x} count _hitalive >= 2); + sleep 0.1; + } foreach _this; + _allDisabled + }; + setstatvalue ["MarkMassVirtualDestruction",1]; +}; + +//--- Cover objects +_coverObjects = [ + "Land_VR_CoverObject_01_kneel_F", + "Land_VR_CoverObject_01_kneelHigh_F", + "Land_VR_CoverObject_01_kneelLow_F", + "Land_VR_CoverObject_01_stand_F", + "Land_VR_CoverObject_01_standHigh_F" +]; +_dis = 3; +for "_i" from 5 to 11 do { + _dir = _i * 45; + _pos = [position player,(abs sin _dir + abs cos _dir) * _dis,_dir] call bis_fnc_relpos; + _block = createvehicle [_coverObjects select (_i % count _coverObjects),_pos,[],0,"none"]; + _block setpos _pos; +}; + +//--- Starting point +_square = createvehicle ["VR_Area_01_square_1x1_grey_F",position player,[],0,"none"]; +_square setpos position player; +_marker = createmarker ["bis_start",position player]; +_marker setmarkertype "mil_start"; + +//--- Garage position +_centerPos = [player,[16,16,0] vectorDistance [0,0,0],135] call bis_fnc_relpos; +_squareGarage = createvehicle ["VR_Area_01_square_4x4_grey_F",_centerPos,[],0,"none"]; +_squareGarage setpos _centerPos; +BIS_fnc_garage_center = createvehicle ["Land_HelipadEmpty_F",_centerPos,[],0,"none"]; +BIS_fnc_garage_center setpos _centerPos; +BIS_fnc_garage_center enablesimulation false; + +player addeventhandler [ + "animchanged", + { + _unit = _this select 0; + _anim = _this select 1; + _animSplit = [_anim,"_"] call bis_fnc_splitstring; + if ("salute" in _animSplit) then { + { + _x playaction "salute"; + } foreach ((position _unit nearobjects ["man",10]) - [player]); + }; + } +]; + +disableserialization; +"init" call bis_fnc_endloadingscreen; +bis_typeLast = 0; + +[ + missionnamespace, + "arsenalOpened", + { + _this call arsenal_fnc_opened; + bis_typeLast = 0; + } +] call bis_fnc_addscriptedeventhandler; +[ + missionnamespace, + "arsenalClosed", + { + _this call arsenal_fnc_closed; + } +] call bis_fnc_addscriptedeventhandler; +[ + missionnamespace, + "garageOpened", + { + _this call arsenal_fnc_opened; + bis_typeLast = 1; + } +] call bis_fnc_addscriptedeventhandler; +[ + missionnamespace, + "garageClosed", + { + _this call arsenal_fnc_closed; + } +] call bis_fnc_addscriptedeventhandler; + + + +//--- Open Arsenal +bis_fnc_arsenal_fullArsenal = true; +bis_fnc_arsenal_fullGarage = true; +if ((uinamespace getvariable ["bis_fnc_arsenal_typeDefault",0]) > 0) then { + ["Open",true] spawn bis_fnc_garage; +} else { + ["Open",true] spawn bis_fnc_arsenal; +}; +uinamespace setvariable ["bis_fnc_arsenal_typeDefault",nil]; +["#(argb,8,8,3)color(0,0,0,1)",false,nil,0.1,[0,0.5]] spawn bis_fnc_textTiles; + +//--- Target markers +[] spawn { + _targets = []; + { + _targets pushback vehiclevarname _x; + _var = vehiclevarname _x; + _marker = createmarker [_var,position _x]; + _marker setmarkertype "mil_dot"; + _marker setmarkercolor "colororange"; + } foreach (allmissionobjects "man") - [player]; + while {true} do { + { + _t = missionnamespace getvariable _x; + (vehiclevarname _t) setmarkerpos position _t; + } foreach _targets; + sleep 0.1; + }; +}; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/mission.sqm b/addons/arsenal/missions/Arsenal.VR/mission.sqm new file mode 100644 index 0000000000..c43d901f6e --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/mission.sqm @@ -0,0 +1,163 @@ +version=12; +class Mission +{ + addOns[]= + { + "A3_Map_VR", + "A3_Characters_F_BLUFOR", + "a3_characters_f_beta", + "a3_characters_f" + }; + addOnsAuto[]= + { + "A3_Characters_F_BLUFOR", + "a3_characters_f", + "A3_Map_VR" + }; + randomSeed=5486937; + class Intel + { + briefingName="@STR_A3_Arsenal"; + startWeather=0; + startWind=0.099999994; + startWaves=0.099999994; + forecastWeather=0; + forecastWind=0.099999994; + forecastWaves=0.099999994; + forecastLightnings=0.099999994; + year=2035; + month=2; + day=24; + hour=12; + minute=0; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; + class Groups + { + items=1; + class Item0 + { + side="CIV"; + class Vehicles + { + items=1; + class Item0 + { + position[]={4256,5,4192}; + azimut=180; + id=0; + side="CIV"; + vehicle="C_man_1"; + player="PLAYER COMMANDER"; + leader=1; + skill=0.60000002; + }; + }; + }; + }; + class Sensors + { + items=1; + class Item0 + { + position[]={4271.2827,5,4170.251}; + a=0; + b=0; + interruptable=1; + age="UNKNOWN"; + expCond="cheat1"; + expActiv="endmission ""end1"""; + class Effects + { + }; + }; + }; +}; +class Intro +{ + addOns[]= + { + "A3_Map_VR" + }; + addOnsAuto[]= + { + "A3_Map_VR" + }; + randomSeed=12455686; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0; + startWind=0.1; + startWaves=0.1; + forecastWeather=0; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + day=28; + hour=13; + minute=37; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; +}; +class OutroWin +{ + addOns[]= + { + "A3_Map_VR" + }; + addOnsAuto[]= + { + "A3_Map_VR" + }; + randomSeed=9312504; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0; + startWind=0.1; + startWaves=0.1; + forecastWeather=0; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + day=28; + hour=13; + minute=37; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; +}; +class OutroLoose +{ + addOns[]= + { + "A3_Map_VR" + }; + addOnsAuto[]= + { + "A3_Map_VR" + }; + randomSeed=15192082; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0; + startWind=0.1; + startWaves=0.1; + forecastWeather=0; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + day=28; + hour=13; + minute=37; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; +}; diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 0c28240b9b..e220d935b7 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -433,5 +433,13 @@ Impossibile aprire l'arsenale ACE ACE 武器庫を開けません + + ACE Virtual Arsenal + ACE Virtuelles Arsenal + + + View and try out different weapons, equipment and vehicles. + Sieh dir verschiedene Waffen, Ausrüstung und Fahrzeuge an und probiere sie aus. + From 0a4c464af8fcc92bec974247d3a5f0aecda91dd4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 10:19:30 +0100 Subject: [PATCH 02/31] logos, begin to acify, enable debug console --- addons/arsenal/RscDisplayMain.hpp | 12 +++--- .../data/buttonMissionMainMenuHover_ca.paa | Bin 0 -> 5586 bytes .../arsenal/data/buttonMissionMainMenu_ca.paa | Bin 0 -> 5586 bytes .../missions/Arsenal.VR/description.ext | 36 +++++++++--------- .../missions/Arsenal.VR/fn_onPauseScript.sqf | 21 ++++++---- addons/arsenal/missions/Arsenal.VR/logo.paa | Bin 0 -> 22688 bytes .../missions/Arsenal.VR/script_component.hpp | 1 + addons/arsenal/stringtable.xml | 4 ++ 8 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 addons/arsenal/data/buttonMissionMainMenuHover_ca.paa create mode 100644 addons/arsenal/data/buttonMissionMainMenu_ca.paa create mode 100644 addons/arsenal/missions/Arsenal.VR/logo.paa create mode 100644 addons/arsenal/missions/Arsenal.VR/script_component.hpp diff --git a/addons/arsenal/RscDisplayMain.hpp b/addons/arsenal/RscDisplayMain.hpp index 3ea05b9e3f..9e5c61d6e2 100644 --- a/addons/arsenal/RscDisplayMain.hpp +++ b/addons/arsenal/RscDisplayMain.hpp @@ -17,12 +17,12 @@ class RscDisplayMain: RscStandardDisplay { tooltip = CSTRING(Mission_tooltip); y = "(3 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; onbuttonclick = QUOTE(playMission [ARR_2('','PATHTOF(missions\Arsenal.VR)')]); - animTextureNormal = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; //@todo custom icons - animTextureDisabled = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; - animTextureOver = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenuHover_ca.paa"; - animTextureFocused = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenuHover_ca.paa"; - animTexturePressed = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; - animTextureDefault = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; + animTextureNormal = QPATHTOF(data\buttonMissionMainMenu_ca.paa) + animTextureDisabled = QPATHTOF(data\buttonMissionMainMenu_ca.paa) + animTextureOver = QPATHTOF(data\buttonMissionMainMenuHover_ca.paa) + animTextureFocused = QPATHTOF(data\buttonMissionMainMenuHover_ca.paa) + animTexturePressed = QPATHTOF(data\buttonMissionMainMenu_ca.paa) + animTextureDefault = QPATHTOF(data\buttonMissionMainMenu_ca.paa) }; class FieldManual: Bootcamp { y = "(4 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; diff --git a/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa b/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..e757ecc7e95b1ae68662e006bfee80bc1c8efa2d GIT binary patch literal 5586 zcmZSm@9ypx;_M#g$il$D@bl+S2tUHn7sUS$1R(ifH#dI=Ain^J%LN!1>O>eAT19~z zl0gH50t15p&|rv8kOd&tD1S6OAn9N;v*SRi`5O==l*S z9}y9OkO%TZL%*W&>k)iK4hGZEPz1lP7^s60!H2L$`M^*C0{Yj7fjtgjdqK8C@?9ue zdSF6H58&vB$A9g61_oAE)}yfayAQ6-8{qN%ItrM)LPAAh^8f!YGh}3B9OZTn}_ z6bEQJz?L3nU1MMfibdq-ec!?H&kBoQ5I;Po-~fydN*}tcqE})3|NrL#MHrY7dNT#4W>5@2Fg zg*O}M-|QvTe}vS>Ja+(=O9=llFr>#6!1?!p;gQ(L2LNHg#&;<%ca1`AhnB(xO8N1)yLbQh?&alDez9m+i$%vs0zf{WZ*$ow zG4}Cc_T@rhNk?|^x2FOeW&uue2t7Y_&;V4NxO1drsfVb5%m+~ob`T|t3P?RfHTusF zrlXxu=1I?hSKTHttwJ2w6-DV_fXfKa5x;%o{8jGX_9?P$TV#*UFS)J2p!B)l0mxxM zXuaS+k`F6FJ}^6mUx>e_nx=Wi$7>khm#|*>e)cL61D))Z7Jy|r;d(OOgN=7Ly-Qo& z@?m3kEX~ie?;B~1ze(|B9M4QQID6{8sn>~X*gRsoImF%kk@n%{$7k)YeCVtfrpejE z_(tnVJj3mi9{^67vyAU><16)-`ZEOvU5|CV1At_>tQNSyZX1|0!0rgpCV5o!So;Fl zJQhDAJhhPa{?>$ zF2lSlEj7rx)4HD$Ph*E+W;~==re>umrg*|L2T=sshu^hFhmzjseV*s@`MtmQpWl4Q zxLA9ywXU_UbsfIfwMH(E9GUspu#rz>$`C?4&p#5NpUfO5(IR{#dSvF<5fV+ne-b@; z#E1!2_}vBn74<S}<&eMP%Sl5kMV%eJG9G2$>@@Lz zTM%2Kb@nrI`=ModB^!}sVOGgFLNI%4)f=hUg zKn;8(dDBRN7$H1Ml;Svhmhd5gb#@|WHo;yD&36{fs9SYcC8A2uFp;9Btk z&w89=M#iY~E*XrZHWP~twixm(%3dkaXr6g+i@`QRp0uYVp=R5HsXU=c5_->Eg3)50 zU2OF9q{OoXjR&D><)O|;54&gR?3upAf9c!s zQ=DA($ayCR+pL3SiM-&>AL9#p4m*@xC$?#v++lby`K){Xd6VAr zFL~s~ZK|3Q`$?V{p}2ZjY{lp~rcRoC7SHxDdPLb2an#o2ajWnN&e@lHjXKD3hgqJ^ z%S7$;>sCZy-?oHQTTgjR8}AdV3IvlERotCTG;4s1pV6q@$rIMif&m?;TFXRH5~cYV zRlwXCqgl}lqkP+7X|P4GQr+*e+{v;8oj5z{)6-h}io-fiE2A!K=6_;&oi{4&pq8yG z%x{n$M?VQHK864Ah%AF-(TMb;P%F;n+0)XTd{&?-wjEH>>|M(BJi6I)DL-dPYB z^t!;lf5X7dkdtS3n5S0EOA?4Z0?=gkMzM)aftkc?G35`f7^!o_h&NtBc)2IQ9O}xk zWb(NdNt(OZO!8_p;b`)h;$%EnU|aI(rB)=H(k?cYiOo8D&tqC=((4lr=>+O~-r(6S zOW-&2CyJ)&gr0p58$2*s)WoqCUbH%?FZewIVL7LyrjE$hJ12Hk!Kr_q2@IJB93_a^ z@BMaQonIh^T~N8Tg?TzlBC59%H08f!gvqAV@32>YxIpJc87EXrKR*PL1uKib7g+se ze8VGJKzpfAmGCDv(r2xxFM|l#l^ynHG&)BDD$hAzwbTw0*=6JQ$R(+k<(CLa(9$p} z6MV@P(bg!M*fW@Zt5CH&m5SF@qPF))srPu8SE_MK*P&aw#^YEHkuNP4o7oi4tFp7_ z+%w|cGw@t)Iz9}ud*yNSi|Y9Tt_klh@jxgI#~h_8dm#FzL)A73P{P_7l*>+?KY@ zV#s`b<>Eh#p2bEB8vUczeCQLscX4Wq_U6|;|r$MpK<3=qQoqiAVw} z92Pm_3zplTBA_P@#@zCOjBspwlWMC$1(IJ{%Icyi7UPHs<%M^4&Kn({BymNfM4TQ$&4=9N>?NUuhd?nAGadP>Tu7Dck3OWpk+qeKRfkM1mZJlnUmWe_Plx` zdI4Gq3+M-fMZ|d zw7`NQ_Qmb^=RSHB@#~E>1WhbmR7_ZDDyum0vWonmus~g&^+d*ZU9B_Vji)`O_uoVJ zSLG&)ln3kL2$K&l<~(xU_hNIIct>O6NV%fbouA~MzZRFkn)y{(sPx`JhJouOaR_{- zTTt{QgI6p)qJH0hTTV7R8;`U6VUwAfq#};(rOBmjpPmxw_sC<`y{ciL5zpW%+w!E! zJ*#4Oy-9yefO~XY+88UhztR|u(W`#S+4dbpxQA>Z)+hhcB7HeP5(6V)O9@pyt+;aA7_v&gQOosGT} zOBeMMIa9XSt1$}m^f5cYDa6w`1$LNG7o%r}?BSdBr6N~`Lz%hqE;qL)fE7Q9?|>Vp zWONeKc^($H=~0ax9uaga5yqF<)s(;0;-E$xRljLv%<#w22P?+Wzk-C(JX=wSzz^GK zK^0;Wm#@hhwI7UT=|%9&WSm+)>=FHu?Qt*va9d|i8jn8~Mn#KSCp%(kADx$)pu&;n z$htLz&SI!IIGfOf<5ze^6;|>JiSOP&^i)P1U9^Cgcfmgyr$*L;m#osG`GhJr-^V{7+_U;|{I zA;}%MiNictb_FS~yP_~Iu~G7FN6PFc!R%sG1r3#W?~gf5yP6h3JFU1-w^PYh5YVekR>E2c`{P*Cz=lOguWJbtb-^{jtuc`l?-|yP+@S zNTenr6&>(~&|3oAzdpc&{;g8`$r3sS3!%{YmlCKU`j|8{g$I(YXO#8w4{;>{1t-+jvJlP^P`DhXq z;R4ADAK}=(9HP=%+Z%)t8I}#^QwHv~JmP%_)3)#@FuDwkbh+t%cC9HdT?pOWZeTu? z{Sk2DSAptNflE31Tp!qzbX%hArm|7#Y|4?g0xf~}sKxFD@$NY~%WvD8?yEuBfFHJu ztJxNb_29@Te+A#zJ%0%<;V24iVw)5q{=ya)*c`l)krV!^Qf?H=VAHH5#B~^b3&$aF z3OJVN{eycZP3<1@e2exqcWXg9cbgn@u9W|kCW)eG?BjNT8gr7@txCQ&gNf^KeQ~UV z7+==_@fDbmoL+^lQqLi>9LeH0D3F16|;LfnEePx|Ei?SmFtx^)THPJtdo17jSa1x-uCXy?XgoRptln z8DbC3`I5xS&wmPZJRjE1>M6_@C114!h%U#)+YrVb$D?e+$*R@{@ep3_kPWD(cSyp5 z&;W@gzkBA;)XG5RQ)Qd`8-3 zL9;!=0?gC*G+kA z-OuVQ;o{!+9!uwsZNGL!IWV2>8vGnTmL(?q7XRUK0FzPfAi8knuT zh&AEqp1JVCkYm7-l^A_qK`P?cUCzCNhA8Qa=%hJ80BigC&k3-jsMH}(9 zDUKLAL+9-q@>vr1a|XZSTeaNPPDXgQ@)0Qx>!3=l!}>|1&Vq=z>4cUuI44Pn=^P6> zCFXQ>ua5>G!oQw~;)yW&7@CLW5O~b7xqIQ-%ogGDvsTr`-Z z=k9HvdNUnU%reL5$6YMeK%CM>hq$b?qA0xG;0cq(iV%74NT4fR*1!Tt&S+fbjTZc& zN5m6>^~dkQKPHQO;MpEoFVBg`B^GMs5rgAI^rQ6qlH6ghI^CfnKijuC!~TzUIEsv3 zmbS6fequ``UG54cCjFx@Kh?6i=Ye6w<$^R^?Te0EL#2WF{MJ3K+NpO8Q@r(PZ#PWA zdITJ6e8%%M=~p%)B}P4XcB;|gj`!r}sh}wA zBWjHNbEgcJ_-<|VY~ZvPi@J+rsM6Vay)(>9H)y7|sq_=BiMlT-i)mCDTe%ERRivxlT5Nip3)%FZ-tW-brKGF-s6JI2n(?8L1OUU6z z-E%Ia^5=QRRw~o9hb(;nzF^@jH$oV=fxJ?}}?d^0_d1?6o5PqzC~P3WXqwhFui>(NDQh2XfsFz`qI$8YGFwrvk!GgMj+X=qfNJ^y$C#S)xoQ+?jS;MLM<5>o`m$eeR^I z-FP|oDd=NZ_o2o63a){_Voo^%TVqM-zC*QZUMc;qYa(zqgJ*{rJ!P^%e49_KFGx32 zy+e+2niTH}@?~uC6ynXCQ+6GNVt>>vXw=Yh>n4&Kw0j@#|^f5#6X|hsNUwgBGxCg)21hr^U% zV|-Og9#l-aojPLhn26Bh730*y{n7YiySxSr+n1Z$)ghT*UjI;z^)`lpXlxru&C`+s z)$LKeoN_3`dBuF9EYbeuuTrOAfn-BHLIA{A#tp_UGZG9!uZRucac*&g<{N9G84 zx$ubL+Pz6b$Q1u+OTitJ6fzxn`GP@sGvpUl=9e&x71jY(UFN^&p1H*REKToT)o{na zgx&KpQ4!B-jShc&BV+T+7zl=B5NCQ(_5O`KHV`?TwxGepJiRB7#;ExvA`N zugpLMu1r< z2Qg%FKCF530-!5s;si+diD@hfYoq`Sg46Ud1NjqhbDa{f6H@_*Jw+Bhc8y`nGiytx z@8mUjzg^x1Y!(Z_-P{eyV^<|(r1v~03vUVlMQWET;EQI#77YKvU2q-{;$@z}Qm~M4 zJ`k2excZu;LCBOFkg6EW72*O5+TLUk3aG_+8uKb{@TzBB(GJL#!dKGQW0^q+i70?$ zRonYwokq4$x^^Ty0d)-zoV5*`f)Dzt$wkogVV>CqZ`PMRqX(uFS6`~70)-Z@xWc}E!O>3`h&k#bpe?`B1 zPi+q1+2105B|iQv`vbi>Qot)J#hqQ}{o1Va)KKK?E#{gEh<0wuOcw&s2VUlQ6V!xz zPg5DBBrDZ7bCM(gLePB9G0rRVu5XP7&9lt5f_VDtLk&Z`5q&<7Getp!gTla(27tNR z4T!=O*}8hM89ZB%%;mt-7T}3RhPKnH-Ba?Gq}ye;3{F4tk<=btV;6w`sSU$XYBR$*oA$Pp^$mWfm~sR z<1%q8ddJnZGdq(xP5~kjiEBoqJf06Pe$1WAl^Xm396o~iRr8u~Ni{i^%MMBZoz zX){Xf1P(fR3mtg(Gg@Zd1uB8f0R@S z4hNE>rXY^9IB;YLP#dC#$VD8I!;Jqjy0 zFfPly>eL;8+h&fw9Qoo;>J4Nj%f}H*Mr1fX6E9#_+ko5K^~*lTx<>*3xH zIFapPGQDNQ*W6%p{}q!V5Ny&}lxg1r;`$Y^^-DnDVk=HdaY7uIE3rae3&1-NyJzmIG-?HxPSXZM0m`{#)Aamu{;6g)#|6sVOhj^O|gAtys#n~sc8?bG&-EUWH!xi|E{16xb3XWt zCkWivvkuIt4vTPH(Zu`ZG*!^O;rV?HuxGIgQHre}c0%)a&5*{#S3R+0`U{1iY(BCm zdY;m51q>7X+BGFu_Sm^U6@$#M$Cx|e`6ReW*qXulZ+$v#pCz}r;}7c)~RS~0_0v& z2=j)D1e|7x+wM0o#SpA;-TSk#>^eWBe*^vs9017w1$^ND3%|~0kP3z^cA;I-|FZ(H z)v&u%pdw4Er;=wjx>qdV%0!(9Q7*tTp@t*_o>02n>wkli38*0;WedM||B=j>>g~k$ zMh}4l>~4dH27C|s?A7)Y;Eiz_`5?D@22@nFbHptf9%(`E@Gn5Yg-s#v`Y4owRX~-J z0+OlyZ?raWbr3+t!r(~EUiDt~yThT*0cvN?h@--xx@Fpd2!i-$=?mZDDIOUB#K;vf zl#KqeD0VSkEs*o}Kx+vLDRM4^%vy!~Zs_O3KSZV8{l||2@y2gfVlbnS1fbV5lZcgJ z>$XGtV+X|vtK92lhDr+QDyhX06q)#tDa(Xcn-#Io#1VbKv4dRI3m2g8|Je9K54_q& zftVyfQ;En?0x|0I=_?KaOl1qVSP;_~@oz#{7{LErKGT zWdYa#Q2#JaLxHPof-o}HLy-TtC>66fQ;dh|$n%S)>&?Vfh%t0rluRVD`YoE-8?WIs z#8)LRW3HoY?%z;Pmm}-}I!K7LIRt$br`|5B29X6Ge>P z;xsagA1v*m2GEq6KVy7}3n{?><`xR5WZm~Dgu$hEbhg3Nz+a`ZCp|;TCSC&s8DQ$U zuyJRgqn8i1l`e2s>bML!T_v7~cB^UyV%-JhPVTOV*T6YNpYWPKN@RsX4labq{I;=R z+E)u;!(u(9Z4^81kU%`XEsJO?g@?h#ck!AoMz1q#@1zrLc%H4Byw@KrzaI(%AYnww z$o^8v!UCNqS0*lm{gBg8+(nR<(<0PnFvaq&-Q zecW-KSs~_33%It6f$iASekHeP{7eXt3SLGlbzsJ(oZfu<=`zJoyrwee2W@kIw(%qA zek<=@;ZE_!yjq|5!kl&;oQfeeLV>VPc?o~aYsQ!?ih{cP6@r|G9C-j>Yn)c;lu8M) z&O%60`1GV%cpT#*#3m$F^-a zL*^OH)E3Z!QG0tMe%2vMRCJ3E`4JR9wYIVYL1tj)GYY-&deZVL&Ah2MwIYh2A^< z8-UU1;iU=HaI^tx0NIE+D%IiP6k9KOXggFs_&C2vn5)`}SOKSacNnhXNXB*VWpvw& z;*1`r?D6}hZ+hk>x%n4J(3RP%LAH9F2?Uo|FFf~9ec(07v4>XbNP`9J4jvETBsdmf zfApsDMvnR;E>tQdNCza8%t9-{%|PfbFxTtU{R+=?&m7q+Cw4*rAE~p97|^U8a2iS` z^xk*2H5n`}Q(<5PY(}}p%J-|^CzB0kv=R?BqmXGttVrPFSJG??vW%`A|QzTb!xsP$pVY>FK zBwa>GBu}@KU$39=kS!*DQxK{I#e_tZmU&I)O{e^on!$ zss*VLXw;=G(KE-gBn>1P%7|EDQn%&CYkgi*So3B#_G6uD(QwZ_C$rACCQW`MB!9h zeqX3Rs5c1I)B^Y?y(+5YBpbovbU}k$25uKFv(vR^E|%>1jmT*rIo_9;jmLxQ{SL@f ztZ2&XS4b1Z^u)W=gd8YSWSS`P4J1RP-qJ1Et9AAcl$4;sf~LmAT}bW0$% z(Rm_ds7|?%jGd@wOypH5uF~6HA}7>I^{Hc+t{C|Q4UwjG^mWhB3)AKjL>Y-wd^x?p zbw2tyxK0X&q%7B@kdw|NO~d?=nlpF|Hx?jKjXd`?0O}wz*4fFM@+DTB>Leb`Z4H~+ zMibU$GDXi)d-YD3yYN-+5^RQPAK_RdlOP*fV=5R5HL+gBTl*6GTlGvoIRzy%fmG0O zn0l8cx0IO%EOep{DgiY_$P-&4Q!Qh4{)ow1Pb&OjOln^bl862-;l2e)JkdYuJg1;ZGCt%DV5|pT2)^f4 zDQeN%Xn9z@lRpeD`e5dZG|PNcuXR3lw^V@5?z zHAW-XgVMD~xGha&smwftMY&LnqR|u?9FITV)OFB8oo`;3eXG-$?G~2k(s-JjU@Fjg zO!CNPAC$BNYJcJc&0x2x=ru`2+JA*~Oc@n6S3(?cm}9kUAgs`I>h)U?8*!jmNzm7u zc|W|2t9i{5D20>~v(dK%16WdxgXmQko%u*XY}O+RQTyV6qdy{PQNk2kR?|YJ)v-ZNxV6W&jV{$ZM2z2&q#w=4>?S z>%b&TTL^Wd&Zf|vPGah2JlN55;O@wRq?F15J!ik4m#-7-nYqsrO1)i|8<6!_usFizNabFvh8 zhM=jn8oa}5voQlgR(qEgQ|&LrC-s>=ISRDzfFH!>U*FI(y#nP%I1OsQ3Lr4NjRwDa zA;m@!+Gg=gs_?3%_L-kZaM8fyK_j^wiko$Y#2JOi8S#V6ud1jxXl zOK=K8tva53Ha zJdfjX4vS*^rZhp!uEVGoq@%1%0(Gjc0B#ZJydm?N4UXKT-3-VW>m@@TH}bbq4BRb3 zExtPqcd?a8YYA!AK&_RI%anI*RdR=&d=8vXK@&aE=nP*$SaF)S*LNa_=NJ^8Ma=60 z{&aNeOOR7j!`f2Awz(9e)^GOEM77AqKL0568ZnAf#6LOzaf#o@T^WCH@4fHP`hEdiTin$ zN<~OcX-zq(4(tar11ag-X3ATV;vJ)J0lDV&o=Ca;(AEUVH~xf2ddb+Y47M_Pcq4nq zztMg|Ul|5<*@;s4{?I|~L-mK$gsZC@-H2UC0`w-;1!>}rYhO%-pa!Rln&c}i39bNC z_dF#_ISw^zkS@p&H;~ths0OL(bT!Ptg0e5uax{sYeql9VO%L-gF|x>%+m`07Q#_*O z#WIizQI`9uRB8bgS!0jg1oz-PhU#7E-9&IPt)@JkuvYOKF|{nkJ2b3TwMVzLYX&&l zBzOpcjCJg=qzx@xnh;7K!jYb42?LcYMZjF#dEY~rV7L(-x|yl%k9qbIK^&> zLu?v*RCacw)?3Nt;5p`qtVgxy!MSpgGW>6;+PMi*5L}t0ND0s=3Eyg)-a4)Kq{-RZ zjm=5Unl_S1{e|l`ik&+s937SN}$ed-hkh461 z`+0j-p&mu(CLU#vhl*b%@zg=Fj2^b9eDL?8cB}0U3$DDhc9tI#nTdKKK5`ipidgAd z)%GbV!VK%JuC7=eBa>05w(`52t@_HxZst5*%NH)->B*@Z3vnC*OdKDY%@j<|Gg_J(vqfuNP?1TXkyGRk@;MmFkfpqLEmJ_h$ZqkSlMpPqXie2XvES3$`ZxWgKpW9tGe zBwwayBN|V)pgtFqJWf4#@B<2Jk-?D3o)@z}nw6c4=X$&Jy71_d`T__;D0I6kYSUNt zbZC8VZ-H`A_EqG@~H;92k+G>Mb1fyVl!h-*Y-M zI+4h4%1z;kRwJ_sN14&Jb%b81PB@ZDT+#c&)3-a-k69?@f=&-lSQI9<`v51<9n5~m_zi&v!JlJ)aSG>I;XDjG__Wxp0C)#>RxTwJ(^tA= zOJ=$8NFULwl_x%}!eQp{4T@RdBS(N0^b2%y-2?Q!Ac6#p&_6oSI-C}n6#DyNi>{QbiyZkO{G z&hQY#_Ip4QX#BhY*aT)?xrVhn({#M@kI7Ewk?}agPNhbGML3PP!X7Cgg{`WCf(Rx|4i*@0 zaB{zzJix{V-Y1UA)0>kwWD(gU=s{WWS@xz_Gdtaea6cApIP*&;ksFxlhQ^UXs*NBv z{Crrz3`||jUXz^aB`Vr5W2fFk6!C8Is#y@%xi=z0O3%l8X0dRSuccdfo5wgkEIlo+T8l|a(3Af{|>NcSS$ zMbw4Rh~V7D+DTbuSM@z~0uCUQ>2We|muLc~^MuT33&Gtv2~V^_0kCI+-0TAo2!K)? zYSYOsh*1B?RfFVEdjt8!j7q~517oGYY=YAb*NcV`{qLg&=(>_fRxH%p5Op2E7=+Tz z=(?g0Rqob%VxTxn%azp@G=Li<7u}K5R41SoG5g%33XlpL!Jqg8t(+T&DtA)MuF); zlxCZR_2`ALzBNcmfB`-a!yMlWBvd~@+71Y$Q8q9&+W|E@EQY9l|23onol%9 zbrwLDBBlJdRMmcoSE`Jb!Qz-{uTmM_sLRbtLQ3s9XuV5Yk(Oe4anz2vWc3 z)@k-%5+pTi^qLu~om#K+$_edyIY@_x?8o<8sJ+>*ga-|0v7nw-Sau7jlD7?9v|Qh& zJaxS4l9?y^nmq|v0~;VaU-y=6$&qwHO^q`^5S!Xmy8fpnD>V3$po}?6_|}Gw!l9nN zEQ2YB7;t$Qr99~pqzRzTES*QU;WTKuOfs@&8z}Qoo^8}Nu@h1pZ!{u<=MAVPZ4@5O zM0WuXlbil%i4w%P-8xIyhh;c|d4lZasVaCY#TG_>ULlqyr`0&}SqIQ_=pm^f zc^!mff>LuX$v*lT9AWY@+^}5@z4VsLFV$Z$!@X;PnDQONt-vs1+_4rM;c&{XZkh+m zPbP(ZdP{e)oj9%pS&(=C;aGvV5bg&loJ7{%omz(rfTDDWMu+^duiy>@8a_?8_qP(x z5*#LE4tdOeaRJ;dNrhuFX3%HEwy7xs>%NNZ(p15nB*?_(s!M!|t-n0{M4%8EP8DoM ztY9igK7C%tttOKF+aptj6y!H@v9OBCXS4(QFKC7|tM+^el_X^|j|)mz@klRg*`oDM zD6zvf#mLp*M+9!eDICOzD&!+Tb?*n?N*R%Fu;}BDAt!Oz_I3_d@MuF{o?U|z;10&9 ziOv*mv<%%06s6;3aKlzW#9RZ^q$Qm8o!Z}e1w1T*s--No11)eHg?`Rpn?SO4t-F3r zshrn;;o(sg(tS6$HMS?OR@EcR;Qbyj*qyvm3u;1?9eEV6t#OPT9|_ z-ty>1s6e*8O*Q?{wod#uommEXWB2@P0R8wBNtGL;hHf$A6wlk#^&`q#{wN(2B3Ip! zD(ZPq*Glx#`fWPM5=r%p!=Rc=FX0~9dB)18Tt-_4+{~S-yp|f~2H9Ojrio*U7Yqgi z?BYcVr8tlZPrN26GPMitE2arZLF0G}Y5mQ>$jC+Sl$t@1Jro)KkE(*DsXVe7dDdpI zQ;VM=QayGe@jGXK+{H`0)M(^Fj5Y!*!2_7{o0v4jp~zSWdW*~zKQUJ0R3?;UE*+Xb zb}&N_kGqZ)q{8j7Q0YDq*9&U|BC*t9qsXWurQ>!(>OQtVfUxr zt_nDPF3C-Uy0ZHp5kA4+rT_nD^athO1-cg`1>4I54kFp{ye-h4P~FkKIq*CrHt+Sn zxzqFiKb;-;c8>p3>ysW>@8XX25AJbry#FcP=Q70cbq!qb{h-tYX|qrIJ`f2{y4NzO zv93X?R1DIO)lLu^#JjOU`X5z%sn{k__nzy)#|6XxohP!ddG7 zZvU%JI-6LyvmbnZxv%Ps$e)qO!1?Ihe`orYnoF-vJN~llzx({^%hHq0n&9*QXuP20 ztlld@x^w@X>DOvl@tRNQIFI6WX-Daf^El}qz~8Z6|I_^@?+1V#^GOZVPIdI3_p>N+ zIgabW_N=`ke3#1|Hb@(`7v>KG6%eE+RfD$t3r$V}SK1xf(O+j8N$oJ{j`z>CDgXLD z5qN(A6>RVP{-o=#lK+e6q-zh3*Lgmj=}BiMJiuS)_RjRAvz^8}>x}yA zd^-ARem?G~-7@+6j`q8V zl*S0sBdXx?C3ucOdX4l&Gw>6nT`k#U4SZ`&kZx&3d4HX6kFy_sb?}MjPX*h@9+$3R z&L0}2$F$6iuHO2;dB66-_ZN2>zr1C_gX1Ic3qd6Z`#;-KB-y);`DI+#H^VdHxsLg# z--5<%f7-jw>zh%#Y(+Kv1pDjU9@1jU+gvzD9&E2eql<>U}_=Msh?MGuT@69ItLAtUTerqe0$bh~a(=K5o{K+8wxBdSw z^ppDRz6GcDE%+h$e){iHl5&20kZwlf&p`?ZDmLzor@^ovP-_&VyI&pg{9pI4^Zui9 zfLRDSJNP_&A=3l)IJT4h%%~ml{9gD8KHvM)TQ`pGd$wPYj`-X2|NH$%4Y(*Y?FbQk zKmPXD*MAw2`(lv(+y4H4y#E>BfxU;@ufh2g-wph#=%54l?87_Gd-iYbrP7yx1>04> z1inzI!yowD{!JGYF>%HV}u)qJ)=RdU5`kH-kz2GnYS;CJ_NY-(C zI_7gCXEc!<>BpZdM? z{&zl~^=RepAET=sm2JgJ8S z^dS>`zw>-M)2dGTsPlX~(`lX7-`{C|oBa>k!_M!&<%b)Euw=pc`TW_rf2AW9Rm}V= zo!jYrb?)zx@(1;I=XUh{a}W3%mEH%(8(jY2e4pyXpSKf#o$0T=55Awe>A#rI{Rsy7 zAHQkY1O9`t;z9av{B(NXu>HaDqP-&?Sl`a`?M$ct7wc=4FaTL_79GbRX_kAzTKEF2 zARDTQfr4ZycrN{5J`=R~7nGUo4 z$|66}&;CWW;|DU!?^EoVbj2D$6eJ9ADZfS4mzP1$)hy~8@hev>3tuL*Ai+XM8;x(>D8OM1RY z{&Yt>0nb+->uC3(RqrJqeD|4P`}3Q!=l#{py)C`}7qeNoY2I@+y`KLi_1Xl z^!4(mi;NxXu>_4T7Tj`yMNyU)f~{-iZaD-uxRypHFcXk_Z= z<38?qJ|PEe5Nug+eBhr<+VN}${m{n`x*4IhgVYnY{yD#hPHHS-%|oNLEB_oXAqV9D zFa1ZM>~qQB*#yVKC=|Y;1SP|_6#g~Z>vOjM!U191so-OVMzoS$l^ohZi)dy4ztRn; z@xrR)+>ZABs1d&3?xzm=4iv4dN`9(?KId9rv+7T45xX9aUCYca!S=goM8Bp_K4yb- z)RaZ5k1U$ACrCdUa&X#i<{3+nRy^@~{07View and try out different weapons, equipment and vehicles. Sieh dir verschiedene Waffen, Ausrüstung und Fahrzeuge an und probiere sie aus. + + View and try out different weapons, equipment and vehicles. + Sieh dir verschiedene Waffen, Ausrüstung und Fahrzeuge an und probiere sie aus. + From 320c35c07d41574cb6b8b00b17bf9e123da180e9 Mon Sep 17 00:00:00 2001 From: bux Date: Fri, 22 Dec 2017 10:31:15 +0100 Subject: [PATCH 03/31] add arsenal icon assets --- .../icons/Icons_MainMenu/arsenal_1024_ca.psd | Bin 0 -> 1230662 bytes .../Icons_MainMenu/buttonMenuHover_ca.psd | Bin 0 -> 1076932 bytes .../icons/Icons_MainMenu/buttonMenu_ca.psd | Bin 0 -> 1076684 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 extras/assets/icons/Icons_MainMenu/arsenal_1024_ca.psd create mode 100644 extras/assets/icons/Icons_MainMenu/buttonMenuHover_ca.psd create mode 100644 extras/assets/icons/Icons_MainMenu/buttonMenu_ca.psd diff --git a/extras/assets/icons/Icons_MainMenu/arsenal_1024_ca.psd b/extras/assets/icons/Icons_MainMenu/arsenal_1024_ca.psd new file mode 100644 index 0000000000000000000000000000000000000000..7962077714c5b94e9638cd3b2a092dd3389ce899 GIT binary patch literal 1230662 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 literal 0 HcmV?d00001 diff --git a/extras/assets/icons/Icons_MainMenu/buttonMenu_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMenu_ca.psd new file mode 100644 index 0000000000000000000000000000000000000000..8e28a7b5c2231250b7145ac6e3a2e5f6cf56ae56 GIT binary patch literal 1076684 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 literal 0 HcmV?d00001 From f6d640b917978462705bf039defa86fff512d70b Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 11:05:32 +0100 Subject: [PATCH 04/31] icon assets --- .../data/buttonMissionMainMenuHover_ca.paa | Bin 5586 -> 5586 bytes .../arsenal/data/buttonMissionMainMenu_ca.paa | Bin 5586 -> 5586 bytes .../missions/Arsenal.VR/description.ext | 2 +- addons/arsenal/missions/Arsenal.VR/logo.paa | Bin 22688 -> 0 bytes .../arsenal/missions/Arsenal.VR/logo_ca.paa | Bin 0 -> 23355 bytes ....psd => buttonMissionMainMenuHover_ca.psd} | Bin ...nu_ca.psd => buttonMissionMainMenu_ca.psd} | Bin .../{arsenal_1024_ca.psd => logo_ca.psd} | Bin 8 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 addons/arsenal/missions/Arsenal.VR/logo.paa create mode 100644 addons/arsenal/missions/Arsenal.VR/logo_ca.paa rename extras/assets/icons/Icons_MainMenu/{buttonMenuHover_ca.psd => buttonMissionMainMenuHover_ca.psd} (100%) rename extras/assets/icons/Icons_MainMenu/{buttonMenu_ca.psd => buttonMissionMainMenu_ca.psd} (100%) rename extras/assets/icons/Icons_MainMenu/{arsenal_1024_ca.psd => logo_ca.psd} (100%) diff --git a/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa b/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa index e757ecc7e95b1ae68662e006bfee80bc1c8efa2d..12b0400c8b23ca94f4debaf230e09981c9aba29b 100644 GIT binary patch literal 5586 zcmeI0ze~eF6vtmfW8)xZP{?LL3gYCSkSN$m#2@Dmut@Eqh@gmwh>~huq?1?>!KF@i zaC2w}DRomRoeH{kaBHUy9pro=#CLHKp$>&R2;3*{@{+vwy?4i{JQlO(Ct?eB7y#Ps zw#Q5Ml*=5OYoD8(oVJj+@!Hn`jt2nF1`+<;954ZNbnHFpzQFBCmhtd(AoU>UgRBR# z9?E*yiF#P9;ap;>>g#FcqpUMla(tf2*jjQYk?=X*G=VWiSdUG}W}WZx@3mWfk*QIC ze6dzH7^C_6$m?dR*E#X+2aR-r0nhu)dAgwXL?XmqPxAlh{ibPatVQ|fd`)BADf#hk z9-5F$Q2seLK~WUu+c~#2$8oa63G~;uM|^_*AWob!Ql}6iUN3V&ADj;tBK@Qnx&QMb zMe*u1=X4dNMgC_pR)C+3qX1)m18i&A9~`vj^dOrM3XJdc|44rrULl_{9x@)?rw0qq z03a-7+_lFbPX+)>(X!%B!qtA_I@;q`#P0a0M*Lg`7#bq>dfmeSpDA&hd_JqT@`9dk zjq0_?BjeH0QNiAL8I)xl&jK~T{lfpH{eBmtTqXZoo5)ARJFm!Z#9ps+JeIBo(mb`f jkr%7=#pRvio`;6P5^w+Z83z@xEFo;m6=*%+i`@1Fo9OQd literal 5586 zcmZSm@9ypx;_M#g$il$D@bl+S2tUHn7sUS$1R(ifH#dI=Ain^J%LN!1>O>eAT19~z zl0gH50t15p&|rv8kOd&tD1S6OAn9N;v*SRi`5O==l*S z9}y9OkO%TZL%*W&>k)iK4hGZEPz1lP7^s60!H2L$`M^*C0{Yj7fjtgjdqK8C@?9ue zdSF6H58&vB$A9g61_oAE)}yfayAQ6-8{qN%ItrM)LPAAh^8f!YGh}3B9OZTn}_ z6bEQJz?L3nU1MMfibdq-ec!?H&kBoQ5I;Po-~fydN*}tcqE})3|NrL#MHrY7dNT#4W>5@2Fg zg*O}M-|QvTe}vS>Ja+(=O9=llFr>#6!1?!p;gQ(L2MB$a>kRE9t8yR`+5zo`_tpmL81(q`efBh^W3pnKX=Qk}|Jxm2`KbUIB ziD=nW!0KVDVf(}O!|(ec42$^&%4OE4*52s@)&l0k&hElczw0uG;WlmWRiPPZHUl-j z-Y(`-D9>wqF%Jke{>2UY{7F$|dv32V0MVdhL>yo43s4@bRG2wx%dABFpOhZ0&a8ti zUH`)l`ELYk>^}^h4@0h5f2w}9s`i^Js#_2QO+B98|2&ap-i-W-G;_T@j z&l&xZ+XpIdbiZ)cJl=AwKvH_t+ce*V)_ZpW$QWEB`+&hwe;C}N`Zf*z)h_*0dDZ-v zar*|_dL~;>tEbgdDv;Fr@L2ui(H#J~RT|kSC3)Kr2V^q9k fo_AA1IJ6XcdQtyV7^|Ns>`X>=Q^ePvK=eES0-I0n literal 5586 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 literal 0 HcmV?d00001 diff --git a/extras/assets/icons/Icons_MainMenu/buttonMenuHover_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenuHover_ca.psd similarity index 100% rename from extras/assets/icons/Icons_MainMenu/buttonMenuHover_ca.psd rename to extras/assets/icons/Icons_MainMenu/buttonMissionMainMenuHover_ca.psd diff --git a/extras/assets/icons/Icons_MainMenu/buttonMenu_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenu_ca.psd similarity index 100% rename from extras/assets/icons/Icons_MainMenu/buttonMenu_ca.psd rename to extras/assets/icons/Icons_MainMenu/buttonMissionMainMenu_ca.psd diff --git a/extras/assets/icons/Icons_MainMenu/arsenal_1024_ca.psd b/extras/assets/icons/Icons_MainMenu/logo_ca.psd similarity index 100% rename from extras/assets/icons/Icons_MainMenu/arsenal_1024_ca.psd rename to extras/assets/icons/Icons_MainMenu/logo_ca.psd From 57dc1de4ff2dd2601b8da84213814293f16e5035 Mon Sep 17 00:00:00 2001 From: bux Date: Fri, 22 Dec 2017 11:14:48 +0100 Subject: [PATCH 05/31] adjust icon width for main menu --- .../data/buttonMissionMainMenuHover_ca.paa | Bin 5586 -> 5586 bytes .../arsenal/data/buttonMissionMainMenu_ca.paa | Bin 5586 -> 5586 bytes .../buttonMissionMainMenuHover_ca.psd | Bin 1076932 -> 1077166 bytes .../buttonMissionMainMenu_ca.psd | Bin 1076684 -> 1076936 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa b/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa index 12b0400c8b23ca94f4debaf230e09981c9aba29b..93c28dab94379c8b8f0565fdd86b3ac258785ee6 100644 GIT binary patch literal 5586 zcmZSm@9ypx;_M#g$il$D@cZ{~2tUHn7sUS$1R(ifH#dI=Ain^J%LN!1>O>eAT19~z zl0gH50t15p&|rv8kOd&tD1S6OAn9NMM{!+SKmNAu%o z`9rVz1`^T^z%c*@7NlmvXfZUjiy;F zX@<3q$i--zVdGU~K8MrZy~uq1E8@TiA3pvkFa8u5I2afh=@<+lOM#&dZ@vEiZ?YE1 n-%Gz}m^1~LDv~huq?1?>!KF@i zaC2w}DRomRoeH{kaBHUy9pro=#CLHKp$>&R2;3*{@{+vwy?4i{JQlO(Ct?eB7y#Ps zw#Q5Ml*=5OYoD8(oVJj+@!Hn`jt2nF1`+<;954ZNbnHFpzQFBCmhtd(AoU>UgRBR# z9?E*yiF#P9;ap;>>g#FcqpUMla(tf2*jjQYk?=X*G=VWiSdUG}W}WZx@3mWfk*QIC ze6dzH7^C_6$m?dR*E#X+2aR-r0nhu)dAgwXL?XmqPxAlh{ibPatVQ|fd`)BADf#hk z9-5F$Q2seLK~WUu+c~#2$8oa63G~;uM|^_*AWob!Ql}6iUN3V&ADj;tBK@Qnx&QMb zMe*u1=X4dNMgC_pR)C+3qX1)m18i&A9~`vj^dOrM3XJdc|44rrULl_{9x@)?rw0qq z03a-7+_lFbPX+)>(X!%B!qtA_I@;q`#P0a0M*Lg`7#bq>dfmeSpDA&hd_JqT@`9dk zjq0_?BjeH0QNiAL8I)xl&jK~T{lfpH{eBmtTqXZoo5)ARJFm!Z#9ps+JeIBo(mb`f jkr%7=#pRvio`;6P5^w+Z83z@xEFo;m6=*%+i`@1Fo9OQd diff --git a/addons/arsenal/data/buttonMissionMainMenu_ca.paa b/addons/arsenal/data/buttonMissionMainMenu_ca.paa index c201626c4b407fc216aa439c40681ab3a22de341..3dd3359acbae2284694c1eb47d517b6305ed5059 100644 GIT binary patch literal 5586 zcmeI0u}i~16vm%Tg^U?0I5?!Z)IY)Ps?ZK1Li8j<5pmQ-T*So&u^=ukP7bAZDlLL* zbrC^FC+k?mMMt-|#dirWcOBcI5O@b6{PHfjd*6MzJ8m|rR?Azf)$MW~07|8$g#Gfm z;s}e1Z&oTB0{IZHV+Y{00MM927`p`E0yy~L(Kne{4^sj5gQ>&+~|> z*UY3ua-WtS!w}oM_tWujhDAHLYK)A(@3(T)A9WuLx&iSp?0QhErR$S=F6wnb@%Ao& zWy#bJi+uoZM>Azj^_dd|SPyan>!B22Kd>K61+wl3foA}aPi^hS7FVYYNs`RT*-KXR zIC;Zuojfa1fB#+-2OZ*@k2wBA{B@!DV2wEI Garp;Hax(P* literal 5586 zcmeI0KS&%w6vjUfg(DEy!UKyG2WR2+t61(4&I2LjICne=o~WgjAd)l}EMj99iG_tC z+9VecEKN`ji*#CutBss?Ho}!BSgdb$c{7s`2!Rbon1$o`@n+w?_q{iNn4YjyD)=u; zMB$a>kRE9t8yR`+5zo`_tpmL81(q`efBh^W3pnKX=Qk}|Jxm2`KbUIB ziD=nW!0KVDVf(}O!|(ec42$^&%4OE4*52s@)&l0k&hElczw0uG;WlmWRiPPZHUl-j z-Y(`-D9>wqF%Jke{>2UY{7F$|dv32V0MVdhL>yo43s4@bRG2wx%dABFpOhZ0&a8ti zUH`)l`ELYk>^}^h4@0h5f2w}9s`i^Js#_2QO+B98|2&ap-i-W-G;_T@j z&l&xZ+XpIdbiZ)cJl=AwKvH_t+ce*V)_ZpW$QWEB`+&hwe;C}N`Zf*z)h_*0dDZ-v zar*|_dL~;>tEbgdDv;Fr@L2ui(H#J~RT|kSC3)Kr2V^q9k fo_AA1IJ6XcdQtyV7^|Ns>`X>=Q^ePvK=eES0-I0n diff --git a/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenuHover_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenuHover_ca.psd index 17b1e70f9e3ac9e6fa18ef1355b4a5900f120cda..f4ed5f879a93375cd3f9dda6e71dff5a1516c386 100644 GIT binary patch delta 1741 zcmb7DYfw{16yAGpLP$i7(iud2pd=vC#3Uq;s30<;Mp1mg;0tI%lD;w^TG~2{2Gow? zqtIN76i1Y51@Te!ibzB#R;1M_`&uRCT!}0$9T`yuR3BNXXdRFuo``1ick^bX_vCVDieT9$j zRZFAemXtnaP?~CBU&*7OWA2azt4iB?e%B5tT{U-dwohs4J@}e#sz^y~s?nEBy&PYd zTk@Cq{`u?m&Gsz;2eyoF$i`zksyeT(JkRgm6O+i?awjHd6i_h&P*R-QUrRweUHx%Y9y>z`6wU0LOW4`(hLD0lCvFh(5DaQD$Ir}X>E zTN4z$?dzXJ+;zXA?YC1m8p0ns7xveBzW+iRw{0+}{`x@sjOaNd4m~Y;{bpg?{fjTN zTz%)dV?a33U9Z5QjA6as2QwY_VoIOMn$j0R0u#s>G9|ArAY(+eV0sAKa zq2=6pE$41%BDFO|hS{OQm+QFey4;pvhSU3MgDoQgVhM>!tBc`(>Q}zcCu}>$LFypG6Vrw}>&T+wF1BFRzW2_4>6n_xy}7a>XaJ92q`j zk#+2W;7qZCT4vpiQ7_ExJUhDmMFOn>g(#9wN-qn-EQCMV(Jiq1g=uoMeZ;Bl-c1wDo8p7pOK%Jx3k0LVi>yh z!8g5EyehW z(s*@=q`^I@Ot4nYwFj`sut!35(uf+OFcLDn&> zAmIc~fqMRv#?gUnJt828Cc|xt_j-Wab8S0wZ5RLt5C9&45AXp90KNbrKm-^8@B@ql Ni~@|V$+d|M_`d_zP>lcp delta 1787 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 WfDphmz;r+;APf-R>a>duyuSe{WnTRN delta 1767 zcmb7D3rtg27(Tb9Jmeu;P%ImW*p{L}o`seKDVt{2iB4q*2x7~l7(rY%CgQLiIzWd$(|IY0_ zr%he4&7H9&zO2<5WN5B{C7DYl=jsT`mn9+WgQG&kQDI~nTlz+xWLwBbjsk~*+|6-u zQ8MzzG!N>D-Fyyp%lV5S0#OT&?X{!2V|?8C_Tu+sads{UE_NeK1Yifi7bI{nNOm>l z_t89-sx+_68f0=Z2K}GeoYd(yI)I z=(yr)f$^C+__!`r+o?RW5u;B&s3_WGI?~eL+|a+=IO|ex;exS_kg`uxlc?=ozl;_| zUU;t5(_=Sy>hd~cT3fT5rqy`6@vhW0HzatRJ+redST&>wW971UX6fqd}qzw?$tx&F+4Cjw>wwj(=?VYfp;GcI!ik`RlT zsnEoEw$8z9Ql2z(Q&wnLgh-sJ2vkVI<$(%$czU2BQyv)@Cdv{?!XmO1iu5q(V-gs+ z16a}onBkHNr#NkgP5k3tH1+&Vy@=d-(vz|z@!6^@6pF%71QH=J%0vnj2#}y~B)2I! zsC1jk1Sb+y7*u8fB(|2zzzf>18k-|1RQ1&X4wd;A=Q^~oqG9c`pq zzt)IINm{`F@1nG6Eo`?pU+VRjB?;wBvSh;oQkNZ11!k;LI8!!vKi+o+~ zcD6V6^!0Y$*?4rsY{l5>U|e7K=ze!kkF}fajVi{hqr_0lBxVg3UV~ZDV=!UXd=x-O z6B{s}#zNP3eCF<@m1nTh!n={Dr|$(ilgyvd~&U92g0P zUq~bN9;_;^HeqMeR*akb+8X~DFwB`mtf3ct8qNHCWaob4=)}bMr0H??)1C=z=rLg| zm}Jha0}MwPZ`koECYsKhbwKxO%(~w(%Un;{*mC=#&DMhrPj6}%V*Ofu#iDzHS=UuH zS7}BJ|MVlR`&%#*4+DBuIhh4O`N%AQ;IUYD8^2oSYP0iL46&je{4ER@AfZJ7fx*Ol zn&IDkxwPP4f|nq33>T7fk(mq0qY)e%kHy-V8CwZ9B!(g{3&WckhD1K{rWtPaa-+GW zcUKag-hcVu?^5OLR^<=?7Jv<~18@NL00)30zzHx7;0$m9xB}b&)3vG`cNyzX DcPzL5 From ac09c0f75ae6cd7cceafda7bca779da33eb00059 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 11:26:29 +0100 Subject: [PATCH 06/31] enable the debug console --- addons/arsenal/missions/Arsenal.VR/description.ext | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/arsenal/missions/Arsenal.VR/description.ext b/addons/arsenal/missions/Arsenal.VR/description.ext index 4eab62fc84..2973a1f156 100644 --- a/addons/arsenal/missions/Arsenal.VR/description.ext +++ b/addons/arsenal/missions/Arsenal.VR/description.ext @@ -9,7 +9,7 @@ overviewPicture = "logo_ca.paa"; briefing = 0; debriefing = 0; -enableDebugConsole = 2; +enableDebugConsoleSP = 1; doneKeys[] = {"BIS_Arsenal.Map_VR_done"}; onPauseScript[] = {"arsenal_fnc_onPauseScript"}; From 33c2b96bb3d5bdebf6852591e9a1ea41a00371bd Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 15:09:06 +0100 Subject: [PATCH 07/31] converting to ace standards --- .../missions/Arsenal.VR/CfgEventHandlers.hpp | 11 + .../missions/Arsenal.VR/XEH_postInit.sqf | 77 +++++++ .../missions/Arsenal.VR/XEH_preInit.sqf | 4 + .../missions/Arsenal.VR/description.ext | 13 +- .../arsenal/missions/Arsenal.VR/fn_closed.sqf | 33 --- .../arsenal/missions/Arsenal.VR/fn_opened.sqf | 15 -- ..._createTarget.sqf => fnc_createTarget.sqf} | 18 +- .../{fn_onPauseScript.sqf => fnc_onPause.sqf} | 2 +- addons/arsenal/missions/Arsenal.VR/init.sqf | 215 ------------------ .../missions/Arsenal.VR/initPlayerLocal.sqf | 137 +++++++++++ .../missions/Arsenal.VR/script_component.hpp | 2 + 11 files changed, 244 insertions(+), 283 deletions(-) create mode 100644 addons/arsenal/missions/Arsenal.VR/CfgEventHandlers.hpp create mode 100644 addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/XEH_preInit.sqf delete mode 100644 addons/arsenal/missions/Arsenal.VR/fn_closed.sqf delete mode 100644 addons/arsenal/missions/Arsenal.VR/fn_opened.sqf rename addons/arsenal/missions/Arsenal.VR/{fn_createTarget.sqf => fnc_createTarget.sqf} (82%) rename addons/arsenal/missions/Arsenal.VR/{fn_onPauseScript.sqf => fnc_onPause.sqf} (81%) delete mode 100644 addons/arsenal/missions/Arsenal.VR/init.sqf create mode 100644 addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf diff --git a/addons/arsenal/missions/Arsenal.VR/CfgEventHandlers.hpp b/addons/arsenal/missions/Arsenal.VR/CfgEventHandlers.hpp new file mode 100644 index 0000000000..0f36260026 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call compile preprocessFileLineNumbers 'XEH_preInit.sqf'); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call compile preprocessFileLineNumbers 'XEH_postInit.sqf'); + }; +}; diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf new file mode 100644 index 0000000000..b689f75dcc --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -0,0 +1,77 @@ +#include "script_component.hpp" + +enableSaving [false, false]; + +[QGVAR(displayOpened), { + private _player = player; + + // player pose + [{ + switch (true) do { + case (primaryWeapon _this != ""): { + [_this, "amovpercmstpslowwrfldnon", 2] call EFUNC(common,doAnimation); + }; + case (handgunWeapon _this != ""): { + [_this, "amovpercmstpslowwpstdnon", 2] call EFUNC(common,doAnimation); + }; + default { + [_this, "amovpercmstpsnonwnondnon", 2] call EFUNC(common,doAnimation); + }; + }; + }, _player] call CBA_fnc_execNextFrame; + + // hide everything except the player + { + _x enableSimulation false; + _x hideObject true; + } forEach (entities [[], [], true] - [_player]); + + _player call CBA_fnc_removeUnitTrackProjectiles; + _player setFatigue 0; +}] call CBA_fnc_addEventHandler; + +[QGVAR(displayClosed), { + private _player = player; + + // unhide everthing + { + _x enableSimulation true; + _x hideObject false; + } forEach entities [[], [], true]; + + // update VR unit gear + { + private _unit = _x; + + removeVest _unit; + _unit addVest vest _player; + + removeBackpack _unit; + _unit addBackpack backpack _player; + + removeHeadgear _unit; + _unit addHeadgear headgear _player; + + removeGoggles _unit; + _unit addGoggles goggles _player; + + removeAllWeapons _unit; + _unit addWeapon primaryWeapon _player; + { + _unit addPrimaryWeaponItem _x; + } forEach primaryWeaponItems _player; + + _unit addWeapon secondaryWeapon _player; + + { + _unit addSecondaryWeaponItem _x; + } forEach secondaryWeaponItems _player; + + _unit addWeapon handgunWeapon _player; + { + _unit addHandgunItem _x; + } forEach handgunItems _player; + } forEach (entities [["B_Soldier_VR_F", "O_Soldier_VR_F", "I_Soldier_VR_F"], [], true]); + + _player call CBA_fnc_addUnitTrackProjectiles; +}] call CBA_fnc_addEventHandler; diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_preInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_preInit.sqf new file mode 100644 index 0000000000..329d5fd1a5 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/XEH_preInit.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +PREP(onPause); +PREP(createTarget); diff --git a/addons/arsenal/missions/Arsenal.VR/description.ext b/addons/arsenal/missions/Arsenal.VR/description.ext index 2973a1f156..b548cb933e 100644 --- a/addons/arsenal/missions/Arsenal.VR/description.ext +++ b/addons/arsenal/missions/Arsenal.VR/description.ext @@ -12,15 +12,6 @@ debriefing = 0; enableDebugConsoleSP = 1; doneKeys[] = {"BIS_Arsenal.Map_VR_done"}; -onPauseScript[] = {"arsenal_fnc_onPauseScript"}; +onPauseScript[] = {QFUNC(onPause)}; -class CfgFunctions { - class Arsenal { - class Misc { - class createTarget {file = "fn_createTarget.sqf";}; - class onPauseScript {file = "fn_onPauseScript.sqf";}; - class opened {file = "fn_opened.sqf";}; - class closed {file = "fn_closed.sqf";}; - }; - }; -}; +#include "CfgEventHandlers.hpp" diff --git a/addons/arsenal/missions/Arsenal.VR/fn_closed.sqf b/addons/arsenal/missions/Arsenal.VR/fn_closed.sqf deleted file mode 100644 index 464149a348..0000000000 --- a/addons/arsenal/missions/Arsenal.VR/fn_closed.sqf +++ /dev/null @@ -1,33 +0,0 @@ -if !(_this select 1) then { - { - { - if (_x iskindof "VR_CoverObject_base_F") then { - [_x,0] call bis_fnc_setheight; - } else { - _x enablesimulation true; - _x hideobject false; - }; - } foreach ([_x] + crew _x); - } foreach (allmissionobjects "All"); - { - _unit = _x; - removevest _unit; - removebackpack _unit; - removeheadgear _unit; - removegoggles _unit; - removeallweapons _unit; - _unit addvest vest player; - _unit addbackpack backpack player; - _unit addheadgear headgear player; - _unit addgoggles goggles player; - _unit addweapon primaryweapon player; - _unit addweapon secondaryweapon player; - _unit addweapon handgunweapon player; - {_unit addprimaryweaponitem _x;} foreach (primaryweaponitems player); - {_unit addsecondaryweaponitem _x;} foreach (secondaryweaponitems player); - {_unit addhandgunitem _x;} foreach (handgunitems player); - } foreach (entities "B_Soldier_VR_F" + entities "O_Soldier_VR_F" + entities "I_Soldier_VR_F"); - - ("RscVRMeta" call bis_fnc_rscLayer) cutrsc ["RscVRMeta","plain"]; -}; -player setvariable ["BIS_drawLines",true]; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/fn_opened.sqf b/addons/arsenal/missions/Arsenal.VR/fn_opened.sqf deleted file mode 100644 index 0bc5f67366..0000000000 --- a/addons/arsenal/missions/Arsenal.VR/fn_opened.sqf +++ /dev/null @@ -1,15 +0,0 @@ -_player = missionnamespace getvariable ["BIS_fnc_arsenal_center",player]; -{ - { - if (_x iskindof "VR_CoverObject_base_F") then { - [_x,-10] call bis_fnc_setheight; //--- Move cover objects below ground instead, they have unexplainable problem with hideObject - } else { - _x enablesimulation false; - _x hideobject true; - }; - } foreach ([_x] + crew _x - [_player]); -} foreach (allmissionobjects "All" - [_player]); - -("RscVRMeta" call bis_fnc_rscLayer) cuttext ["","plain"]; -player setvariable ["BIS_drawLines",false]; -player setfatigue 0; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf similarity index 82% rename from addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf rename to addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf index 6eb7070190..8dc97cb7f9 100644 --- a/addons/arsenal/missions/Arsenal.VR/fn_createTarget.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf @@ -1,3 +1,5 @@ +#include "script_component.hpp" + private ["_pos","_side","_obj","_grp","_type","_target"]; _pos = [_this,0,[],[[],objnull]] call bis_fnc_param; _type = [_this,1,"B_Soldier_VR_F",["",objnull]] call bis_fnc_param; @@ -7,13 +9,13 @@ _grp = grpnull; _var = ""; if (typename _obj == typename objnull) then { - _grp = group _obj; - _type = typeof _obj; - _pos = _obj getvariable ["pos",position objnull]; - _var = _obj getvariable ["var",""]; - [_obj,true] call bis_fnc_VREffectKilled; + _grp = group _obj; + _type = typeof _obj; + _pos = _obj getvariable ["pos",position objnull]; + _var = _obj getvariable ["var",""]; + [_obj,true] call bis_fnc_VREffectKilled; } else { - _grp = creategroup east; + _grp = creategroup east; }; if (_var == "") then {_var = "t" + str round random 999999;}; @@ -48,7 +50,7 @@ missionnamespace setvariable [_var,_target]; _target switchmove "amovpercmstpslowwrfldnon"; _target setvariable ["pos",_pos]; _target setvariable ["var",_var]; -_target addeventhandler ["killed",{_this spawn arsenal_fnc_createTarget;}]; +_target addeventhandler ["killed", FUNC(createTarget)]; [_target] call bis_fnc_VRHitpart; -_target \ No newline at end of file +_target diff --git a/addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf similarity index 81% rename from addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf rename to addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf index 6425393e68..7bdc46c243 100644 --- a/addons/arsenal/missions/Arsenal.VR/fn_onPauseScript.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf @@ -8,7 +8,7 @@ _ctrlButtonAbort ctrlSetEventHandler [ "ButtonClick", { params ["_control"]; ctrlParent _control closeDisplay 2; - ["Open", true] spawn (uiNamespace getVariable "bis_fnc_arsenal"); //@todo + {[player, player, true] call FUNC(openBox)} call CBA_fnc_execNextFrame; true } call EFUNC(common,codeToString) ]; diff --git a/addons/arsenal/missions/Arsenal.VR/init.sqf b/addons/arsenal/missions/Arsenal.VR/init.sqf deleted file mode 100644 index 61e9055d18..0000000000 --- a/addons/arsenal/missions/Arsenal.VR/init.sqf +++ /dev/null @@ -1,215 +0,0 @@ -"init" call bis_fnc_startloadingscreen; -//enableenvironment false; -enablesaving [false,false]; -player allowdamage false; -activateKey format ["BIS_%1.%2_done", missionName, worldName]; - -cuttext ["","black in",1e10]; - -waituntil {!isnull (finddisplay 46)}; -player switchmove "amovpercmstpslowwrfldnon"; -player call bis_fnc_traceBullets; - -//--- Static targets in various distance -{ - _pos = [player,_x,180 + _foreachindex] call bis_fnc_relpos; - [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; -} foreach [10,20,30,40,50,100,500,1000,2000]; - -//--- Target line -_pos = [player,20,90] call bis_fnc_relpos; -for "_i" from 0 to 5 do { - _iPos = [(_pos select 0),(_pos select 1) - 3 + _i,0]; - [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; -}; - -//--- Target cluster -_pos = [player,20,-90] call bis_fnc_relpos; -for "_i" from 0 to 8 do { - _index = floor (_i / 3); - _iPos = [ - (_pos select 0) + _index * 1.5, - (_pos select 1) + 1.5 + (_i % 3), - 0 - ]; - _target = [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; - - _target switchmove (["aidlpercmstpslowwrfldnon","aidlpknlmstpslowwrfldnon_ai","aidlppnemstpsraswrfldnon_ai"] select _index); - _target setunitpos (["up","middle","down"] select _index); -}; - -//--- Target patrol -_grp = creategroup east; -{ - _wp = _grp addwaypoint [[player,10,_x] call bis_fnc_relpos,0]; - if (_foreachindex == 4) then {_wp setwaypointtype "cycle";}; -} foreach [0,90,180,270,0]; - -_pos = [player,10,0] call bis_fnc_relpos; -for "_i" from 0 to 1 do { - _target = [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; - [_target] join _grp; - _target stop false; - _target enableai "move"; - _target setspeedmode "limited"; -}; - -//--- Armored vehicles -_vehicles = []; -if (isclass (configfile >> "cfgvehicles" >> "Land_VR_Target_MRAP_01_F")) then { - _step = 15; - _posCenter = [position player select 0,(position player select 1) + 30,0]; - { - _row = _foreachindex; - _rowCount = (count _x - 1) * 0.5; - { - _pos = [ - (_posCenter select 0) + (-_rowCount + _foreachindex) * _step, - (_posCenter select 1) + _row * _step, - 0 - ]; - _veh = createvehicle [_x,_pos,[],0,"none"]; - _veh setpos _pos; - _veh setdir 180; - _veh setvelocity [0,0,-1]; - [_veh] call bis_fnc_VRHitpart; - _marker = _veh call bis_fnc_boundingboxmarker; - _marker setmarkercolor "colororange"; - _vehicles pushback _veh; - } foreach _x; - } foreach [ - [ - "Land_VR_Target_MRAP_01_F", - "Land_VR_Target_APC_Wheeled_01_F", - "Land_VR_Target_MBT_01_cannon_F" - ], - [ - "Land_VR_Target_MRAP_01_F", - "Land_VR_Target_APC_Wheeled_01_F", - "Land_VR_Target_MBT_01_cannon_F" - ] - ]; -}; -_vehicles spawn { - waituntil { - _allDisabled = true; - { - _hitalive = _x getvariable ["bis_fnc_VRHitParts_hitalive",[]]; - _allDisabled = _allDisabled && ({!_x} count _hitalive >= 2); - sleep 0.1; - } foreach _this; - _allDisabled - }; - setstatvalue ["MarkMassVirtualDestruction",1]; -}; - -//--- Cover objects -_coverObjects = [ - "Land_VR_CoverObject_01_kneel_F", - "Land_VR_CoverObject_01_kneelHigh_F", - "Land_VR_CoverObject_01_kneelLow_F", - "Land_VR_CoverObject_01_stand_F", - "Land_VR_CoverObject_01_standHigh_F" -]; -_dis = 3; -for "_i" from 5 to 11 do { - _dir = _i * 45; - _pos = [position player,(abs sin _dir + abs cos _dir) * _dis,_dir] call bis_fnc_relpos; - _block = createvehicle [_coverObjects select (_i % count _coverObjects),_pos,[],0,"none"]; - _block setpos _pos; -}; - -//--- Starting point -_square = createvehicle ["VR_Area_01_square_1x1_grey_F",position player,[],0,"none"]; -_square setpos position player; -_marker = createmarker ["bis_start",position player]; -_marker setmarkertype "mil_start"; - -//--- Garage position -_centerPos = [player,[16,16,0] vectorDistance [0,0,0],135] call bis_fnc_relpos; -_squareGarage = createvehicle ["VR_Area_01_square_4x4_grey_F",_centerPos,[],0,"none"]; -_squareGarage setpos _centerPos; -BIS_fnc_garage_center = createvehicle ["Land_HelipadEmpty_F",_centerPos,[],0,"none"]; -BIS_fnc_garage_center setpos _centerPos; -BIS_fnc_garage_center enablesimulation false; - -player addeventhandler [ - "animchanged", - { - _unit = _this select 0; - _anim = _this select 1; - _animSplit = [_anim,"_"] call bis_fnc_splitstring; - if ("salute" in _animSplit) then { - { - _x playaction "salute"; - } foreach ((position _unit nearobjects ["man",10]) - [player]); - }; - } -]; - -disableserialization; -"init" call bis_fnc_endloadingscreen; -bis_typeLast = 0; - -[ - missionnamespace, - "arsenalOpened", - { - _this call arsenal_fnc_opened; - bis_typeLast = 0; - } -] call bis_fnc_addscriptedeventhandler; -[ - missionnamespace, - "arsenalClosed", - { - _this call arsenal_fnc_closed; - } -] call bis_fnc_addscriptedeventhandler; -[ - missionnamespace, - "garageOpened", - { - _this call arsenal_fnc_opened; - bis_typeLast = 1; - } -] call bis_fnc_addscriptedeventhandler; -[ - missionnamespace, - "garageClosed", - { - _this call arsenal_fnc_closed; - } -] call bis_fnc_addscriptedeventhandler; - - - -//--- Open Arsenal -bis_fnc_arsenal_fullArsenal = true; -bis_fnc_arsenal_fullGarage = true; -if ((uinamespace getvariable ["bis_fnc_arsenal_typeDefault",0]) > 0) then { - ["Open",true] spawn bis_fnc_garage; -} else { - ["Open",true] spawn bis_fnc_arsenal; -}; -uinamespace setvariable ["bis_fnc_arsenal_typeDefault",nil]; -["#(argb,8,8,3)color(0,0,0,1)",false,nil,0.1,[0,0.5]] spawn bis_fnc_textTiles; - -//--- Target markers -[] spawn { - _targets = []; - { - _targets pushback vehiclevarname _x; - _var = vehiclevarname _x; - _marker = createmarker [_var,position _x]; - _marker setmarkertype "mil_dot"; - _marker setmarkercolor "colororange"; - } foreach (allmissionobjects "man") - [player]; - while {true} do { - { - _t = missionnamespace getvariable _x; - (vehiclevarname _t) setmarkerpos position _t; - } foreach _targets; - sleep 0.1; - }; -}; \ No newline at end of file diff --git a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf new file mode 100644 index 0000000000..4216469a69 --- /dev/null +++ b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf @@ -0,0 +1,137 @@ +#include "script_component.hpp" + +params ["_unit"]; + +_unit allowDamage false; + +/* +//--- Static targets in various distance +{ + _pos = [_unit,_x,180 + _foreachindex] call bis_fnc_relpos; + [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; +} foreach [10,20,30,40,50,100,500,1000,2000]; + +//--- Target line +_pos = [_unit,20,90] call bis_fnc_relpos; +for "_i" from 0 to 5 do { + _iPos = [(_pos select 0),(_pos select 1) - 3 + _i,0]; + [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; +}; + +//--- Target cluster +_pos = [_unit,20,-90] call bis_fnc_relpos; +for "_i" from 0 to 8 do { + _index = floor (_i / 3); + _iPos = [ + (_pos select 0) + _index * 1.5, + (_pos select 1) + 1.5 + (_i % 3), + 0 + ]; + _target = [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; + + _target switchmove (["aidlpercmstpslowwrfldnon","aidlpknlmstpslowwrfldnon_ai","aidlppnemstpsraswrfldnon_ai"] select _index); + _target setunitpos (["up","middle","down"] select _index); +}; + +//--- Target patrol +_grp = creategroup east; +{ + _wp = _grp addwaypoint [[_unit,10,_x] call bis_fnc_relpos,0]; + if (_foreachindex == 4) then {_wp setwaypointtype "cycle";}; +} foreach [0,90,180,270,0]; + +_pos = [_unit,10,0] call bis_fnc_relpos; +for "_i" from 0 to 1 do { + _target = [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; + [_target] join _grp; + _target stop false; + _target enableai "move"; + _target setspeedmode "limited"; +}; + +//--- Armored vehicles +_vehicles = []; +if (isclass (configfile >> "cfgvehicles" >> "Land_VR_Target_MRAP_01_F")) then { + _step = 15; + _posCenter = [position _unit select 0,(position _unit select 1) + 30,0]; + { + _row = _foreachindex; + _rowCount = (count _x - 1) * 0.5; + { + _pos = [ + (_posCenter select 0) + (-_rowCount + _foreachindex) * _step, + (_posCenter select 1) + _row * _step, + 0 + ]; + _veh = createvehicle [_x,_pos,[],0,"none"]; + _veh setpos _pos; + _veh setdir 180; + _veh setvelocity [0,0,-1]; + [_veh] call bis_fnc_VRHitpart; + _marker = _veh call bis_fnc_boundingboxmarker; + _marker setmarkercolor "colororange"; + _vehicles pushback _veh; + } foreach _x; + } foreach [ + [ + "Land_VR_Target_MRAP_01_F", + "Land_VR_Target_APC_Wheeled_01_F", + "Land_VR_Target_MBT_01_cannon_F" + ], + [ + "Land_VR_Target_MRAP_01_F", + "Land_VR_Target_APC_Wheeled_01_F", + "Land_VR_Target_MBT_01_cannon_F" + ] + ]; +}; +_vehicles spawn { + waituntil { + _allDisabled = true; + { + _hitalive = _x getvariable ["bis_fnc_VRHitParts_hitalive",[]]; + _allDisabled = _allDisabled && ({!_x} count _hitalive >= 2); + sleep 0.1; + } foreach _this; + _allDisabled + }; + setstatvalue ["MarkMassVirtualDestruction",1]; +}; + +//--- Cover objects +_coverObjects = [ + "Land_VR_CoverObject_01_kneel_F", + "Land_VR_CoverObject_01_kneelHigh_F", + "Land_VR_CoverObject_01_kneelLow_F", + "Land_VR_CoverObject_01_stand_F", + "Land_VR_CoverObject_01_standHigh_F" +]; +_dis = 3; +for "_i" from 5 to 11 do { + _dir = _i * 45; + _pos = [position _unit,(abs sin _dir + abs cos _dir) * _dis,_dir] call bis_fnc_relpos; + _block = createvehicle [_coverObjects select (_i % count _coverObjects),_pos,[],0,"none"]; + _block setpos _pos; +}; + +//--- Starting point +_square = createvehicle ["VR_Area_01_square_1x1_grey_F",position _unit,[],0,"none"]; +_square setpos position _unit; +_marker = createmarker ["bis_start",position _unit]; +_marker setmarkertype "mil_start"; + +//--- Garage position +_centerPos = [_unit,[16,16,0] vectorDistance [0,0,0],135] call bis_fnc_relpos; +_squareGarage = createvehicle ["VR_Area_01_square_4x4_grey_F",_centerPos,[],0,"none"]; +_squareGarage setpos _centerPos; +BIS_fnc_garage_center = createvehicle ["Land_HelipadEmpty_F",_centerPos,[],0,"none"]; +BIS_fnc_garage_center setpos _centerPos; +BIS_fnc_garage_center enablesimulation false; + +*/ + +[_unit, true, false] call FUNC(initBox); + +[{!isNull findDisplay 46}, { + [player, player, true] call FUNC(openBox); +}] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/arsenal/missions/Arsenal.VR/script_component.hpp b/addons/arsenal/missions/Arsenal.VR/script_component.hpp index 45c75ef68b..83467c1293 100644 --- a/addons/arsenal/missions/Arsenal.VR/script_component.hpp +++ b/addons/arsenal/missions/Arsenal.VR/script_component.hpp @@ -1 +1,3 @@ #include "\z\ace\addons\arsenal\script_component.hpp" + +#define PREP(var) FUNC(var) = compileFinal preprocessFileLineNumbers format ["fnc_%1.sqf", QUOTE(var)] From 774aca4a1d3707f2d468ce06816390f3ec24c245 Mon Sep 17 00:00:00 2001 From: bux Date: Fri, 22 Dec 2017 18:00:07 +0100 Subject: [PATCH 08/31] use pixel drawn ace logo instead of antialiased --- .../data/buttonMissionMainMenuHover_ca.paa | Bin 5586 -> 5586 bytes .../arsenal/data/buttonMissionMainMenu_ca.paa | Bin 5586 -> 5586 bytes .../buttonMissionMainMenuHover_ca.psd | Bin 1077166 -> 1077898 bytes .../buttonMissionMainMenu_ca.psd | Bin 1076936 -> 1077776 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa b/addons/arsenal/data/buttonMissionMainMenuHover_ca.paa index 93c28dab94379c8b8f0565fdd86b3ac258785ee6..5592939ea85c4a9e7bd9b55c513f0163520a2863 100644 GIT binary patch literal 5586 zcmeHLv1-FG5Pbm)I%=rr1Tv*__u3TVsf5zH^fQ{NTWE%E{e_Gf@(CI82U$zVlHcf1 zgL@|pI#FjRO$>$;*!XeiB)#|UY;5YH$RBTur#t~rRh7rj`5oh$2FD-9<4H#Ng|1f% z%r1fVl)#_I8wP--#C|3(z)y;m5AOr@gVuxg1MP>}58LU7v`T4A@EhUO+6e!O%ld4Z zFXO{CN|YfVVUvjUd?dsbd)@iYJf52mC%@3c$sg%&j1l^|ZKXjkH$RHgccF+o{l)j) zaGeO>eAT19~z zl0gH50t15p&|rv8kOd&tD1S6OAn9NMM{!+SKmNAu%o z`9rVz1`^T^z%c*@7NlmvXfZUjiy;F zX@<3q$i--zVdGU~K8MrZy~uq1E8@TiA3pvkFa8u5I2afh=@<+lOM#&dZ@vEiZ?YE1 n-%Gz}m^1~LDvb9C%K*&q2&W$z!~Z;VlHes%w-u7Y~) zzt0QvR5$q%zq|EY^cKBY0r&n&9wZO{kq1Tp05I?|Olc1MuffGqxLt^!^!06Hf5V^QDN-*)~fj(~&Cwt=q~dwMNh?A~83 ne>-lwj9vRbz5!)m``HIDBTi^5RLw_u-)Vf_(=t{o1KWN84C*p& literal 5586 zcmeI0u}i~16vm%Tg^U?0I5?!Z)IY)Ps?ZK1Li8j<5pmQ-T*So&u^=ukP7bAZDlLL* zbrC^FC+k?mMMt-|#dirWcOBcI5O@b6{PHfjd*6MzJ8m|rR?Azf)$MW~07|8$g#Gfm z;s}e1Z&oTB0{IZHV+Y{00MM927`p`E0yy~L(Kne{4^sj5gQ>&+~|> z*UY3ua-WtS!w}oM_tWujhDAHLYK)A(@3(T)A9WuLx&iSp?0QhErR$S=F6wnb@%Ao& zWy#bJi+uoZM>Azj^_dd|SPyan>!B22Kd>K61+wl3foA}aPi^hS7FVYYNs`RT*-KXR zIC;Zuojfa1fB#+-2OZ*@k2wBA{B@!DV2wEI Garp;Hax(P* diff --git a/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenuHover_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenuHover_ca.psd index f4ed5f879a93375cd3f9dda6e71dff5a1516c386..daf66f137824aa17cb4324b72038a16e2eb93a2a 100644 GIT binary patch delta 1455 zcma)*e@qi+7{{OET3P|EW(os?3Ii69W9_x21>;)Wn8Sd>h!t5B+UqrOP#`))mqE?U zwuA(to?#}F#o_pa3|QvPH7v3&OBOd{CbN?a2S}JxevL)~1$!&Er)OC*nSC^fur@2znv>fxFklzt020P8zjf|dB>u4RN zcj#Cu$6;hCTB9}?jjY3{Wpw;|@}K3;q~!J~UjBD}Z*-@Yf9JDQ!ay2#6%@%LAoM6D zi$=<+rJanxN7_@;J`xD@QQXZA1HUHkswy=`D#nD0+V=wQqW7XL_1u@B1tIr?RTa=*jBJt0x*dem7mrANQ1boMV4H9G&a( zzJGpfzL$L>4Kh%CpcLzO@=GYjsx?a2dfXZagm z^Vy6*PfO10&uw@&`GE*r+x|pX`W@E~3wtK|UQk6>@9bSXwaMQ2tDxO{yf3r$QPps- zpKmA>w)o1Qc!Z;+0rz};cSHHaZ+#g(SDG7Rw_n;jy+htpIbG*>57ZRTT@>NY&TF3O zrQ35SvYJyaJPwkRs_C-F8N*(B>8A?*FUy>7VAwbR)h*%ZVC9Q!Y`~=XG?*|xIq`hm z;lratLVD`mKyTbVf~w0OXidP-lN|;d7QY&49 z;;KSBe!-KqRZL;%Q>M^1#;B*YG-cJW28yxjtdz~l=1>}g&8W6(Y%FW1d1u)Nq>Ba{ zFkl2d(4a*qu!06yFkr-BtV1Z&STUD_kp?R^)T_acu?@2(ZVPd|@>AP{2sfI#R6btyrHOZjxo;*2LCd@~Wo4}VMhm3|49L?3E!z-s+z z*e?<8OIzu~{b@j$Rvi$J10=$Y@hg3JKs<08ozyek!!xY&L)J+k5eSLM5IGWwC=eyG W28lwVkr-qxvJO$XS?BtKh<^YDsUn~N delta 1004 zcma))X-pGA6vt<~v_(-N@Byz6f?zyY>~444tx=#TDq0l~t)ODI-K{1zwuq>SAw@_u zo~RoHF%}z-MuX?7h$di+iit{0j2A>S8WBP~p$I6&x2yP>nfzw{Gw(ldvioN5NAtzE z=0h>q-7B#(aVJN>HiF@4oq?ll zq{%@_CF&;iu$*G1HtB!b_<+em~4l_q8QXJCwqO-)}CqEbQ{Wkkx3PSH4q zVSm@eKL-Z0MygNg2#*g{jHBcLz7qyHR18c43A3C57o^7-i7LP<|}sk4Ps z-mPi7UU$*wEvpNbF0Kg-TnH3Zr$t3|en}E64;$MDGJB6k)lSV^cjj7TWAnP6vbL7% z@pDoaS9J`cJhJ~l<%bEU1C!@3uWJ7Bgz49H)jlsQjcMvW-WR;@x30ZkYpRUBomRG^ z@@2%Es}JfMi=r!vBF8u6t5V*cZ@-&$RsC&W(z3y)Vr$lT&$4mW-plQQEsMTwOmJn@ zT=t%yJ`mHgp`q`RwX4(R`~80A(tclHpP$p8wFi2FO*N(izE_sS?$$M*^e+NGgPvz= zH>Xc~e``T+-N3P}@g=_})IaENO_(z~>_o?*zF!NP-`x1>>T0dHQpj|BtMe8<5|aJu zrtrl4l6Sd3X;Wm&>d!mM?;SaLI5u%lw9h~I8cE)pT5PCpV)2TDp=0ME6g?H;;(qHy ziCW2GYD4Aeg2|H0n*Uc?M3;4vsLmlZq43AUvc-&*M)A?D6j91Kl?>i(tCb37I4wLB zWV_pGx5$-=vr#O|7>zcLM(I!8KK({ zfgFfNBh)YW46e6HosNfE v@w+QwSf5&IcJDU3F+c_2KnS1)G=LTe1x5fPfiPecFd7&Ggx8wg5$UQwrL$IB diff --git a/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenu_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMissionMainMenu_ca.psd index 9233768f5d3da5c2589d6c9c5f15c4dadf2f92c8..0ca6d87d23f695f913deb4f2a2f33e9b7908e9c7 100644 GIT binary patch delta 1593 zcma)53rt&87(TZxPzs}%ZD4sgz!pRB;%#pmZeaprL#)_rGRhc&&?lO)4ILo5;GHgU zOEwAivWG#2*$C00F6>Ik&>+ds`5c?Fjq!}bX@C*jTv_b3UjKWc+e~V*bMpP?e|-P> zPH)foW@26Quj`ryCn2y_ZItNZV^;XY5|3Cc<7$hA*2 zY_Bn!Gfd2YVikK$)*YmNkT#}Qk>%H7|5kiRvMnbxm_{m|TOyuYE?O{Rju0am27|fW zk;fL~oK|W=#ZtIXl70jR1MC4LfD5b8BYlTW+LR`tYs>RzExzo`$2up5|7aW5rkv)q zszvv;(V6<)XYu-#FZcT1`rOM>cd~uk{?UQZ!y}VVyN-Qg>HV`=t?2JM(NriKtdO6{<}cjpaGNwKYPabbliFSA zHmO_uiH(*^Uw*B$%$8S>>GgRfs-uh3|9sCCOcXShRaGvG^&HA}p5k0n>;D?!>b7{l z^&B|vtDH5K7f-e^Pwm)T8a)2pk1q4B)a|P?FTT3b^TN=@?#tx-BRsl&=+ioNi^oUL z-I?#w&5sS=%(}Am)Qz6HHJ4&<+^##zMNVy=ZuGo9)#*#R-gacy(cgB*T-jegI`UIa z;*{y&wti+)VeXp~NrllH4oo&J@K+H#{#gj-|6iHeo*3qXqFQ+#qM$icL$|j-~8cOu;@`vPR6sH!#+%QEIK-P8kd?0w)QZ6?c$& zJx&?41nw~CZCa~^#`CZ?0uVF`SJ{SymtbSQD9*=7rpXcy_G3#T zCTGrDjwix*j6Wtm4p+k~H9(Ba$=w4BLOBWI!eCWVO!G@=Oy7$|EbfrVX$(c6hhPd; ziIiRt^n>Gh-iM?-;&~3Rh``*R;1I`qd5Ku|0wqBCKYR}md-06~CYKnOq%2n8qrVSsSJ P3P1!v*-KYPnk4@M9)wo_ delta 1028 zcma)(eMl2=7{`CN+osKGBO)cOR?NTh>~6d5HVa>h7*Y$ZwM=^9?l!fi&B$6r!$K;e zDC>GzMbhX+OH=C*dqD?9Or%;^&>K2L6VeJP7L}cgZckGn1V1F#(&d`&Mf6XgA<{WRRk^RZMfG&uJ#JEw zKxI)>7Ht;F@SJJgjE@;8BV)C)981tL1@xXqkDpK0> z*7nZPG11;u_qfJ8mh-UhV)*moPvd!APuhOHU%=lqWwtWhl`nC>Zee##cJ%K+yP^JK zepQEk*kWJTq92U!3NCx*y;`Dw6fG`h4mg?y+BzG+9A^Wu+9O}CDe zllSU^!^)mm!94r>iLTx^W8q*tFmig|#&0b>%YN!Gow~+pID75PlFZ|Ha;RPmZO~xT zFLmE}Dlr9aD|s%$g-%zR=-z0>RF`5vOc8}8iaUxHVL6uIChU^@ zJ_Y4#-Eh_WE6e${(w!S@jFBqgNs?e_GecM{w2k0s#zU|)XQMclW@+9nMm8VCt8Iuu zMns_!#KU`$h=80%W{3o`A`566C=O-@c|ftCIQT|El(Yno;NM}WE6Z8l<94ntazd64 z9VN&lds)HD4Ba+}Zs;Vy*#n)FLAI1kXi#RbBVjudW?0O_A|qnO(XFpl!Zq(oVaraZ z81*O;1-~!jzYbXw@g0l!FhBv|fD%vvY9Ikf1ZDslAPJZW%mQWu+V+S~m#_E-RKrq| From 6865c95f16abfe8f4f6ea3f2b0fcc43fb0062728 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 19:44:31 +0100 Subject: [PATCH 09/31] redo arsenal scripting --- .../missions/Arsenal.VR/XEH_postInit.sqf | 11 +- .../missions/Arsenal.VR/fnc_createTarget.sqf | 5 +- .../missions/Arsenal.VR/fnc_onPause.sqf | 14 +- .../missions/Arsenal.VR/initPlayerLocal.sqf | 143 +++++++++++------- 4 files changed, 102 insertions(+), 71 deletions(-) diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf index b689f75dcc..a4d11842fe 100644 --- a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -1,6 +1,7 @@ #include "script_component.hpp" enableSaving [false, false]; +cba_diagnostic_projectileMaxLines = 10; [QGVAR(displayOpened), { private _player = player; @@ -9,13 +10,13 @@ enableSaving [false, false]; [{ switch (true) do { case (primaryWeapon _this != ""): { - [_this, "amovpercmstpslowwrfldnon", 2] call EFUNC(common,doAnimation); + _this switchMove "amovpercmstpslowwrfldnon"; }; case (handgunWeapon _this != ""): { - [_this, "amovpercmstpslowwpstdnon", 2] call EFUNC(common,doAnimation); + _this switchMove "amovpercmstpslowwpstdnon"; }; default { - [_this, "amovpercmstpsnonwnondnon", 2] call EFUNC(common,doAnimation); + _this switchMove "amovpercmstpsnonwnondnon"; }; }; }, _player] call CBA_fnc_execNextFrame; @@ -24,7 +25,7 @@ enableSaving [false, false]; { _x enableSimulation false; _x hideObject true; - } forEach (entities [[], [], true] - [_player]); + } forEach (allMissionObjects "" - [_player]); _player call CBA_fnc_removeUnitTrackProjectiles; _player setFatigue 0; @@ -37,7 +38,7 @@ enableSaving [false, false]; { _x enableSimulation true; _x hideObject false; - } forEach entities [[], [], true]; + } forEach allMissionObjects ""; // update VR unit gear { diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf index 8dc97cb7f9..7f473a40ba 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf @@ -1,8 +1,9 @@ #include "script_component.hpp" private ["_pos","_side","_obj","_grp","_type","_target"]; -_pos = [_this,0,[],[[],objnull]] call bis_fnc_param; -_type = [_this,1,"B_Soldier_VR_F",["",objnull]] call bis_fnc_param; +//_pos = [_this,0,[],[[],objnull]] call bis_fnc_param; +//_type = [_this,1,"B_Soldier_VR_F",["",objnull]] call bis_fnc_param; +params ["_type", "_pos"]; _obj = _pos; _grp = grpnull; diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf index 7bdc46c243..06ef3b7fe8 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf @@ -4,13 +4,11 @@ params ["_display"]; private _ctrlButtonAbort = _display displayCtrl 104; _ctrlButtonAbort ctrlSetText localize LSTRING(Mission); -_ctrlButtonAbort ctrlSetEventHandler [ - "ButtonClick", { - params ["_control"]; - ctrlParent _control closeDisplay 2; - {[player, player, true] call FUNC(openBox)} call CBA_fnc_execNextFrame; - true - } call EFUNC(common,codeToString) -]; +_ctrlButtonAbort ctrlSetEventHandler ["ButtonClick", { + params ["_control"]; + ctrlParent _control closeDisplay 2; + {[player, player, true] call FUNC(openBox)} call CBA_fnc_execNextFrame; + true +} call EFUNC(common,codeToString)]; true diff --git a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf index 4216469a69..82afa46170 100644 --- a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf +++ b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf @@ -4,67 +4,73 @@ params ["_unit"]; _unit allowDamage false; -/* //--- Static targets in various distance { - _pos = [_unit,_x,180 + _foreachindex] call bis_fnc_relpos; - [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; -} foreach [10,20,30,40,50,100,500,1000,2000]; + private _position = _unit getRelPos [_x, _forEachIndex]; + ["O_Soldier_VR_F", _position] call FUNC(createTarget); +} forEach [10, 20, 30, 40, 50, 100, 500, 1000, 2000]; //--- Target line -_pos = [_unit,20,90] call bis_fnc_relpos; +private _position = _unit getRelPos [20, -90]; + for "_i" from 0 to 5 do { - _iPos = [(_pos select 0),(_pos select 1) - 3 + _i,0]; - [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; + private _position = _position vectorAdd [0, -3 + _i, 0]; + ["O_Soldier_VR_F", _position] call FUNC(createTarget); }; //--- Target cluster -_pos = [_unit,20,-90] call bis_fnc_relpos; -for "_i" from 0 to 8 do { - _index = floor (_i / 3); - _iPos = [ - (_pos select 0) + _index * 1.5, - (_pos select 1) + 1.5 + (_i % 3), - 0 - ]; - _target = [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; +_position = _unit getRelPos [20, 90]; - _target switchmove (["aidlpercmstpslowwrfldnon","aidlpknlmstpslowwrfldnon_ai","aidlppnemstpsraswrfldnon_ai"] select _index); - _target setunitpos (["up","middle","down"] select _index); +for "_i" from 0 to 8 do { + private _index = floor (_i / 3); + private _position = _position vectorAdd [_index * 1.5, 1.5 + (_i % 3), 0]; + + private _target = ["O_Soldier_VR_F", _position] call FUNC(createTarget); + + _target switchMove (["aidlpercmstpslowwrfldnon", "aidlpknlmstpslowwrfldnon_ai", "aidlppnemstpsraswrfldnon_ai"] select _index); + _target setUnitPos (["UP", "MIDDLE", "DOWN"] select _index); }; //--- Target patrol -_grp = creategroup east; -{ - _wp = _grp addwaypoint [[_unit,10,_x] call bis_fnc_relpos,0]; - if (_foreachindex == 4) then {_wp setwaypointtype "cycle";}; -} foreach [0,90,180,270,0]; +private _group = createGroup east; + +{ + private _position = _unit getRelPos [10, _x]; + private _waypoint = _group addWaypoint [_position, 0]; + + if (_forEachIndex == 4) then { + _waypoint setWaypointType "CYCLE"; + }; +} forEach [0, 90, 180, 270, 0]; + +_position = _unit getRelPos [10, 180]; -_pos = [_unit,10,0] call bis_fnc_relpos; for "_i" from 0 to 1 do { - _target = [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget; - [_target] join _grp; + private _target = ["O_Soldier_VR_F", _position] call FUNC(createTarget); + + [_target] join _group; _target stop false; - _target enableai "move"; - _target setspeedmode "limited"; + _target enableAI "MOVE"; + _target setSpeedMode "LIMITED"; }; +/* //--- Armored vehicles _vehicles = []; if (isclass (configfile >> "cfgvehicles" >> "Land_VR_Target_MRAP_01_F")) then { _step = 15; - _posCenter = [position _unit select 0,(position _unit select 1) + 30,0]; + _positionCenter = [position _unit select 0,(position _unit select 1) + 30,0]; { _row = _foreachindex; _rowCount = (count _x - 1) * 0.5; { - _pos = [ - (_posCenter select 0) + (-_rowCount + _foreachindex) * _step, - (_posCenter select 1) + _row * _step, + _position = [ + (_positionCenter select 0) + (-_rowCount + _foreachindex) * _step, + (_positionCenter select 1) + _row * _step, 0 ]; - _veh = createvehicle [_x,_pos,[],0,"none"]; - _veh setpos _pos; + _veh = createvehicle [_x,_position,[],0,"none"]; + _veh setpos _position; _veh setdir 180; _veh setvelocity [0,0,-1]; [_veh] call bis_fnc_VRHitpart; @@ -96,42 +102,67 @@ _vehicles spawn { _allDisabled }; setstatvalue ["MarkMassVirtualDestruction",1]; -}; +};*/ //--- Cover objects -_coverObjects = [ +private _coverObjects = [ "Land_VR_CoverObject_01_kneel_F", "Land_VR_CoverObject_01_kneelHigh_F", "Land_VR_CoverObject_01_kneelLow_F", "Land_VR_CoverObject_01_stand_F", "Land_VR_CoverObject_01_standHigh_F" ]; -_dis = 3; + for "_i" from 5 to 11 do { - _dir = _i * 45; - _pos = [position _unit,(abs sin _dir + abs cos _dir) * _dis,_dir] call bis_fnc_relpos; - _block = createvehicle [_coverObjects select (_i % count _coverObjects),_pos,[],0,"none"]; - _block setpos _pos; + private _direction = 180 + _i * 45; + private _position = _unit getRelPos [(abs sin _direction + abs cos _direction) * 3, _direction]; + private _block = createVehicle [_coverObjects select (_i % count _coverObjects), _position, [], 0, "NONE"]; + _block setPos _position; }; //--- Starting point -_square = createvehicle ["VR_Area_01_square_1x1_grey_F",position _unit,[],0,"none"]; -_square setpos position _unit; -_marker = createmarker ["bis_start",position _unit]; -_marker setmarkertype "mil_start"; +private _square = createVehicle ["VR_Area_01_square_1x1_grey_F", position _unit, [], 0, "NONE"]; +_square setPosASL getPosASL _unit; -//--- Garage position -_centerPos = [_unit,[16,16,0] vectorDistance [0,0,0],135] call bis_fnc_relpos; -_squareGarage = createvehicle ["VR_Area_01_square_4x4_grey_F",_centerPos,[],0,"none"]; -_squareGarage setpos _centerPos; -BIS_fnc_garage_center = createvehicle ["Land_HelipadEmpty_F",_centerPos,[],0,"none"]; -BIS_fnc_garage_center setpos _centerPos; -BIS_fnc_garage_center enablesimulation false; - -*/ +private _marker = createMarker [QGVAR(start), getPosWorld _unit]; +_marker setMarkerType "mil_start"; +//--- Open Arsenal [_unit, true, false] call FUNC(initBox); [{!isNull findDisplay 46}, { - [player, player, true] call FUNC(openBox); -}] call CBA_fnc_waitUntilAndExecute; + [_this, _this, true] call FUNC(openBox); +}, _unit] call CBA_fnc_waitUntilAndExecute; + +//--- Salute +_unit addEventHandler ["AnimChanged", { + params ["_unit", "_anim"]; + _anim = _anim splitString "_"; + + if ("salute" in _anim) then { + { + _x playAction "salute"; + } forEach ((_unit nearObjects ["CAManBase", 10]) - [_unit]); + }; +}]; + +["#(argb,8,8,3)color(0,0,0,1)", false, nil, 0.1, [0,0.5]] spawn BIS_fnc_textTiles; + +//--- Target markers +/*[] spawn { + _targets = []; + { + _targets pushback vehiclevarname _x; + _var = vehiclevarname _x; + _marker = createmarker [_var,position _x]; + _marker setmarkertype "mil_dot"; + _marker setmarkercolor "colororange"; + } foreach (allmissionobjects "man") - [player]; + while {true} do { + { + _t = missionnamespace getvariable _x; + (vehiclevarname _t) setmarkerpos position _t; + } foreach _targets; + sleep 0.1; + }; +}; From e3c94821a25b22705c0a9a4d4a2e90142ce57427 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 20:26:25 +0100 Subject: [PATCH 10/31] ace version of createUnit --- .../missions/Arsenal.VR/fnc_createTarget.sqf | 95 ++++++++++--------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf index 7f473a40ba..ee1dadfaa9 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf @@ -1,57 +1,58 @@ #include "script_component.hpp" -private ["_pos","_side","_obj","_grp","_type","_target"]; -//_pos = [_this,0,[],[[],objnull]] call bis_fnc_param; -//_type = [_this,1,"B_Soldier_VR_F",["",objnull]] call bis_fnc_param; -params ["_type", "_pos"]; +params ["_type", "_position", ["_group", grpNull], "_varName"]; +private _player = player; -_obj = _pos; -_grp = grpnull; -_var = ""; - -if (typename _obj == typename objnull) then { - _grp = group _obj; - _type = typeof _obj; - _pos = _obj getvariable ["pos",position objnull]; - _var = _obj getvariable ["var",""]; - [_obj,true] call bis_fnc_VREffectKilled; -} else { - _grp = creategroup east; +if (isNull _group) then { + _group = creategroup east; }; -if (_var == "") then {_var = "t" + str round random 999999;}; -_target = _grp createunit [_type,[10,10,0],[],0,"none"]; -if !(isnull (missionnamespace getvariable ["BIS_fnc_arsenal_target",objnull])) then {_target hideobject true}; -_target setpos _pos; -_target setdir ([_pos,player] call bis_fnc_dirto); -_target dowatch position player; -_target addrating -10e10; -_target setunitpos "up"; -_target setbehaviour "careless"; -_target setcombatmode "blue"; -_target setspeedmode "limited"; -_target disableai "target"; -_target disableai "autotarget"; -_target allowfleeing 0; -_target setspeaker "base"; -_target spawn {_this setspeaker "base";}; -player reveal [_target,4]; +private _target = _group createUnit [_type, [10,10,0], [], 0, "NONE"]; -_target addvest vest player; -_target addbackpack backpack player; -_target addheadgear headgear player; -_target addgoggles goggles player; -_target addweapon primaryweapon player; -_target addweapon secondaryweapon player; -_target addweapon handgunweapon player; +if (isNil "_varName") then { + _varName = _target call BIS_fnc_netId; +}; -_target setvehiclevarname _var; -missionnamespace setvariable [_var,_target]; +_target setPos _position; +_target setDir (_position getDir _player); +_target doWatch position _player; +_target addRating -10e10; +_target setUnitPos "UP"; +_target setBehaviour "CARELESS"; +_target setCombatMode "BLUE"; +_target setSpeedMode "LIMITED"; +_target disableAI "TARGET"; +_target disableAI "AUTOTARGET"; +_target allowFleeing 0; +_target setSpeaker "BASE"; +[{_this setSpeaker "BASE"}, _target] call CBA_fnc_execNextFrame; +_player reveal [_target, 4]; -_target switchmove "amovpercmstpslowwrfldnon"; -_target setvariable ["pos",_pos]; -_target setvariable ["var",_var]; -_target addeventhandler ["killed", FUNC(createTarget)]; -[_target] call bis_fnc_VRHitpart; +_target addVest vest _player; +_target addBackpack backpack _player; +_target addHeadgear headgear _player; +_target addGoggles goggles _player; +_target addWeapon primaryWeapon _player; +_target addWeapon secondaryWeapon _player; +_target addWeapon handgunWeapon _player; +_target setVehicleVarName _varName; +missionNamespace setvariable [_varName, _target]; + +_target switchMove "amovpercmstpslowwrfldnon"; +_target setVariable ["origin", _position]; + +_target addEventHandler ["killed", { + params ["_target"]; + private _position = _target getVariable ["origin", position _target]; + private _varName = vehicleVarName _target; + + [_target, true] spawn BIS_fnc_VREffectKilled; + + [{isNull (_this select 0)}, { + (_this select 1) call FUNC(createTarget); + }, [_target, [typeOf _target, _position, group _target, _varName]]] call CBA_fnc_waitUntilAndExecute; +}]; + +_target call BIS_fnc_VRHitpart; _target From 96f37918559a2029fd8a96d241922f3eae339279 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 21:41:13 +0100 Subject: [PATCH 11/31] final code conversions, esc to exit --- .../missions/Arsenal.VR/XEH_postInit.sqf | 31 +++++ .../missions/Arsenal.VR/fnc_onPause.sqf | 2 + .../missions/Arsenal.VR/initPlayerLocal.sqf | 109 +++++++++--------- addons/arsenal/stringtable.xml | 14 ++- 4 files changed, 96 insertions(+), 60 deletions(-) diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf index a4d11842fe..84478b8fdd 100644 --- a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -1,4 +1,6 @@ #include "script_component.hpp" +#include "\z\ace\addons\arsenal\defines.hpp" +#include "\a3\ui_f\hpp\defineDIKCodes.inc" enableSaving [false, false]; cba_diagnostic_projectileMaxLines = 10; @@ -29,6 +31,35 @@ cba_diagnostic_projectileMaxLines = 10; _player call CBA_fnc_removeUnitTrackProjectiles; _player setFatigue 0; + + // Esc to close mission + { + private _display = findDisplay IDD_ace_arsenal; + + _display displayAddEventHandler ["KeyDown", { + params ["_display", "_key", "_shift"]; + + if (_key isEqualTo DIK_ESCAPE && {!_shift}) then { + [_display] spawn { + disableSerialization; + params ["_display"]; + + private _return = [ + localize "str_a3_rscdisplaymain_buttonexit", + localize "str_sure", + true, false, + _display, false, true + ] call BIS_fnc_GUImessage; + + if (_return) then { + _display closeDisplay 2; + findDisplay 46 closeDisplay 0; + }; + }; + true + }; + }]; + } call CBA_fnc_execNextFrame; }] call CBA_fnc_addEventHandler; [QGVAR(displayClosed), { diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf index 06ef3b7fe8..25e49405bf 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_onPause.sqf @@ -4,6 +4,8 @@ params ["_display"]; private _ctrlButtonAbort = _display displayCtrl 104; _ctrlButtonAbort ctrlSetText localize LSTRING(Mission); +_ctrlButtonAbort ctrlSetTooltip localize LSTRING(ReturnToArsenal); + _ctrlButtonAbort ctrlSetEventHandler ["ButtonClick", { params ["_control"]; ctrlParent _control closeDisplay 2; diff --git a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf index 82afa46170..557a69b0a2 100644 --- a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf +++ b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf @@ -54,55 +54,54 @@ for "_i" from 0 to 1 do { _target setSpeedMode "LIMITED"; }; -/* //--- Armored vehicles -_vehicles = []; -if (isclass (configfile >> "cfgvehicles" >> "Land_VR_Target_MRAP_01_F")) then { - _step = 15; - _positionCenter = [position _unit select 0,(position _unit select 1) + 30,0]; +private _vehicles = []; + +private _step = 15; +_position = [position _unit select 0,(position _unit select 1) + 30,0]; + +{ + private _row = _forEachIndex; + private _rowCount = (count _x - 1) * 0.5; + { - _row = _foreachindex; - _rowCount = (count _x - 1) * 0.5; - { - _position = [ - (_positionCenter select 0) + (-_rowCount + _foreachindex) * _step, - (_positionCenter select 1) + _row * _step, - 0 - ]; - _veh = createvehicle [_x,_position,[],0,"none"]; - _veh setpos _position; - _veh setdir 180; - _veh setvelocity [0,0,-1]; - [_veh] call bis_fnc_VRHitpart; - _marker = _veh call bis_fnc_boundingboxmarker; - _marker setmarkercolor "colororange"; - _vehicles pushback _veh; - } foreach _x; - } foreach [ - [ - "Land_VR_Target_MRAP_01_F", - "Land_VR_Target_APC_Wheeled_01_F", - "Land_VR_Target_MBT_01_cannon_F" - ], - [ - "Land_VR_Target_MRAP_01_F", - "Land_VR_Target_APC_Wheeled_01_F", - "Land_VR_Target_MBT_01_cannon_F" - ] - ]; -}; + private _position = _position vectorAdd [(-_rowCount + _forEachIndex) * _step, _row * _step, 0]; + + private _vehicle = createVehicle [_x, _position, [], 0, "NONE"]; + _vehicle setPos _position; + _vehicle setDir 180; + _vehicle setVelocity [0,0,-1]; + _vehicle call BIS_fnc_VRHitpart; + + private _marker = _vehicle call BIS_fnc_boundingBoxMarker; + _marker setMarkerColor "ColorOrange"; + _vehicles pushBack _vehicle; + } forEach _x; +} forEach [[ + "Land_VR_Target_MRAP_01_F", + "Land_VR_Target_APC_Wheeled_01_F", + "Land_VR_Target_MBT_01_cannon_F" +], [ + "Land_VR_Target_MRAP_01_F", + "Land_VR_Target_APC_Wheeled_01_F", + "Land_VR_Target_MBT_01_cannon_F" +]]; + _vehicles spawn { waituntil { - _allDisabled = true; + private _allDisabled = true; + { - _hitalive = _x getvariable ["bis_fnc_VRHitParts_hitalive",[]]; - _allDisabled = _allDisabled && ({!_x} count _hitalive >= 2); + _hitAlive = _x getVariable ["bis_fnc_VRHitParts_hitalive", []]; + _allDisabled = _allDisabled && ({!_x} count _hitAlive >= 2); sleep 0.1; - } foreach _this; + } forEach _this; + _allDisabled }; - setstatvalue ["MarkMassVirtualDestruction",1]; -};*/ + + setStatValue ["MarkMassVirtualDestruction", 1]; +}; //--- Cover objects private _coverObjects = [ @@ -149,20 +148,22 @@ _unit addEventHandler ["AnimChanged", { ["#(argb,8,8,3)color(0,0,0,1)", false, nil, 0.1, [0,0.5]] spawn BIS_fnc_textTiles; //--- Target markers -/*[] spawn { - _targets = []; - { - _targets pushback vehiclevarname _x; - _var = vehiclevarname _x; - _marker = createmarker [_var,position _x]; - _marker setmarkertype "mil_dot"; - _marker setmarkercolor "colororange"; - } foreach (allmissionobjects "man") - [player]; - while {true} do { +private _markers = []; + +{ + private _marker = createMarker [vehicleVarName _x, position _x]; + _marker setMarkerType "mil_dot"; + _marker setMarkerColor "ColorOrange"; + + _markers pushBack _marker; +} forEach (allMissionObjects "CAManBase" - [_unit]); + +_markers spawn { + while {true} do { { - _t = missionnamespace getvariable _x; - (vehiclevarname _t) setmarkerpos position _t; - } foreach _targets; + private _target = missionNamespace getVariable _x; + _x setMarkerPos position _target; + } forEach _this; sleep 0.1; }; }; diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 69468a66c7..8d035d0af6 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -434,16 +434,18 @@ ACE 武器庫を開けません - ACE Virtual Arsenal - ACE Virtuelles Arsenal + ACE Arsenal + ACE-Arsenal + + + Return to ACE Arsenal. + Zurück zum ACE-Arsenal. - View and try out different weapons, equipment and vehicles. - Sieh dir verschiedene Waffen, Ausrüstung und Fahrzeuge an und probiere sie aus. + Not as bad as the regular one. - View and try out different weapons, equipment and vehicles. - Sieh dir verschiedene Waffen, Ausrüstung und Fahrzeuge an und probiere sie aus. + Dress up simulator loading in progress... From f31eb52b08139015200dd0797e602b3affb435bc Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 22 Dec 2017 21:54:55 +0100 Subject: [PATCH 12/31] oops --- addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf index 84478b8fdd..534577e819 100644 --- a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -45,8 +45,8 @@ cba_diagnostic_projectileMaxLines = 10; params ["_display"]; private _return = [ - localize "str_a3_rscdisplaymain_buttonexit", localize "str_sure", + localize "str_a3_rscdisplaymain_buttonexit", true, false, _display, false, true ] call BIS_fnc_GUImessage; From 8e6e2b32836c55084450a3abb0e341524f6025c2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 22 Dec 2017 18:34:35 -0600 Subject: [PATCH 13/31] Ignore explosives placed without ace_explosives (#5962) --- addons/frag/functions/fnc_fired.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/frag/functions/fnc_fired.sqf b/addons/frag/functions/fnc_fired.sqf index b1e29a79ca..a9d13cde08 100644 --- a/addons/frag/functions/fnc_fired.sqf +++ b/addons/frag/functions/fnc_fired.sqf @@ -54,6 +54,7 @@ if (_shouldAdd) then { private _localShooter = if (isNil "_gunner") then {local _unit} else {local _gunner}; TRACE_4("",_localShooter,_unit,_ammo,_projectile); if (!_localShooter) exitWith {}; + if (_weapon == "Put") exitWith {}; // Ignore explosives placed without ace_explosives // Skip if less than 0.5 second from last shot if ((CBA_missionTime - (_unit getVariable [QGVAR(lastTrack), -1])) < 0.5) exitWith {}; From 12208b4ebe6ba7aeca991150e0072c374a9d36e2 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Sat, 23 Dec 2017 17:17:39 +0100 Subject: [PATCH 14/31] Fix some scaling issues in ACE Arsenal (#5959) * Fix various text not resizing properly on lower resolutions * fix spacing of arsenal the menu bar * Increase weight control width to avoid cutoff --- addons/arsenal/ui/RscAttributes.hpp | 39 ++++++++++++++++++----------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/addons/arsenal/ui/RscAttributes.hpp b/addons/arsenal/ui/RscAttributes.hpp index b1faccfd70..bf03041c47 100644 --- a/addons/arsenal/ui/RscAttributes.hpp +++ b/addons/arsenal/ui/RscAttributes.hpp @@ -130,7 +130,7 @@ class GVAR(display) { text = ECSTRING(common,Weight); x = 0; y = 0; - w = QUOTE(40 * GRID_W); + w = QUOTE(30 * GRID_W); h = QUOTE(8 * GRID_H); sizeEx = QUOTE(7 * GRID_H); }; @@ -138,9 +138,9 @@ class GVAR(display) { idc = IDC_totalWeightText; style = ST_RIGHT; text = ""; - x = QUOTE(40 * GRID_W); + x = QUOTE(30 * GRID_W); y = 0; - w = QUOTE(40 * GRID_W); + w = QUOTE(50 * GRID_W); h = QUOTE(8 * GRID_H); sizeEx = QUOTE(7 * GRID_H); }; @@ -159,51 +159,58 @@ class GVAR(display) { h = QUOTE(10 * GRID_H); sizeEx = QUOTE(5 * GRID_H); }; + + #define WIDTH_TOTAL (safezoneW - 2 * (93 * GRID_W)) + #define WIDTH_GAP (WIDTH_TOTAL / 100) + #define WIDTH_SINGLE ((WIDTH_TOTAL - 6 * WIDTH_GAP) / 5) + class menuBar: RscControlsGroupNoScrollbars { idc = IDC_menuBar; - x = QUOTE((safezoneX + safezoneW * 0.50) - (105 * GRID_W)); + x = QUOTE(0.5 - WIDTH_TOTAL / 2); y = QUOTE(safezoneH + safezoneY - 9 * GRID_H); - w = QUOTE(210 * GRID_W); + w = QUOTE(WIDTH_TOTAL); h = QUOTE(7 * GRID_H); class controls { class buttonHide: ctrlButton { idc = -1; colorBackground[] = {0,0,0,0.8}; - x = QUOTE(0 * GRID_W); + x = QUOTE(1 * WIDTH_GAP + 0 * WIDTH_SINGLE); y = QUOTE(0); - w = QUOTE(40 * GRID_W); + w = QUOTE(WIDTH_SINGLE); h = QUOTE(7 * GRID_H); text = CSTRING(buttonHideText); + sizeEx = QUOTE(5 * GRID_H); shortcuts[] = {"0x0E"}; tooltip = CSTRING(buttonHideTooltip); onButtonClick = QUOTE([ctrlparent (_this select 0)] call FUNC(buttonHide)); }; class buttonLoadouts: buttonHide { idc = -1; - x = QUOTE(42.5 * GRID_W); + x = QUOTE(2 * WIDTH_GAP + 1 * WIDTH_SINGLE); text = CSTRING(buttonLoadoutsText); onButtonClick = QUOTE(createDialog QQGVAR(loadoutsDisplay)); }; class buttonExport: buttonHide { idc = -1; - x = QUOTE(85 * GRID_W); + x = QUOTE(3 * WIDTH_GAP + 2 * WIDTH_SINGLE); text = CSTRING(buttonExportText); onButtonClick = QUOTE([ctrlparent (_this select 0)] call FUNC(buttonExport)); }; class buttonImport: buttonHide { idc = -1; - x = QUOTE(127.5 * GRID_W); + x = QUOTE(4 * WIDTH_GAP + 3 * WIDTH_SINGLE); text = CSTRING(buttonImportText); onButtonClick = QUOTE([ctrlparent (_this select 0)] call FUNC(buttonImport)); }; class buttonClose: ctrlButtonClose { idc = -1; colorBackground[] = {0,0,0,0.8}; - x = QUOTE(170 * GRID_W); + x = QUOTE(5 * WIDTH_GAP + 4 * WIDTH_SINGLE); y = QUOTE(0); - w = QUOTE(40 * GRID_W); + w = QUOTE(WIDTH_SINGLE); h = QUOTE(7 * GRID_H); text = CSTRING(buttonCloseText); + sizeEx = QUOTE(5 * GRID_H); shortcuts[]= {"0x01"}; onButtonClick = QUOTE(ctrlparent (_this select 0) closeDisplay 2); }; @@ -330,6 +337,7 @@ class GVAR(display) { w = QUOTE(80 * GRID_W); h = QUOTE(6 * GRID_H); onLBSelChanged = QUOTE(_this call FUNC(sortPanel)); + sizeEx = QUOTE(5 * GRID_H); class Items { class Alphabet { text="$STR_a3_rscdisplayarsenal_sort_alphabet"; @@ -760,6 +768,7 @@ class GVAR(loadoutsDisplay) { y = QUOTE(0); w = QUOTE(160 * GRID_W); h = QUOTE(5 * GRID_H); + sizeEx = QUOTE(5 * GRID_H); }; class contentPanel: RscListnBox { idc = IDC_contentPanel; @@ -781,6 +790,7 @@ class GVAR(loadoutsDisplay) { y = QUOTE(safezoneH - (51 * GRID_H)); w = QUOTE(15 * GRID_W); h = QUOTE(5 * GRID_H); + sizeEx = QUOTE(5 * GRID_H); colorBackground[]={0,0,0,0.2}; }; class textEditBox: ctrlEdit { @@ -798,6 +808,7 @@ class GVAR(loadoutsDisplay) { h = QUOTE(10 * GRID_H); text= CSTRING(buttonSaveText); tooltip= CSTRING(buttonSaveTooltip); + sizeEx = QUOTE(5 * GRID_H); onButtonClick = QUOTE([ARR_2(ctrlparent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsSave)); colorBackground[] = {0,0,0,0.8}; }; @@ -839,7 +850,7 @@ class GVAR(loadoutsDisplay) { y = QUOTE(safezoneH + safezoneY - 9 * GRID_H); w = QUOTE(30 * GRID_W); h = QUOTE(7 * GRID_H); - sizeEx = QUOTE(4 * GRID_H); + sizeEx = QUOTE(5 * GRID_H); text= CSTRING(buttonCloseText); shortcuts[]= {"0x01"}; tooltip= ""; @@ -867,7 +878,7 @@ class GVAR(loadoutsDisplay) { y = QUOTE(0 * GRID_H); w = QUOTE(52 * GRID_W); h = QUOTE(7 * GRID_H); - sizeEx = QUOTE(4 * GRID_H); + sizeEx = QUOTE(5 * GRID_H); text= CSTRING(tabMyLoadoutsText); tooltip= CSTRING(tabMyLoadoutsTooltip); onButtonClick = QUOTE([ARR_2(ctrlparent (_this select 0), _this select 0)] call FUNC(loadoutsChangeTab)); From 2d2bf2acd4bdee82ffcf0e672ab930d6c528a129 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 24 Dec 2017 20:07:33 +0100 Subject: [PATCH 15/31] save and restore last loadout --- addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf | 1 + addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf index 534577e819..84a84778a5 100644 --- a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -52,6 +52,7 @@ cba_diagnostic_projectileMaxLines = 10; ] call BIS_fnc_GUImessage; if (_return) then { + profileNamespace setVariable [QGVAR(missionLastLoadout), getUnitLoadout player]; _display closeDisplay 2; findDisplay 46 closeDisplay 0; }; diff --git a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf index 557a69b0a2..111202d04e 100644 --- a/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf +++ b/addons/arsenal/missions/Arsenal.VR/initPlayerLocal.sqf @@ -2,6 +2,12 @@ params ["_unit"]; +private _loadout = profileNamespace getVariable QGVAR(missionLastLoadout); + +if (!isNil "_loadout") then { + _unit setUnitLoadout _loadout; +}; + _unit allowDamage false; //--- Static targets in various distance From bb47249679f1f602e3d5caeddcb63f16b8885874 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 24 Dec 2017 20:09:34 +0100 Subject: [PATCH 16/31] make bots not talk --- addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf index ee1dadfaa9..0b4fdf81dd 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf @@ -24,8 +24,8 @@ _target setSpeedMode "LIMITED"; _target disableAI "TARGET"; _target disableAI "AUTOTARGET"; _target allowFleeing 0; -_target setSpeaker "BASE"; -[{_this setSpeaker "BASE"}, _target] call CBA_fnc_execNextFrame; +_target setSpeaker "NoVoice"; +[{_this setSpeaker "NoVoice"}, _target] call CBA_fnc_execNextFrame; _player reveal [_target, 4]; _target addVest vest _player; From 4fb556d7ac792ee7010d8e00bd21707e05657356 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 24 Dec 2017 20:27:33 +0100 Subject: [PATCH 17/31] make bots not talk --- .../arsenal/missions/Arsenal.VR/fnc_createTarget.sqf | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf index 0b4fdf81dd..d33d669ae1 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf @@ -24,8 +24,16 @@ _target setSpeedMode "LIMITED"; _target disableAI "TARGET"; _target disableAI "AUTOTARGET"; _target allowFleeing 0; -_target setSpeaker "NoVoice"; -[{_this setSpeaker "NoVoice"}, _target] call CBA_fnc_execNextFrame; +_target setSpeaker "Base"; + +[{ + params ["_target", "_time"]; + + if (speaker _target == "Base") exitWith {time > _time}; + _target setSpeaker "Base"; + false +}, {}, [_target, time + 1]] call CBA_fnc_waitUntilAndExecute; + _player reveal [_target, 4]; _target addVest vest _player; From 057cc8d6d58069f9fd913a31ce6570902f3cbf11 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 24 Dec 2017 20:41:13 +0100 Subject: [PATCH 18/31] rename 'close' to 'try' in arsenal --- addons/arsenal/defines.hpp | 3 ++- addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf | 3 +++ addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf | 6 +++--- addons/arsenal/ui/RscAttributes.hpp | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/arsenal/defines.hpp b/addons/arsenal/defines.hpp index 0f2b3ff62a..60b99a99f6 100644 --- a/addons/arsenal/defines.hpp +++ b/addons/arsenal/defines.hpp @@ -18,6 +18,7 @@ #define IDC_totalWeightText 801 #define IDC_message 9 #define IDC_menuBar 10 +#define IDC_menuBarClose 1001 #define IDC_infoBox 11 #define IDC_infoBackground 1101 #define IDC_infoName 1102 @@ -329,4 +330,4 @@ _buttonCurrentMag2Ctrl ctrlCommit FADE_DELAY;\ _contentPanelCtrl lnbSetPicture [[_newRow, 6], getText (configFile >> "cfgWeapons" >> ((_loadout select 4) select 0) >> "picture")];\ _contentPanelCtrl lnbSetPicture [[_newRow, 7], getText (configFile >> "cfgVehicles" >> ((_loadout select 5) select 0) >> "picture")];\ _contentPanelCtrl lnbSetPicture [[_newRow, 8], getText (configFile >> "cfgWeapons" >> (_loadout select 6) >> "picture")];\ - _contentPanelCtrl lnbSetPicture [[_newRow, 9], getText (configFile >> "cfgGlasses" >> (_loadout select 7) >> "picture")]; \ No newline at end of file + _contentPanelCtrl lnbSetPicture [[_newRow, 9], getText (configFile >> "cfgGlasses" >> (_loadout select 7) >> "picture")]; diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf index 84a84778a5..e9fde7c172 100644 --- a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -60,6 +60,9 @@ cba_diagnostic_projectileMaxLines = 10; true }; }]; + + private _buttonClose = _display displayCtrl IDC_menuBarClose; + _buttonClose ctrlSetText localize "str_a3_rscdisplayarsenal_buttonok"; } call CBA_fnc_execNextFrame; }] call CBA_fnc_addEventHandler; diff --git a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf index d33d669ae1..7ff1ea58e6 100644 --- a/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf +++ b/addons/arsenal/missions/Arsenal.VR/fnc_createTarget.sqf @@ -24,13 +24,13 @@ _target setSpeedMode "LIMITED"; _target disableAI "TARGET"; _target disableAI "AUTOTARGET"; _target allowFleeing 0; -_target setSpeaker "Base"; +_target setSpeaker "BASE"; [{ params ["_target", "_time"]; - if (speaker _target == "Base") exitWith {time > _time}; - _target setSpeaker "Base"; + if (speaker _target == "BASE") exitWith {time > _time}; + _target setSpeaker "BASE"; false }, {}, [_target, time + 1]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/arsenal/ui/RscAttributes.hpp b/addons/arsenal/ui/RscAttributes.hpp index b1faccfd70..14bee4f6a5 100644 --- a/addons/arsenal/ui/RscAttributes.hpp +++ b/addons/arsenal/ui/RscAttributes.hpp @@ -197,7 +197,7 @@ class GVAR(display) { onButtonClick = QUOTE([ctrlparent (_this select 0)] call FUNC(buttonImport)); }; class buttonClose: ctrlButtonClose { - idc = -1; + idc = IDC_menuBarClose; colorBackground[] = {0,0,0,0.8}; x = QUOTE(170 * GRID_W); y = QUOTE(0); From 0a85753a6a2803322a0e84e75cef9f37dc715821 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Wed, 27 Dec 2017 01:51:35 +0300 Subject: [PATCH 19/31] Fix debug info step in github issue template (#5977) Reflects changes with move to CBA Settings --- .github/ISSUE_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index a333dc08fe..b56ddb134a 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -22,4 +22,4 @@ **RPT log file:** - Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3). -- If possible at the time the bug is encountered, go to ACE Options and select "Debug To Clipboard", this will print extensive debug information to the RPT file. +- If possible at the time the bug is encountered, go to Options and select "ACE Debug To Clipboard", this will print extensive debug information to the RPT file and copy it to clipboard. From fe531d71f3756ded0de73ef66b94978576e41ddc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 26 Dec 2017 17:09:03 -0600 Subject: [PATCH 20/31] Scopes - Fix undefined enum types (#5969) --- addons/scopes/functions/fnc_adjustScope.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index f670fc1720..8c48ee654b 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -18,6 +18,7 @@ #include "script_component.hpp" params ["_unit", "_turretAndDirection", "_majorStep"]; +TRACE_3("adjustScope",_unit,_turretAndDirection,_majorStep); if (!(_unit isKindOf "Man")) exitWith {false}; if (currentMuzzle _unit != currentWeapon _unit) exitWith {false}; @@ -26,14 +27,16 @@ if (!GVAR(enabled)) exitWith {false}; private _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {false}; +TRACE_2("",GVAR(canAdjustElevation),GVAR(canAdjustWindage)); if (!(GVAR(canAdjustElevation) select _weaponIndex) && (_turretAndDirection in [ELEVATION_UP, ELEVATION_DOWN])) exitWith {false}; -if (!(GVAR(canAdjustWindage) select _weaponIndex) && (_turretAndDirection in [WINDAGE_UP, WINDAGE_DOWN])) exitWith {false}; +if (!(GVAR(canAdjustWindage) select _weaponIndex) && (_turretAndDirection in [WINDAGE_LEFT, WINDAGE_RIGHT])) exitWith {false}; private _adjustment = _unit getVariable [QGVAR(Adjustment), [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]; private _zeroing = _adjustment select _weaponIndex; _zeroing params ["_elevation", "_windage", "_zero"]; (GVAR(scopeAdjust) select _weaponIndex) params ["_maxVertical", "_verticalIncrement", "_maxHorizontal", "_horizontalIncrement"]; +TRACE_4("",_maxVertical,_verticalIncrement,_maxHorizontal,_horizontalIncrement); switch (_turretAndDirection) do { case ELEVATION_UP: { _elevation = _elevation + _verticalIncrement }; From 54320eb451795f87761b6ad69580a484e08517b2 Mon Sep 17 00:00:00 2001 From: Jo David Date: Wed, 27 Dec 2017 00:20:43 +0100 Subject: [PATCH 21/31] Fix(explosives): Selecting a cellphone as an IEDs trigger would throw an error (#5963) * move code var to outer scope * run closeDialog only for the player --- addons/explosives/functions/fnc_addCellphoneIED.sqf | 7 ++++++- addons/explosives/functions/fnc_onIncapacitated.sqf | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/explosives/functions/fnc_addCellphoneIED.sqf b/addons/explosives/functions/fnc_addCellphoneIED.sqf index beca3d3246..88da983be9 100644 --- a/addons/explosives/functions/fnc_addCellphoneIED.sqf +++ b/addons/explosives/functions/fnc_addCellphoneIED.sqf @@ -27,15 +27,18 @@ private _config = (_this select 3) select (count (_this select 3) - 1); private _requiredItems = getArray(_config >> "requires"); private _hasRequired = true; private _detonators = [_unit] call FUNC(getDetonators); + { if !(_x in _detonators) exitWith{ _hasRequired = false; }; } count _requiredItems; +private _code = ""; private _codeSet = false; + while {!_codeSet} do { - private _code = str(round (random 9999)); + _code = str(round (random 9999)); _count = 4 - count (toArray _code); while {_count > 0} do { _code = "0" + _code; @@ -43,9 +46,11 @@ while {!_codeSet} do { }; _codeSet = (count ([_code] call FUNC(getSpeedDialExplosive))) == 0; }; + if (isNil QGVAR(CellphoneIEDs)) then { GVAR(CellphoneIEDs) = []; }; + private _count = GVAR(CellphoneIEDs) pushBack [_explosive,_code,GetNumber(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> "Cellphone" >> "FuseTime")]; _count = _count + 1; publicVariable QGVAR(CellphoneIEDs); diff --git a/addons/explosives/functions/fnc_onIncapacitated.sqf b/addons/explosives/functions/fnc_onIncapacitated.sqf index 6f9a9f498a..7e2cb249cc 100644 --- a/addons/explosives/functions/fnc_onIncapacitated.sqf +++ b/addons/explosives/functions/fnc_onIncapacitated.sqf @@ -19,6 +19,11 @@ params ["_unit"]; TRACE_1("params",_unit); +if (_unit == ace_player) then { + // close cellphone if open + closeDialog 0; +}; + // Exit if no item: if (({_x == "ACE_DeadManSwitch"} count (items _unit)) == 0) exitWith {}; From 69f7484f12a8f3462e55a1cd558953e8851334f6 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Wed, 27 Dec 2017 00:43:33 +0100 Subject: [PATCH 22/31] Add a function to port BI VA loadouts to ACE Arsenal (#5943) * Add a function to port BI VA loadouts to ACE Arsenal * Fix typos in the header * Remove override argument, add button in 3DEN * Add null player exception * Remove unused passed argument * Add error messages to portVALoadouts * Change error messages * Add missing dot in string --- addons/arsenal/XEH_PREP.hpp | 1 + .../arsenal/functions/fnc_portVALoadouts.sqf | 43 +++++++++++++++++++ addons/arsenal/stringtable.xml | 12 ++++++ addons/arsenal/ui/RscCommon.hpp | 14 ++++++ 4 files changed, 70 insertions(+) create mode 100644 addons/arsenal/functions/fnc_portVALoadouts.sqf diff --git a/addons/arsenal/XEH_PREP.hpp b/addons/arsenal/XEH_PREP.hpp index 576115ad68..76c77c8a7c 100644 --- a/addons/arsenal/XEH_PREP.hpp +++ b/addons/arsenal/XEH_PREP.hpp @@ -34,6 +34,7 @@ PREP(onSelChangedRight); PREP(onSelChangedRightListnBox); PREP(open3DEN); PREP(openBox); +PREP(portVALoadouts); PREP(removeBox); PREP(removeVirtualItems); PREP(scanConfig); diff --git a/addons/arsenal/functions/fnc_portVALoadouts.sqf b/addons/arsenal/functions/fnc_portVALoadouts.sqf new file mode 100644 index 0000000000..7ad141819d --- /dev/null +++ b/addons/arsenal/functions/fnc_portVALoadouts.sqf @@ -0,0 +1,43 @@ +/* + * Author: alganthe + * Port VA loadouts to ACE Arsenal. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: Yes +*/ +#include "script_component.hpp" + +private _VALoadouts = +(profilenamespace getvariable ["bis_fnc_saveInventory_data",[]]); +private _aceLoadouts = +(profileNamespace getVariable [QGVAR(saved_loadouts),[]]); + +if (isNull player) exitWith { + [localize LSTRING(portLoadoutsPlayerError)] call BIS_fnc_error; +}; + +if (_VALoadouts isEqualTo []) exitWith { + [localize LSTRING(portLoadoutsLoadoutError)] call BIS_fnc_error; +}; + +for "_i" from 0 to (count _VALoadouts - 1) step 2 do { + _name = _VALoadouts select _i; + _inventory = _VALoadouts select (_i + 1); + + private _sameNameLoadoutsList = _aceLoadouts select {_x select 0 == _name}; + [player, [profilenamespace, _name]] call bis_fnc_loadinventory; + + private _loadout = getUnitLoadout player; + + if (count _sameNameLoadoutsList > 0) then { + _aceLoadouts set [_aceLoadouts find (_sameNameLoadoutsList select 0), [_name, _loadout]]; + + } else { + _aceLoadouts pushBack [_name, _loadout]; + }; +}; + +profileNamespace setVariable [QGVAR(saved_loadouts), _aceLoadouts]; diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 0c28240b9b..9c9f0f4198 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -433,5 +433,17 @@ Impossibile aprire l'arsenale ACE ACE 武器庫を開けません + + Import BI VA loadouts to ACE Arsenal + Importe les loadouts de BI VA dans ACE Arsenal + + + No player unit available! Place a unit and mark it as "Player". + Aucune unité joueur disponible ! Placez une unité et marquez la en tant que "joueur". + + + No loadouts to import. + Aucun loadout à importer. + diff --git a/addons/arsenal/ui/RscCommon.hpp b/addons/arsenal/ui/RscCommon.hpp index 2a88204d7b..5db52bf704 100644 --- a/addons/arsenal/ui/RscCommon.hpp +++ b/addons/arsenal/ui/RscCommon.hpp @@ -275,4 +275,18 @@ class Display3DEN { }; }; }; + class Controls { + class MenuStrip: ctrlMenuStrip { + class Items { + class Tools { + items[] += {"ACE_arsenal_portVALoadouts"}; + }; + class ACE_arsenal_portVALoadouts { + text = CSTRING(portLoadoutsText); + picture = "\z\ace\logo_ace3_ca.paa"; + action = "call ace_arsenal_fnc_portVALoadouts;"; + }; + }; + }; + }; }; From e66e9c2453e1c417e1e0b24861865dbe72cbfbc6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 26 Dec 2017 17:43:42 -0600 Subject: [PATCH 23/31] Show cba settings in debug button (#5978) --- addons/optionsmenu/README.md | 3 ++- .../functions/fnc_debugDumpToClipboard.sqf | 11 ++++++----- addons/optionsmenu/script_component.hpp | 7 ------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/addons/optionsmenu/README.md b/addons/optionsmenu/README.md index f8d8c54d09..e274229053 100644 --- a/addons/optionsmenu/README.md +++ b/addons/optionsmenu/README.md @@ -1,7 +1,8 @@ ace_optionsmenu =============== -Adds the options menu used by other components. +Previously held the options menu. +Now just handles version display on main menu and debug/headbug on options menu. ## Maintainers diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf index fcaca6a9de..a502934f50 100644 --- a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -55,15 +55,16 @@ if (isNull ace_player) then {"null"} else {animationState ace_player}]; _text = format [" -------ACE Settings------"]; +------ACE's CBA Settings------"]; [_text] call _outputText; - +private _aceSettings = cba_settings_allSettings select {((_x select [0,4]) == "ace_") || {(_x select [0,5]) == "acex_"}}; +_aceSettings sort true; { - _var = missionNamespace getVariable [(_x select 0), "ERROR: Not Defined"]; - _text = format ["%1 - %2", (_x select 0), _var]; + _var = missionNamespace getVariable [_x, "ERROR: Not Defined"]; + _text = format ["%1 - %2", _x, _var]; [_text] call _outputText; -} forEach EGVAR(common,settings); +} forEach _aceSettings; _text = format [" diff --git a/addons/optionsmenu/script_component.hpp b/addons/optionsmenu/script_component.hpp index c13e915702..7ae6409e6c 100644 --- a/addons/optionsmenu/script_component.hpp +++ b/addons/optionsmenu/script_component.hpp @@ -20,10 +20,3 @@ #define IDC_MAIN_INFO 80090 #define IDC_MAIN_INFO_CURRENT_VERSION_INFO 80091 #define IDC_MAIN_INFO_NEWEST_VERSION_INFO 80092 - -#define MENU_TAB_OPTIONS 0 -#define MENU_TAB_COLORS 1 - -#define MENU_TAB_SERVER_OPTIONS 10 -#define MENU_TAB_SERVER_COLORS 11 -#define MENU_TAB_SERVER_VALUES 12 From 747a3aa1117c7e719c1cedc543de1671cff03fa2 Mon Sep 17 00:00:00 2001 From: bux Date: Wed, 27 Dec 2017 08:14:26 +0100 Subject: [PATCH 24/31] improve tooltip --- addons/arsenal/stringtable.xml | 25 ++++++++++++++----------- addons/hearing/stringtable.xml | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 8d035d0af6..8eaff441ca 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -394,6 +394,7 @@ ACE Arsenal ACE Arsenal + ACE-Arsenal ACE Arsenał ACE 武器庫 Arsenale ACE @@ -429,23 +430,25 @@ Unable to open ACE arsenal Impossible d'ouvrir ACE arsenal - Kann ACE Arsenal nicht anzeigen + Kann ACE-Arsenal nicht anzeigen Impossibile aprire l'arsenale ACE ACE 武器庫を開けません - + ACE Arsenal ACE-Arsenal - - + + Return to ACE Arsenal. Zurück zum ACE-Arsenal. - - - Not as bad as the regular one. - - - Dress up simulator loading in progress... - + + + Use ACE Arsenal to try out different weapons and equipment. + Verwende ACE-Arsenal und sieh dir verschiedene Waffen und Ausrüstung an und probiere sie aus. + + + Try weapons and equipment and create your own loadouts. + Probiere verschiedene Waffen und Ausrüstung aus und stelle dir eigene Ausrüstungsprofile zusammen. + diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index bde72c6476..d745734ca1 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -269,7 +269,7 @@ Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts. - Fügt die "ACE_EarPlugs" zu allen Einheiten mit lauten Waffen hinzu. Wird deaktiviert wenn eine eigene Inventarkonfiguration vorgenommen wurde. + Fügt die "ACE_EarPlugs" zu allen Einheiten mit lauten Waffen hinzu. Wird deaktiviert wenn eigene Ausrüstungsprofile verwendet werden. Dodaje `ACE_EarPlugs` - stopery - do wszystkich jednostek, które posiadają głośną broń. Można wyłaczyć w przypadku korzystania z niestandardowych loadoutów. Добавляет предмет `ACE_EarPlugs` всем юнитам, которые имеют громкое оружие. Можно отключить при ручной настройке снаряжения. Adicionar o item `ACE_EarPlugs` a todas as unidades que tenham armas barulhentas. Pode ser desabilitado com carregamentos customizados. From 542849cdf738be956c3ee9dfa637ea27dcc43a96 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 27 Dec 2017 11:37:54 +0100 Subject: [PATCH 25/31] merge --- addons/arsenal/stringtable.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 77afb94c73..21452fed7a 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -445,6 +445,7 @@ No loadouts to import. Aucun loadout à importer. + ACE Arsenal ACE-Arsenal From 07e1482719697cbb278511dba64798fb2fb5fc3f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 28 Dec 2017 12:57:38 -0600 Subject: [PATCH 26/31] Update fortify wiki with working example (#5986) --- docs/wiki/frameworkx/fortify-framework.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/frameworkx/fortify-framework.md b/docs/wiki/frameworkx/fortify-framework.md index eaf30f628f..fe49cc1eb3 100644 --- a/docs/wiki/frameworkx/fortify-framework.md +++ b/docs/wiki/frameworkx/fortify-framework.md @@ -48,7 +48,7 @@ To add a preset via code you use the function `call acex_fortify_fnc_registerObj * None * * Example: -* [west, 5000, [["Sandbag", 5], ["Bunker", 50]]] call acex_fortify_fnc_registerObjects +* [west, 5000, [["Land_BagFence_Long_F", 5], ["Land_BagBunker_Small_F", 50]]] call acex_fortify_fnc_registerObjects ``` Adding it through `description.ext` you use: From 81722abeac020654531ad853dda2ee8aa7b8d9f2 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 29 Dec 2017 01:08:11 +0000 Subject: [PATCH 27/31] Use engine command to select weighted spall size (#5985) * Use engine command to select weighted spall size * Remove multi-line macro --- addons/frag/functions/fnc_doSpall.sqf | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index dcc1759648..65b9327d5a 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -13,10 +13,9 @@ * * Public: No */ - -//fnc_doSpall.sqf #include "script_component.hpp" -// ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA"; + +#define WEIGHTED_SIZE [QGVAR(spall_small), 4, QGVAR(spall_medium), 3, QGVAR(spall_large), 2, QGVAR(spall_huge), 1] params ["_hitData", "_hitPartDataIndex"]; private _initialData = GVAR(spallHPData) select (_hitData select 0); @@ -51,6 +50,7 @@ if (alive _round) then { }; }; if (_exit) exitWith {}; + private _unitDir = vectorNormalized _velocity; private _pos = _hpData select 3; private _spallPos = []; @@ -88,14 +88,6 @@ if (_explosive > 0) then { _spallPolar set [0, _fragPower * 0.66]; }; -private _fragTypes = [ - QGVAR(spall_small), QGVAR(spall_small), QGVAR(spall_small), - QGVAR(spall_small),QGVAR(spall_medium),QGVAR(spall_medium),QGVAR(spall_medium), - QGVAR(spall_medium), QGVAR(spall_large), QGVAR(spall_large), QGVAR(spall_huge), - QGVAR(spall_huge) - -]; - // diag_log text format ["SPALL POWER: %1", _spallPolar select 0]; private _spread = 15 + (random 25); private _spallCount = 5 + (random 10); @@ -110,8 +102,7 @@ for "_i" from 1 to _spallCount do { _vel = (_vel - (_vel * 0.25)) + (random (_vel * 0.5)); private _spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect; - private _fragType = round (random ((count _fragTypes) - 1)); - private _fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; + private _fragment = (selectRandomWeighted WEIGHTED_SIZE) createVehicleLocal [0,0,10000]; _fragment setPosASL _spallPos; _fragment setVelocity _spallFragVect; @@ -133,8 +124,7 @@ for "_i" from 1 to _spallCount do { _vel = (_vel - (_vel * 0.25)) + (random (_vel * 0.5)); private _spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect; - private _fragType = round (random ((count _fragTypes) - 1)); - private _fragment = (_fragTypes select _fragType) createVehicleLocal [0, 0, 10000]; + private _fragment = (selectRandomWeighted WEIGHTED_SIZE) createVehicleLocal [0, 0, 10000]; _fragment setPosASL _spallPos; _fragment setVelocity _spallFragVect; From dfe803107ab884a1e7516fc647bff074a566d984 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 29 Dec 2017 16:47:49 +0000 Subject: [PATCH 28/31] Fix displayName of spectator respawn template (#5989) --- addons/spectator/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index 6daa59a752..359b96135b 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -21,7 +21,7 @@ class CfgPatches { class CfgRespawnTemplates { class ADDON { - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(Settings_DisplayName); onPlayerKilled = QFUNC(respawnTemplate); onPlayerRespawn = QFUNC(respawnTemplate); respawnTypes[] = {1,2,3,4,5}; From 6d2da10558ec4bd3eb05eb18f3359a34834fee12 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 Dec 2017 12:39:02 -0600 Subject: [PATCH 29/31] Arsenal - Add Missing semicolons (#5990) --- addons/arsenal/RscDisplayMain.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/arsenal/RscDisplayMain.hpp b/addons/arsenal/RscDisplayMain.hpp index 9e5c61d6e2..b20b99e31e 100644 --- a/addons/arsenal/RscDisplayMain.hpp +++ b/addons/arsenal/RscDisplayMain.hpp @@ -17,12 +17,12 @@ class RscDisplayMain: RscStandardDisplay { tooltip = CSTRING(Mission_tooltip); y = "(3 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; onbuttonclick = QUOTE(playMission [ARR_2('','PATHTOF(missions\Arsenal.VR)')]); - animTextureNormal = QPATHTOF(data\buttonMissionMainMenu_ca.paa) - animTextureDisabled = QPATHTOF(data\buttonMissionMainMenu_ca.paa) - animTextureOver = QPATHTOF(data\buttonMissionMainMenuHover_ca.paa) - animTextureFocused = QPATHTOF(data\buttonMissionMainMenuHover_ca.paa) - animTexturePressed = QPATHTOF(data\buttonMissionMainMenu_ca.paa) - animTextureDefault = QPATHTOF(data\buttonMissionMainMenu_ca.paa) + animTextureNormal = QPATHTOF(data\buttonMissionMainMenu_ca.paa); + animTextureDisabled = QPATHTOF(data\buttonMissionMainMenu_ca.paa); + animTextureOver = QPATHTOF(data\buttonMissionMainMenuHover_ca.paa); + animTextureFocused = QPATHTOF(data\buttonMissionMainMenuHover_ca.paa); + animTexturePressed = QPATHTOF(data\buttonMissionMainMenu_ca.paa); + animTextureDefault = QPATHTOF(data\buttonMissionMainMenu_ca.paa); }; class FieldManual: Bootcamp { y = "(4 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)"; From 65fe101aaf7b7a357cbee248e6ddf412dfc8bca8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 Dec 2017 12:39:24 -0600 Subject: [PATCH 30/31] Arsenal - Filter items with scopeArsenal = 0 (#5988) * Arsenal - Filter items with scopeArsenal = 0 * change order --- addons/arsenal/functions/fnc_scanConfig.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/arsenal/functions/fnc_scanConfig.sqf b/addons/arsenal/functions/fnc_scanConfig.sqf index c74a368e1a..28f90b9ae6 100644 --- a/addons/arsenal/functions/fnc_scanConfig.sqf +++ b/addons/arsenal/functions/fnc_scanConfig.sqf @@ -125,7 +125,7 @@ private _magazineGroups = [[],[]] call CBA_fnc_hashCreate; (_cargo select 17) pushBackUnique _className; }; }; -} foreach configProperties [_configCfgWeapons, "isClass _x && {getNumber (_x >> 'scope') == 2} && {getNumber (_x >> 'ace_arsenal_hide') != 1}", true]; +} foreach configProperties [_configCfgWeapons, "isClass _x && {(if (isNumber (_x >> 'scopeArsenal')) then {getNumber (_x >> 'scopeArsenal')} else {getNumber (_x >> 'scope')}) == 2} && {getNumber (_x >> 'ace_arsenal_hide') != 1}", true]; { private _className = configName _x; From 1b332129e67123a4a2bbd726c929050cb396f083 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Sat, 30 Dec 2017 08:13:06 +0100 Subject: [PATCH 31/31] Add QOL improvement for the ACE Arsenal loadouts screen (#5973) * Add search bar in loadouts screen * Add onKeyDown support for the loadouts display * Add ctrl+key support to both editbox in the loadouts screen * Fix syntax error --- addons/arsenal/XEH_PREP.hpp | 1 + addons/arsenal/XEH_postInit.sqf | 1 + addons/arsenal/defines.hpp | 1 + .../functions/fnc_handleLoadoutsSearchbar.sqf | 45 ++++ addons/arsenal/functions/fnc_onKeyDown.sqf | 220 +++++++++++------- .../arsenal/functions/fnc_onLoadoutsClose.sqf | 2 + .../arsenal/functions/fnc_onLoadoutsOpen.sqf | 2 + addons/arsenal/ui/RscAttributes.hpp | 28 ++- 8 files changed, 211 insertions(+), 89 deletions(-) create mode 100644 addons/arsenal/functions/fnc_handleLoadoutsSearchbar.sqf diff --git a/addons/arsenal/XEH_PREP.hpp b/addons/arsenal/XEH_PREP.hpp index 76c77c8a7c..7596b769d8 100644 --- a/addons/arsenal/XEH_PREP.hpp +++ b/addons/arsenal/XEH_PREP.hpp @@ -14,6 +14,7 @@ PREP(clearSearchbar); PREP(fillLeftPanel); PREP(fillLoadoutsList); PREP(fillRightPanel); +PREP(handleLoadoutsSearchbar); PREP(handleMouse); PREP(handleScrollWheel); PREP(handleSearchbar); diff --git a/addons/arsenal/XEH_postInit.sqf b/addons/arsenal/XEH_postInit.sqf index e18afc6cc0..dcc5c7c7b5 100644 --- a/addons/arsenal/XEH_postInit.sqf +++ b/addons/arsenal/XEH_postInit.sqf @@ -4,6 +4,7 @@ GVAR(EH_ID) = 0; GVAR(lastSearchTextLeft) = ""; GVAR(lastSearchTextRight) = ""; +GVAR(lastSearchTextLoadouts) = ""; [QGVAR(initBox), {_this call FUNC(initBox)}] call CBA_fnc_addEventHandler; [QGVAR(removeBox), {_this call FUNC(removeBox)}] call CBA_fnc_addEventHandler; diff --git a/addons/arsenal/defines.hpp b/addons/arsenal/defines.hpp index 60b99a99f6..5cc25796bd 100644 --- a/addons/arsenal/defines.hpp +++ b/addons/arsenal/defines.hpp @@ -107,6 +107,7 @@ #define IDC_buttonShare 306 #define IDC_buttonDelete 307 #define IDC_buttonRename 308 +#define IDC_loadoutsSearchbar 309 #define IDC_buttonMyLoadoutsBackground 401 #define IDC_buttonMyLoadouts 402 #define IDC_buttonDefaultLoadoutsBackground 403 diff --git a/addons/arsenal/functions/fnc_handleLoadoutsSearchbar.sqf b/addons/arsenal/functions/fnc_handleLoadoutsSearchbar.sqf new file mode 100644 index 0000000000..07a42c4fd5 --- /dev/null +++ b/addons/arsenal/functions/fnc_handleLoadoutsSearchbar.sqf @@ -0,0 +1,45 @@ +/* + * Author: Alganthe + * Handles keyboard inputs inside the searchbars text boxes. + * + * Arguments: + * 0: Loadouts display + * 1: Searchbar control + * + * Return Value: + * None + * + * Public: No +*/ +#include "script_component.hpp" +#include "..\defines.hpp" + +params ["_display", "_control"]; + +private _textString = ctrlText _control; + +private _contentPanelCtrl = _display displayCtrl IDC_contentPanel; + +if !(GVAR(lastSearchTextLoadouts) isEqualTo "" || {(_textString find GVAR(lastSearchTextLoadouts)) == 0}) then {//don't refill if there is no need + [_display, _display displayCtrl GVAR(currentLoadoutsTab)] call FUNC(fillLoadoutsList); +}; + +GVAR(lastSearchTextLoadouts) = _textString; +if (count _textString == 0) exitWith {}; + +private _contentPanelCtrl = _display displayCtrl IDC_contentPanel; + +private _itemsToGo = (lnbSize _contentPanelCtrl) select 0; +private _lbIndex = 0; +while {_itemsToGo > 0} do { + private _currentData = _contentPanelCtrl lnbText [_lbIndex, 1]; + private _currentClassname = _contentPanelCtrl lnbData [_lbIndex, 0]; + + if ((_currentData isEqualTo "") || {(((toUpper _currentData) find (toUpper _textString)) == -1) && {((toUpper _currentClassname) find (toUpper _textString)) == -1}}) then { + _contentPanelCtrl lnbDeleteRow _lbIndex; + } else { + _lbIndex = _lbIndex + 1; + }; + _itemsToGo = _itemsToGo - 1; +}; +_contentPanelCtrl lnbSetCurSelRow -1; diff --git a/addons/arsenal/functions/fnc_onKeyDown.sqf b/addons/arsenal/functions/fnc_onKeyDown.sqf index 6b1916e694..b963974033 100644 --- a/addons/arsenal/functions/fnc_onKeyDown.sqf +++ b/addons/arsenal/functions/fnc_onKeyDown.sqf @@ -21,83 +21,41 @@ params ["", "_args"]; _args params ["_display", "_keyPressed", "_shiftState", "_ctrlState", "_altState"]; -if !((findDisplay IDD_loadouts_display) isEqualTo displayNull) exitWith {}; - GVAR(shiftState) = _shiftState; - private _return = true; +private _loadoutsDisplay = findDisplay IDD_loadouts_display; -if (!GVAR(leftSearchbarFocus) && {!GVAR(rightSearchbarFocus)}) then { - - switch true do { - // Close button - case (_keyPressed == DIK_ESCAPE): { - _display closeDisplay 2; - }; - // Hide button - case (_keyPressed == DIK_BACKSPACE): { - [_display] call FUNC(buttonHide); - }; - // Export button - case (_keyPressed == DIK_C && {_ctrlState}): { - [_display] call FUNC(buttonExport); - }; - // Import button - case (_keyPressed == DIK_V && {_ctrlState}): { - [_display] call FUNC(buttonImport); - }; - // Search fields - case (_keyPressed == DIK_F && {_ctrlState}): { - ctrlSetFocus (_display displayCtrl IDC_leftSearchbar); - }; - // Switch vision mode - case (_keyPressed in (actionkeys "nightvision")): { - if (isNil QGVAR(visionMode)) then { - GVAR(visionMode) = 0; +if !(_loadoutsDisplay isEqualTo displayNull) then { + if !(GVAR(loadoutsSearchbarFocus)) then { + switch true do { + // Close button + case (_keyPressed == DIK_ESCAPE): { + _display closeDisplay 2; }; - GVAR(visionMode) = (GVAR(visionMode) + 1) % 3; - - switch GVAR(visionMode) do { - //--- Normal - case 0: { - camusenvg false; - false setCamUseTi 0; - }; - //--- NVG - case 1: { - camusenvg true; - false setCamUseTi 0; - }; - //--- TI - default { - camusenvg false; - true setCamUseTi 0; - }; + // Search field + case (_keyPressed == DIK_F && {_ctrlState}): { + ctrlSetFocus (_loadoutsDisplay displayCtrl IDC_loadoutsSearchbar); + }; + }; + } else { + switch true do { + case (_keyPressed == DIK_ESCAPE): { + _display closeDisplay 2; + }; + case (_keyPressed == DIK_BACKSPACE): { + _return = false; + }; + case (_keyPressed == DIK_NUMPADENTER); + case (_keyPressed == DIK_RETURN): { + [_loadoutsDisplay, _loadoutsDisplay displayCtrl IDC_loadoutsSearchbar] call FUNC(handleLoadoutsSearchBar); + }; + case (_keyPressed in [DIK_LEFT, DIK_RIGHT]): { + _return = false; }; - - playsound ["RscDisplayCurator_visionMode",true]; }; }; -} else { + switch true do { - case (_keyPressed == DIK_ESCAPE): { - _display closeDisplay 2; - }; - case (_keyPressed == DIK_BACKSPACE): { - _return = false; - }; - case (_keyPressed == DIK_NUMPADENTER); - case (_keyPressed == DIK_RETURN): { - if (GVAR(leftSearchbarFocus)) then { - [_display, _display displayCtrl IDC_leftSearchbar] call FUNC(handleSearchBar); - }; - if (GVAR(rightSearchbarFocus)) then { - [_display, _display displayCtrl IDC_rightSearchbar] call FUNC(handleSearchBar); - }; - }; - case (_keyPressed in [DIK_LEFT, DIK_RIGHT]): { - _return = false; - }; case (_keyPressed == DIK_C && {_ctrlState}): { _return = false; }; @@ -110,31 +68,121 @@ if (!GVAR(leftSearchbarFocus) && {!GVAR(rightSearchbarFocus)}) then { case (_keyPressed == DIK_X && {_ctrlState}): { _return = false; }; - // Search fields - case (_keyPressed == DIK_F && {_ctrlState}): { - if (GVAR(rightSearchbarFocus)) then { + case (GVAR(loadoutsPanelFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}): { + _return = false; + }; + }; +} else { + + if (!GVAR(leftSearchbarFocus) && {!GVAR(rightSearchbarFocus)}) then { + + switch true do { + // Close button + case (_keyPressed == DIK_ESCAPE): { + _display closeDisplay 2; + }; + // Hide button + case (_keyPressed == DIK_BACKSPACE): { + [_display] call FUNC(buttonHide); + }; + // Export button + case (_keyPressed == DIK_C && {_ctrlState}): { + [_display] call FUNC(buttonExport); + }; + // Import button + case (_keyPressed == DIK_V && {_ctrlState}): { + [_display] call FUNC(buttonImport); + }; + // Search fields + case (_keyPressed == DIK_F && {_ctrlState}): { ctrlSetFocus (_display displayCtrl IDC_leftSearchbar); - } else { - ctrlSetFocus (_display displayCtrl IDC_rightSearchbar); + }; + // Switch vision mode + case (_keyPressed in (actionkeys "nightvision")): { + if (isNil QGVAR(visionMode)) then { + GVAR(visionMode) = 0; + }; + GVAR(visionMode) = (GVAR(visionMode) + 1) % 3; + + switch GVAR(visionMode) do { + //--- Normal + case 0: { + camusenvg false; + false setCamUseTi 0; + }; + //--- NVG + case 1: { + camusenvg true; + false setCamUseTi 0; + }; + //--- TI + default { + camusenvg false; + true setCamUseTi 0; + }; + }; + + playsound ["RscDisplayCurator_visionMode",true]; + }; + }; + } else { + switch true do { + case (_keyPressed == DIK_ESCAPE): { + _display closeDisplay 2; + }; + case (_keyPressed == DIK_BACKSPACE): { + _return = false; + }; + case (_keyPressed == DIK_NUMPADENTER); + case (_keyPressed == DIK_RETURN): { + if (GVAR(leftSearchbarFocus)) then { + [_display, _display displayCtrl IDC_leftSearchbar] call FUNC(handleSearchBar); + }; + if (GVAR(rightSearchbarFocus)) then { + [_display, _display displayCtrl IDC_rightSearchbar] call FUNC(handleSearchBar); + }; + }; + case (_keyPressed in [DIK_LEFT, DIK_RIGHT]): { + _return = false; + }; + case (_keyPressed == DIK_C && {_ctrlState}): { + _return = false; + }; + case (_keyPressed == DIK_V && {_ctrlState}): { + _return = false; + }; + case (_keyPressed == DIK_A && {_ctrlState}): { + _return = false; + }; + case (_keyPressed == DIK_X && {_ctrlState}): { + _return = false; + }; + // Search fields + case (_keyPressed == DIK_F && {_ctrlState}): { + if (GVAR(rightSearchbarFocus)) then { + ctrlSetFocus (_display displayCtrl IDC_leftSearchbar); + } else { + ctrlSetFocus (_display displayCtrl IDC_rightSearchbar); + }; }; }; }; -}; -if (GVAR(leftTabFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}) then { - _return = false; -}; + if (GVAR(leftTabFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}) then { + _return = false; + }; -if (GVAR(rightTabFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}) then { - _return = false; -}; + if (GVAR(rightTabFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}) then { + _return = false; + }; -if (GVAR(rightTabLnBFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}) then { - _return = false; -}; + if (GVAR(rightTabLnBFocus) && {_keyPressed in [DIK_UP, DIK_DOWN]}) then { + _return = false; + }; -if (GVAR(rightTabLnBFocus) && {_keyPressed in [DIK_LEFT, DIK_RIGHT]}) then { - [_display, [1, 0] select (_keyPressed == DIK_LEFT)] call FUNC(buttonCargo); + if (GVAR(rightTabLnBFocus) && {_keyPressed in [DIK_LEFT, DIK_RIGHT]}) then { + [_display, [1, 0] select (_keyPressed == DIK_LEFT)] call FUNC(buttonCargo); + }; }; _return diff --git a/addons/arsenal/functions/fnc_onLoadoutsClose.sqf b/addons/arsenal/functions/fnc_onLoadoutsClose.sqf index 8318b4d409..777af3aed1 100644 --- a/addons/arsenal/functions/fnc_onLoadoutsClose.sqf +++ b/addons/arsenal/functions/fnc_onLoadoutsClose.sqf @@ -20,6 +20,8 @@ private _mouseBlockCtrl = _arsenalDisplay displayCtrl IDC_mouseBlock; GVAR(cameraPosition) = GVAR(previousCameraPos); GVAR(previousCameraPos) = nil; +GVAR(loadoutsSearchbarFocus) = nil; +GVAR(loadoutsPanelFocus) = nil; _mouseBlockCtrl ctrlEnable false; _mouseBlockCtrl ctrlCommit 0; diff --git a/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf b/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf index 6d6dd4bb76..ec025b0bc1 100644 --- a/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf +++ b/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf @@ -27,6 +27,8 @@ _mouseBlockCtrl ctrlCommit 0; [_arsenalDisplay] call FUNC(buttonHide); GVAR(currentLoadoutsTab) = -1; +GVAR(loadoutsSearchbarFocus) = false; +GVAR(loadoutsPanelFocus) = false; GVAR(previousCameraPos) = GVAR(cameraPosition); GVAR(cameraPosition) = [5,0,20,[-0.85,0,0.85]]; diff --git a/addons/arsenal/ui/RscAttributes.hpp b/addons/arsenal/ui/RscAttributes.hpp index 44fab0515e..33564b7010 100644 --- a/addons/arsenal/ui/RscAttributes.hpp +++ b/addons/arsenal/ui/RscAttributes.hpp @@ -775,6 +775,8 @@ class GVAR(loadoutsDisplay) { columns[]={0, 0.05, 0.40, 0.50, 0.60, 0.70, 0.75, 0.80, 0.85, 0.90}; drawSideArrows=0; disableOverflow=1; + onSetFocus = QUOTE(GVAR(loadoutsPanelFocus) = true); + onKillFocus = QUOTE(GVAR(loadoutsPanelFocus) = false); onLBSelChanged = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(onSelChangedLoadouts)); onLBDblClick = QUOTE([ARR_2(ctrlparent (_this select 0), (ctrlParent (_this select 0)) displayCtrl IDC_buttonLoad)] call FUNC(buttonLoadoutsLoad)); x = QUOTE(0); @@ -786,7 +788,7 @@ class GVAR(loadoutsDisplay) { class textTitle: RscText { idc= -1; text="$STR_DISP_GAME_NAME"; - x = QUOTE(1 * GRID_W); + x = QUOTE(0 * GRID_W); y = QUOTE(safezoneH - (51 * GRID_H)); w = QUOTE(15 * GRID_W); h = QUOTE(5 * GRID_H); @@ -795,9 +797,29 @@ class GVAR(loadoutsDisplay) { }; class textEditBox: ctrlEdit { idc= IDC_textEditBox; - x = QUOTE(16 * GRID_W); + x = QUOTE(15 * GRID_W); y = QUOTE(safezoneH - (51 * GRID_H)); - w = QUOTE(80 * GRID_W); + w = QUOTE(65 * GRID_W); + h = QUOTE(5 * GRID_H); + }; + class loadoutsSearchbar: ctrlEdit { + idc = IDC_loadoutsSearchbar; + onSetFocus = QUOTE(GVAR(loadoutsSearchbarFocus) = true); + onKillFocus = QUOTE(GVAR(loadoutsSearchbarFocus) = false); + onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar)); + x = QUOTE(83 * GRID_W); + y = QUOTE(safezoneH - (51 * GRID_H)); + w = QUOTE(72 * GRID_W); + h = QUOTE(5 * GRID_H); + }; + class loadoutsSearchbarButton: ctrlButtonPicture { + idc = -1; + text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa"; + colorBackground[]={0,0,0,0.5}; + onButtonClick = QUOTE([ARR_2(ctrlparent (_this select 0), ctrlparent (_this select 0) displayCtrl IDC_loadoutsSearchbar)] call FUNC(handleLoadoutsSearchbar)); + x = QUOTE(155 * GRID_W); + y = QUOTE(safezoneH - (51 * GRID_H)); + w = QUOTE(5 * GRID_W); h = QUOTE(5 * GRID_H); }; class buttonSave: ctrlButton {

YP>aXbeYp0gf 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 literal 0 HcmV?d00001 diff --git a/extras/assets/icons/Icons_MainMenu/buttonMenuHover_ca.psd b/extras/assets/icons/Icons_MainMenu/buttonMenuHover_ca.psd new file mode 100644 index 0000000000000000000000000000000000000000..17b1e70f9e3ac9e6fa18ef1355b4a5900f120cda GIT binary patch literal 1076932 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