From f9e3a36acef69617001864319e2f1f912f26d5d5 Mon Sep 17 00:00:00 2001 From: vbawol Date: Mon, 5 Oct 2015 13:40:04 -0500 Subject: [PATCH] 0.3.4 part 2 --- Changelogs/0.3.4.0.txt | 29 +- .../@epochhive/addons/a3_epoch_server.pbo | Bin 359361 -> 359360 bytes .../sc/battleye/addbackpackcargo.txt | 2 +- Server_Install_Pack/sc/battleye/scripts.txt | 2 +- Sources/epoch_code/System/Dog_Brain.fsm | 429 ++++++---- .../compile/setup/EPOCH_clientKeyMap.sqf | 60 ++ Sources/epoch_code/config.cpp | 7 + .../gui/Epoch_GUI_ClientConfigs.hpp | 294 +++++++ Sources/epoch_code/gui/Epoch_GUI_Config.hpp | 733 +----------------- Sources/epoch_code/gui/Epoch_GUI_rmx.hpp | 603 ++++++++++++++ Sources/epoch_code/gui/Epoch_RscTitles.hpp | 178 +++++ Sources/epoch_code/gui/changelog.html | 20 + .../gui/scripts/EPOCH_InterruptConfig.sqf | 56 ++ .../scripts/EPOCH_InterruptConfigActions.sqf | 34 + .../scripts/config/Epoch_config_keymap.sqf | 108 +++ Sources/epoch_code/init/client_init.sqf | 17 +- .../Configs/CfgEpochConfiguration.hpp | 18 + Sources/epoch_config/config.cpp | 1 + .../epoch_bases/EPOCH_server_maintBUILD.sqf | 2 +- 19 files changed, 1674 insertions(+), 919 deletions(-) create mode 100644 Sources/epoch_code/compile/setup/EPOCH_clientKeyMap.sqf create mode 100644 Sources/epoch_code/gui/Epoch_GUI_ClientConfigs.hpp create mode 100644 Sources/epoch_code/gui/Epoch_GUI_rmx.hpp create mode 100644 Sources/epoch_code/gui/Epoch_RscTitles.hpp create mode 100644 Sources/epoch_code/gui/changelog.html create mode 100644 Sources/epoch_code/gui/scripts/EPOCH_InterruptConfig.sqf create mode 100644 Sources/epoch_code/gui/scripts/EPOCH_InterruptConfigActions.sqf create mode 100644 Sources/epoch_code/gui/scripts/config/Epoch_config_keymap.sqf create mode 100644 Sources/epoch_config/Configs/CfgEpochConfiguration.hpp diff --git a/Changelogs/0.3.4.0.txt b/Changelogs/0.3.4.0.txt index 92077057..c07a3589 100644 --- a/Changelogs/0.3.4.0.txt +++ b/Changelogs/0.3.4.0.txt @@ -3,14 +3,26 @@ Client: [Added] Totally new crafting system and UI. [Added] Epoch variant of the unarmed Strider vehicle. (I_MRAP_03_EPOCH) [Added] Melee weapons: a Broad Sword and Fishing Pole. -[Added] Halloween Clown mask and Wolf/Pumpkin masks as well as Meeps Candy re-added to loot tables. -[Fixed] Reduce client fps lag when first joining the server. -[Fixed] Being unable to removal of solar generator. -[Changed] Removed debug hint text for 3d rotation of objects. -[Changed] Re-enable Move button. +[Added] Halloween Clown mask and re-added to loot tables: Wolf/Pumpkin masks as well as Meeps Candy. +[Fixed] Dog not taming due to var reset in wrong place / BIS animal update. +[Fixed] Reduce client fps lag when first joining the server by preloading objects before exiting loadig screen. +[Fixed] Being unable to remove a solar generator. +[Changed] Removed debug hint text for 3d rotation of objects as it was not needed. +[Changed] Re-enable Move button, this system will stay and be refined in the next few patches. + +**Improved Dog AI Dog Brain by Axeman** +[FIXED] Dog not taming due to var reset in wrong place / BIS animal update. +[UPDATED] Dog text format updated. +[UPDATED] Dog whine, instead of bark, when alerting of other nearby players (When player crouched). +[UPDATED] Dog prey kills now use animal looting system. i.e. Dog will loot dead animals, and other objects, then will fetch loot. +[UPDATED] Attached weapon (loot) holder is now dropped if dog finds a new one. Needs update. +[ADDED] New Quiet dog bark and whine. +[UPDATED] Make dog sounds global and use quieter sounds to alert player once dog is tamed. Untamed dog or when attacking is still loud. +[UPDATED] Add occasional quiet dog whine when other players in the area. +[UPDATED] General Dog timeout tweaks to compensate for Arma Animals 'doing their own thing' Server: -[Added] Example code: Epoch Event provides an example on how to broadcast a message to all players using BE. +[Added] Example "Epoch Event" Code to provide an example on how to broadcast a message to all players using BE. [Added] 'CfgTraderLimits' config can control stock limit per trader per item. Default is 100 per item class per trader. [Added] storedVehicleLimit variable in CfgEpochServer can now control the total max allowed vehicles on traders. Default limit is 20. [Fixed] Issue with trading vehicles that caused the trader data not to save or to save to the wrong slot. @@ -18,8 +30,5 @@ Server: [Fixed] Error Generic error in expression in EPOCH_server_repairVehicle. [Changed] Use new sort command instead of BIS_fncSortBy. [Changed] Use new worldSize command as default if maps worldSize setting in CfgEpoch does not exist. -[Info] Removed old .bikey and added new one for 0331. +[Info] Removed old .bikey and added new one for 0340. [Info] The source code for the a3_epoch_server.pbo is now on the GitHub. - - -MORE TBA diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo index 2b77eff3d2f23d5840f865931c9cedec412d3f12..207d9ec017a312f07c82f6388e176113254f812c 100644 GIT binary patch delta 95 zcmV-l0HFWD_Z7hR6|gu01}wu8R@MlU;R7R=;HLr(vu^?=5(6^B60?^Si6w&}I)@=T z0koG7 BBj5l4 delta 97 zcmV-n0G|KA_Z7kS6|gu02F$qWRo4iU;R7R=-=_i&vu^?=5(D*<4zrgOi6sF&gCIJG zAUXlJAUXmYWCt@hH#a#oH-|!=0*6AL1Ghq+1Zv$B9=6@I-MTf56gl~Xl9%S(Vijc7 DRVOC! diff --git a/Server_Install_Pack/sc/battleye/addbackpackcargo.txt b/Server_Install_Pack/sc/battleye/addbackpackcargo.txt index 60ad8921..7b4ba541 100644 --- a/Server_Install_Pack/sc/battleye/addbackpackcargo.txt +++ b/Server_Install_Pack/sc/battleye/addbackpackcargo.txt @@ -1 +1 @@ -5 "" !"B_Parachute" !"B_AssaultPack_(cbr|dgtl|khk|mcamo|ocamo|rgr|sgg)" !"B_Carryall_(cbr|khk|mcamo|ocamo|oli|oucamo)" !"B_FieldPack_(blk|cbr|khk|ocamo|oli|oucamo)" !"B_Kitbag_(cbr|mcamo|rgr|sgg)" !"B_TacticalPack_(blk|mcamo|ocamo|oli|rgr)" !"smallbackpack_(red|green|teal|pink|)_epoch" !"(O|I|B)_UAV_01_backpack_F" +5 "" !"B_Parachute" !"B_AssaultPack_(cbr|dgtl|khk|mcamo|ocamo|rgr|sgg|blk)" !"B_Carryall_(cbr|khk|mcamo|ocamo|oli|oucamo)" !"B_FieldPack_(blk|cbr|khk|ocamo|oli|oucamo)" !"B_Kitbag_(cbr|mcamo|rgr|sgg)" !"B_TacticalPack_(blk|mcamo|ocamo|oli|rgr)" !"smallbackpack_(red|green|teal|pink|)_epoch" !"(O|I|B)_UAV_01_backpack_F" diff --git a/Server_Install_Pack/sc/battleye/scripts.txt b/Server_Install_Pack/sc/battleye/scripts.txt index 4b10b423..abdab221 100644 --- a/Server_Install_Pack/sc/battleye/scripts.txt +++ b/Server_Install_Pack/sc/battleye/scripts.txt @@ -59,7 +59,7 @@ 7 remoteControl !"fn_moduleRemoteControl.sqf" !="\"BIS_fnc_moduleRemoteControl"\" 7 drawIcon3D !="drawIcon3D[\"\x\addons\a3_epoch_code\Data\Member.paa\",_color,_pos,1,1,0,_text,1,0.025,\"PuristaMedium\"];\n}forEach EPOCH_ESP_TARGETS;" !"drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_stability],_color,(getPosATL EPOCH_stabilityTarget),5,5,0,\"\",1,0.05,\"PuristaMedium\"];" !"drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_num],_color,_pos,4,4,0,\"\",1,0.05,\"PuristaMedium\"];" !"EPOCH_drawIcon3dStability" !"EPOCH_drawIcon3d" !"if (_condition) then {\ndrawIcon3D [_icon, _color, _position, _sizeX, _sizeY, _angle, _text," !="drawIcon3D [\"\A3\UI_F_MP_Mark\Data\Tasks\Misc\background.paa\"" 7 drawLine3D !"{\nfor [{_i = 1}, {_i < count _x}, {_i = _i + 1}] do {\ndrawLine3D [_x select (_i - 1), _x select _i, ((BIS_tracedShooter getVari" -7 ctrlCreate !="_ctrl = _display ctrlCreate [\"RscProgress\",_idc + 1];" !="_display ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\"" +7 ctrlCreate !="_ctrl = _display ctrlCreate [\"RscProgress\",_idc + 1];" !="_display ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\"" !="_ctrl = _display ctrlCreate [_x,call _getIDC];" !="_mainGrp = _display ctrlCreate [\"Epoch_main_config_group\",_value];" 7 ctrlDelete !="ctrlDelete _ListGroup;" !="ctrlDelete (rmx_var_crafting_ctrl_GROUP select 0);" 7 ctrlClassName 7 ctrlModel diff --git a/Sources/epoch_code/System/Dog_Brain.fsm b/Sources/epoch_code/System/Dog_Brain.fsm index 892e7854..9ce40116 100644 --- a/Sources/epoch_code/System/Dog_Brain.fsm +++ b/Sources/epoch_code/System/Dog_Brain.fsm @@ -1,62 +1,67 @@ /*%FSM*/ /*%FSM*/ /* -item0[] = {"dog_init",0,4346,-308.811646,-174.618637,-218.811722,-124.618736,0.000000,"dog" \n "init"}; -item1[] = {"_",8,218,99.301392,-164.592987,151.253540,-136.187683,0.000000,""}; -item2[] = {"decision",2,250,208.563339,-220.761597,298.563293,-170.761597,0.000000,"decision"}; -item3[] = {"decision_made",4,218,45.078499,-26.190031,135.078552,23.809971,100.000000,"decision made"}; -item4[] = {"action",2,250,45.978439,130.034073,135.978394,180.034134,0.000000,"action"}; -item5[] = {"sit",4,218,213.642075,-401.053680,303.642059,-351.053680,75.000000,"sit"}; -item6[] = {"dispose",4,218,106.293663,-345.154877,196.293686,-295.154907,80.000000,"dispose"}; -item7[] = {"",7,210,591.173462,637.283325,599.173462,645.283325,0.000000,""}; -item8[] = {"reset_vars",2,250,-57.248745,-175.970840,32.751255,-125.970863,0.000000,"reset vars"}; -item9[] = {"_",8,218,-150.031967,-163.898819,-98.079796,-135.493515,0.000000,""}; -item10[] = {"complete",4,218,-57.303970,-27.236908,32.696198,22.763115,10.000000,"complete"}; -item11[] = {"Wait_120sec",4,218,599.501099,34.548668,689.501099,84.548660,0.000000,"Wait" \n "120sec"}; -item12[] = {"end",1,250,599.472717,-87.843658,689.472839,-37.843731,0.000000,"end"}; -item13[] = {"dispose",4,218,222.476715,3.262041,312.476715,53.262005,80.000000,"dispose"}; -item14[] = {"sit",4,218,-111.822372,281.911530,-21.822369,331.911530,0.000000,"sit"}; -item15[] = {"do_stay",2,250,-311.604431,441.158081,-221.604416,491.158081,0.000000,"do stay"}; -item16[] = {"look_at",4,218,441.281158,-269.172302,531.281128,-221.575928,30.000000,"look at"}; -item17[] = {"look_at",4,218,142.862396,305.132690,232.862579,355.132629,0.000000,"look at"}; -item18[] = {"look_at_player",2,250,183.029541,439.919250,273.029846,489.919220,0.000000,"look at player"}; -item19[] = {"no_decision",4,218,0.928818,-278.012878,90.928802,-228.012848,100.000000,"no decision"}; -item20[] = {"track_wander",4,218,376.743683,-166.765533,466.743683,-116.765511,10.000000,"track wander"}; -item21[] = {"follow",4,218,383.032623,-365.181488,473.032501,-315.181610,50.000000,"follow"}; -item22[] = {"attack",4,218,438.592499,-326.404816,528.592773,-276.404724,40.000000,"attack"}; -item23[] = {"see_food",4,218,333.484619,-399.399414,423.484528,-349.399353,60.000000,"see food"}; -item24[] = {"attack",4,218,282.915100,218.351776,372.915100,268.351807,0.000000,"attack"}; -item25[] = {"see_food",4,218,235.523438,248.096436,325.523621,298.096375,0.000000,"see food"}; -item26[] = {"follow",4,218,43.211121,366.529541,133.210968,416.529510,0.000000,"follow"}; -item27[] = {"do_attack",2,250,475.892395,443.436249,565.892395,493.436249,0.000000,"do attack"}; -item28[] = {"move_to_food",2,250,378.591339,441.849182,468.591644,491.849152,0.000000,"move to food"}; -item29[] = {"do_follow",2,250,-12.356815,438.900574,77.643143,488.900665,0.000000,"do follow"}; -item30[] = {"hide",4,218,408.775177,-216.764954,498.775146,-166.765060,20.000000,"hide"}; -item31[] = {"hide",4,218,93.460350,337.900269,183.460388,387.900208,0.000000,"hide"}; -item32[] = {"do_hide",2,250,86.508911,440.972290,176.508820,490.972443,0.000000,"do hide"}; -item33[] = {"eat",4,218,269.500305,-432.050049,359.500397,-382.050049,70.000000,"eat"}; -item34[] = {"eat",4,218,189.995667,276.664276,279.995605,326.664307,0.000000,"eat"}; -item35[] = {"do_eat",2,250,280.691498,440.967438,370.691589,490.967438,0.000000,"do eat"}; -item36[] = {"alert",4,218,332.989319,-116.810501,422.989319,-66.810547,5.000000,"alert"}; -item37[] = {"alert",4,218,-11.409309,336.534821,78.590752,386.534729,0.000000,"alert"}; -item38[] = {"do_alert",2,250,-110.595520,440.943939,-20.595509,490.944031,0.000000,"do alert"}; -item39[] = {"play",4,218,159.478867,-373.192657,249.478699,-323.192596,78.000000,"play"}; -item40[] = {"play",4,218,-61.277840,309.296783,28.722137,359.296478,0.000000,"play"}; -item41[] = {"do_play",2,250,-210.527878,441.384155,-120.528084,491.383759,0.000000,"do play"}; -item42[] = {"mourn",4,218,52.084259,-312.505798,142.084351,-262.505737,90.000000,"mourn"}; -item43[] = {"mourn",4,218,270.790802,67.418800,360.790863,117.418747,0.000000,"mourn"}; -item44[] = {"do_mourn",2,250,448.517395,67.609764,538.517212,117.609756,0.000000,"do mourn"}; -item45[] = {"wander",4,218,-214.253967,224.673553,-124.253967,274.673584,0.000000,"wander"}; -item46[] = {"_",8,218,568.164734,141.965942,620.116821,170.371155,5.000000,""}; -item47[] = {"track",4,218,-160.918762,254.950806,-70.918755,304.950806,0.000000,"track"}; -item48[] = {"do_track",2,250,-409.868256,438.978760,-319.868225,488.978760,0.000000,"do track"}; -item49[] = {"",7,210,-67.774078,635.077393,-59.774075,643.077393,0.000000,""}; -item50[] = {"do_wander",2,250,-506.306610,440.399109,-416.306580,490.399109,0.000000,"do wander"}; -item51[] = {"kill_prey",4,218,-265.259827,194.049530,-175.259766,244.049530,0.000000,"kill prey"}; -item52[] = {"do_kill",2,250,-604.120972,440.934174,-514.120972,490.934174,0.000000,"do kill"}; -item53[] = {"clean_up",2,250,448.864868,3.913227,538.864990,53.913231,0.000000,"clean up"}; -link0[] = {0,9}; -link1[] = {1,2}; +item0[] = {"dog",0,250,-350.000000,-125.000000,-250.000000,-75.000000,0.000000,"dog"}; +item1[] = {"_",8,218,675.000000,150.000000,775.000000,200.000000,0.000000,""}; +item2[] = {"decision",2,250,50.000000,-125.000000,150.000000,-75.000000,0.000000,"decision"}; +item3[] = {"decision_made",4,218,50.000000,0.000000,150.000000,50.000000,100.000000,"decision made"}; +item4[] = {"action",2,250,50.000000,150.000000,150.000000,200.000000,0.000000,"action"}; +item5[] = {"sit",4,218,-200.000000,-425.000000,-100.000000,-375.000000,75.000000,"sit"}; +item6[] = {"dispose",4,218,-200.000000,-350.000000,-100.000000,-300.000000,80.000000,"dispose"}; +item7[] = {"",7,210,721.000000,621.000000,729.000000,629.000000,0.000000,""}; +item8[] = {"reset_vars",2,250,-200.000000,0.000000,-100.000000,50.000000,0.000000,"reset vars"}; +item9[] = {"_",8,218,-200.000000,-125.000000,-100.000000,-75.000000,0.000000,""}; +item10[] = {"complete",4,218,-200.000000,150.000000,-100.000000,200.000000,10.000000,"complete"}; +item11[] = {"Wait_120sec",4,218,675.000000,50.000000,775.000000,100.000000,0.000000,"Wait" \n "120sec"}; +item12[] = {"end",1,250,675.000000,-125.000000,775.000000,-75.000000,0.000000,"end"}; +item13[] = {"dispose",4,218,275.000000,0.000000,375.000000,50.000000,80.000000,"dispose"}; +item14[] = {"sit",4,218,-325.000000,300.000000,-225.000000,350.000000,0.000000,"sit"}; +item15[] = {"do_stay",2,250,-325.000000,450.000000,-225.000000,500.000000,0.000000,"do stay"}; +item16[] = {"look_at",4,218,425.000000,-350.000000,525.000000,-300.000000,30.000000,"look at"}; +item17[] = {"look_at",4,218,200.000000,350.000000,300.000000,400.000000,0.000000,"look at"}; +item18[] = {"look_at_player",2,250,200.000000,450.000000,300.000000,500.000000,0.000000,"look at player"}; +item19[] = {"no_decision",4,218,-200.000000,-200.000000,-100.000000,-150.000000,100.000000,"no decision"}; +item20[] = {"track_wander",4,218,425.000000,-200.000000,525.000000,-150.000000,10.000000,"track wander"}; +item21[] = {"follow",4,218,175.000000,-425.000000,275.000000,-375.000000,50.000000,"follow"}; +item22[] = {"attack",4,218,425.000000,-425.000000,525.000000,-375.000000,40.000000,"attack"}; +item23[] = {"see_food",4,218,50.000000,-425.000000,150.000000,-375.000000,60.000000,"see food"}; +item24[] = {"attack",4,218,500.000000,275.000000,600.000000,325.000000,0.000000,"attack"}; +item25[] = {"see_food",4,218,400.000000,300.000000,500.000000,350.000000,0.000000,"see food"}; +item26[] = {"follow",4,218,-25.000000,375.000000,75.000000,425.000000,0.000000,"follow"}; +item27[] = {"do_attack",2,4346,500.000000,450.000000,600.000000,500.000000,0.000000,"do attack"}; +item28[] = {"move_to_food",2,250,400.000000,450.000000,500.000000,500.000000,0.000000,"move to food"}; +item29[] = {"do_follow",2,250,-25.000000,450.000000,75.000000,500.000000,0.000000,"do follow"}; +item30[] = {"hide",4,218,425.000000,-275.000000,525.000000,-225.000000,20.000000,"hide"}; +item31[] = {"hide",4,218,100.000000,375.000000,200.000000,425.000000,0.000000,"hide"}; +item32[] = {"do_hide",2,250,100.000000,450.000000,200.000000,500.000000,0.000000,"do hide"}; +item33[] = {"eat",4,218,-75.000000,-425.000000,25.000000,-375.000000,70.000000,"eat"}; +item34[] = {"eat",4,218,300.000000,325.000000,400.000000,375.000000,0.000000,"eat"}; +item35[] = {"do_eat",2,250,300.000000,450.000000,400.000000,500.000000,0.000000,"do eat"}; +item36[] = {"alert",4,218,425.000000,-125.000000,525.000000,-75.000000,5.000000,"alert"}; +item37[] = {"alert",4,218,-125.000000,350.000000,-25.000000,400.000000,0.000000,"alert"}; +item38[] = {"do_alert",2,250,-125.000000,450.000000,-25.000000,500.000000,0.000000,"do alert"}; +item39[] = {"play",4,218,300.000000,-425.000000,400.000000,-375.000000,45.000000,"play"}; +item40[] = {"play",4,218,-225.000000,325.000000,-125.000000,375.000000,0.000000,"play"}; +item41[] = {"do_play",2,250,-225.000000,450.000000,-125.000000,500.000000,0.000000,"do play"}; +item42[] = {"mourn",4,218,-200.000000,-275.000000,-100.000000,-225.000000,90.000000,"mourn"}; +item43[] = {"mourn",4,218,275.000000,75.000000,375.000000,125.000000,0.000000,"mourn"}; +item44[] = {"do_mourn",2,250,425.000000,75.000000,525.000000,125.000000,0.000000,"do mourn"}; +item45[] = {"wander",4,218,-525.000000,250.000000,-425.000000,300.000000,0.000000,"wander"}; +item46[] = {"wait_for_loot",2,250,-750.000000,525.000000,-650.000000,575.000000,0.000000,"wait for loot"}; +item47[] = {"track",4,218,-425.000000,275.000000,-325.000000,325.000000,0.000000,"track"}; +item48[] = {"do_track",2,250,-425.000000,450.000000,-325.000000,500.000000,0.000000,"do track"}; +item49[] = {"",7,210,20.999996,621.000000,29.000002,629.000000,0.000000,""}; +item50[] = {"do_wander",2,250,-525.000000,450.000000,-425.000000,500.000000,0.000000,"do wander"}; +item51[] = {"kill_prey",4,218,-625.000000,225.000000,-525.000000,275.000000,0.000000,"kill prey"}; +item52[] = {"do_kill",2,250,-625.000000,450.000000,-525.000000,500.000000,0.000000,"do kill"}; +item53[] = {"clean_up",2,250,425.000000,0.000000,525.000000,50.000000,0.000000,"clean up"}; +item54[] = {"check",4,218,-625.000000,525.000000,-525.000000,575.000000,10.000000,"check"}; +item55[] = {"_",8,218,-750.000000,450.000000,-650.000000,500.000000,0.000000,""}; +item56[] = {"_",8,218,-350.000000,0.000000,-250.000000,50.000000,0.000000,""}; +item57[] = {"found",4,218,-750.000000,600.000000,-650.000000,650.000000,20.000000,"found"}; +item58[] = {"attach_loot",2,250,-625.000000,600.000000,-525.000000,650.000000,0.000000,"attach loot"}; +link0[] = {0,56}; +link1[] = {1,4}; link2[] = {2,3}; link3[] = {2,5}; link4[] = {2,6}; @@ -89,9 +94,9 @@ link30[] = {4,47}; link31[] = {4,51}; link32[] = {5,2}; link33[] = {6,2}; -link34[] = {7,46}; -link35[] = {8,1}; -link36[] = {9,8}; +link34[] = {7,1}; +link35[] = {8,9}; +link36[] = {9,2}; link37[] = {10,8}; link38[] = {11,12}; link39[] = {13,53}; @@ -127,26 +132,32 @@ link68[] = {42,2}; link69[] = {43,44}; link70[] = {44,11}; link71[] = {45,50}; -link72[] = {46,4}; -link73[] = {47,48}; -link74[] = {48,49}; -link75[] = {49,7}; -link76[] = {50,49}; -link77[] = {51,52}; -link78[] = {52,49}; -link79[] = {53,11}; -globals[] = {0.000000,0,0,0,16777215,640,480,1,135,6316128,1,-294.824829,718.133667,557.528687,-469.195953,770,895,1}; -window[] = {2,-1,-1,-1,-1,550,-1255,-230,25,3,788}; +link72[] = {46,54}; +link73[] = {46,57}; +link74[] = {47,48}; +link75[] = {48,49}; +link76[] = {49,7}; +link77[] = {50,49}; +link78[] = {51,52}; +link79[] = {52,55}; +link80[] = {53,11}; +link81[] = {54,46}; +link82[] = {55,46}; +link83[] = {56,8}; +link84[] = {57,58}; +link85[] = {58,49}; +globals[] = {25.000000,1,0,0,16777215,640,480,1,143,6316128,1,-416.230286,740.374207,636.167480,-260.139587,942,730,1}; +window[] = {2,-1,-1,-1,-1,629,104,1129,104,3,960}; *//*%FSM*/ class FSM { fsmName = "dog"; class States { - /*%FSM*/ - class dog_init + /*%FSM*/ + class dog { - name = "dog_init"; + name = "dog"; init = /*%FSM*/"_dog = _this select 0;" \n "_plyr = player;" \n "" \n @@ -170,6 +181,8 @@ class FSM "_followSpeed = 8;" \n "_forgive = 28;" \n "_dogHolder = objNull;" \n + "_disposeAt = 1000;" \n + "_dogHolder = objNull;" \n "" \n "//Set Vars" \n "_rnd = 0;" \n @@ -191,8 +204,8 @@ class FSM "" \n "//DEBUG" \n "_doDebug = false;" \n - "//_count = 0;" \n - "//_debugDo = ""INIT"";" \n + "_count = 0;" \n + "_debugDo = ""INIT"";" \n "//_hunger = 61;" \n "" \n "" \n @@ -210,7 +223,7 @@ class FSM priority = 0.000000; to="reset_vars"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -246,9 +259,9 @@ class FSM "_dogHolder hideobject false;" \n "};" \n "};"/*%FSM*/; - condition=/*%FSM*/"!_decisionMade && (diag_tickTime - _t) > 6;"/*%FSM*/; + condition=/*%FSM*/"!_decisionMade && (diag_tickTime - _t) > 1;"/*%FSM*/; action=/*%FSM*/"_dogPos = getPosATL _dog;" \n - "_nrPlyrs = _dog nearEntities [_trgtArray, _trgtRange];" \n + "_nrPlyrs = _dogPos nearEntities [_trgtArray, _trgtRange];" \n "_plyrDist = _dog distance _plyr;" \n "_plyrPos = getPosATL player;" \n "_plyrVar = _plyr getVariable [""dog"",""""];" \n @@ -296,23 +309,11 @@ class FSM priority = 80.000000; to="decision"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(!alive _dog) || (_plyrDist > 1000) || (!alive _plyr);"/*%FSM*/; + condition=/*%FSM*/"(!alive _dog) || (_plyrDist > _disposeAt) || (!alive _plyr);"/*%FSM*/; action=/*%FSM*/"_doDispose = true;" \n "_decisionMade = true;"/*%FSM*/; }; /*%FSM*/ - /*%FSM*/ - class play - { - priority = 78.000000; - to="decision"; - precondition = /*%FSM*/"_nrChases=_dogPos nearEntities [_dogChaseArray, 42];"/*%FSM*/; - condition=/*%FSM*/"(_plyrDist < 42) && (count _nrChases > 0) && (_plyrVar == _dogName);"/*%FSM*/; - action=/*%FSM*/"_nrChase = _nrChases select 0;" \n - "_doPlay = true;" \n - "_decisionMade = true;"/*%FSM*/; - }; - /*%FSM*/ /*%FSM*/ class sit { @@ -362,6 +363,18 @@ class FSM "_decisionMade = true;"/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class play + { + priority = 45.000000; + to="decision"; + precondition = /*%FSM*/"_nrChases=_dogPos nearEntities [_dogChaseArray, 42];"/*%FSM*/; + condition=/*%FSM*/"(_plyrDist < 42) && (count _nrChases > 0) && (_plyrVar == _dogName);"/*%FSM*/; + action=/*%FSM*/"_nrChase = _nrChases select 0;" \n + "_doPlay = true;" \n + "_decisionMade = true;"/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class attack { @@ -592,7 +605,7 @@ class FSM priority = 0.000000; to="do_track"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_doTrack;"/*%FSM*/; + condition=/*%FSM*/"_doTrack"/*%FSM*/; action=/*%FSM*/"_doTrack = false;"/*%FSM*/; }; /*%FSM*/ @@ -614,6 +627,15 @@ class FSM { name = "reset_vars"; init = /*%FSM*/"//Default Vars" \n + "" \n + "_criteriaMetAction = nil;" \n + "_foodHolder = objNull;" \n + "_nrFood = """";" \n + "_foodPos = [0,0,0];" \n + "_nrChases=[];" \n + "_nrChase = objNull;" \n + "_chaseDist = 0;" \n + "_maxTravelTime = 8;" \n "" \n "_rnd = 0;" \n "_actionDone = false;" \n @@ -650,20 +672,25 @@ class FSM "};" \n "};" \n "" \n - "if (count _nrPlyrs > 1) then {" \n + "_nrOtherPlyrs = [];" \n + "{" \n + "if(_x != player)then{" \n + "_nrOtherPlyrs pushBack _x;" \n + "}; " \n + "} forEach _nrPlyrs;" \n + "" \n + "_countNrPlyrs = count _nrOtherPlyrs;" \n + "if (_countNrPlyrs > 1) then {" \n "_maxTravelTime = _maxTravelTime * 2;" \n "};" \n "" \n - "_criteriaMetAction = nil;" \n - "_plyrStance = """";" \n - "_foodHolder = objNull;" \n - "_nrFood = """";" \n - "_foodPos = [0,0,0];" \n - "_plyrVar = _plyr getVariable [""dog"",""""];" \n - "_nrChases=[];" \n - "_nrChase = objNull;" \n - "_chaseDist = 0;" \n - "_maxTravelTime = 8;" \n + "//Dog whine warning of nearby players." \n + "if((random 100) < (_countNrPlyrs * 10))then{" \n + "[_dog, _plyr] say3D ""dog_cry"";" \n + "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n + "};" \n + "" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -674,7 +701,7 @@ class FSM priority = 0.000000; to="decision"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -702,11 +729,12 @@ class FSM "" \n "if (floor(random 100)< 8) then {" \n "[_dog, _plyr] say3D ""dog_cry"";" \n + "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "_hunger = _hunger + 2;" \n "};" \n "" \n "_criteria = ""(false)"";" \n - "_criteriaMetAction = ""_dog forceSpeed 0"";" \n "_sWait = 24;" \n "_actionDone = true;" \n "_t = diag_tickTime;" \n @@ -721,10 +749,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -739,7 +767,7 @@ class FSM "_dirTo = [_dog, _plyrPos] call BIS_fnc_dirTo;" \n "_posTo = [_dog, 2,_dirTo] call BIS_fnc_relPos;" \n "_dog moveTo _posTo;" \n - "_criteria = ""(_dog distance _posTo < 1)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _posTo < 1.5)"";" \n "_sWait = 4;" \n "" \n "}else{" \n @@ -761,6 +789,8 @@ class FSM "" \n "if (floor(random 100)<_dogNoise) then {" \n "[_dog, _plyr] say3D ""dog_cry"";" \n + "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "" \n @@ -774,10 +804,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -788,21 +818,19 @@ class FSM class do_attack { name = "do_attack"; - init = /*%FSM*/"_dog forceSpeed 7;" \n + init = /*%FSM*/"_dog forceSpeed 5;" \n "_moveTo = _plyrPos;" \n "" \n - "if (! surfaceIsWater _moveTo) then {" \n + "if !( surfaceIsWater _moveTo) then {" \n "_dog moveTo _moveTo;" \n - "_criteria = ""(_dog distance _moveTo < 2)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _plyr < 1.5)"";" \n "_sWait = 8;" \n "}else{" \n "_criteria = ""(true)"";" \n "_sWait = 0;" \n "};" \n "" \n - "" \n - "" \n - "if (_dog distance _plyr < 3) then {" \n + "if (_dog distance _plyr < 1.5) then {" \n "_plyPos = getPosATL _plyr;" \n "" \n "_dog call EPOCH_client_bitePlayer;" \n @@ -819,8 +847,10 @@ class FSM "_actionDone = true;" \n "_t = diag_tickTime;" \n "" \n - "if (floor(random 100) < 32) then {" \n + "if (floor(random 100) < 6) then {" \n "[_dog, _plyr] say3D ""dog_bark"";" \n + "EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "if (floor(random 100)<_forgive) then {" \n @@ -837,10 +867,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -852,9 +882,10 @@ class FSM { name = "move_to_food"; init = /*%FSM*/"_dog forceSpeed 4;" \n + "_foodPos set [2,0];" \n "_dog moveTo _foodPos;" \n "" \n - "_criteria = ""(false)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _foodPos < 1.5)"";" \n "_sWait = (_dog distance _foodPos) max 1;" \n "_actionDone = true;" \n "_t = diag_tickTime;" \n @@ -869,10 +900,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -888,7 +919,8 @@ class FSM "" \n "if (! surfaceIsWater _moveTo) then {" \n "_dog moveTo _moveTo;" \n - "_criteria = ""(_dog distance _moveTo < 2)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5) || (_dog distance _plyr < 1.5)"";" \n + "_criteriaMetAction = """";" \n "_sWait = (_dog distance _moveTo) max _maxTravelTime;" \n "}else{" \n "_criteria = ""(true)"";" \n @@ -914,10 +946,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -943,9 +975,11 @@ class FSM "" \n "if (floor(random 100)<_dogNoise) then {" \n "[_dog, _plyr] say3D ""dog_cry"";" \n + "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n - "_criteria = ""(_dog distance _moveTo < 3)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5)"";" \n "_sWait = _maxTravelTime;" \n "_actionDone = true;" \n "_t = diag_tickTime;" \n @@ -961,10 +995,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -978,17 +1012,17 @@ class FSM init = /*%FSM*/"deleteVehicle _foodHolder;" \n "" \n "if (_plyrVar == _dogName) then {" \n - "titleText [format[""You have fed %1."",_dogName], ""PLAIN""];" \n + "_dt = [format[""You have fed %1"",_dogName], 0, 1, 6, 2, 0, 1] spawn bis_fnc_dynamictext;" \n "}else{" \n "_plyr setVariable [""dog"", _dogName];" \n - "titleText [format[""You have tamed %1."",_dogName], ""PLAIN""];" \n + "_dt = [format[""You have tamed %1"",_dogName], 0, 1, 6, 2, 0, 1] spawn bis_fnc_dynamictext;" \n "};" \n "_hunger = _hunger - 40;" \n "" \n "_sWait = 1;" \n "_actionDone = true;" \n "_t = diag_tickTime;" \n - "_criteria = ""(true)"";" \n + "_criteria = ""isNull _foodHolder"";" \n "" \n "" \n "if (_doDebug) then {" \n @@ -1000,10 +1034,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1016,7 +1050,9 @@ class FSM name = "do_alert"; init = /*%FSM*/"_dog forceSpeed 0;" \n "if (floor(random 75)<_dogNoise) then {" \n - "[_dog, _plyr] say3D ""dog_bark"";" \n + "[_dog, _plyr] say3D ""dog_cry_quiet"";" \n + "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "_dirTo = [_dog, getPos (_nrPlyrs select 1)] call BIS_fnc_dirTo;" \n @@ -1037,10 +1073,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1055,6 +1091,8 @@ class FSM "" \n "if (_rnd < 42) then {" \n "[_dog, _plyr] say3D ""dog_bark"";" \n + "EPOCH_say3D_PVS = [player, _dog, 18,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "if (_rnd < 6) then {" \n @@ -1067,7 +1105,7 @@ class FSM "" \n "" \n "" \n - "_criteria = ""(_dog distance _moveTo < 2)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5)"";" \n "_sWait = (_dog distance _moveTo) max 4;" \n "_actionDone = true;" \n "_t = diag_tickTime;" \n @@ -1091,10 +1129,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1134,6 +1172,38 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class wait_for_loot + { + name = "wait_for_loot"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class found + { + priority = 20.000000; + to="attach_loot"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _dogHolder)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class check + { + priority = 10.000000; + to="wait_for_loot"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _l > 1) && count (nearestObjects [_dogPos, [""WeaponHolder""],3]) > 0"/*%FSM*/; + action=/*%FSM*/"_l = diag_tickTime;" \n + "_dogHolder = nearestObjects [_dogPos, [""WeaponHolder""], 3] select 0;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ /*%FSM*/ class do_track { @@ -1144,7 +1214,7 @@ class FSM "" \n "if (! surfaceIsWater _moveTo) then {" \n "_dog moveTo _moveTo;" \n - "_criteria = ""(_dog distance _moveTo < 2)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5)"";" \n "_sWait = _plyrDist max _maxTravelTime;" \n "}else{" \n "_criteria = ""(true)"";" \n @@ -1155,15 +1225,21 @@ class FSM "" \n "if (_rnd< 12) then {" \n "[_dog, _plyr] say3D ""dog_bark"";" \n + "EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "if (_rnd < 6) then {" \n "_hunger = _hunger + 1;" \n "[_dog, _plyr] say3D ""dog_cry"";" \n + "EPOCH_say3D_PVS = [player, _dog, 3,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "if ((_hunger > 56) && (_rnd < 48)) then {" \n "[_dog, _plyr] say3D ""dog_cry"";" \n + "EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n + "publicVariableServer ""EPOCH_say3D_PVS"";" \n "};" \n "" \n "" \n @@ -1181,10 +1257,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1201,7 +1277,7 @@ class FSM "if (! surfaceIsWater _moveTo) then {" \n "_dog forceSpeed 4;" \n "_dog moveTo _moveTo;" \n - "_criteria = ""(_dog distance _moveTo < 2)"";" \n + "_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5)"";" \n "_sWait = floor (_dog distance _moveTo) max _maxTravelTime;" \n "}else{" \n "_criteria = ""(true)"";" \n @@ -1226,10 +1302,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; + priority = 0.000000; to="action"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1240,31 +1316,28 @@ class FSM class do_kill { name = "do_kill"; - init = /*%FSM*/"if (isNull _dogHolder) then {" \n - "_dogHolder = createVehicle [""WeaponHolderSimulated"", getPosATL _dog, [], 0, ""CAN_COLLIDE""];" \n - "_dogHolder attachTo [_dog, [-0.2,1.2,0.7]];" \n - "_dogHolder hideobject true;" \n - "};" \n + init = /*%FSM*/"{" \n + " if !(alive _x) then {" \n + " if ((_x isKindOf ""Animal_Base_F"" && !(_x isKindOf ""Dog_Base_F"")) || (typeOf _x) in[""Epoch_Sapper_F"", ""Epoch_SapperB_F"", ""Epoch_Cloak_F"", ""I_UAV_01_F""]) then {" \n + " EPOCH_lootAnimal = [_x, player, Epoch_personalToken];" \n + " publicVariableServer ""EPOCH_lootAnimal"";" \n + " };" \n + " };" \n "" \n + "}forEach nearestObjects[_dog, [], 2];" \n "" \n - "if (typeOf _nrChase == ""Rabbit_EPOCH"") then {" \n - "_dogHolder addMagazineCargo [""RabbitCarcass_EPOCH"", 1] ;" \n - "_dogHolder addMagazineCargo [""Pelt_EPOCH"", 1] ;" \n - "};" \n + "_dogPos = getPosATL _dog;" \n + "_l = diag_tickTime;" \n "" \n - "if (_nrChase isKindOf ""Snake_random_EPOCH"") then {" \n - "_dogHolder addMagazineCargo [""Venom_EPOCH"", 1] ;" \n - "_dogHolder addMagazineCargo [""SnakeCarcass_EPOCH"", 1] ;" \n - "};" \n - "" \n - "if (typeOf _nrChase in [""Hen_random_EPOCH"",""Cock_random_EPOCH""]) then {" \n - "_dogHolder addMagazineCargo [""ChickenCarcass_EPOCH"", 1] ;" \n + "//Drop existing loot holder - Update to manage loot" \n + "if!(isNull _dogHolder)then{" \n + "_dogHolder hideobject false;" \n + "detach _dogHolder;" \n "};" \n + "_dogHolder = objNull;" \n "" \n "_hunger = _hunger - 4;" \n "" \n - "deleteVehicle _nrChase;" \n - "" \n "_criteria = ""(true)"";" \n "_sWait = _maxTravelTime;" \n "_actionDone = true;" \n @@ -1279,10 +1352,10 @@ class FSM /*%FSM*/ class _ { - priority = 5.000000; - to="action"; + priority = 0.000000; + to="wait_for_loot"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1314,11 +1387,33 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class attach_loot + { + name = "attach_loot"; + init = /*%FSM*/"_dogHolder attachTo [_dog, [-0.2,1.2,0.7]];" \n + "_dogHolder hideobject true;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class _ + { + priority = 0.000000; + to="action"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ }; - initState="dog_init"; + initState="dog"; finalStates[] = { "end" }; }; -/*%FSM*/ +/*%FSM*/ \ No newline at end of file diff --git a/Sources/epoch_code/compile/setup/EPOCH_clientKeyMap.sqf b/Sources/epoch_code/compile/setup/EPOCH_clientKeyMap.sqf new file mode 100644 index 00000000..7350981f --- /dev/null +++ b/Sources/epoch_code/compile/setup/EPOCH_clientKeyMap.sqf @@ -0,0 +1,60 @@ +private ["_keyMap","_args","_input","_return"]; +params [["_args",0],["_input",0]]; + +_keyMap = +[ + //["Name", "Variable name", Default value], + ["Build: Mode 1", "EPOCH_keysBuildMode1", 2], + ["Build: Mode 2", "EPOCH_keysBuildMode2", 3], + ["Build: Direction", "EPOCH_keysBuildDir", 4], + //["Build: Static", "EPOCH_keysBuildStatic", 5], + ["Build: Move UP", "EPOCH_keysBuildMovUp", 0xC9], + ["Build: Move DOWN", "EPOCH_keysBuildMovDn", 0xD1], + ["Build: Move FORWARD", "EPOCH_keysBuildMovFwd", 0xC7], + ["Build: Move BACK", "EPOCH_keysBuildMovBak", 0xCF], + ["Build: Move LEFT", "EPOCH_keysBuildMovL", 0xD2], + ["Build: Move RIGHT", "EPOCH_keysBuildMovR", 0xD3], + ["Build: Rotate LEFT", "EPOCH_keysBuildRotL", 0x12], + ["Build: Rotate RIGHT", "EPOCH_keysBuildRotR", 0x10], + ["Build: BUILD", "EPOCH_keysBuildIt", 0x39], + ["Trade", "EPOCH_keysAcceptTrade", 0x14], + ["Holster Weapon", "EPOCH_keysHolster", 35], + ["Debug Monitor", "EPOCH_keysDebugMon", 41] +]; + +switch (_args) do { + case 0: //load variables + { + { + call compile format ["%1 = profileNamespace getVariable ['%1', %2]",_x select 1, _x select 2]; + } forEach _keyMap; + + _return = true; + }; + + case 1: //delete all profile namespace variables + { + { + profileNamespace setVariable [_x select 1, nil]; + } forEach _keyMap; + + _return = true; + }; + + case 2: //returns keymap to a caller for processing + { + _return = _keyMap; + }; + + case 3: //search by variable name and return element if exists (not tested) + { + _return = + { + _s = toLower(_x select 1) find toLower _input; + if (_s > -1) exitWith {_x}; + [] + } forEach _keyMap; + }; +}; + +_return diff --git a/Sources/epoch_code/config.cpp b/Sources/epoch_code/config.cpp index ae1fb23f..ca92c62a 100644 --- a/Sources/epoch_code/config.cpp +++ b/Sources/epoch_code/config.cpp @@ -188,6 +188,7 @@ class CfgClientFunctions class clientRespawn {}; class clientRevive {}; class client_rejectPlayer {}; + class clientKeyMap {}; }; class p2p_trading @@ -262,8 +263,14 @@ class CfgClientFunctions class 3DctrlPitchYaw {}; class 3DctrlSpin {}; class 3DctrlYaw {}; + class InterruptConfig {}; + class InterruptConfigActions {}; }; + class config { + file = "\x\addons\a3_epoch_code\gui\scripts\config"; + class config_keymap {}; + }; class gui_craft { file = "\x\addons\a3_epoch_code\gui\scripts\craftingv2"; class crafting_animate {}; diff --git a/Sources/epoch_code/gui/Epoch_GUI_ClientConfigs.hpp b/Sources/epoch_code/gui/Epoch_GUI_ClientConfigs.hpp new file mode 100644 index 00000000..da9fe5d8 --- /dev/null +++ b/Sources/epoch_code/gui/Epoch_GUI_ClientConfigs.hpp @@ -0,0 +1,294 @@ +/* +The x and y coords of the child control are relative to the parent class, the height and width are not +If the height and / or width of the child control are greater than the parent control then scrollbars will be seen +This allows the creation of scrollable active text controls etc +The entire child class needs to be defined in the parents subclass class Controls {}; + +External parent classes: +RscControlsGroup +RscControlsGroupNoScrollbars +RscControlsGroupNoHScrollbars + +http://ru.armacomref.wikia.com/wiki/Dialog_Control +*/ + +/** ---- TEMPLATE ---- +Copy the array part of text below, from $[ to ] +Open GUI editor in game and press CTRL + O +That's it! + +Note: IDCs for groups are automatically generated, but not for the controls inside groups! +Note: x and y from the output should be set to 0! + **/ +/* #Xasyno +$[ + 1.063, + ["interrupTemplate",[[0,0,1,1],0.025,0.04,"GUI_GRID"],0,0,0], + [2300,"EpochConfigTemplateGROUP",[1,"",["0.29375 * safezoneW + safezoneX","0.225 * safezoneH + safezoneY","0.4135 * safezoneW","0.4202 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],[]] +] +*/ + +/** Inherit from this template if confused **/ +class Epoch_main_config_template: RscControlsGroup +{ + idc = -1; + x = 0; //keep x and y absolute + y = 0; + w = 0.4135 * safezoneW; + h = 0.4202 * safezoneH; + class controls {}; +}; + +class Epoch_main_config_changelog: Epoch_main_config_template +{ + onLoad = "((findDisplay 49) displayCtrl 71000) htmlLoad 'x\addons\a3_epoch_code\gui\changelog.html';"; + class controls + { + class Epoch_main_config_html: RscHtml //https://community.bistudio.com/wiki/DialogControls-Text#CT_HTML.3D9 + { + idc = 71000; + type = 9; + style = 0x00; + x = 0; //keep x and y absolute + y = 0; + w = 0.4135 * safezoneW; + h = 0.4202 * safezoneH; + filename = "changelog.html"; + text="test"; + + colorText[] = {1,1,1,1.0}; + colorBold[] = {0.76,0.5,0.07,0.8}; + colorLink[] = {1,1,1,0.75}; + colorLinkActive[] = {1,1,1,1.0}; + + colorBackground[] = {0.2,0.2,0.2,1}; + + colorPicture[] = {1, 1, 1, 1}; + colorPictureBorder[] = {1, 0, 0, 1}; + colorPictureLink[] = {0, 0, 1, 1}; + colorPictureSelected[] = {0, 1, 0, 1}; + + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + prevPage = "\A3\ui_f\data\gui\rsccommon\rschtml\arrow_left_ca.paa"; + nextPage = "\A3\ui_f\data\gui\rsccommon\rschtml\arrow_right_ca.paa"; + shadow = 2; + class H1 + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; + align = "left"; + }; + class H2 + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + align = "right"; + }; + class H3 + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + align = "left"; + }; + class H4 + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + align = "left"; + }; + class H5 + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + align = "left"; + }; + class H6 + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + align = "left"; + }; + class P + { + font = "PuristaMedium"; + fontBold = "PuristaSemibold"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + align = "left"; + }; + }; + }; +}; + +/* #Tefyru +$[ + 1.063, + ["asd",[[0,0,1,1],0.025,0.04,"GUI_GRID"],0,0,0], + [-2300,"EpochConfigKeyMap",[1,"",["0.29375 * safezoneW + safezoneX","0.225 * safezoneH + safezoneY","0.237183 * safezoneW","0.308 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],[]], + [2200,"mainBG",[2300,"",["0 * safezoneW","1.63913e-008 * safezoneH","0.237183 * safezoneW","0.308 * safezoneH"],[-1,-1,-1,-1],[0.2,0.2,0.2,1],[-1,-1,-1,-1],"","-1"],[]], + [2201,"IGUIBack_2202",[2300,"",["0.123747 * safezoneW","0.022 * safezoneH","0.103171 * safezoneW","0.022 * safezoneH"],[-1,-1,-1,-1],[0.76,0.5,0.07,0.8],[-1,-1,-1,-1],"","-1"],["idc = 2202;"]], + [2202,"IGUIBack_2201",[2300,"",["0.0103125 * safezoneW","0.022 * safezoneH","0.103171 * safezoneW","0.022 * safezoneH"],[-1,-1,-1,-1],[0.76,0.5,0.07,0.8],[-1,-1,-1,-1],"","-1"],["idc = 2201;"]], + [1000,"RscText_1001",[2300,"Assign a key:",["0.125811 * safezoneW","0.0264 * safezoneH","0.0989998 * safezoneW","0.0154 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],["idc = 1001;"]], + [1001,"RscText_1000",[2300,"Action:",["0.0123751 * safezoneW","0.0264 * safezoneH","0.0989997 * safezoneW","0.0154 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],["idc = 1000;"]], + [1002,"RscListbox_1500: RscListBox",[2300,"",["0.0103125 * safezoneW","0.044 * safezoneH","0.103125 * safezoneW","0.242 * safezoneH"],[-1,-1,-1,-1],[0,0,0,0.5],[-1,-1,-1,-1],"","-1"],["idc = 1500;"]], + [1400,"RscEdit_1400",[2300,"",["0.124779 * safezoneW","0.154 * safezoneH","0.102093 * safezoneW","0.0242 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],["idc = 1400;"]], + [1003,"RscText_1002",[2300,"New Key:",["0.125809 * safezoneW","0.1364 * safezoneH","0.0989998 * safezoneW","0.0154 * safezoneH"],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"","-1"],["idc = 1002;"]], + [1004,"RscText_1003",[2300,"Default:",["0.123747 * safezoneW","0.066 * safezoneH","0.103124 * safezoneW","0.022 * safezoneH"],[-1,-1,-1,-1],[0,0,0,0.5],[-1,-1,-1,-1],"","-1"],["idc = 1003;"]], + [1700,"",[2300,"Save",["0.12684 * safezoneW","0.198 * safezoneH","0.0464063 * safezoneW","0.0308 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],[]], + [1701,"",[2300,"Reset",["0.17531 * safezoneW","0.198 * safezoneH","0.0484687 * safezoneW","0.0308 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],[]], + [2400,"",[2300,"Reset all keys",["0.123747 * safezoneW","0.264 * safezoneH","0.103125 * safezoneW","0.022 * safezoneH"],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"","-1"],[]], + [1005,"",[2300,"Current:",["0.12375 * safezoneW","0.088 * safezoneH","0.103124 * safezoneW","0.022 * safezoneH"],[-1,-1,-1,-1],[0,0,0,0.5],[-1,-1,-1,-1],"","-1"],["idc = 1003;"]] +] +*/ + + + +class EpochConfigKeyMap: RscControlsGroupNoScrollbars +{ + x = 0; + y = 0; + w = 0.237183 * safezoneW; + h = 0.308 * safezoneH; + onLoad = "'load' call Epoch_config_keymap;"; + class controls + { + class rmx_eckm_BG: IGUIBack + { + idc = 78000; + x = 0 * safezoneW; + y = 0 * safezoneH; + w = 0.237183 * safezoneW; + h = 0.308 * safezoneH; + colorBackground[] = {0.2,0.2,0.2,1}; + }; + class rmx_eckm_BG_assign: IGUIBack + { + idc = 78001; + + x = 0.123747 * safezoneW; + y = 0.022 * safezoneH; + w = 0.103171 * safezoneW; + h = 0.022 * safezoneH; + colorBackground[] = {0.76,0.5,0.07,0.8}; + }; + class rmx_eckm_BG_action: IGUIBack + { + idc = 78002; + + x = 0.0103125 * safezoneW; + y = 0.022 * safezoneH; + w = 0.103171 * safezoneW; + h = 0.022 * safezoneH; + colorBackground[] = {0.76,0.5,0.07,0.8}; + }; + class rmx_eckm_txt_assign: RscText + { + idc = 78003; + + text = "Assign a key:"; //--- ToDo: Localize; + x = 0.125811 * safezoneW; + y = 0.0264 * safezoneH; + w = 0.0989998 * safezoneW; + h = 0.0154 * safezoneH; + }; + class rmx_eckm_txt_action: RscText + { + idc = 78004; + + text = "Action:"; //--- ToDo: Localize; + x = 0.0123751 * safezoneW; + y = 0.0264 * safezoneH; + w = 0.0989997 * safezoneW; + h = 0.0154 * safezoneH; + }; + class rmx_eckm_txt_nk: RscText + { + idc = 78005; + + text = "New Key:"; //--- ToDo: Localize; + x = 0.125809 * safezoneW; + y = 0.1364 * safezoneH; + w = 0.0989998 * safezoneW; + h = 0.0154 * safezoneH; + colorBackground[] = {0,0,0,0}; + }; + class rmx_eckm_txt_default: RscText + { + idc = 78006; + + text = "Default:"; //--- ToDo: Localize; + x = 0.123747 * safezoneW; + y = 0.066 * safezoneH; + w = 0.103124 * safezoneW; + h = 0.022 * safezoneH; + colorBackground[] = {0,0,0,0.5}; + }; + class rmx_eckm_txt_current: RscText + { + idc = 78007; + + text = "Current:"; //--- ToDo: Localize; + x = 0.12375 * safezoneW; + y = 0.088 * safezoneH; + w = 0.103124 * safezoneW; + h = 0.022 * safezoneH; + colorBackground[] = {0,0,0,0.5}; + }; + class rmx_eckm_lb: RscListBox + { + idc = 78008; + + x = 0.0103125 * safezoneW; + y = 0.044 * safezoneH; + w = 0.103125 * safezoneW; + h = 0.242 * safezoneH; + colorBackground[] = {0,0,0,0.5}; + onLBSelChanged = "_this call Epoch_config_keymap;"; + }; + class rmx_eckm_edit: RscEdit + { + idc = 78009; + + x = 0.124779 * safezoneW; + y = 0.154 * safezoneH; + w = 0.102093 * safezoneW; + h = 0.0242 * safezoneH; + onKeyUp = "_this call Epoch_config_keymap;"; + }; + class rmx_eckm_btn_save: RscShortcutButton + { + idc = 78010; + text = "Save"; //--- ToDo: Localize; + x = 0.12684 * safezoneW; + y = 0.198 * safezoneH; + w = 0.0464063 * safezoneW; + h = 0.0308 * safezoneH; + onMouseButtonClick = "_this call Epoch_config_keymap;"; + }; + class rmx_eckm_btn_reset: RscShortcutButton + { + idc = 78011; + text = "Reset"; //--- ToDo: Localize; + x = 0.17531 * safezoneW; + y = 0.198 * safezoneH; + w = 0.0484687 * safezoneW; + h = 0.0308 * safezoneH; + onMouseButtonClick = "_this call Epoch_config_keymap;"; + }; + class rmx_eckm_btn_resetall: RscButtonMenu + { + idc = 78012; + text = "Reset all keys"; //--- ToDo: Localize; + x = 0.123747 * safezoneW; + y = 0.264 * safezoneH; + w = 0.103125 * safezoneW; + h = 0.022 * safezoneH; + onMouseButtonClick = "_this call Epoch_config_keymap;"; + }; + }; +}; \ No newline at end of file diff --git a/Sources/epoch_code/gui/Epoch_GUI_Config.hpp b/Sources/epoch_code/gui/Epoch_GUI_Config.hpp index 910ab800..63bbd255 100644 --- a/Sources/epoch_code/gui/Epoch_GUI_Config.hpp +++ b/Sources/epoch_code/gui/Epoch_GUI_Config.hpp @@ -10,6 +10,7 @@ class RscCombo; class RscProgress; class RscButton; class RscButtonMenu; +class RscShortcutButton; class RscObject; class RscStandardDisplay; class RscStructuredText; @@ -38,548 +39,12 @@ class IGUIBack; class CA_Title; class ScrollBar; -class rmx_dynamenu { - idd = 66600; - enableSimulation = 1; - movingEnable = 1; - onLoad = "setMousePosition [0.5, 0.5];"; - class controls {}; -}; +#include "Epoch_GUI_ClientConfigs.hpp" +#include "Epoch_GUI_rmx.hpp" -class rmx_rscPicture: RscPicture { - idc = -1; - x = 0.425; y = 0.4; w = 0.15; h = 0.2; - text = ""; -}; - -class rmx_rscObject +class RscTitles { - - idd = 77770; - movingEnable = 0; - enableSimulation = 1; - - class Objects - { - class randomItem //pref less polies for starting item - { - - idc = 77771; - type = 82; - model = "\x\addons\a3_epoch_assets\models\logo.p3d"; - scale = 1; - - direction[] = {0, -0.35, -0.65}; - up[] = {0, 0.65, -0.35}; - - x = 0.5; - y = 0.5; - z = 0.2; - - xBack = 0.5; - yBack = 0.5; - zBack = 1.2; - - inBack = 1; - enableZoom = 0; - zoomDuration = 0.001; - }; - }; -}; - -class rmx_rscControlsGroup: RscControlsGroup -{ - idc = -1; - - x = 0; y = 0; w = 0; h = 0; - colorBackground[] = {0,0,0,0}; - - class VScrollbar: VScrollbar - { - width = 0; - }; - class HScrollbar: VScrollbar - { - height = 0; - }; - class controls {}; -}; - -class rmx_craftingUI { - idd = 77700; - enableSimulation = 1; - movingEnable = 1; - onUnload = "call EPOCH_crafting_unload;"; - onLoad = "setMousePosition [0.5, 0.5];"; - - class Objects - { - class randomItem2 //pref less polies for starting item - { - - idc = 77701; - type = 82; - model = "\x\addons\a3_epoch_assets\models\logo.p3d"; - scale = 1; - - direction[] = {0, -0.35, -0.65}; - up[] = {0, 0.65, -0.35}; - - x = 0.8125; - y = 0.287782; - z = 1; - - xBack = 0.8125; - yBack = 0.287782; - zBack = 1.2; - - inBack = 1; - enableZoom = 0; - zoomDuration = 0.001; - }; - }; - - class controls - { - //Developer menu (DISABLE ON RELEASE) - - //background - class dev_backgrnd: IGUIBack - { - idc = 77703; - x = 0.710375 * safezoneW + safezoneX; - y = 0.224906 * safezoneH + safezoneY; - w = 0.0845625 * safezoneW; - h = 0.22001 * safezoneH; - colorBackground[] = {0,0,0,0.5}; - onLoad = "(_this select 0) ctrlShow false"; - }; - - //buttons - class dev_btn_pic: RscPicture - { - idc = 77702; - - text = "x\addons\a3_epoch_code\Data\UI\dev_mode_off.paa"; - x = 0.795; - y = -0.064; - w = 0.2; - h = 0.075; - onLoad = "(_this select 0) ctrlShow false"; - onMouseButtonDown = "call EPOCH_crafting_dev_toggle;"; - }; - class dev_btn_set: RscButton - { - idc = 77704; - text = "Set"; //--- ToDo: Localize; - x = 0.770187 * safezoneW + safezoneX; - y = 0.2316 * safezoneH + safezoneY; - w = 0.020625 * safezoneW; - h = 0.022 * safezoneH; - onLoad = "(_this select 0) ctrlShow false"; - }; - class dev_btn_rpt: RscButton - { - idc = 77705; - text = "Export"; //--- ToDo: Localize; - x = 0.712437 * safezoneW + safezoneX; - y = 0.414171 * safezoneH + safezoneY; - w = 0.0804375 * safezoneW; - h = 0.022 * safezoneH; - onLoad = "(_this select 0) ctrlShow false"; - }; - class dev_btn_setPos: RscButton - { - idc = 77706; - onLoad = "(_this select 0) ctrlShow false"; - - text = "Set Position"; //--- ToDo: Localize; - x = 0.712575 * safezoneW + safezoneX; - y = 0.384407 * safezoneH + safezoneY; - w = 0.0804375 * safezoneW; - h = 0.022 * safezoneH; - }; - class dev_btn_vectorPlus: RscButton - { - idc = 77707; - onLoad = "(_this select 0) ctrlShow false"; - - text = "+"; //--- ToDo: Localize; - x = 0.778437 * safezoneW + safezoneX; - y = 0.266721 * safezoneH + safezoneY; - w = 0.012375 * safezoneW; - h = 0.022 * safezoneH; - action = "rmx_var_3dCtrlSpin_Vector = rmx_var_3dCtrlSpin_Vector + 0.1; (rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str rmx_var_3dCtrlSpin_Vector;"; - }; - class dev_btn_vectorMinus: RscButton - { - idc = 77708; - onLoad = "(_this select 0) ctrlShow false"; - - text = "-"; //--- ToDo: Localize; - x = 0.73925 * safezoneW + safezoneX; - y = 0.266721 * safezoneH + safezoneY; - w = 0.012375 * safezoneW; - h = 0.022 * safezoneH; - action = "rmx_var_3dCtrlSpin_Vector = rmx_var_3dCtrlSpin_Vector - 0.1; (rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str rmx_var_3dCtrlSpin_Vector;"; - }; - //edit - - class dev_edit_scale: RscEdit - { - idc = 77709; - text = "1"; //--- ToDo: Localize; - x = 0.743375 * safezoneW + safezoneX; - y = 0.2316 * safezoneH + safezoneY; - w = 0.02475 * safezoneW; - h = 0.022 * safezoneH; - onLoad = "(_this select 0) ctrlShow false"; - }; - class dev_edit_x: RscEdit - { - idc = 77710; - onLoad = "(_this select 0) ctrlShow false"; - - text = "0.123456"; //--- ToDo: Localize; - x = 0.748524 * safezoneW + safezoneX; - y = 0.2998 * safezoneH + safezoneY; - w = 0.0443435 * safezoneW; - h = 0.022 * safezoneH; - }; - class dev_edit_z: RscEdit - { - idc = 77711; - onLoad = "(_this select 0) ctrlShow false"; - - text = "0.123456"; //--- ToDo: Localize; - x = 0.748948 * safezoneW + safezoneX; - y = 0.325807 * safezoneH + safezoneY; - w = 0.0443435 * safezoneW; - h = 0.022 * safezoneH; - }; - class dev_edit_y: RscEdit - { - idc = 77712; - onLoad = "(_this select 0) ctrlShow false"; - - text = "0.123456"; //--- ToDo: Localize; - x = 0.749458 * safezoneW + safezoneX; - y = 0.352082 * safezoneH + safezoneY; - w = 0.0443435 * safezoneW; - h = 0.022 * safezoneH; - }; - class dev_edit_vector: RscEdit - { - idc = 77713; - onLoad = "(_this select 0) ctrlShow false"; - - text = "0"; //--- ToDo: Localize; - x = 0.755234 * safezoneW + safezoneX; - y = 0.267601 * safezoneH + safezoneY; - w = 0.0195937 * safezoneW; - h = 0.022 * safezoneH; - }; - //text - class dev_txt_scale: RscText - { - idc = 77714; - text = "Scale:"; //--- ToDo: Localize; - x = 0.712437 * safezoneW + safezoneX; - y = 0.2338 * safezoneH + safezoneY; - w = 0.028875 * safezoneW; - h = 0.0154 * safezoneH; - onLoad = "(_this select 0) ctrlShow false"; - }; - class dev_txt_X: RscText - { - idc = 77715; - onLoad = "(_this select 0) ctrlShow false"; - - text = "X:"; //--- ToDo: Localize; - x = 0.712703 * safezoneW + safezoneX; - y = 0.303578 * safezoneH + safezoneY; - w = 0.028875 * safezoneW; - h = 0.0154 * safezoneH; - }; - class dev_txt_z: RscText - { - idc = 77716; - onLoad = "(_this select 0) ctrlShow false"; - - text = "Z:"; //--- ToDo: Localize; - x = 0.712543 * safezoneW + safezoneX; - y = 0.329511 * safezoneH + safezoneY; - w = 0.028875 * safezoneW; - h = 0.0154 * safezoneH; - }; - class dev_txt_y: RscText - { - idc = 77717; - onLoad = "(_this select 0) ctrlShow false"; - - text = "Y:"; //--- ToDo: Localize; - x = 0.712564 * safezoneW + safezoneX; - y = 0.356482 * safezoneH + safezoneY; - w = 0.028875 * safezoneW; - h = 0.0154 * safezoneH; - }; - class dev_txt_3D: RscText //3d preview red - { - idc = 77718; - - text = ""; - x = 0.6; - y = 0.04; - w = 0.4; - h = 0.44; - colorBackground[] = {1,0,0,0.3}; - onLoad = "(_this select 0) ctrlShow false"; - }; - class dev_txt_Vector: RscText - { - idc = 77719; - onLoad = "(_this select 0) ctrlShow false"; - - text = "vUP:"; //--- ToDo: Localize; - x = 0.712437 * safezoneW + safezoneX; - y = 0.268921 * safezoneH + safezoneY; - w = 0.0226875 * safezoneW; - h = 0.0154 * safezoneH; - }; - // ----------- MAIN GUI PART ----------- // - //background - class rmx_cUI_back: IGUIBack - { - idc = 77800; - - x = 0; - y = 0; - w = 1; - h = 1; - colorBackground[] = {0,0,0,0.1}; - onLoad = "_cl = _this select 0; _cl ctrlSetFade 1; _cl ctrlCommit 0; _cl ctrlSetFade 0; _cl ctrlCommit 1;"; - }; - //Buttons - class rmx_cUI_btn_craft: RscPicture - { - idc = 77801; - text = "\x\addons\a3_epoch_code\Data\UI\crafting\close.paa"; - x = 0.9; - y = 0.92; - w = 0.1; - h = 0.08; - onLoad = "[(_this select 0),[1,0.92,0,0.08],[0.9,0.92,0.1,0.08]] call EPOCH_crafting_animate;"; - onMouseButtonUp = "call epoch_crafting_craft;"; - }; - class rmx_cUI_btn_clear: RscButton - { - idc = 77802; - text = "X"; //--- ToDo: Localize; - x = 0.26; - y = 0.04; - w = 0.04; - h = 0.052; - onLoad = "[(_this select 0),[0.26,0.04,0,0],[0.26,0.04,0.04,0.052]] call EPOCH_crafting_animate;"; - action = "(rmx_var_crafting_ctrl_Interact select 4) ctrlSetText ''; lbClear (rmx_var_crafting_ctrl_main select 1);"; - }; - //Progressbar - class rmx_cUI_pb: RscProgress - { - idc = 77803; - texture = "#(argb,8,8,3)color(1,1,1,1)"; - textureExt = ""; - colorBar[] = {1, 1, 1, 0.1}; - colorExtBar[] = {1, 1, 1, 1}; - colorFrame[] = {1, 1, 1, 1}; - x = 0.6; - y = 0.92; - w = 0.3; - h = 0.08; - - onLoad = "[(_this select 0),[0.6,0.92,0,0.08],[0.6,0.92,0.3,0.08]] call EPOCH_crafting_animate; (_this select 0) ctrlEnable true;"; - onMouseMoving = "if (rmx_var_crafting_progressClicked && rmx_var_craftQTY != 0) then {(_this select 0) progressSetPosition (((_this select 1)-0.6)*3.3 );};"; - onMouseHolding = "if (rmx_var_crafting_progressClicked && rmx_var_craftQTY != 0) then {(_this select 0) progressSetPosition (((_this select 1)-0.6)*3.3 );};"; - onMouseButtonDown = "rmx_var_crafting_progressClicked = true;"; - onMouseButtonUp = "rmx_var_crafting_progressClicked = false;"; - }; - //progressbar QTY - class rmx_cUI_txt_QTY: RscText - { - idc = 77804; - style = 0x02; //vcenter = 0x0c - text = ""; - x = 0.6; - y = 0.92; - w = 0.3; - h = 0.08; - colorBackground[] = {0,0,0,0.2}; - colorText[] = {1,0.6,0.01,1}; - onLoad = "[(_this select 0),[0.6,0.92,0,0.08],[0.6,0.92,0.3,0.08]] call EPOCH_crafting_animate;"; - }; - - - //edit - class rmx_cUI_edit_searchField: RscEdit - { - idc = 77810; - text = ""; //--- ToDo: Localize; - x = 0.0025; - y = 0.04; - w = 0.2575; - h = 0.052; - colorBackground[] = {0,0,0,0.5}; - onLoad = "[(_this select 0),[0.0025,0.04,0,0.052],[0.0025,0.04,0.2575,0.052]] call EPOCH_crafting_animate;"; - }; - - //listboxes - class rmx_cUI_LB_recipes: RscListbox - { - idc = 77811; - x = 0; - y = 0.092; - w = 0.3; - h = 0.908; - onLoad = "[(_this select 0),[0,0.092,0.3,0],[0,0.092,0.3,0.908]] call EPOCH_crafting_animate;"; - onLBSelChanged = "call EPOCH_crafting_LB_click;"; - }; - class rmx_cUI_LB_ingredients: RscListbox - { - idc = 77812; - x = 0.3; - y = 0.04; - w = 0.3; - h = 0.96; - onLoad = "[(_this select 0),[0.3,0.04,0.3,0],[0.3,0.04,0.3,0.96]] call EPOCH_crafting_animate;"; - onLBDblClick = "call EPOCH_crafting_LB_doubleClick;"; - }; - - //Structured Text - - class rmx_cUI_st_description: RscStructuredText - { - idc = 77820; - text = "..............................."; //--- ToDo: Localize; - x = 0.6; - y = 0.524; - w = 0.4; - h = 0.392; - colorBackground[] = {0,0,0,0}; - }; - - //Text - class rmx_cUI_txt_recipes: RscText - { - idc = 77840; - - text = "Recipes"; //--- ToDo: Localize; - x = 0; - y = 0; - w = 0.3; - h = 0.04; - colorBackground[] = {0,0,0,0.8}; - onLoad = "[(_this select 0),[0,0,0,0.04],[0,0,0.3,0.04]] call EPOCH_crafting_animate;"; - }; - - class rmx_cUI_txt_ingredients: RscText - { - idc = 77841; - - text = "Ingredients"; //--- ToDo: Localize; - x = 0.3; - y = 0; - w = 0.2975; - h = 0.04; - colorBackground[] = {0,0,0,0.8}; - onLoad = "[(_this select 0),[0.3,0,0,0.04],[0.3,0,0.2975,0.04]] call EPOCH_crafting_animate;"; - }; - class rmx_cUI_txt_preview: RscText - { - idc = 77842; - - text = "Preview"; //--- ToDo: Localize; - x = 0.6; - y = 0; - w = 0.3975; - h = 0.04; - colorBackground[] = {1,0.6,0.01,0.8}; - onLoad = "[(_this select 0),[0.6,0,0,0.04],[0.6,0,0.3975,0.04]] call EPOCH_crafting_animate;"; - }; - class rmx_cUI_txt_resources: RscText - { - idc = 77843; - - text = "Resources"; //--- ToDo: Localize; - x = 0.3; - y = 0.96; - w = 0.2975; - h = 0.04; - colorBackground[] = {0,0,0,0.8}; - onLoad = "(_this select 0) ctrlShow false"; - }; - class rmx_cUI_txt_description: RscText - { - idc = 77844; - - text = "Description"; //--- ToDo: Localize; - x = 0.6; - y = 0.48; - w = 0.3975; - h = 0.04; - colorBackground[] = {0,0,0,0.8}; - onLoad = "[(_this select 0),[0.6,0.48,0,0.04],[0.6,0.48,0.3975,0.04]] call EPOCH_crafting_animate;"; - }; - //frames - class rmx_cUI_frame_recipes: RscFrame - { - idc = 77830; - x = 0; - y = 0; - w = 0.3; - h = 1; - }; - class rmx_cUI_frame_craft: RscFrame - { - idc = 77831; - x = 0.3; - y = 0; - w = 0.3; - h = 1; - }; - - class rmx_cUI_frame_preview: RscFrame - { - idc = 77832; - x = 0.6; - y = 0; - w = 0.4; - h = 0.48; - }; - class rmx_cUI_frame_resources: RscFrame - { - idc = 77833; - x = 0.3; - y = 0.92; - w = 0.3; - h = 0.08; - onLoad = "(_this select 0) ctrlShow false"; - }; - class rmx_cUI_frame_description: RscFrame - { - idc = 77834; - x = 0.6; - y = 0.48; - w = 0.4; - h = 0.44; - }; - class rmx_cUI_frame_qty: RscFrame - { - idc = 77835; - x = 0.6; - y = 0.92; - w = 0.4; - h = 0.08; - }; - }; + #include "Epoch_RscTitles.hpp" }; class RscCustomProgress : RscProgress @@ -622,188 +87,6 @@ class SKN_RscEdit tooltipColorShade[] = { 0, 0, 0, 0.65 }; }; -class RscTitles -{ - class EpochGameUI - { - idd = -2; - duration = 999999; - onLoad = "uiNamespace setVariable ['EPOCH_EpochGameUI', _this select 0];"; - class controls - { - - class custom_picture: RscPicture - { - style = 48 + 0x800; - }; - class icon1: custom_picture - { - idc = 21201; - text = "\x\addons\a3_epoch_code\Data\UI\thirst_ca.paa"; - x = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class icon2: custom_picture - { - idc = 21202; - text = "\x\addons\a3_epoch_code\Data\UI\hunger_ca.paa"; - x = "7.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class icon3: custom_picture - { - idc = 21203; - text = "\x\addons\a3_epoch_code\Data\UI\broken_ca.paa"; - x = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class icon4: custom_picture - { - idc = 21204; - text = "\x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa"; - x = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class icon5: custom_picture - { - idc = 21205; - text = "\x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"; - x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class icon6: custom_picture - { - idc = 21206; - text = "\x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa"; - x = "-2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - }; - }; - - class EpochGameUI2 - { - idd = -3; - duration = 10; - onLoad = "uiNamespace setVariable ['EPOCH_EpochGameUI2', _this select 0];"; - class controls - { - - class custom_picture : RscPicture - { - style = 48 + 0x800; - }; - class icon1 : custom_picture - { - idc = 21207; - text = "\x\addons\a3_epoch_code\Data\UI\cc_ca.paa"; - x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "-2.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class RscCryptoText : RscText - { - idc = 21208; - text = ""; - colorText[] = { 1, 1, 1, 0.5 }; - shadow = 0; - sizeEx = 0.08; - x = "2.1 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "-2.2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; - w = "15 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - - }; - }; - - class EpochGameUI3 - { - idd = -4; - duration = 10; - onLoad = "uiNamespace setVariable ['EPOCH_EpochGameUI3', _this select 0];"; - class controls - { - - class custom_picture : RscPicture - { - style = 48 + 0x800; - }; - class icon1 : custom_picture - { - idc = 21209; - text = "\x\addons\a3_epoch_code\Data\UI\battery_ca.paa"; - x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; - w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - class RscEnergyText : RscText - { - idc = 21210; - text = ""; - colorText[] = { 1, 1, 1, 0.5 }; - shadow = 0; - sizeEx = 0.08; - x = "2.1 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; - y = "-0.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; - w = "15 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - }; - }; - }; - class rmx_progressTest - { - idd = 10200; - duration = 999999; - fadein = 0.5; - fadeout = 0.5; - onLoad = "uiNamespace setVariable ['rmx_var_progressTestDisplay',_this select 0]"; - - class controls {}; - }; - class rmx_CraftingProgress - { - idd = 10100; - duration = 999999; - fadein = 0.2; - fadeout = 0.2; - onLoad = "uiNamespace setVariable ['rmx_var_CraftingProgressDisplay',_this select 0]"; - - class controls {}; - }; - class Default //use to delete title resources - { - idd = -1; - fadein = 0; - fadeout = 0; - duration = 0; - }; -}; - /* class TradeRequest { @@ -4034,10 +3317,14 @@ class RscDisplayInventory }; }; }; +class RscDisplayInterrupt: RscStandardDisplay //convert to preprocessFileNumbers +{ + onLoad = "[""onLoad"",_this,""RscDisplayInterrupt"",'GUI'] call (uinamespace getvariable 'BIS_fnc_initDisplay'); _this call EPOCH_InterruptConfig;"; +}; class RscDisplayMPInterrupt: RscStandardDisplay { - onLoad = "[""onLoad"",_this,""Epoch_onPause"",'Epoch'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"";[""onLoad"",_this,""RscDisplayMPInterrupt"",'Epoch'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + onLoad = "[""onLoad"",_this,""Epoch_onPause"",'Epoch'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"";[""onLoad"",_this,""RscDisplayMPInterrupt"",'Epoch'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"";_this call EPOCH_InterruptConfig;"; //onLoad = "[""onLoad"",_this,""RscDisplayMPInterrupt"",'GUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; onUnload = "[""onUnload"",_this,""RscDisplayMPInterrupt"",'Epoch'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; }; diff --git a/Sources/epoch_code/gui/Epoch_GUI_rmx.hpp b/Sources/epoch_code/gui/Epoch_GUI_rmx.hpp new file mode 100644 index 00000000..941f12e5 --- /dev/null +++ b/Sources/epoch_code/gui/Epoch_GUI_rmx.hpp @@ -0,0 +1,603 @@ +class rmx_dynamenu { + idd = 66600; + enableSimulation = 1; + movingEnable = 1; + onLoad = "setMousePosition [0.5, 0.5];"; + class controls {}; +}; + +class rmx_rscPicture: RscPicture { + idc = -1; + x = 0.425; y = 0.4; w = 0.15; h = 0.2; + text = ""; +}; + +class rmx_rscObject +{ + + idd = 77770; + movingEnable = 0; + enableSimulation = 1; + + class Objects + { + class randomItem //pref less polies for starting item + { + + idc = 77771; + type = 82; + model = "\x\addons\a3_epoch_assets\models\logo.p3d"; + scale = 1; + + direction[] = {0, -0.35, -0.65}; + up[] = {0, 0.65, -0.35}; + + x = 0.5; + y = 0.5; + z = 0.2; + + xBack = 0.5; + yBack = 0.5; + zBack = 1.2; + + inBack = 1; + enableZoom = 0; + zoomDuration = 0.001; + }; + }; +}; + +class rmx_rscControlsGroup: RscControlsGroup +{ + idc = -1; + + x = 0; y = 0; w = 0; h = 0; + colorBackground[] = {0,0,0,0}; + + class VScrollbar: VScrollbar + { + width = 0; + }; + class HScrollbar: VScrollbar + { + height = 0; + }; + class controls {}; +}; + +class rmx_craftingUI { + idd = 77700; + enableSimulation = 1; + movingEnable = 1; + onUnload = "call EPOCH_crafting_unload;"; + onLoad = "setMousePosition [0.5, 0.5];"; + + class Objects + { + class randomItem2 //pref less polies for starting item + { + + idc = 77701; + type = 82; + model = "\x\addons\a3_epoch_assets\models\logo.p3d"; + scale = 1; + + direction[] = {0, -0.35, -0.65}; + up[] = {0, 0.65, -0.35}; + + x = 0.8125; + y = 0.287782; + z = 1; + + xBack = 0.8125; + yBack = 0.287782; + zBack = 1.2; + + inBack = 1; + enableZoom = 0; + zoomDuration = 0.001; + }; + }; + + class controls + { + //Developer menu (DISABLE ON RELEASE) + + //background + class dev_backgrnd: IGUIBack + { + idc = 77703; + x = 0.710375 * safezoneW + safezoneX; + y = 0.224906 * safezoneH + safezoneY; + w = 0.0845625 * safezoneW; + h = 0.22001 * safezoneH; + colorBackground[] = {0,0,0,0.5}; + onLoad = "(_this select 0) ctrlShow false"; + }; + + //buttons + class dev_btn_pic: RscPicture + { + idc = 77702; + + text = "x\addons\a3_epoch_code\Data\UI\dev_mode_off.paa"; + x = 0.795; + y = -0.064; + w = 0.2; + h = 0.075; + onLoad = "(_this select 0) ctrlShow false"; + onMouseButtonDown = "call EPOCH_crafting_dev_toggle;"; + }; + class dev_btn_set: RscButton + { + idc = 77704; + text = "Set"; //--- ToDo: Localize; + x = 0.770187 * safezoneW + safezoneX; + y = 0.2316 * safezoneH + safezoneY; + w = 0.020625 * safezoneW; + h = 0.022 * safezoneH; + onLoad = "(_this select 0) ctrlShow false"; + }; + class dev_btn_rpt: RscButton + { + idc = 77705; + text = "Export"; //--- ToDo: Localize; + x = 0.712437 * safezoneW + safezoneX; + y = 0.414171 * safezoneH + safezoneY; + w = 0.0804375 * safezoneW; + h = 0.022 * safezoneH; + onLoad = "(_this select 0) ctrlShow false"; + }; + class dev_btn_setPos: RscButton + { + idc = 77706; + onLoad = "(_this select 0) ctrlShow false"; + + text = "Set Position"; //--- ToDo: Localize; + x = 0.712575 * safezoneW + safezoneX; + y = 0.384407 * safezoneH + safezoneY; + w = 0.0804375 * safezoneW; + h = 0.022 * safezoneH; + }; + class dev_btn_vectorPlus: RscButton + { + idc = 77707; + onLoad = "(_this select 0) ctrlShow false"; + + text = "+"; //--- ToDo: Localize; + x = 0.778437 * safezoneW + safezoneX; + y = 0.266721 * safezoneH + safezoneY; + w = 0.012375 * safezoneW; + h = 0.022 * safezoneH; + action = "rmx_var_3dCtrlSpin_Vector = rmx_var_3dCtrlSpin_Vector + 0.1; (rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str rmx_var_3dCtrlSpin_Vector;"; + }; + class dev_btn_vectorMinus: RscButton + { + idc = 77708; + onLoad = "(_this select 0) ctrlShow false"; + + text = "-"; //--- ToDo: Localize; + x = 0.73925 * safezoneW + safezoneX; + y = 0.266721 * safezoneH + safezoneY; + w = 0.012375 * safezoneW; + h = 0.022 * safezoneH; + action = "rmx_var_3dCtrlSpin_Vector = rmx_var_3dCtrlSpin_Vector - 0.1; (rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str rmx_var_3dCtrlSpin_Vector;"; + }; + //edit + + class dev_edit_scale: RscEdit + { + idc = 77709; + text = "1"; //--- ToDo: Localize; + x = 0.743375 * safezoneW + safezoneX; + y = 0.2316 * safezoneH + safezoneY; + w = 0.02475 * safezoneW; + h = 0.022 * safezoneH; + onLoad = "(_this select 0) ctrlShow false"; + }; + class dev_edit_x: RscEdit + { + idc = 77710; + onLoad = "(_this select 0) ctrlShow false"; + + text = "0.123456"; //--- ToDo: Localize; + x = 0.748524 * safezoneW + safezoneX; + y = 0.2998 * safezoneH + safezoneY; + w = 0.0443435 * safezoneW; + h = 0.022 * safezoneH; + }; + class dev_edit_z: RscEdit + { + idc = 77711; + onLoad = "(_this select 0) ctrlShow false"; + + text = "0.123456"; //--- ToDo: Localize; + x = 0.748948 * safezoneW + safezoneX; + y = 0.325807 * safezoneH + safezoneY; + w = 0.0443435 * safezoneW; + h = 0.022 * safezoneH; + }; + class dev_edit_y: RscEdit + { + idc = 77712; + onLoad = "(_this select 0) ctrlShow false"; + + text = "0.123456"; //--- ToDo: Localize; + x = 0.749458 * safezoneW + safezoneX; + y = 0.352082 * safezoneH + safezoneY; + w = 0.0443435 * safezoneW; + h = 0.022 * safezoneH; + }; + class dev_edit_vector: RscEdit + { + idc = 77713; + onLoad = "(_this select 0) ctrlShow false"; + + text = "0"; //--- ToDo: Localize; + x = 0.755234 * safezoneW + safezoneX; + y = 0.267601 * safezoneH + safezoneY; + w = 0.0195937 * safezoneW; + h = 0.022 * safezoneH; + }; + //text + class dev_txt_scale: RscText + { + idc = 77714; + text = "Scale:"; //--- ToDo: Localize; + x = 0.712437 * safezoneW + safezoneX; + y = 0.2338 * safezoneH + safezoneY; + w = 0.028875 * safezoneW; + h = 0.0154 * safezoneH; + onLoad = "(_this select 0) ctrlShow false"; + }; + class dev_txt_X: RscText + { + idc = 77715; + onLoad = "(_this select 0) ctrlShow false"; + + text = "X:"; //--- ToDo: Localize; + x = 0.712703 * safezoneW + safezoneX; + y = 0.303578 * safezoneH + safezoneY; + w = 0.028875 * safezoneW; + h = 0.0154 * safezoneH; + }; + class dev_txt_z: RscText + { + idc = 77716; + onLoad = "(_this select 0) ctrlShow false"; + + text = "Z:"; //--- ToDo: Localize; + x = 0.712543 * safezoneW + safezoneX; + y = 0.329511 * safezoneH + safezoneY; + w = 0.028875 * safezoneW; + h = 0.0154 * safezoneH; + }; + class dev_txt_y: RscText + { + idc = 77717; + onLoad = "(_this select 0) ctrlShow false"; + + text = "Y:"; //--- ToDo: Localize; + x = 0.712564 * safezoneW + safezoneX; + y = 0.356482 * safezoneH + safezoneY; + w = 0.028875 * safezoneW; + h = 0.0154 * safezoneH; + }; + class dev_txt_3D: RscText //3d preview red + { + idc = 77718; + + text = ""; + x = 0.6; + y = 0.04; + w = 0.4; + h = 0.44; + colorBackground[] = {1,0,0,0.3}; + onLoad = "(_this select 0) ctrlShow false"; + }; + class dev_txt_Vector: RscText + { + idc = 77719; + onLoad = "(_this select 0) ctrlShow false"; + + text = "vUP:"; //--- ToDo: Localize; + x = 0.712437 * safezoneW + safezoneX; + y = 0.268921 * safezoneH + safezoneY; + w = 0.0226875 * safezoneW; + h = 0.0154 * safezoneH; + }; + // ----------- MAIN GUI PART ----------- // + //background + class rmx_cUI_back: IGUIBack + { + idc = 77800; + + x = 0; + y = 0; + w = 1; + h = 1; + colorBackground[] = {0,0,0,0.1}; + onLoad = "_cl = _this select 0; _cl ctrlSetFade 1; _cl ctrlCommit 0; _cl ctrlSetFade 0; _cl ctrlCommit 1;"; + }; + //Buttons + class rmx_cUI_btn_craft: RscPicture + { + idc = 77801; + text = "\x\addons\a3_epoch_code\Data\UI\crafting\close.paa"; + x = 0.9; + y = 0.92; + w = 0.1; + h = 0.08; + onLoad = "[(_this select 0),[1,0.92,0,0.08],[0.9,0.92,0.1,0.08]] call EPOCH_crafting_animate;"; + onMouseButtonUp = "call epoch_crafting_craft;"; + }; + class rmx_cUI_btn_clear: RscButton + { + idc = 77802; + text = "X"; //--- ToDo: Localize; + x = 0.26; + y = 0.04; + w = 0.04; + h = 0.052; + onLoad = "[(_this select 0),[0.26,0.04,0,0],[0.26,0.04,0.04,0.052]] call EPOCH_crafting_animate;"; + action = "(rmx_var_crafting_ctrl_Interact select 4) ctrlSetText ''; lbClear (rmx_var_crafting_ctrl_main select 1);"; + }; + //Progressbar + class rmx_cUI_pb: RscProgress + { + idc = 77803; + texture = "#(argb,8,8,3)color(1,1,1,1)"; + textureExt = ""; + colorBar[] = {1, 1, 1, 0.1}; + colorExtBar[] = {1, 1, 1, 1}; + colorFrame[] = {1, 1, 1, 1}; + x = 0.6; + y = 0.92; + w = 0.3; + h = 0.08; + + onLoad = "[(_this select 0),[0.6,0.92,0,0.08],[0.6,0.92,0.3,0.08]] call EPOCH_crafting_animate; (_this select 0) ctrlEnable true;"; + onMouseMoving = "if (rmx_var_crafting_progressClicked && rmx_var_craftQTY != 0) then {(_this select 0) progressSetPosition (((_this select 1)-0.6)*3.3 );};"; + onMouseHolding = "if (rmx_var_crafting_progressClicked && rmx_var_craftQTY != 0) then {(_this select 0) progressSetPosition (((_this select 1)-0.6)*3.3 );};"; + onMouseButtonDown = "rmx_var_crafting_progressClicked = true;"; + onMouseButtonUp = "rmx_var_crafting_progressClicked = false;"; + }; + //progressbar QTY + class rmx_cUI_txt_QTY: RscText + { + idc = 77804; + style = 0x02; //vcenter = 0x0c + text = ""; + x = 0.6; + y = 0.92; + w = 0.3; + h = 0.08; + colorBackground[] = {0,0,0,0.2}; + colorText[] = {1,0.6,0.01,1}; + onLoad = "[(_this select 0),[0.6,0.92,0,0.08],[0.6,0.92,0.3,0.08]] call EPOCH_crafting_animate;"; + }; + + + //edit + class rmx_cUI_edit_searchField: RscEdit + { + idc = 77810; + text = ""; //--- ToDo: Localize; + x = 0.0025; + y = 0.04; + w = 0.2575; + h = 0.052; + colorBackground[] = {0,0,0,0.5}; + onLoad = "[(_this select 0),[0.0025,0.04,0,0.052],[0.0025,0.04,0.2575,0.052]] call EPOCH_crafting_animate;"; + }; + + //listboxes + class rmx_cUI_LB_recipes: RscListbox + { + idc = 77811; + x = 0; + y = 0.092; + w = 0.3; + h = 0.908; + onLoad = "[(_this select 0),[0,0.092,0.3,0],[0,0.092,0.3,0.908]] call EPOCH_crafting_animate;"; + onLBSelChanged = "call EPOCH_crafting_LB_click;"; + }; + class rmx_cUI_LB_ingredients: RscListbox + { + idc = 77812; + x = 0.3; + y = 0.04; + w = 0.3; + h = 0.96; + onLoad = "[(_this select 0),[0.3,0.04,0.3,0],[0.3,0.04,0.3,0.96]] call EPOCH_crafting_animate;"; + onLBDblClick = "call EPOCH_crafting_LB_doubleClick;"; + }; + + //Structured Text + + class rmx_cUI_st_description: RscStructuredText + { + idc = 77820; + text = "..............................."; //--- ToDo: Localize; + x = 0.6; + y = 0.524; + w = 0.4; + h = 0.392; + colorBackground[] = {0,0,0,0}; + }; + + //Text + class rmx_cUI_txt_recipes: RscText + { + idc = 77840; + + text = "Recipes"; //--- ToDo: Localize; + x = 0; + y = 0; + w = 0.3; + h = 0.04; + colorBackground[] = {0,0,0,0.8}; + onLoad = "[(_this select 0),[0,0,0,0.04],[0,0,0.3,0.04]] call EPOCH_crafting_animate;"; + }; + + class rmx_cUI_txt_ingredients: RscText + { + idc = 77841; + + text = "Ingredients"; //--- ToDo: Localize; + x = 0.3; + y = 0; + w = 0.2975; + h = 0.04; + colorBackground[] = {0,0,0,0.8}; + onLoad = "[(_this select 0),[0.3,0,0,0.04],[0.3,0,0.2975,0.04]] call EPOCH_crafting_animate;"; + }; + class rmx_cUI_txt_preview: RscText + { + idc = 77842; + + text = "Preview"; //--- ToDo: Localize; + x = 0.6; + y = 0; + w = 0.3975; + h = 0.04; + colorBackground[] = {1,0.6,0.01,0.8}; + onLoad = "[(_this select 0),[0.6,0,0,0.04],[0.6,0,0.3975,0.04]] call EPOCH_crafting_animate;"; + }; + class rmx_cUI_txt_resources: RscText + { + idc = 77843; + + text = "Resources"; //--- ToDo: Localize; + x = 0.3; + y = 0.96; + w = 0.2975; + h = 0.04; + colorBackground[] = {0,0,0,0.8}; + onLoad = "(_this select 0) ctrlShow false"; + }; + class rmx_cUI_txt_description: RscText + { + idc = 77844; + + text = "Description"; //--- ToDo: Localize; + x = 0.6; + y = 0.48; + w = 0.3975; + h = 0.04; + colorBackground[] = {0,0,0,0.8}; + onLoad = "[(_this select 0),[0.6,0.48,0,0.04],[0.6,0.48,0.3975,0.04]] call EPOCH_crafting_animate;"; + }; + //frames + class rmx_cUI_frame_recipes: RscFrame + { + idc = 77830; + x = 0; + y = 0; + w = 0.3; + h = 1; + }; + class rmx_cUI_frame_craft: RscFrame + { + idc = 77831; + x = 0.3; + y = 0; + w = 0.3; + h = 1; + }; + + class rmx_cUI_frame_preview: RscFrame + { + idc = 77832; + x = 0.6; + y = 0; + w = 0.4; + h = 0.48; + }; + class rmx_cUI_frame_resources: RscFrame + { + idc = 77833; + x = 0.3; + y = 0.92; + w = 0.3; + h = 0.08; + onLoad = "(_this select 0) ctrlShow false"; + }; + class rmx_cUI_frame_description: RscFrame + { + idc = 77834; + x = 0.6; + y = 0.48; + w = 0.4; + h = 0.44; + }; + class rmx_cUI_frame_qty: RscFrame + { + idc = 77835; + x = 0.6; + y = 0.92; + w = 0.4; + h = 0.08; + }; + }; +}; + +class Epoch_main_config_group: RscControlsGroupNoScrollbars +{ + idc = -1; + x = 0.208156 * safezoneW + safezoneX; + y = 0.511 * safezoneH + safezoneY; + w = 0.4135 * safezoneW; + h = 0.4246 * safezoneH; + + class controls{}; +}; +class Epoch_main_config_title: RscText +{ + idc = -1; + x = 0.208156 * safezoneW + safezoneX; + y = 0.4604 * safezoneH + safezoneY; //4582 0.4604 + w = 0.4135 * safezoneW; + h = 0.0242 * safezoneH; + text = "Epoch Configuration"; + colorBackground[] = {0.76,0.5,0.07,0.8}; + colorText[] = {1,1,1,1}; + shadow = 1; +}; + +class Epoch_main_config_combo: RscCombo +{ + idc = -1; + x = 0.208156 * safezoneW + safezoneX; + y = 0.4868 * safezoneH + safezoneY; + w = 0.4135 * safezoneW; + h = 0.0242 * safezoneH; + colorSelect[] = {0.1,0.1,0.1,1}; + colorText[] = {1,1,1,1.0}; + colorBackground[] = {0.1,0.1,0.1,1}; + colorSelectBackground[] = {0.76,0.5,0.07,1}; + colorScrollbar[] = {1,0,0,1}; + + wholeHeight = 5 * GUI_GRID_CENTER_H; + colorActive[] = {1,0,0,1}; + + colorTextRight[] = {1,1,1,1}; + colorSelectRight[] = {0,0,0,1}; + colorSelect2Right[] = {0,0,0,1}; + + class ComboScrollBar: ScrollBar + { + width = 0; // width of ComboScrollBar + height = 0; // height of ComboScrollBar + scrollSpeed = 0.01; // scrollSpeed of ComboScrollBar + + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; // Arrow + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; // Arrow when clicked on + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; // Slider background (stretched vertically) + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; // Dragging element (stretched vertically) + + color[] = {1,1,1,1}; + }; + + onLBSelChanged = "_this call EPOCH_InterruptConfigActions;"; +}; \ No newline at end of file diff --git a/Sources/epoch_code/gui/Epoch_RscTitles.hpp b/Sources/epoch_code/gui/Epoch_RscTitles.hpp new file mode 100644 index 00000000..c220229e --- /dev/null +++ b/Sources/epoch_code/gui/Epoch_RscTitles.hpp @@ -0,0 +1,178 @@ +class EpochGameUI +{ + idd = -2; + duration = 999999; + onLoad = "uiNamespace setVariable ['EPOCH_EpochGameUI', _this select 0];"; + class controls + { + + class custom_picture: RscPicture + { + style = 48 + 0x800; + }; + class icon1: custom_picture + { + idc = 21201; + text = "\x\addons\a3_epoch_code\Data\UI\thirst_ca.paa"; + x = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class icon2: custom_picture + { + idc = 21202; + text = "\x\addons\a3_epoch_code\Data\UI\hunger_ca.paa"; + x = "7.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class icon3: custom_picture + { + idc = 21203; + text = "\x\addons\a3_epoch_code\Data\UI\broken_ca.paa"; + x = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class icon4: custom_picture + { + idc = 21204; + text = "\x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa"; + x = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class icon5: custom_picture + { + idc = 21205; + text = "\x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"; + x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class icon6: custom_picture + { + idc = 21206; + text = "\x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa"; + x = "-2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_X"", ((safezoneX + safezoneW) - (12.4 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (profilenamespace getvariable [""IGUI_GRID_WEAPON_Y"", (safezoneY + 0.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25))])"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + }; +}; + +class EpochGameUI2 +{ + idd = -3; + duration = 10; + onLoad = "uiNamespace setVariable ['EPOCH_EpochGameUI2', _this select 0];"; + class controls + { + + class custom_picture : RscPicture + { + style = 48 + 0x800; + }; + class icon1 : custom_picture + { + idc = 21207; + text = "\x\addons\a3_epoch_code\Data\UI\cc_ca.paa"; + x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "-2.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class RscCryptoText : RscText + { + idc = 21208; + text = ""; + colorText[] = { 1, 1, 1, 0.5 }; + shadow = 0; + sizeEx = 0.08; + x = "2.1 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "-2.2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; + w = "15 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + + }; +}; + +class EpochGameUI3 +{ + idd = -4; + duration = 10; + onLoad = "uiNamespace setVariable ['EPOCH_EpochGameUI3', _this select 0];"; + class controls + { + + class custom_picture : RscPicture + { + style = 48 + 0x800; + }; + class icon1 : custom_picture + { + idc = 21209; + text = "\x\addons\a3_epoch_code\Data\UI\battery_ca.paa"; + x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "0 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; + w = "2.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + class RscEnergyText : RscText + { + idc = 21210; + text = ""; + colorText[] = { 1, 1, 1, 0.5 }; + shadow = 0; + sizeEx = 0.08; + x = "2.1 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (profilenamespace getvariable [""IGUI_GRID_VEHICLE_X"", (safezoneX + 0.5 * ( ((safezoneW / safezoneH) min 1.2) / 40))])"; + y = "-0.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2)) + 18 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20))"; + w = "15 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "2.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + }; + }; +}; +class rmx_progressTest +{ + idd = 10200; + duration = 999999; + fadein = 0.5; + fadeout = 0.5; + onLoad = "uiNamespace setVariable ['rmx_var_progressTestDisplay',_this select 0]"; + + class controls {}; +}; +class rmx_CraftingProgress +{ + idd = 10100; + duration = 999999; + fadein = 0.2; + fadeout = 0.2; + onLoad = "uiNamespace setVariable ['rmx_var_CraftingProgressDisplay',_this select 0]"; + + class controls {}; +}; +class Default //use to delete title resources +{ + idd = -1; + fadein = 0; + fadeout = 0; + duration = 0; +}; \ No newline at end of file diff --git a/Sources/epoch_code/gui/changelog.html b/Sources/epoch_code/gui/changelog.html new file mode 100644 index 00000000..ff2caadf --- /dev/null +++ b/Sources/epoch_code/gui/changelog.html @@ -0,0 +1,20 @@ + + + + + + +PageTitle + + +
+

+
+

Seems like Arma has very limited HTML features, no colors except for link, active link and bold text. Headings can have different fonts, see Epoch_GUI_ClientConfigs.hpp file for more info on this.

+
+

Depending on size of HTML, you might need to increase height of control to enable scrolling. You can do that in inside Epoch_main_config_html in before mentioned file. Height is calculated in percentages (42% = 0.42 * safezoneH)

+
+

TIP: Use filepatching to edit it live, file is reloaded when ESC is pressed

+ + \ No newline at end of file diff --git a/Sources/epoch_code/gui/scripts/EPOCH_InterruptConfig.sqf b/Sources/epoch_code/gui/scripts/EPOCH_InterruptConfig.sqf new file mode 100644 index 00000000..32d1e5c9 --- /dev/null +++ b/Sources/epoch_code/gui/scripts/EPOCH_InterruptConfig.sqf @@ -0,0 +1,56 @@ +disableSerialization; +_display = param [0,displayNull]; + +if (isNull _display) exitWith {false}; + +private ["_offset","_cfg","_configs","_idc","_getIDC","_mainCTRLS"]; + +_offset = if (isServer) then { 0.496012 * safezoneW + safezoneX } else { + if (getNumber (missionConfigFile >> "enableDebugConsole") > 0) then { + 0.496012 * safezoneW + safezoneX + } else { + 0.208156 * safezoneW + safezoneX + }; +}; + +_cfg = 'CfgEpochConfiguration' call EPOCH_returnConfig; +_configs = "true" configClasses _cfg; + +_idc = -70000; +_getIDC = {_idc = _idc - 1; _idc}; + +Epoch_interrupt_controls = []; +if (isNil "Epoch_interrupt_index") then {Epoch_interrupt_index = 0}; + +{ + _ctrl = _display ctrlCreate [_x,call _getIDC]; + _ctrlPos = ctrlPosition _ctrl; + _ctrlPos set [0,_offset]; + _ctrl ctrlSetPosition _ctrlPos; + _ctrl ctrlCommit 0; + + Epoch_interrupt_controls set [_forEachIndex, _ctrl]; +} forEach ["Epoch_main_config_combo","Epoch_main_config_group","Epoch_main_config_title"]; + +_lb = Epoch_interrupt_controls select 0; +_groupIDC = call _getIDC; +{ + _name = getText (_x >> "name"); + _color = getArray (_x >> "color"); + _icon = getText (_x >> "icon"); + _group = getText (_x >> "controlGroup"); //convert to actual hidden control + + _idx = _lb lbAdd _name; + _lb lbSetColor [_idx, _color]; + _lb lbSetPicture [_idx, _icon]; + _lb lbSetData [_idx, _group]; + _lb lbSetValue [_idx, _groupIDC]; + +} forEach _configs; + +//display does not exist yet for whatever reason +[_lb] spawn { + waitUntil {!isNull findDisplay 49}; + (_this select 0) lbSetCurSel Epoch_interrupt_index; +}; +true diff --git a/Sources/epoch_code/gui/scripts/EPOCH_InterruptConfigActions.sqf b/Sources/epoch_code/gui/scripts/EPOCH_InterruptConfigActions.sqf new file mode 100644 index 00000000..de57ba1d --- /dev/null +++ b/Sources/epoch_code/gui/scripts/EPOCH_InterruptConfigActions.sqf @@ -0,0 +1,34 @@ +disableSerialization; +private ["_mainGrp","_display","_data","_value","_ctrl","_idx","_mainGrpPos","_group","_width","_pos"]; +params ["_ctrl","_idx"]; + +_mainGrp = Epoch_interrupt_controls select 1; +_display = ctrlParent _mainGrp; +_data = _ctrl lbData _idx; +_value = _ctrl lbValue _idx; + +Epoch_interrupt_index = _idx; +_mainGrpPos = ctrlPosition _mainGrp; +//_mainGrpPos set [0,Epoch_interrupt_offset]; //convert to global if having problems with x pos + +ctrlDelete _mainGrp; + +_mainGrp = _display ctrlCreate ["Epoch_main_config_group",_value]; +_mainGrp ctrlSetPosition _mainGrpPos; +_mainGrp ctrlCommit 0; + +_group = _display ctrlCreate [_data, _value + 1, _mainGrp]; + +_width = (ctrlPosition _group) select 2; +Epoch_interrupt_controls set [1, _mainGrp]; + +{ + _pos = ctrlPosition _x; + _pos set [2,_width]; + _x ctrlSetPosition _pos; + _x ctrlCommit 0; +} forEach Epoch_interrupt_controls; + +ctrlSetFocus _mainGrp; + +true diff --git a/Sources/epoch_code/gui/scripts/config/Epoch_config_keymap.sqf b/Sources/epoch_code/gui/scripts/config/Epoch_config_keymap.sqf new file mode 100644 index 00000000..57d38d16 --- /dev/null +++ b/Sources/epoch_code/gui/scripts/config/Epoch_config_keymap.sqf @@ -0,0 +1,108 @@ +private ["_ctrl","_input","_display"]; +params ["_ctrl","_input"]; + +_display = if (typeName _ctrl isEqualTo "CONTROL") then {ctrlParent _ctrl} else {displayNull}; +_input = if (typeName _ctrl isEqualTo "STRING") then {_ctrl} else {str _ctrl}; + +switch (_input) do { + default {diag_log format ["[Epoch_config_keymap] Wrong params: %1",_this]}; + + case "load": + { + private ["_ctrl","_arr","_idx"]; + _ctrl = (findDisplay 49) displayCtrl 78008; + + _arr = 2 call EPOCH_clientKeyMap; + + { + _idx = _ctrl lbAdd (_x select 0); + _ctrl lbSetTooltip [_idx, _x select 0]; + _ctrl lbSetData [_idx, _x select 1]; + } forEach _arr; + + _ctrl lbSetCurSel 0; + + }; + case "Control #78008": //lb + { + private ["_ctrlDefault","_ctrlCurrent","_ctrlEdit","_arr","_var","_default","_txtDefault","_txtCurrent"]; + params ["_lb","_idx"]; + + _ctrlDefault = _display displayCtrl 78006; + _ctrlCurrent = _display displayCtrl 78007; + _ctrlEdit = _display displayCtrl 78009; + + _ctrlEdit ctrlSetText ""; + + _arr = 2 call EPOCH_clientKeyMap; + _var = _arr select _idx select 1; + _default = _arr select _idx select 2; + + _txtDefault = _default call BIS_fnc_keyCode; + _ctrlDefault ctrlSetText format ["Default: [%1]",_txtDefault]; + + _txtCurrent = (missionNamespace getVariable _var) call BIS_fnc_keyCode; + _ctrlCurrent ctrlSetText format ["Current: [%1]",_txtCurrent]; + }; + case "Control #78009": //edit + { + private ["_edit","_key","_shift","_ctrl","_alt","_txt"]; + params ["_edit","_key","_shift","_ctrl","_alt"]; + + if !(_shift || _ctrl || _alt) then { //blacklisted modifiers + if !(_key in [29,42,54,56,157,184,219]) then { //blacklisted keys + _txt = _key call BIS_fnc_keyCode; + _edit ctrlSetText _txt; + }; + } else { + _edit ctrlSetText ""; + }; + }; + case "Control #78010": //save + { + private ["_ctrlEdit","_lb","_new","_idx","_data"]; + _ctrlEdit = _display displayCtrl 78009; + _lb = _display displayCtrl 78008; + + _new = ctrlText _ctrlEdit; + + _idx = lbCurSel _lb; + _data = _lb lbData _idx; + + if !(_new isEqualTo "") then { + missionNamespace setVariable [_data, _new call BIS_fnc_keyCode]; + profileNamespace setVariable [_data, _new call BIS_fnc_keyCode]; + _lb lbSetCurSel _idx; + } else { + _ctrlEdit ctrlSetText "Empty field"; + }; + }; + case "Control #78011": //reset + { + private ["_ctrlEdit","_lb","_idx","_data","_arr","_old"]; + _ctrlEdit = _display displayCtrl 78009; + _lb = _display displayCtrl 78008; + + _idx = lbCurSel _lb; + _data = _lb lbData _idx; + + _arr = 2 call EPOCH_clientKeyMap; + _old = _arr select _idx select 2; + + missionNamespace setVariable [_data, _old]; + profileNamespace setVariable [_data, _old]; + + _lb lbSetCurSel _idx; + }; + case "Control #78012": //reset all + { + private ["_lb","_idx"]; + 1 call EPOCH_clientKeyMap; + 0 call EPOCH_clientKeyMap; + _lb = _display displayCtrl 78008; + _idx = lbCurSel _lb; + _lb lbSetCurSel _idx; + }; +}; + +true diff --git a/Sources/epoch_code/init/client_init.sqf b/Sources/epoch_code/init/client_init.sqf index 4e97bd29..0f3e076a 100644 --- a/Sources/epoch_code/init/client_init.sqf +++ b/Sources/epoch_code/init/client_init.sqf @@ -49,22 +49,7 @@ if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 9 EPOCH_droneRndChance = 100; // Custom Keys -EPOCH_keysBuildMode1 = profileNamespace getVariable["EPOCH_BuildMode1", 2]; // 2 = 1 -EPOCH_keysBuildMode2 = profileNamespace getVariable["EPOCH_BuildMode2", 3]; // 3 = 2 -EPOCH_keysBuildDir = profileNamespace getVariable["EPOCH_BuildDir", 4]; // 4 = 3 -EPOCH_keysBuildStatic = profileNamespace getVariable["EPOCH_BuildStatic", 5]; // 5 = 4 -EPOCH_keysHolster = profileNamespace getVariable["EPOCH_Holster", 35]; // 35 = H -EPOCH_keysDebugMon = profileNamespace getVariable["EPOCH_DebugMon", 41]; // 41 = ~ -EPOCH_keysBuildMovUp = profileNamespace getVariable["EPOCH_BuildMovUp", 0xC9]; // PgUp -EPOCH_keysBuildMovDn = profileNamespace getVariable["EPOCH_BuildMovDn", 0xD1]; // PgDown -EPOCH_keysBuildMovFwd = profileNamespace getVariable["EPOCH_BuildMovFwd", 0xC7]; // Home -EPOCH_keysBuildMovBak = profileNamespace getVariable["EPOCH_BuildMovBak", 0xCF]; // End -EPOCH_keysBuildMovL = profileNamespace getVariable["EPOCH_BuildMovL", 0xD2]; // Left -EPOCH_keysBuildMovR = profileNamespace getVariable["EPOCH_BuildMovR", 0xD3]; // Right -EPOCH_keysBuildRotL = profileNamespace getVariable["EPOCH_BuildRotL", 0x12]; // E -EPOCH_keysBuildRotR = profileNamespace getVariable["EPOCH_BuildRotR", 0x10]; // Q -EPOCH_keysBuildIt = profileNamespace getVariable["EPOCH_BuildIt", 0x39]; // Space -EPOCH_keysAcceptTrade = profileNamespace getVariable["EPOCH_AcceptTrade", 0x14]; // T +0 call EPOCH_clientKeyMap; //ON INIT and RESPAWN call EPOCH_clientInit; diff --git a/Sources/epoch_config/Configs/CfgEpochConfiguration.hpp b/Sources/epoch_config/Configs/CfgEpochConfiguration.hpp new file mode 100644 index 00000000..5facd73a --- /dev/null +++ b/Sources/epoch_config/Configs/CfgEpochConfiguration.hpp @@ -0,0 +1,18 @@ +class CfgEpochConfiguration +{ + /** class order here decides order of buttons on gui **/ + class html + { + name = "Changelog"; + color[] = {1,1,1,1}; + icon = "\x\addons\a3_epoch_code\Data\owner.paa"; + controlGroup = "Epoch_main_config_changelog"; + }; + class remap + { + name = "Controls"; + color[] = {1,1,1,1}; + icon = "\x\addons\a3_epoch_code\Data\owner.paa"; + controlGroup = "EpochConfigKeyMap"; + }; +}; \ No newline at end of file diff --git a/Sources/epoch_config/config.cpp b/Sources/epoch_config/config.cpp index cc7c7bbf..f3184d91 100644 --- a/Sources/epoch_config/config.cpp +++ b/Sources/epoch_config/config.cpp @@ -45,6 +45,7 @@ class CfgAddons //gitmerge fix #include "\x\addons\a3_epoch_config\Configs\CfgDynamicMenu.hpp" +#include "\x\addons\a3_epoch_config\Configs\CfgEpochConfiguration.hpp" class DefaultEventhandlers; class WeaponFireGun; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf index d352303f..fc6cd4dd 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf @@ -48,7 +48,7 @@ if (typeOf _object == "PlotPole_EPOCH") then { _object call EPOCH_fnc_saveBuilding; }; }; - if (_counter >= _maintCount) exitWith{}; + if (_counter > _maintCount) exitWith{}; } forEach nearestObjects[_object, ["Constructions_static_F","Constructions_foundation_F"], _buildingJammerRange]; // effect crypto