Working save.

This commit is contained in:
jaynus 2015-04-04 16:55:53 -07:00
parent 9d06d7c7ca
commit aee7eb9406
21 changed files with 756 additions and 258 deletions

View File

@ -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
[QGVAR(forceUpdate), FUNC(onForceUpdate)] call ace_common_fnc_addEventHandler;

View File

@ -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));
};
};

View File

@ -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
*/

View File

@ -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
*/

View File

@ -0,0 +1,3 @@
#include "script_component.hpp"
#include "initKeybinds.sqf"

View File

@ -1,3 +1,2 @@
#include "script_component.hpp"
NO_DEDICATED;

View File

@ -1,7 +1,15 @@
#include "script_component.hpp"
PREP(fired);
PREP(onGetLockedTarget);
PREP(translateToWeaponSpace);
PREP(translateToModelSpace);
PREP(translateToModelSpace);
PREP(lockKeyDown);
PREP(lockKeyUp);
PREP(cycleFireMode);
PREP(onOpticLoad);
PREP(onOpticDraw);
GVAR(isLockKeyDown) = false;

View File

@ -11,5 +11,5 @@ class CfgPatches {
};
#include "CfgEventhandlers.hpp"
#include "CfgOptics.hpp"
#include "RscInGameUI.hpp"
#include "CfgSounds.hpp"

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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];

View File

@ -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);
};
};
};

View File

@ -0,0 +1,3 @@
#define DEBUG_MODE_FULL
#include "script_component.hpp"
TRACE_1("enter", _this);

View File

@ -0,0 +1,3 @@
#define DEBUG_MODE_FULL
#include "script_component.hpp"
TRACE_1("enter", _this);

View File

@ -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";
};
};

View File

@ -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 ];

View File

@ -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
]
];

View File

@ -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

View File

@ -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]

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-19 -->
<Project name="ACE">
<Package name="WEP_JAVELIN">
<Key ID="STR_ACE_WEP_JAVELIN_LockTarget">
<English>Lock Target (Hold)</English>
<German>Lock Target (Hold)</German>
<French>Lock Target (Hold)</French>
<Polish>Lock Target (Hold)</Polish>
<Czech>Lock Target (Hold)</Czech>
<Spanish>Lock Target (Hold)</Spanish>
<Russian>Lock Target (Hold)</Russian>
</Key>
<Key ID="STR_ACE_WEP_JAVELIN_CycleFireMode">
<English>Cycle Fire Mode</English>
<German>Cycle Fire Mode</German>
<French>Cycle Fire Mode</French>
<Polish>Cycle Fire Mode</Polish>
<Czech>Cycle Fire Mode</Czech>
<Spanish>Cycle Fire Mode</Spanish>
<Russian>Cycle Fire Mode</Russian>
</Key>
</Package>
</Project>