diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_clientInit.sqf index 49f04d44e7..094a49faeb 100644 --- a/addons/fcs/XEH_clientInit.sqf +++ b/addons/fcs/XEH_clientInit.sqf @@ -7,4 +7,4 @@ GVAR(position) = [0,0,0]; #include "initKeybinds.sqf" // Register event for global updates -[QGVAR(forceUpdate), FUNC(onForceUpdate)] call ace_common_fnc_addEventHandler \ No newline at end of file +[QGVAR(forceUpdate), FUNC(onForceUpdate)] call ace_common_fnc_addEventHandler; \ No newline at end of file diff --git a/addons/wep_javelin/CfgEventhandlers.hpp b/addons/wep_javelin/CfgEventhandlers.hpp index 8ed96c366f..a61ea9c746 100644 --- a/addons/wep_javelin/CfgEventhandlers.hpp +++ b/addons/wep_javelin/CfgEventhandlers.hpp @@ -7,6 +7,7 @@ class Extended_PreInit_EventHandlers { class Extended_PostInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_post_init)); + clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); }; }; diff --git a/addons/wep_javelin/CfgOptics.hpp b/addons/wep_javelin/CfgOptics.hpp deleted file mode 100644 index 0622ce264f..0000000000 --- a/addons/wep_javelin/CfgOptics.hpp +++ /dev/null @@ -1,200 +0,0 @@ -class RscControlsGroup; -class RscPicture; -class RscMapControl; -class VScrollbar; -class HScrollbar; - - -// Taken from AGM for optics management. - -class RscInGameUI { - class RscOptics_titan { - idd = 300; - controls[] = {"ACE_Titan_elements_group"}; - class ACE_Titan_elements_group: RscControlsGroup - { - x = "SafezoneX"; - y = "SafezoneY"; - w = "SafezoneW"; - h = "SafezoneH"; - idc = 170; - class VScrollbar: VScrollbar - { - autoScrollSpeed = -1; - autoScrollDelay = 5; - autoScrollRewind = 0; - color[] = {1,1,1,0}; - width = 0.001; - }; - class HScrollbar: HScrollbar - { - color[] = {1,1,1,0}; - height = 0.001; - }; - class Controls - { - class GetLockedTarget: RscMapControl { - onDraw = QUOTE(_this call FUNC(onGetLockedTarget)); - idc = -1; - w = 0; - h = 0; - }; - - class ACE_Titan_Day_mode_off: RscPicture { - idc = 1001; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.03/4)*3*SafezoneH - SafezoneX"; - y = "SafezoneY+SafezoneH*0.031 - SafezoneY"; - w = "0.1045752* (((SafezoneW*3)/4)/SafezoneW)/(1/SafezoneH)"; - h = "SafezoneH*0.1045752"; - colorText[] = {0.2941,0.2941,0.2941,1.0}; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\day_co.paa"; - }; - - class ACE_Titan_Day_mode: ACE_Titan_Day_mode_off { - idc = 160; - colorText[] = {0.2941,0.8745,0.2157,1.0}; - }; - class ACE_Titan_WFOV_mode_off: ACE_Titan_Day_mode_off { - idc = 1004; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.307/4)*3*SafezoneH - SafezoneX"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\wfov_co.paa"; - }; - - class ACE_Titan_WFOV_mode_group: RscControlsGroup { - x = "SafezoneX"; - y = "SafezoneY"; - w = "SafezoneW"; - h = "SafezoneH"; - idc = 163; - class VScrollbar: VScrollbar { - autoScrollSpeed = -1; - autoScrollDelay = 5; - autoScrollRewind = 0; - color[] = {1,1,1,0}; - width = 0.001; - }; - class HScrollbar: HScrollbar { - color[] = {1,1,1,0}; - height = 0.001; - }; - class Controls { - class ACE_Titan_WFOV_mode: ACE_Titan_WFOV_mode_off { - idc = -1; - y = "0.031*SafeZoneH - SafezoneY"; - x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.307/4)*3*SafezoneH - SafezoneX"; - colorText[] = {0.2941,0.8745,0.2157,1.0}; - }; - }; - }; - class ACE_Titan_NFOV_mode_off: ACE_Titan_Day_mode_off { - idc = 1003; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.586/4)*3*SafezoneH - SafezoneX"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\nfov_co.paa"; - }; - class ACE_Titan_NFOV_mode_group: RscControlsGroup { - x = "SafezoneX"; - y = "SafezoneY"; - w = "SafezoneW-SafezoneX"; - h = "SafezoneH-SafezoneY"; - idc = 162; - class VScrollbar: VScrollbar - { - autoScrollSpeed = -1; - autoScrollDelay = 5; - autoScrollRewind = 0; - color[] = {1,1,1,0}; - width = 0.001; - }; - class HScrollbar: HScrollbar { - color[] = {1,1,1,0}; - height = 0.001; - }; - class Controls { - class ACE_Titan_NFOV_mode: ACE_Titan_NFOV_mode_off { - idc = -1; - x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.586/4)*3*SafezoneH - SafezoneX"; - y = "0.031*SafeZoneH - SafezoneY"; - colorText[] = {0.2941,0.8745,0.2157,1.0}; - }; - }; - }; - class ACE_Titan_SEEK_off: ACE_Titan_Day_mode_off { - idc = 1005; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.863/4)*3*SafezoneH - SafezoneX"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\seek_co.paa"; - }; - class ACE_Titan_SEEK: ACE_Titan_SEEK_off { - idc = 166; - colorText[] = {0.2941,0.8745,0.2157,1.0}; - }; - class ACE_Titan_Missle_off: ACE_Titan_Day_mode_off { - idc = 1032; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (-0.134/4)*3*SafezoneH - SafezoneX"; - y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY"; - colorText[] = {0.2941,0.2941,0.2941,1.0}; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\missle_co.paa"; - }; - class ACE_Titan_Missle: ACE_Titan_Missle_off { - idc = 167; - colorText[] = {0.9255,0.5216,0.1216,1.0}; - }; - class ACE_Titan_CLU_off: ACE_Titan_Missle_off { - idc = 1027; - y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\clu_co.paa"; - }; - class ACE_Titan_HangFire_off: ACE_Titan_Missle_off { - idc = 1028; - y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\hangfire_co.paa"; - }; - class ACE_Titan_TOP_off: ACE_Titan_Day_mode_off { - idc = 1006; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX"; - y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\top_co.paa"; - }; - class ACE_Titan_DIR: ACE_Titan_Day_mode { - idc = 1007; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX"; - y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\dir_co.paa"; - }; - class ACE_Titan_FLTR_mode_off: ACE_Titan_Day_mode_off { - idc = 1002; - x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX"; - y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY"; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\fltr_co.paa"; - }; - class ACE_Titan_FLTR_mode: ACE_Titan_FLTR_mode_off { - idc = 161; - colorText[] = {0.2941,0.8745,0.2157,1.0}; - }; - }; - }; - }; -}; - -// on colorText[] = {0.2941, 0.8745, 0.2157, 1.0}; -// off colorText[] = {0.2941, 0.2941, 0.2941, 1.0}; -// orange colorText[] = {0.9255, 0.5216, 0.1216, 1.0}; - -/* -ACE_Titan_elements_group: 170 -ACE_Titan_Day_mode_off: 1001 -ACE_Titan_Day_mode: 160 -ACE_Titan_WFOV_mode_off: 1004 -ACE_Titan_WFOV_mode_group: 163 -ACE_Titan_NFOV_mode_off: 1003 -ACE_Titan_NFOV_mode_group: 162 -ACE_Titan_SEEK_off: 1005 //1001 -ACE_Titan_SEEK: 166 -ACE_Titan_Missle_off: 1032 -ACE_Titan_Missle: 167 -ACE_Titan_CLU_off: 1027 -ACE_Titan_HangFire_off: 1028 -ACE_Titan_TOP_off: 1006 -ACE_Titan_DIR: 1007 -ACE_Titan_FLTR_mode_off: 1002 -ACE_Titan_FLTR_mode: 161 -*/ \ No newline at end of file diff --git a/addons/wep_javelin/RscInGameUI.hpp b/addons/wep_javelin/RscInGameUI.hpp new file mode 100644 index 0000000000..aab84b2472 --- /dev/null +++ b/addons/wep_javelin/RscInGameUI.hpp @@ -0,0 +1,454 @@ +class RscOpticsValue; +class RscControlsGroup; +class RscPicture; +class RscMapControl; +class VScrollbar; +class HScrollbar; +class RscLine; + + +// Taken from AGM for optics management. + +class RscInGameUI { + class RscOptics_titan { + idd = 300; + controls[] = {"ACE_javelin_elements_group"}; + onLoad = QUOTE(_this call FUNC(onOpticLoad)); + onUnload = "uiNameSpace setVariable ['ACE_RscOptics_javelin',nil];"; + + class CA_Distance: RscOpticsValue { + idc = 151; + sizeEx = "0"; + colorText[] = {0,0,0,0}; + x = 0; + y = 0; + w = 0; + h = 0; + }; + + class ACE_javelin_elements_group: RscControlsGroup + { + x = "SafezoneX"; + y = "SafezoneY"; + w = "SafezoneW"; + h = "SafezoneH"; + idc = 170; + class VScrollbar { + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + color[] = {1,1,1,0}; + width = 0.001; + }; + class HScrollbar { + color[] = {1,1,1,0}; + height = 0.001; + }; + class Controls { + class JavelinLocking : RscMapControl { + onDraw = QUOTE(_this call FUNC(onOpticDraw)); + idc = -1; + w = 0; + h = 0; + }; + + class ACE_javelin_Day_mode_off: RscPicture { + idc = 1001; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.03/4)*3*SafezoneH - SafezoneX"; + y = "SafezoneY+SafezoneH*0.031 - SafezoneY"; + w = "0.1045752* (((SafezoneW*3)/4)/SafezoneW)/(1/SafezoneH)"; + h = "SafezoneH*0.1045752"; + colorText[] = {0.2941,0.2941,0.2941,1}; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\day_co.paa"; + }; + class ACE_javelin_Day_mode: ACE_javelin_Day_mode_off { + idc = 160; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class ACE_javelin_WFOV_mode_off: ACE_javelin_Day_mode_off { + idc = 1004; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.307/4)*3*SafezoneH - SafezoneX"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\wfov_co.paa"; + }; + class ACE_javelin_WFOV_mode_group: RscControlsGroup { + x = "SafezoneX"; + y = "SafezoneY"; + w = "SafezoneW"; + h = "SafezoneH"; + idc = 163; + class VScrollbar { + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + color[] = {1,1,1,0}; + width = 0.001; + }; + class HScrollbar { + color[] = {1,1,1,0}; + height = 0.001; + }; + class Controls { + class ACE_javelin_WFOV_mode: ACE_javelin_WFOV_mode_off { + idc = -1; + y = "0.031*SafezoneH - SafezoneY"; + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.307/4)*3*SafezoneH - SafezoneX"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class StadiaL: RscLine { + x = "0.4899*SafezoneW - SafezoneX"; + y = "0.171*SafezoneH - SafezoneY"; + w = 0; + h = "0.049*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class StadiaR: RscLine { + x = "0.5109*SafezoneW- SafezoneX"; + y = "0.171*SafezoneH - SafezoneY"; + w = 0; + h = "0.049*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class BracketL: RscLine { + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.293/4)*3*SafezoneH - SafezoneX"; + y = "0.4677*SafezoneH - SafezoneY"; + w = 0; + h = "0.0646*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class BracketR: RscLine { + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.70/4)*3*SafezoneH - SafezoneX"; + y = "0.4677*SafezoneH - SafezoneY"; + w = 0; + h = "0.0646*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class BracketT: RscLine { + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.467/4)*3*SafezoneH - SafezoneX"; + y = "0.3535*SafezoneH - SafezoneY"; + w = "0.065* (((SafezoneW*3)/4)/SafezoneW)/(1/SafezoneH)"; + h = 0; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class BracketB: RscLine { + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.467/4)*3*SafezoneH - SafezoneX"; + y = "0.6465*SafezoneH - SafezoneY"; + w = "0.065* (((SafezoneW*3)/4)/SafezoneW)/(1/SafezoneH)"; + h = 0; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + }; + }; + class ACE_javelin_NFOV_mode_off: ACE_javelin_Day_mode_off { + idc = 1003; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.586/4)*3*SafezoneH - SafezoneX"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\nfov_co.paa"; + }; + class ACE_javelin_NFOV_mode_group: RscControlsGroup { + x = "SafezoneX"; + y = "SafezoneY"; + w = "SafezoneW-SafezoneX"; + h = "SafezoneH-SafezoneY"; + idc = 162; + class VScrollbar { + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + color[] = {1,1,1,0}; + width = 0.001; + }; + class HScrollbar { + color[] = {1,1,1,0}; + height = 0.001; + }; + class Controls { + class ACE_javelin_NFOV_mode: ACE_javelin_NFOV_mode_off { + idc = 699003; + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.586/4)*3*SafezoneH - SafezoneX"; + y = "0.031*SafezoneH - SafezoneY"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class StadiaL: RscLine { + x = "0.4788*SafezoneW - SafezoneX"; + y = "0.171*SafezoneH - SafezoneY"; + w = 0; + h = "0.049*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class StadiaR: RscLine { + x = "0.5212*SafezoneW - SafezoneX"; + y = "0.171*SafezoneH - SafezoneY"; + w = 0; + h = "0.049*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class LineHL: RscLine { + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.01/4)*3*SafezoneH - SafezoneX"; + y = "SafezoneH*0.5 - SafezoneY"; + w = "0.29* (((SafezoneW*3)/4)/SafezoneW)/(1/SafezoneH)"; + h = "SafezoneH*0.0"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class LineHR: RscLine { + x = "((SafezoneW -SafezoneH*3/4)/2)+ (0.695/4)*3*SafezoneH - SafezoneX"; + y = "SafezoneH*0.5 - SafezoneY"; + w = "0.29* (((SafezoneW*3)/4)/SafezoneW)/(1/SafezoneH)"; + h = "SafezoneH*0.0"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class LineVT: RscLine { + x = "0.5*SafezoneW - SafezoneX"; + y = "0.171*SafezoneH - SafezoneY"; + w = 0; + h = "0.1825*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class LineVB: RscLine { + x = "0.5*SafezoneW - SafezoneX"; + y = "0.6465*SafezoneH - SafezoneY"; + w = 0; + h = "0.1895*SafezoneH"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + }; + }; + class TargetingConstrains: RscControlsGroup { + idc = 699100; + x = "SafezoneX"; + y = "SafezoneY"; + w = "SafezoneW-SafezoneX"; + h = "SafezoneH-SafezoneY"; + class VScrollbar { + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + color[] = {1,1,1,0}; + width = 0.001; + }; + class HScrollbar { + color[] = {1,1,1,0}; + height = 0.001; + }; + class Controls { + class Top: RscPicture { + idc = 699101; + text = "#(argb,8,8,3)color(1,1,1,1)"; + colorText[] = {0.2941,0.2941,0.2941,1}; + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX"; + y = "0.15*SafezoneH-SafezoneY"; + w = "(3/4)*SafezoneH"; + h = "0.21*SafezoneH"; + }; + class Bottom: Top { + idc = 699102; + y = "0.64*SafezoneH-SafezoneY"; + }; + class Left: Top { + idc = 699103; + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX"; + y = "0.36*SafezoneH-SafezoneY"; + w = "0.31*(3/4)*SafezoneH"; + h = "0.28*SafezoneH"; + }; + class Right: Left { + idc = 699104; + x = "((SafezoneW -(3/4)*SafezoneH)/2)+ 0.69*(3/4)*SafezoneH - SafezoneX"; + }; + class OpticsBorders: RscPicture { + idc = 699105; + text = PATHTOF(data\javelin_ui_border_ca.paa); + colorText[] = {0,0,0,1}; + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX"; + y = "0.15*SafezoneH-SafezoneY"; + w = "(3/4)*SafezoneH"; + h = "0.7*SafezoneH"; + }; + }; + }; + class TargetingGate: TargetingConstrains { + idc = 699200; + class Controls { + class TargetingGateTL: TargetingConstrains { + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX"; + y = "0.15*SafezoneH - SafezoneY"; + idc = 699201; + class Controls { + class LineH: RscLine { + idc = 699210; + x = "0"; + y = "0"; + w = "0.025*(3/4)*SafezoneH"; + h = "0"; + colorText[] = {0.8745,0.8745,0.8745,1}; + }; + class LineV: LineH { + idc = 699211; + w = "0"; + h = "0.025*SafezoneH"; + }; + }; + }; + class TargetingGateTR: TargetingGateTL { + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX + 0.975*(3/4)*SafezoneH"; + y = "0.15*SafezoneH - SafezoneY"; + idc = 699202; + class Controls { + class LineH: RscLine { + idc = 699220; + x = "0"; + y = "0"; + w = "0.025*(3/4)*SafezoneH"; + h = "0"; + colorText[] = {0.8745,0.8745,0.8745,1}; + }; + class LineV: LineH { + idc = 699221; + x = "0.025*(3/4)*SafezoneH"; + w = "0"; + h = "0.025*SafezoneH"; + }; + }; + }; + class TargetingGateBL: TargetingGateTL { + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX"; + y = "0.825*SafezoneH - SafezoneY"; + idc = 699203; + class Controls { + class LineH: RscLine { + x = "0"; + y = "0.025*SafezoneH"; + w = "0.025*(3/4)*SafezoneH"; + h = "0"; + colorText[] = {0.8745,0.8745,0.8745,1}; + }; + class LineV: LineH { + y = "0"; + w = "0"; + h = "0.025*SafezoneH"; + }; + }; + }; + class TargetingGateBR: TargetingGateBL { + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX + 0.975*(3/4)*SafezoneH"; + y = "0.825*SafezoneH - SafezoneY"; + idc = 699204; + class Controls { + class LineH: RscLine { + x = "0"; + y = "0.025*SafezoneH"; + w = "0.025*(3/4)*SafezoneH"; + h = "0"; + colorText[] = {0.8745,0.8745,0.8745,1}; + }; + class LineV: LineH { + x = "0.025*(3/4)*SafezoneH"; + y = "0"; + w = "0"; + h = "0.025*SafezoneH"; + }; + }; + }; + }; + }; + class TargetingLines: TargetingConstrains { + idc = 699300; + class Controls { + class LineH: RscLine { + idc = 699301; + x = "((SafezoneW -(3/4)*SafezoneH)/2) - SafezoneX"; + y = "0.5*SafezoneH - SafezoneY"; + w = "(3/4)*SafezoneH"; + h = "0"; + colorText[] = {0.8745,0.8745,0.8745,1}; + }; + class LineV: RscLine { + idc = 699302; + x = "0.5*SafezoneW - SafezoneX"; + y = "0.15*SafezoneH - SafezoneY"; + w = "0"; + h = "0.7*SafezoneH"; + colorText[] = {0.8745,0.8745,0.8745,1}; + }; + }; + }; + class ACE_javelin_SEEK_off: ACE_javelin_Day_mode_off { + idc = 699000; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.863/4)*3*SafezoneH - SafezoneX"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\seek_co.paa"; + }; + class ACE_javelin_SEEK: ACE_javelin_SEEK_off { + idc = 166; + colorText[] = {0.2941,0.8745,0.2157,0}; + }; + class ACE_javelin_Missle_off: ACE_javelin_Day_mode_off { + idc = 1032; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (-0.134/4)*3*SafezoneH - SafezoneX"; + y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY"; + colorText[] = {0.2941,0.2941,0.2941,1}; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\missle_co.paa"; + }; + class ACE_javelin_Missle: ACE_javelin_Missle_off { + idc = 167; + colorText[] = {0.9255,0.5216,0.1216,0}; + }; + class ACE_javelin_CLU_off: ACE_javelin_Missle_off { + idc = 1027; + y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\clu_co.paa"; + }; + class ACE_javelin_HangFire_off: ACE_javelin_Missle_off { + idc = 1028; + y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\hangfire_co.paa"; + }; + class ACE_javelin_TOP_off: ACE_javelin_Day_mode_off { + idc = 699001; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX"; + y = "(SafezoneY + 0.208*SafezoneH) - SafezoneY"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\top_co.paa"; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + class ACE_javelin_DIR: ACE_javelin_Day_mode { + idc = 699002; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX"; + y = "(SafezoneY + 0.436*SafezoneH) - SafezoneY"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\dir_co.paa"; + colorText[] = {0.2941,0.2941,0.2941,1}; + }; + class ACE_javelin_FLTR_mode_off: ACE_javelin_Day_mode_off { + idc = 1002; + x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (1.023/4)*3*SafezoneH - SafezoneX"; + y = "(SafezoneY + 0.669*SafezoneH) - SafezoneY"; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics_titan\fltr_co.paa"; + }; + class ACE_javelin_FLTR_mode: ACE_javelin_FLTR_mode_off { + idc = 161; + colorText[] = {0.2941,0.8745,0.2157,1}; + }; + }; + }; + }; +}; + +// on colorText[] = {0.2941, 0.8745, 0.2157, 1.0}; +// off colorText[] = {0.2941, 0.2941, 0.2941, 1.0}; +// orange colorText[] = {0.9255, 0.5216, 0.1216, 1.0}; + +/* +ACE_Titan_elements_group: 170 +ACE_Titan_Day_mode_off: 1001 +ACE_Titan_Day_mode: 160 +ACE_Titan_WFOV_mode_off: 1004 +ACE_Titan_WFOV_mode_group: 163 +ACE_Titan_NFOV_mode_off: 1003 +ACE_Titan_NFOV_mode_group: 162 +ACE_Titan_SEEK_off: 1005 //1001 +ACE_Titan_SEEK: 166 +ACE_Titan_Missle_off: 1032 +ACE_Titan_Missle: 167 +ACE_Titan_CLU_off: 1027 +ACE_Titan_HangFire_off: 1028 +ACE_Titan_TOP_off: 1006 +ACE_Titan_DIR: 1007 +ACE_Titan_FLTR_mode_off: 1002 +ACE_Titan_FLTR_mode: 161 +*/ \ No newline at end of file diff --git a/addons/wep_javelin/XEH_clientInit.sqf b/addons/wep_javelin/XEH_clientInit.sqf new file mode 100644 index 0000000000..1d3b546e39 --- /dev/null +++ b/addons/wep_javelin/XEH_clientInit.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "initKeybinds.sqf" \ No newline at end of file diff --git a/addons/wep_javelin/XEH_post_init.sqf b/addons/wep_javelin/XEH_post_init.sqf index 6904ee6c47..dc30361926 100644 --- a/addons/wep_javelin/XEH_post_init.sqf +++ b/addons/wep_javelin/XEH_post_init.sqf @@ -1,3 +1,2 @@ #include "script_component.hpp" -NO_DEDICATED; diff --git a/addons/wep_javelin/XEH_pre_init.sqf b/addons/wep_javelin/XEH_pre_init.sqf index f826c6cf93..1b6682f0fc 100644 --- a/addons/wep_javelin/XEH_pre_init.sqf +++ b/addons/wep_javelin/XEH_pre_init.sqf @@ -1,7 +1,15 @@ #include "script_component.hpp" PREP(fired); -PREP(onGetLockedTarget); PREP(translateToWeaponSpace); -PREP(translateToModelSpace); \ No newline at end of file +PREP(translateToModelSpace); + +PREP(lockKeyDown); +PREP(lockKeyUp); +PREP(cycleFireMode); + +PREP(onOpticLoad); +PREP(onOpticDraw); + +GVAR(isLockKeyDown) = false; \ No newline at end of file diff --git a/addons/wep_javelin/config.cpp b/addons/wep_javelin/config.cpp index 3c38d9263f..fa062944fc 100644 --- a/addons/wep_javelin/config.cpp +++ b/addons/wep_javelin/config.cpp @@ -11,5 +11,5 @@ class CfgPatches { }; #include "CfgEventhandlers.hpp" -#include "CfgOptics.hpp" +#include "RscInGameUI.hpp" #include "CfgSounds.hpp" \ No newline at end of file diff --git a/addons/wep_javelin/data/jav_disp.paa b/addons/wep_javelin/data/jav_disp.paa new file mode 100644 index 0000000000..fc60af24d5 Binary files /dev/null and b/addons/wep_javelin/data/jav_disp.paa differ diff --git a/addons/wep_javelin/data/jav_ring.paa b/addons/wep_javelin/data/jav_ring.paa new file mode 100644 index 0000000000..04d23c3910 Binary files /dev/null and b/addons/wep_javelin/data/jav_ring.paa differ diff --git a/addons/wep_javelin/data/javelin_ui_border_ca.paa b/addons/wep_javelin/data/javelin_ui_border_ca.paa new file mode 100644 index 0000000000..29e9ad6f4b Binary files /dev/null and b/addons/wep_javelin/data/javelin_ui_border_ca.paa differ diff --git a/addons/wep_javelin/functions/fnc_cycleFireMode.sqf b/addons/wep_javelin/functions/fnc_cycleFireMode.sqf new file mode 100644 index 0000000000..7902c6d265 --- /dev/null +++ b/addons/wep_javelin/functions/fnc_cycleFireMode.sqf @@ -0,0 +1,19 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" +TRACE_1("enter", _this); + +private["_player", "_currentFireMode"]; + +_currentFireMode = ACE_player getVariable["ACE_FIRE_SELECTION", ACE_JAV_FIREMODE_TOP]; +if(_currentFireMode == ACE_JAV_FIREMODE_DIR) then { + _currentFireMode = ACE_JAV_FIREMODE_TOP; + + __JavelinIGUITop ctrlSetTextColor __ColorGreen; + __JavelinIGUIDir ctrlSetTextColor __ColorGray; +} else { + _currentFireMode = ACE_JAV_FIREMODE_DIR; + + __JavelinIGUITop ctrlSetTextColor __ColorGray; + __JavelinIGUIDir ctrlSetTextColor __ColorGreen; +}; +ACE_player setVariable["ACE_FIRE_SELECTION", _currentFireMode, false]; diff --git a/addons/wep_javelin/functions/fnc_fired.sqf b/addons/wep_javelin/functions/fnc_fired.sqf index ee5d53c6e8..795c244375 100644 --- a/addons/wep_javelin/functions/fnc_fired.sqf +++ b/addons/wep_javelin/functions/fnc_fired.sqf @@ -4,9 +4,14 @@ TRACE_1("Launch", _this); PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); -FUNC(guidance_Javelin_LOBL_HI_PFH) = { +FUNC(guidance_Javelin_LOBL_DIR_PFH) = { + +}; + +FUNC(guidance_Javelin_LOBL_TOP_PFH) = { TRACE_1("enter", _this); - private["_pitch", "_yaw", "_wentTerminal", "_target", "_targetPos", "_curVelocity", "_missile", "_launchPos", "_targetStartPos" ]; + private["_pitch", "_yaw", "_wentTerminal", "_target", "_targetPos", "_curVelocity", "_missile", + "_launchPos", "_targetStartPos", "_defPitch", "_defYaw"]; _args = _this select 0; //PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); _shooter = _args select 0; @@ -21,18 +26,18 @@ FUNC(guidance_Javelin_LOBL_HI_PFH) = { } else { _wentTerminal = false; _launchPos = getPosASL _shooter; - _target = GVAR(currentTarget); - _targetStartPos = GVAR(currentTargetPos); + _target = ACE_player getVariable[QGVAR(currentTarget), objNull]; + _targetStartPos = ACE_player getVariable[QGVAR(currentTargetPos), [0,0,0]]; }; + if(!alive _missile || isNull _missile || isNull _target) exitWith { + [(_this select 1)] call cba_fnc_removePerFrameHandler; + }; + _targetPos = getPosASL _target; _curVelocity = velocity _missile; TRACE_4("", _target, _targetPos, _launchPos, _targetStartPos); - - if(!alive _missile || isNull _missile) exitWith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; - }; _addHeight = [0,0,0]; if(!isNil "_target") then { @@ -47,22 +52,25 @@ FUNC(guidance_Javelin_LOBL_HI_PFH) = { TRACE_4("Phase Check", _launchPos, _missilePos, _targetPos, (_missilePos distance _targetPos)); if((count _targetPos) > 0) then { _distanceToTarget = [(_missilePos select 0), (_missilePos select 1), (_targetPos select 2)] vectorDistance _targetPos; - - - + if( (_missilePos select 2) < (_targetPos select 2) + 200 && !_wentTerminal) then { - _addHeight = [0,0,(_targetPos select 2) + ( (_distanceToTarget * 2) + 200)]; - TRACE_1("Climb phase", _addHeight); + _addHeight = [0,0, ( (_distanceToTarget * 2) + 400)]; + + _defPitch = 0.25; + _defYaw = 0.035; + + TRACE_1("Climb phase", _addHeight); } else { _wentTerminal = true; _this set[2, _wentTerminal]; - TRACE_1("TERMINAL", ""); + + _defPitch = 0.25; + _defYaw = 0.25; + + TRACE_1("TERMINAL", ""); }; _targetPos = _targetPos vectorAdd _addHeight; - - _defPitch = 0.25; - _defYaw = 0.035; - + _targetVectorSeeker = [_missile, [_xVec, _yVec, _zVec], _targetPos] call FUNC(translateToWeaponSpace); _yaw = 0.0; TRACE_5("", _missile, _xVec, _yVec, _zVec, _targetPos); @@ -119,23 +127,34 @@ FUNC(guidance_Javelin_LOBL_HI_PFH) = { _this set[0, _args]; }; -FUNC(guidance_Javelin_LOBL_HI) = { +FUNC(guidance_Javelin_LOBL_TOP) = { PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); GVAR(lastTime) = time; - [FUNC(guidance_Javelin_LOBL_HI_PFH), 0, _this] call cba_fnc_addPerFrameHandler; + [FUNC(guidance_Javelin_LOBL_TOP_PFH), 0, _this] call cba_fnc_addPerFrameHandler; +}; + +FUNC(guidance_Javelin_LOBL_DIR) = { + PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); + + GVAR(lastTime) = time; + [FUNC(guidance_Javelin_LOBL_DIR_PFH), 0, _this] call cba_fnc_addPerFrameHandler; }; if(!local _shooter) exitWith { false }; if(_ammo == "M_Titan_AT") then { - _fireMode = _shooter getVariable ["ACE_FIRE_SELECTION", ACE_DEFAULT_FIRE_SELECTION]; + _fireMode = _shooter getVariable ["ACE_FIRE_SELECTION", ACE_JAV_FIREMODE_TOP]; - switch (_fireMode select 0) do { - // Default to FIREMODE_DIRECT_LOAL - // FIREMODE_DIRECT_LOAL - default { - LOG("Initiating Javelin FIREMODE_LOBL_HI"); - _this call FUNC(guidance_Javelin_LOBL_HI); - }; -}; + switch (_fireMode) do { + // Default to FIREMODE_DIRECT_LOAL + // FIREMODE_DIRECT_LOAL + case ACE_JAV_FIREMODE_DIR: { + LOG("Initiating Javelin FIREMODE_LOBL_DIR"); + _this call FUNC(guidance_Javelin_LOBL_DIR); + }; + default { + LOG("Initiating Javelin FIREMODE_LOBL_TOP"); + _this call FUNC(guidance_Javelin_LOBL_TOP); + }; + }; }; \ No newline at end of file diff --git a/addons/wep_javelin/functions/fnc_lockKeyDown.sqf b/addons/wep_javelin/functions/fnc_lockKeyDown.sqf new file mode 100644 index 0000000000..bc3198915b --- /dev/null +++ b/addons/wep_javelin/functions/fnc_lockKeyDown.sqf @@ -0,0 +1,3 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" +TRACE_1("enter", _this); \ No newline at end of file diff --git a/addons/wep_javelin/functions/fnc_lockKeyUp.sqf b/addons/wep_javelin/functions/fnc_lockKeyUp.sqf new file mode 100644 index 0000000000..bc3198915b --- /dev/null +++ b/addons/wep_javelin/functions/fnc_lockKeyUp.sqf @@ -0,0 +1,3 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" +TRACE_1("enter", _this); \ No newline at end of file diff --git a/addons/wep_javelin/functions/fnc_onGetLockedTarget.sqf b/addons/wep_javelin/functions/fnc_onGetLockedTarget.sqf deleted file mode 100644 index e96520e7f7..0000000000 --- a/addons/wep_javelin/functions/fnc_onGetLockedTarget.sqf +++ /dev/null @@ -1,24 +0,0 @@ -//#define DEBUG_MODE_FULL -#include "script_component.hpp" - -// Store the current cursor target for guidance -GVAR(currentTarget) = cursorTarget; -GVAR(currentTargetPos) = screenToWorld [0.5,0.5]; - -TRACE_2("Tracking optics target draw", GVAR(currentTarget), GVAR(currentTargetPos)); - -if(isNil QGVAR(nextSoundPlay)) then { - GVAR(nextSoundPlay) = diag_tickTime + 0.25; -}; - -hint format["T: %1", GVAR(currentTarget)]; - -if(diag_tickTime > GVAR(nextSoundPlay) ) then { - GVAR(nextSoundPlay) = diag_tickTime + 0.25; - - if(!isNull GVAR(currentTarget)) then { - playSound "ACE_Javelin_Locked"; - } else { - playSound "ACE_Javelin_Locking"; - }; -}; diff --git a/addons/wep_javelin/functions/fnc_onOpticDraw.sqf b/addons/wep_javelin/functions/fnc_onOpticDraw.sqf new file mode 100644 index 0000000000..5f9b2d3fa7 --- /dev/null +++ b/addons/wep_javelin/functions/fnc_onOpticDraw.sqf @@ -0,0 +1,104 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" +TRACE_1("enter", _this); + +#define __TRACKINTERVAL 0.1 // how frequent the check should be. +#define __LOCKONTIME 1.85 // Lock on won't occur sooner +#define __LOCKONTIMERANDOM 0.3 // Deviation in lock on time +#define __SENSORSQUARE 1 // Locking on sensor square side in angles + +#define __ConstraintTop (((ctrlPosition __JavelinIGUITargetingConstrainTop) select 1) + ((ctrlPosition (__JavelinIGUITargetingConstrainTop)) select 3)) +#define __ConstraintBottom ((ctrlPosition __JavelinIGUITargetingConstrainBottom) select 1) +#define __ConstraintLeft (((ctrlPosition __JavelinIGUITargetingConstrainLeft) select 0) + ((ctrlPosition (__JavelinIGUITargetingConstrainLeft)) select 2)) +#define __ConstraintRight ((ctrlPosition __JavelinIGUITargetingConstrainRight) select 0) + +#define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5 +#define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5 + + +private["_args", "_lastTick"]; + +// Reset arguments if we havnt rendered in over a second +_args = uiNamespace getVariable[QGVAR(arguments), [] ]; +if( (count _args) > 0) then { + _lastTick = _args select 0; + if(diag_tickTime - _lastTick > 1) then { + [] call FUNC(onOpticLoad); + }; +}; + +// Pull the arguments +_currentTarget = _args select 1; + + +// Find a target within the optic range +_newTarget = objNull; + +_range = parseNumber (ctrlText __JavelinIGUIRangefinder); +if (_range > 50 && {_range < 2500}) then { + _pos = positionCameraToWorld [0,0,_range]; + _targetArray = _pos nearEntities ["AllVehicles", _range/25]; + if (count (_targetArray) > 0) then { + _newTarget = _targetArray select 0; + }; +}; + +if (isNull _newTarget) then { + _newTarget = cursorTarget; +}; + +if ((velocity ACE_player) distance [0,0,0] > 0.5 && {cameraView == "GUNNER"} && {cameraOn == ACE_player}) then { // keep it steady. + ACE_player switchCamera "INTERNAL"; +}; + +if (isNull _newTarget) then { + // No targets found + _currentTarget = objNull; + + __JavelinIGUISeek ctrlSetTextColor __ColorGray; + __JavelinIGUINFOV ctrlSetTextColor __ColorGreen; + __JavelinIGUITargetingConstrains ctrlShow false; + __JavelinIGUITargetingGate ctrlShow false; + __JavelinIGUITargetingLines ctrlShow false; + + ACE_player setVariable [QGVAR(currentTarget),nil, false]; + + // Disallow fire + //if (ACE_player ammo "Javelin" > 0 || {ACE_player ammo "ACE_Javelin_Direct" > 0}) then {ACE_player setWeaponReloadingTime //[player, "Javelin", 0.2];}; +} else { + if (_newTarget distance ACE_player < 2500 && + {(call CBA_fnc_getFoV) select 1 > 7} && + { (currentVisionMode ACE_player == 2)} + ) then { + + // THIS IS A PROPER LOCK + _currentTarget = _newTarget; + __JavelinIGUISeek ctrlSetTextColor __ColorGreen; + __JavelinIGUINFOV ctrlSetTextColor __ColorNull; + __JavelinIGUITargetingConstrains ctrlShow true; + + ACE_player setVariable[QGVAR(currentTarget), _currentTarget, false]; + ACE_player setVariable[QGVAR(currentTargetPos), getPosASL _currentTarget, false]; + + } else { + // Something is wrong with our seek + _currentTarget = objNull; + + __JavelinIGUISeek ctrlSetTextColor __ColorGray; + __JavelinIGUINFOV ctrlSetTextColor __ColorGray; + __JavelinIGUITargetingConstrains ctrlShow false; + __JavelinIGUITargetingGate ctrlShow false; + __JavelinIGUITargetingLines ctrlShow false; + + ACE_player setVariable [QGVAR(currentTarget),nil, false]; + }; + +}; + + +TRACE_2("", _newTarget, _currentTarget); + +_args set[0, diag_tickTime]; +_args set[1, _currentTarget]; + +uiNamespace setVariable[QGVAR(arguments), _args ]; \ No newline at end of file diff --git a/addons/wep_javelin/functions/fnc_onOpticLoad.sqf b/addons/wep_javelin/functions/fnc_onOpticLoad.sqf new file mode 100644 index 0000000000..10433b12e9 --- /dev/null +++ b/addons/wep_javelin/functions/fnc_onOpticLoad.sqf @@ -0,0 +1,14 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" +TRACE_1("enter", _this); + +if((count _this) > 0) then { + uiNameSpace setVariable ['ACE_RscOptics_javelin',_this select 0]; +}; + +uiNameSpace setVariable [QGVAR(arguments), + [ + 0, // Last runtime + objNull // currentTargetObject + ] +]; \ No newline at end of file diff --git a/addons/wep_javelin/initKeybinds.sqf b/addons/wep_javelin/initKeybinds.sqf new file mode 100644 index 0000000000..126b1395a3 --- /dev/null +++ b/addons/wep_javelin/initKeybinds.sqf @@ -0,0 +1,30 @@ +// by commy2 + +["ACE3", QGVAR(lockTarget), localize "STR_ACE_WEP_JAVELIN_LockTarget", +{ + if (GETGVAR(isLockKeyDown,false)) exitWith {false}; + + GVAR(isLockKeyDown) = true; + + // Statement + [ACE_player] call FUNC(lockKeyDown); + // Return false so it doesn't block the rest weapon action + false +}, +{ + // prevent holding down + GVAR(isLockKeyDown) = false; + + // Statement + [ACE_player] call FUNC(lockKeyUp); + false +}, +[15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key + +["ACE3", QGVAR(cycleFireMode), localize "STR_ACE_WEP_JAVELIN_CycleFireMode", +{ false }, +{ + [ACE_player] call FUNC(cycleFireMode); + false +}, +[15, [false, true, false]], false] call cba_fnc_addKeybind; //Shift+Tab Key \ No newline at end of file diff --git a/addons/wep_javelin/script_component.hpp b/addons/wep_javelin/script_component.hpp index 757b3b012c..3014b184ad 100644 --- a/addons/wep_javelin/script_component.hpp +++ b/addons/wep_javelin/script_component.hpp @@ -10,3 +10,44 @@ #endif #include "\z\ace\Addons\main\script_macros.hpp" + +#define ACE_JAV_FIREMODE_DIR 1 +#define ACE_JAV_FIREMODE_TOP 2 + + +// Javelin IGUI defines +#define __JavelinIGUI (uinamespace getVariable "ACE_RscOptics_javelin") + +// Custom controls +#define __JavelinIGUISeek (__JavelinIGUI displayCtrl 699000) +#define __JavelinIGUITop (__JavelinIGUI displayCtrl 699001) +#define __JavelinIGUIDir (__JavelinIGUI displayCtrl 699002) +#define __JavelinIGUINFOV (__JavelinIGUI displayCtrl 699003) + +// Constrains +#define __JavelinIGUITargetingConstrains (__JavelinIGUI displayCtrl 699100) +#define __JavelinIGUITargetingConstrainTop (__JavelinIGUI displayCtrl 699101) +#define __JavelinIGUITargetingConstrainBottom (__JavelinIGUI displayCtrl 699102) +#define __JavelinIGUITargetingConstrainLeft (__JavelinIGUI displayCtrl 699103) +#define __JavelinIGUITargetingConstrainRight (__JavelinIGUI displayCtrl 699104) + +// Targeting gate (not present yet) +#define __JavelinIGUITargetingGate (__JavelinIGUI displayCtrl 699200) +#define __JavelinIGUITargetingGateTL (__JavelinIGUI displayCtrl 699201) +#define __JavelinIGUITargetingGateTR (__JavelinIGUI displayCtrl 699202) +#define __JavelinIGUITargetingGateBL (__JavelinIGUI displayCtrl 699203) +#define __JavelinIGUITargetingGateBR (__JavelinIGUI displayCtrl 699204) + +// Rangefinder +#define __JavelinIGUIRangefinder (__JavelinIGUI displayCtrl 151) + +// Targeting lines +#define __JavelinIGUITargetingLines (__JavelinIGUI displayCtrl 699300) +#define __JavelinIGUITargetingLineH (__JavelinIGUI displayCtrl 699301) +#define __JavelinIGUITargetingLineV (__JavelinIGUI displayCtrl 699302) + +// Colors for controls +#define __ColorOrange [0.9255,0.5216,0.1216,1] +#define __ColorGreen [0.2941,0.8745,0.2157,1] +#define __ColorGray [0.2941,0.2941,0.2941,1] +#define __ColorNull [0,0,0,0] \ No newline at end of file diff --git a/addons/wep_javelin/stringtable.xml b/addons/wep_javelin/stringtable.xml new file mode 100644 index 0000000000..4068d6f0a6 --- /dev/null +++ b/addons/wep_javelin/stringtable.xml @@ -0,0 +1,24 @@ + + + + + + Lock Target (Hold) + Lock Target (Hold) + Lock Target (Hold) + Lock Target (Hold) + Lock Target (Hold) + Lock Target (Hold) + Lock Target (Hold) + + + Cycle Fire Mode + Cycle Fire Mode + Cycle Fire Mode + Cycle Fire Mode + Cycle Fire Mode + Cycle Fire Mode + Cycle Fire Mode + + +