diff --git a/.editorconfig b/.editorconfig index af1c2ff314..e4ab4a9fd3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,3 +10,6 @@ trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/.gitignore b/.gitignore index 1d60d27088..6a37c85d53 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ +@* +*.zip release/* tools/temp +tools/armake.exe *.cache *.pbo texHeaders.bin diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..736994ecb4 --- /dev/null +++ b/Makefile @@ -0,0 +1,91 @@ +VERSION = $(shell cat "VERSION") +PREFIX = ace +BIN = @ace +ZIP = ace3 +FLAGS = -i include -w unquoted-string -w redefinition-wo-undef +VERSION_FILES = README.md docs/README_DE.md docs/README_PL.md mod.cpp + +MAJOR = $(word 1, $(subst ., ,$(VERSION))) +MINOR = $(word 2, $(subst ., ,$(VERSION))) +PATCH = $(word 3, $(subst ., ,$(VERSION))) +BUILD = $(word 4, $(subst ., ,$(VERSION))) +VERSION_S = $(MAJOR).$(MINOR).$(PATCH) +GIT_HASH = $(shell git log -1 --pretty=format:"%H" | head -c 8) + +ifeq ($(OS), Windows_NT) + ARMAKE = ./tools/armake.exe # Downloaded via make.ps (rename armake_wXY.exe otherwise) +else + ARMAKE = armake +endif + +$(BIN)/addons/$(PREFIX)_%.pbo: addons/% + @mkdir -p $(BIN)/addons + @echo " PBO $@" + @${ARMAKE} build ${FLAGS} -f -e "version=$(GIT_HASH)" $< $@ + +$(BIN)/optionals/$(PREFIX)_%.pbo: optionals/% + @mkdir -p $(BIN)/optionals + @echo " PBO $@" + @${ARMAKE} build ${FLAGS} -f -e "version=$(GIT_HASH)" $< $@ + +# Shortcut for building single addons (eg. "make .pbo") +%.pbo: + "$(MAKE)" $(MAKEFLAGS) $(patsubst %, $(BIN)/addons/$(PREFIX)_%, $@) + +all: $(patsubst addons/%, $(BIN)/addons/$(PREFIX)_%.pbo, $(wildcard addons/*)) \ + $(patsubst optionals/%, $(BIN)/optionals/$(PREFIX)_%.pbo, $(wildcard optionals/*)) + +filepatching: + "$(MAKE)" $(MAKEFLAGS) FLAGS="-w unquoted-string -p" + +$(BIN)/keys/%.biprivatekey: + @mkdir -p $(BIN)/keys + @echo " KEY $@" + @${ARMAKE} keygen -f $(patsubst $(BIN)/keys/%.biprivatekey, $(BIN)/keys/%, $@) + +$(BIN)/addons/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign: $(BIN)/addons/$(PREFIX)_%.pbo $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey + @echo " SIG $@" + @${ARMAKE} sign -f -s $@ $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey $< + +$(BIN)/optionals/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign: $(BIN)/optionals/$(PREFIX)_%.pbo $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey + @echo " SIG $@" + @${ARMAKE} sign -f -s $@ $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey $< + +signatures: $(patsubst addons/%, $(BIN)/addons/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign, $(wildcard addons/*)) \ + $(patsubst optionals/%, $(BIN)/optionals/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign, $(wildcard optionals/*)) + +extensions: $(wildcard extensions/*/*) + cd extensions/build && cmake .. && make + find ./extensions/build/ \( -name "*.so" -o -name "*.dll" \) -exec cp {} ./ \; + +extensions-win64: $(wildcard extensions/*/*) + cd extensions/build && CXX=$(eval $(which g++-w64-mingw-i686)) cmake .. && make + +version: + @echo " VER $(VERSION)" + $(shell sed -i -r -s 's/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/$(VERSION)/g' $(VERSION_FILES)) + $(shell sed -i -r -s 's/[0-9]+\.[0-9]+\.[0-9]+/$(VERSION_S)/g' $(VERSION_FILES)) + @echo -e "#define MAJOR $(MAJOR)\n#define MINOR $(MINOR)\n#define PATCHLVL $(PATCH)\n#define BUILD $(BUILD)" > "addons/main/script_version.hpp" + $(shell sed -i -r -s 's/ACE_VERSION_MAJOR [0-9]+/ACE_VERSION_MAJOR $(MAJOR)/g' extensions/CMakeLists.txt) + $(shell sed -i -r -s 's/ACE_VERSION_MINOR [0-9]+/ACE_VERSION_MINOR $(MINOR)/g' extensions/CMakeLists.txt) + $(shell sed -i -r -s 's/ACE_VERSION_REVISION [0-9]+/ACE_VERSION_REVISION $(PATCH)/g' extensions/CMakeLists.txt) + +commit: + @echo " GIT commit release preparation" + @git add -A + @git diff-index --quiet HEAD || git commit -am "Prepare release $(VERSION_S)" -q + +push: commit + @echo " GIT push release preparation" + @git push -q + +release: clean version commit + @"$(MAKE)" $(MAKEFLAGS) signatures + @echo " ZIP $(ZIP)_$(VERSION_S).zip" + @cp *.dll mod.cpp README.md docs/README_DE.md docs/README_PL.md AUTHORS.txt LICENSE logo_ace3_ca.paa meta.cpp $(BIN) + @zip -qr $(ZIP)_$(VERSION_S).zip $(BIN) + +clean: + rm -rf $(BIN) $(ZIP)_*.zip + +.PHONY: all filepatching signatures extensions extensions-win64 version commit push release clean diff --git a/VERSION b/VERSION new file mode 100644 index 0000000000..c9a259d2d8 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +3.12.3.36 diff --git a/addons/gestures/cfgMovesBasic.hpp b/addons/gestures/CfgMovesBasic.hpp similarity index 100% rename from addons/gestures/cfgMovesBasic.hpp rename to addons/gestures/CfgMovesBasic.hpp diff --git a/addons/huntir/Dialog.hpp b/addons/huntir/Dialog.hpp index 67b71349e4..17578bbb3e 100644 --- a/addons/huntir/Dialog.hpp +++ b/addons/huntir/Dialog.hpp @@ -144,8 +144,8 @@ class GVAR(cam_dialog) { idc = -1; type = 0; style = 48; - colorText[ ]={ 1,1,1,1 }; - colorBackground[ ]={ 0.4,0.4,0.4,1 }; + colorText[]={ 1,1,1,1 }; + colorBackground[]={ 0.4,0.4,0.4,1 }; font = "RobotoCondensed"; sizeEx = 0.021; lineSpacing = 1; diff --git a/addons/medical/CfgActions.hpp b/addons/medical/CfgActions.hpp index ccaac6f75b..387c3b8de2 100644 --- a/addons/medical/CfgActions.hpp +++ b/addons/medical/CfgActions.hpp @@ -3,4 +3,4 @@ class CfgActions { class Heal: None { show = 0; }; -}; \ No newline at end of file +}; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index c2010177de..002c9e2cf4 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -23,9 +23,9 @@ class CfgPatches { #include "CfgEden.hpp" #include "ACE_Medical_Treatments.hpp" #include "ACE_Settings.hpp" -#include "UI\CfgInGameUI.hpp" -#include "UI\RscTitles.hpp" -#include "UI\triagecard.hpp" +#include "ui\CfgInGameUI.hpp" +#include "ui\RscTitles.hpp" +#include "ui\triagecard.hpp" class ACE_newEvents { medical_onUnconscious = "ace_unconscious"; diff --git a/addons/mk6mortar/cfgMagazines.hpp b/addons/mk6mortar/CfgMagazines.hpp similarity index 100% rename from addons/mk6mortar/cfgMagazines.hpp rename to addons/mk6mortar/CfgMagazines.hpp diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 4cbfd5aa6a..62a6a525fe 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -4,13 +4,13 @@ displayName = CSTRING(Action_UnLock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ - icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ + icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ - icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ + icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockpickVehicle { \ displayName = CSTRING(Action_Lockpick); \ @@ -26,7 +26,7 @@ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ exceptions[] = {"isNotSwimming"}; \ - icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ + icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ @@ -34,7 +34,7 @@ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ exceptions[] = {"isNotSwimming"}; \ - icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ + icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockpickVehicle { \ displayName = CSTRING(Action_Lockpick); \ @@ -82,7 +82,7 @@ class CfgVehicles { scope = 1; isGlobal = 1; isSingular = 1; - icon = QPATHTOF(UI\Icon_Module_VehicleLock_ca.paa); + icon = QPATHTOF(ui\Icon_Module_VehicleLock_ca.paa); functionPriority = 0; class Arguments { class LockVehicleInventory { @@ -120,7 +120,7 @@ class CfgVehicles { function = QFUNC(moduleSync); scope = 2; isGlobal = 0; - icon = QPATHTOF(UI\Icon_Module_VehicleKey_ca.paa); + icon = QPATHTOF(ui\Icon_Module_VehicleKey_ca.paa); functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { diff --git a/circle.yml b/circle.yml index 0d863a048d..fdaf77a5ef 100644 --- a/circle.yml +++ b/circle.yml @@ -6,11 +6,15 @@ jobs: steps: - checkout - run: - name: Validate SQF And Config style + name: Validate SQF and Config style command: python tools/sqf_validator.py && python tools/config_style_checker.py - run: - name: Build + name: Version command: armake --version + - run: + name: Build + command: | + make -j 4 - deploy: name: Update documentation and translation statistics command: | diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index 0c6f397ad3..ef6d8f8ded 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -90,7 +90,7 @@ endif() string(TIMESTAMP ACE_BUILDSTAMP "%Y-%m-%dT%H:%M:%SZ") set(ACE_VERSION_MAJOR 3) set(ACE_VERSION_MINOR 12) -set(ACE_VERSION_REVISION 0) +set(ACE_VERSION_REVISION 3) EXECUTE_PROCESS(COMMAND git rev-parse --verify HEAD OUTPUT_VARIABLE T_ACE_VERSION_BUILD OUTPUT_STRIP_TRAILING_WHITESPACE diff --git a/include/a3/data_f/penetration/cloth.rvmat b/include/a3/data_f/penetration/cloth.rvmat new file mode 100644 index 0000000000..c83e3e7eb7 --- /dev/null +++ b/include/a3/data_f/penetration/cloth.rvmat @@ -0,0 +1,3 @@ +surfaceInfo="A3\data_f\Penetration\cloth.bisurf"; +diffuse[]={0.75,0.80000001,0.30000001,1}; +ambient[]={0.75,0.80000001,0.30000001,1}; diff --git a/include/a3/data_f/penetration/default.rvmat b/include/a3/data_f/penetration/default.rvmat new file mode 100644 index 0000000000..1ac19d7748 --- /dev/null +++ b/include/a3/data_f/penetration/default.rvmat @@ -0,0 +1,9 @@ +surfaceInfo="A3\data_f\Penetration\default.bisurf"; +ambient[]={0.48699999,0.32800001,0.249,1}; +diffuse[]={0.48699999,0.32800001,0.249,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0,0,0,1}; +specularPower=1; +PixelShaderID="Normal"; +VertexShaderID="Basic"; diff --git a/include/a3/data_f/penetration/metal.rvmat b/include/a3/data_f/penetration/metal.rvmat new file mode 100644 index 0000000000..261639da06 --- /dev/null +++ b/include/a3/data_f/penetration/metal.rvmat @@ -0,0 +1,9 @@ +surfaceInfo="A3\data_f\Penetration\metal.bisurf"; +ambient[]={0.69999999,0.80000001,0.77999997,1}; +diffuse[]={0.69999999,0.80000001,0.77999997,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0,0,0,1}; +specularPower=1; +PixelShaderID="Normal"; +VertexShaderID="Basic"; diff --git a/include/a3/data_f/penetration/metal_plate.rvmat b/include/a3/data_f/penetration/metal_plate.rvmat new file mode 100644 index 0000000000..3b19c02ddc --- /dev/null +++ b/include/a3/data_f/penetration/metal_plate.rvmat @@ -0,0 +1,9 @@ +surfaceInfo="A3\data_f\Penetration\metal_plate.bisurf"; +ambient[]={0.69999999,0.80000001,0.77999997,1}; +diffuse[]={0.69999999,0.80000001,0.77999997,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0,0,0,1}; +specularPower=1; +PixelShaderID="Normal"; +VertexShaderID="Basic"; diff --git a/include/a3/data_f/penetration/plastic.rvmat b/include/a3/data_f/penetration/plastic.rvmat new file mode 100644 index 0000000000..223c0129bd --- /dev/null +++ b/include/a3/data_f/penetration/plastic.rvmat @@ -0,0 +1,3 @@ +surfaceInfo="A3\data_f\Penetration\plastic.bisurf"; +diffuse[]={0.89999998,0.80000001,0.60000002,1}; +ambient[]={0.89999998,0.80000001,0.60000002,1}; diff --git a/include/a3/data_f/penetration/tyre.rvmat b/include/a3/data_f/penetration/tyre.rvmat new file mode 100644 index 0000000000..711d3fa369 --- /dev/null +++ b/include/a3/data_f/penetration/tyre.rvmat @@ -0,0 +1,3 @@ +surfaceInfo="A3\data_f\Penetration\tyre.bisurf"; +diffuse[]={0.1,0.1,0.1,1}; +ambient[]={0.1,0.1,0.1,1}; diff --git a/include/a3/data_f/penetration/wood.rvmat b/include/a3/data_f/penetration/wood.rvmat new file mode 100644 index 0000000000..466b9eb212 --- /dev/null +++ b/include/a3/data_f/penetration/wood.rvmat @@ -0,0 +1,9 @@ +surfaceInfo="A3\data_f\Penetration\wood.bisurf"; +ambient[]={0.5,0.25,0,1}; +diffuse[]={0.5,0.25,0,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0,0,0,1}; +specularPower=1; +PixelShaderID="Normal"; +VertexShaderID="Basic"; diff --git a/include/a3/ui_f/hpp/defineCommonColors.inc b/include/a3/ui_f/hpp/defineCommonColors.inc new file mode 100755 index 0000000000..474b732f28 --- /dev/null +++ b/include/a3/ui_f/hpp/defineCommonColors.inc @@ -0,0 +1,309 @@ +/////////////////////////////////////////////////////////////////////////// +/// GUI +/////////////////////////////////////////////////////////////////////////// + +//--- Background color with defaults (not multipliable) +#define GUI_BCG_RGB_R "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])" +#define GUI_BCG_RGB_G "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])" +#define GUI_BCG_RGB_B "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])" +#define GUI_BCG_ALPHA "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])" + +#define GUI_BCG_RGB GUI_BCG_RGB_R, GUI_BCG_RGB_G, GUI_BCG_RGB_B +#define GUI_BCG_COLOR {GUI_BCG_RGB,GUI_BCG_ALPHA} +#define GUI_BCG_COLOR_SELECTED {GUI_BCG_RGB,0.5} + +//--- TitleBar text color +#define GUI_TITLETEXT_RGB_R "(profilenamespace getvariable ['GUI_TITLETEXT_RGB_R',1.0])" +#define GUI_TITLETEXT_RGB_G "(profilenamespace getvariable ['GUI_TITLETEXT_RGB_G',1.0])" +#define GUI_TITLETEXT_RGB_B "(profilenamespace getvariable ['GUI_TITLETEXT_RGB_B',1.0])" +#define GUI_TITLETEXT_ALPHA "(profilenamespace getvariable ['GUI_TITLETEXT_RGB_A',0.6])" +#define GUI_TITLETEXT_COLOR {GUI_TITLETEXT_RGB_R, GUI_TITLETEXT_RGB_G, GUI_TITLETEXT_RGB_B, GUI_TITLETEXT_ALPHA} + +//--- Background for wGUI displays +#define GUI_BCG_MENU_RGB 0, 0, 0 +#define GUI_BCG_MENU {GUI_BCG_MENU_RGB, 0.7} + +//--- Background for editor +#define GUI_BCG_EDITOR_RGB 0.1, 0.1, 0.1 +#define GUI_BCG_EDITOR {GUI_BCG_EDITOR_RGB, 1} + +//--- Medium background (obsolete; Dwarden's displays) +#define GUI_BCG_MEDIUM_RGB GUI_BCG_RGB +#define GUI_BCG_MEDIUM_ALPHA GUI_BCG_ALPHA +#define GUI_BCG_MEDIUM_COLOR {GUI_BCG_MEDIUM_RGB,GUI_BCG_MEDIUM_ALPHA} + +//--- Dark background (HUD) +#define GUI_BCG_DARK_RGB GUI_BCG_RGB +#define GUI_BCG_DARK_ALPHA 0.85 +#define GUI_BCG_DARK_COLOR {GUI_BCG_DARK_RGB,GUI_BCG_DARK_ALPHA} +#define GUI_BCG_DARK_TRANSPARENT {GUI_BCG_DARK_RGB,GUI_BCG_DARK_ALPHA / 2} + +//--- Active color (inversed to selected color) +#define GUI_BCG_ACTIVE_RGB 1, 1, 1 + +//--- Warning color (exit buttons) +#define GUI_BCG_ERROR_RGB 0.7, 0, 0 + +//--- Text color +#define GUI_TEXT_RGB 1, 1, 1 +#define GUI_TEXT_ALPHA 1.0 +#define GUI_TEXT_COLOR {GUI_TEXT_RGB,GUI_TEXT_ALPHA} +#define GUI_TEXT_SHADOW {0,0,0,0.5} +#define GUI_TEXT_HTML_COLOR "#ffffff" +#define GUI_TEXT_HTML_SHADOW "#80000000" + +//--- List: text colors and background highlight +#define GUI_LIST_TEXT_COLOR {GUI_TEXT_RGB,0.8} +#define GUI_LIST_TEXT_COLOR_SELECTED {GUI_TEXT_RGB,1.0} +#define GUI_LIST_BCG_SELECTED {0,0,0,0.2} + +//--- Tooltip colours +#define GUI_TOOLTIP_TEXT_COLOR {1, 1, 1, 1} +#define GUI_TOOLTIP_BOX_COLOR {1, 1, 1, 1} +#define GUI_TOOLTIP_SHADE_COLOR {0, 0, 0, 0.65} + + +/////////////////////////////////////////////////////////////////////////// +/// iGUI +/////////////////////////////////////////////////////////////////////////// +//--- IGUI Background color +#define IGUI_BCG_RGB_R "(profilenamespace getvariable ['IGUI_BCG_RGB_R',0])" +#define IGUI_BCG_RGB_G "(profilenamespace getvariable ['IGUI_BCG_RGB_G',1])" +#define IGUI_BCG_RGB_B "(profilenamespace getvariable ['IGUI_BCG_RGB_B',1])" +#define IGUI_BCG_RGB_A "(profilenamespace getvariable ['IGUI_BCG_RGB_A',0.8])" +#define IGUI_BCG_RGB IGUI_BCG_RGB_R, IGUI_BCG_RGB_G, IGUI_BCG_RGB_B +#define IGUI_BCG_COLOR {IGUI_BCG_RGB,IGUI_BCG_RGB_A} + +//--- IGUI Text color +#define IGUI_TEXT_RGB_R "(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])" +#define IGUI_TEXT_RGB_G "(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])" +#define IGUI_TEXT_RGB_B "(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])" +#define IGUI_TEXT_RGB_A "(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])" +#define IGUI_TEXT_RGB IGUI_TEXT_RGB_R, IGUI_TEXT_RGB_G, IGUI_TEXT_RGB_B +#define IGUI_TEXT_COLOR {IGUI_TEXT_RGB,IGUI_TEXT_RGB_A} + +//--- IGUI Warning color +#define IGUI_WARNING_RGB_R "(profilenamespace getvariable ['IGUI_WARNING_RGB_R',0.8])" +#define IGUI_WARNING_RGB_G "(profilenamespace getvariable ['IGUI_WARNING_RGB_G',0.5])" +#define IGUI_WARNING_RGB_B "(profilenamespace getvariable ['IGUI_WARNING_RGB_B',0.0])" +#define IGUI_WARNING_RGB_A "(profilenamespace getvariable ['IGUI_WARNING_RGB_A',0.8])" +#define IGUI_WARNING_RGB IGUI_WARNING_RGB_R, IGUI_WARNING_RGB_G, IGUI_WARNING_RGB_B +#define IGUI_WARNING_COLOR {IGUI_WARNING_RGB,IGUI_WARNING_RGB_A} + +//--- IGUI Error color +#define IGUI_ERROR_RGB_R "(profilenamespace getvariable ['IGUI_ERROR_RGB_R',0.8])" +#define IGUI_ERROR_RGB_G "(profilenamespace getvariable ['IGUI_ERROR_RGB_G',0.0])" +#define IGUI_ERROR_RGB_B "(profilenamespace getvariable ['IGUI_ERROR_RGB_B',0.0])" +#define IGUI_ERROR_RGB_A "(profilenamespace getvariable ['IGUI_ERROR_RGB_A',1.0])" +#define IGUI_ERROR_RGB IGUI_ERROR_RGB_R, IGUI_ERROR_RGB_G, IGUI_ERROR_RGB_B +#define IGUI_ERROR_COLOR {IGUI_ERROR_RGB,IGUI_ERROR_RGB_A} + +//--- HUD Text color (obsolete defines; ToDo: Replace with IGUI_TEXT_COLOR and IGUI_BCG_COLOR) +#define CA_UI_HUD IGUI_TEXT_COLOR + + + +/////////////////////////////////////////////////////////////////////////// +/// Sides +/////////////////////////////////////////////////////////////////////////// + +//--- BLUFOR +#define Map_BLUFOR_R "(profilenamespace getvariable ['Map_BLUFOR_R',0])" +#define Map_BLUFOR_G "(profilenamespace getvariable ['Map_BLUFOR_G',1])" +#define Map_BLUFOR_B "(profilenamespace getvariable ['Map_BLUFOR_B',1])" +#define Map_BLUFOR_A "(profilenamespace getvariable ['Map_BLUFOR_A',0.8])" +#define Map_BLUFOR_RGB Map_BLUFOR_R, Map_BLUFOR_G, Map_BLUFOR_B +#define Map_BLUFOR_RGBA {Map_BLUFOR_RGB,Map_BLUFOR_A} + +//--- OPFOR +#define Map_OPFOR_R "(profilenamespace getvariable ['Map_OPFOR_R',0])" +#define Map_OPFOR_G "(profilenamespace getvariable ['Map_OPFOR_G',1])" +#define Map_OPFOR_B "(profilenamespace getvariable ['Map_OPFOR_B',1])" +#define Map_OPFOR_A "(profilenamespace getvariable ['Map_OPFOR_A',0.8])" +#define Map_OPFOR_RGB Map_OPFOR_R, Map_OPFOR_G, Map_OPFOR_B +#define Map_OPFOR_RGBA {Map_OPFOR_RGB,Map_OPFOR_A} + +//--- Independent +#define Map_Independent_R "(profilenamespace getvariable ['Map_Independent_R',0])" +#define Map_Independent_G "(profilenamespace getvariable ['Map_Independent_G',1])" +#define Map_Independent_B "(profilenamespace getvariable ['Map_Independent_B',1])" +#define Map_Independent_A "(profilenamespace getvariable ['Map_Independent_A',0.8])" +#define Map_Independent_RGB Map_Independent_R, Map_Independent_G, Map_Independent_B +#define Map_Independent_RGBA {Map_Independent_RGB,Map_Independent_A} + +//--- Civilian +#define Map_Civilian_R "(profilenamespace getvariable ['Map_Civilian_R',0])" +#define Map_Civilian_G "(profilenamespace getvariable ['Map_Civilian_G',1])" +#define Map_Civilian_B "(profilenamespace getvariable ['Map_Civilian_B',1])" +#define Map_Civilian_A "(profilenamespace getvariable ['Map_Civilian_A',0.8])" +#define Map_Civilian_RGB Map_Civilian_R, Map_Civilian_G, Map_Civilian_B +#define Map_Civilian_RGBA {Map_Civilian_RGB,Map_Civilian_A} + +//--- Unknown +#define Map_Unknown_R "(profilenamespace getvariable ['Map_Unknown_R',0])" +#define Map_Unknown_G "(profilenamespace getvariable ['Map_Unknown_G',1])" +#define Map_Unknown_B "(profilenamespace getvariable ['Map_Unknown_B',1])" +#define Map_Unknown_A "(profilenamespace getvariable ['Map_Unknown_A',0.8])" +#define Map_Unknown_RGB Map_Unknown_R, Map_Unknown_G, Map_Unknown_B +#define Map_Unknown_RGBA {Map_Unknown_RGB,Map_Unknown_A} + + + +/////////////////////////////////////////////////////////////////////////// +/// Misc +/////////////////////////////////////////////////////////////////////////// +//overwritten by Warka +#define CA_UI_ACTION {0.9,0.9,0.9,0.4} +#define CA_UI_ACTION_AVAILABLE IGUI_TEXT_COLOR +#define CA_UI_ACTION_ACTIVE {0.24,0.87,0,0.8} +#define CA_IGUI_Green {0.709,0.972,0.384,1} +#define CA_IGUI_GreenDark {0.259,0.463,0.149, 1} //MUF-added from A3 //{0.659,0.863,0.549,0.6} +#define CA_IGUI_Background IGUI_BCG_COLOR + +#define Color_Orange {GUI_BCG_RGB, 1} +#define Color_DarkOrange {GUI_BCG_MEDIUM_RGB, 0.7} + +#define CA_colordark {0, 0, 0, 1} +#define CA_UI_element_background Color_White +#define CA_UI_background {0.6, 0.6, 0.6, 0.4} +#define CA_UI_title_background {0.1961,0.1451,0.0941,1.0} +#define CA_UI_green {0.709,0.972,0.384,1} +#define CA_UI_red {0.58, 0.1147, 0.1108, 1} + +#define CA_UI_grey {0.4,0.4,0.4,1} +#define CA_UI_transparent {1,1,1,0} + +#define CA_IGUI_Red {0.706,0.0745,0.0196,1} +#define CA_IGUI_Orange {0.863,0.584,0.0,1} +#define CA_IGUI_YellowGreen {0.8275,0.8196,0.1961,1.0} +#define CA_IGUI_Blue {0.196,0.592,0.706, 1} +#define CA_IGUI_Grey {0.606,0.606,0.606,1} + +#define Color_White {0.95, 0.95, 0.95, 1} +//#define Color_Black {0.023529, 0, 0.0313725, 1} +#define Color_Black {0, 0, 0, 1} +#define Color_Gray {1, 1, 1, 0.5} +#define Color_Empty {0, 0, 0, 0} + +#define Color_Back {0.1, 0.1, 0.1, 0.4} +#define Color_BackList {0.2, 0.2, 0.2, 0.2} + +#define ProcTextWhite "#(argb,8,8,3)color(1,1,1,1)" +#define ProcTextBlack "#(argb,8,8,3)color(0,0,0,1)" +#define ProcTextGray "#(argb,8,8,3)color(0.3,0.3,0.3,1)" +#define ProcTextRed "#(argb,8,8,3)color(1,0,0,1)" +#define ProcTextGreen "#(argb,8,8,3)color(0,1,0,1)" +#define ProcTextBlue "#(argb,8,8,3)color(0,0,1,1)" +#define ProcTextOrange "#(argb,8,8,3)color(1,0.5,0,1)" +#define ProcTextTransparent "#(argb,8,8,3)color(0,0,0,0)" +#define ProcTextHUD "#(argb,8,8,3)color(0.600,0.8392,0.4706,1.0)" +#define ProcTextPurple "#(argb,8,8,3)color(0.75,0,0.75,1)" + + +/////////////////////////////////////////////////////////////////////////// +/// Task colors: 3D task marker +/////////////////////////////////////////////////////////////////////////// +#define COLOR_TASK_ICON_UNASSIGNED_RGB 1,1,1 +#define COLOR_TASK_ICON_UNASSIGNED_A 0.5 +#define COLOR_TASK_ICON_UNASSIGNED_RGBA COLOR_TASK_ICON_UNASSIGNED_RGB,COLOR_TASK_ICON_UNASSIGNED_A +#define COLOR_TASK_ICON_ASSIGNED_RGB 1,0.72,0.3 +#define COLOR_TASK_ICON_ASSIGNED_A 0.5 +#define COLOR_TASK_ICON_ASSIGNED_RGBA COLOR_TASK_ICON_ASSIGNED_RGB,COLOR_TASK_ICON_ASSIGNED_A +#define COLOR_TASK_ICON_CUSTOM_RGB 0.3,0.72,1 +#define COLOR_TASK_ICON_CUSTOM_A 0.5 +#define COLOR_TASK_ICON_CUSTOM_RGBA COLOR_TASK_ICON_CUSTOM_RGB,COLOR_TASK_ICON_CUSTOM_A + + +#define COLOR_TASK_BACKGROUND_UNASSIGNED_RGB 1,1,1 +#define COLOR_TASK_BACKGROUND_UNASSIGNED_A 1 +#define COLOR_TASK_BACKGROUND_UNASSIGNED_RGBA COLOR_TASK_BACKGROUND_UNASSIGNED_RGB,COLOR_TASK_BACKGROUND_UNASSIGNED_A +#define COLOR_TASK_BACKGROUND_ASSIGNED_RGB 1,0.72,0.3 +#define COLOR_TASK_BACKGROUND_ASSIGNED_A 1 +#define COLOR_TASK_BACKGROUND_ASSIGNED_RGBA COLOR_TASK_BACKGROUND_ASSIGNED_RGB,COLOR_TASK_BACKGROUND_ASSIGNED_A +#define COLOR_TASK_BACKGROUND_CUSTOM_RGB 0.3,0.72,1 +#define COLOR_TASK_BACKGROUND_CUSTOM_A 1 +#define COLOR_TASK_BACKGROUND_CUSTOM_RGBA COLOR_TASK_BACKGROUND_CUSTOM_RGB,COLOR_TASK_BACKGROUND_CUSTOM_A + + +#define COLOR_TASK_TEXT_UNASSIGNED_RGB 0.91,0.91,0.91 +#define COLOR_TASK_TEXT_UNASSIGNED_A 0.55 +#define COLOR_TASK_TEXT_UNASSIGNED_RGBA COLOR_TASK_TEXT_UNASSIGNED_RGB,COLOR_TASK_TEXT_UNASSIGNED_A +#define COLOR_TASK_TEXT_ASSIGNED_RGB 0.91,0.65,0.27 +#define COLOR_TASK_TEXT_ASSIGNED_A 0.55 +#define COLOR_TASK_TEXT_ASSIGNED_RGBA COLOR_TASK_TEXT_ASSIGNED_RGB,COLOR_TASK_TEXT_ASSIGNED_A +#define COLOR_TASK_TEXT_CUSTOM_RGB 0.27,0.65,0.91 +#define COLOR_TASK_TEXT_CUSTOM_A 0.55 +#define COLOR_TASK_TEXT_CUSTOM_RGBA COLOR_TASK_TEXT_CUSTOM_RGB,COLOR_TASK_TEXT_CUSTOM_A + + +/////////////////////////////////////////////////////////////////////////// +/// Task colors: generic +/////////////////////////////////////////////////////////////////////////// +#define COLOR_TASK_UNASSIGNED_RGB COLOR_TASK_BACKGROUND_UNASSIGNED_RGB +#define COLOR_TASK_UNASSIGNED_RGBA COLOR_TASK_UNASSIGNED_RGB,1 + +#define COLOR_TASK_ASSIGNED_RGB COLOR_TASK_BACKGROUND_ASSIGNED_RGB +#define COLOR_TASK_ASSIGNED_RGBA COLOR_TASK_ASSIGNED_RGB,1 + +#define COLOR_TASK_CUSTOM_RGB COLOR_TASK_BACKGROUND_CUSTOM_RGB +#define COLOR_TASK_CUSTOM_RGBA COLOR_TASK_CUSTOM_RGB,1 + +//navigation elements +#define IGUI_CURSOR_COLOR {COLOR_TASK_TEXT_UNASSIGNED_RGBA} + +/////////////////////////////////////////////////////////////////////////// +/// Custom info / Sensors (duplicated in \A3\cfgSensors.hpp !!!) +/////////////////////////////////////////////////////////////////////////// + +#define COLOR_SENSORS_RADAR_RGB 0.0,1.0,1.0 +#define COLOR_SENSORS_RADAR_A 1.0 +#define COLOR_SENSORS_RADAR_RGBA {COLOR_SENSORS_RADAR_RGB,COLOR_SENSORS_RADAR_A} + +#define COLOR_SENSORS_IR_RGB 1.0,0.0,0.0 +#define COLOR_SENSORS_IR_A 1.0 +#define COLOR_SENSORS_IR_RGBA {COLOR_SENSORS_IR_RGB,COLOR_SENSORS_IR_A} + +#define COLOR_SENSORS_RWR_RGB 0.5, 1, 0.5 +#define COLOR_SENSORS_RWR_A 0.5 +#define COLOR_SENSORS_RWR_RGBA {COLOR_SENSORS_RWR_RGB,COLOR_SENSORS_RWR_A} + +#define COLOR_SENSORS_NV_RGB 1,1,1 +#define COLOR_SENSORS_NV_A 0 +#define COLOR_SENSORS_NV_RGBA {COLOR_SENSORS_NV_RGB,COLOR_SENSORS_NV_A} + +#define COLOR_SENSORS_LAS_RGB 1,1,1 +#define COLOR_SENSORS_LAS_A 0 +#define COLOR_SENSORS_LAS_RGBA {COLOR_SENSORS_LAS_RGB,COLOR_SENSORS_LAS_A} + +#define COLOR_SENSORS_VIS_RGB 1.0,1.0,0.5 +#define COLOR_SENSORS_VIS_A 0.8 +#define COLOR_SENSORS_VIS_RGBA {COLOR_SENSORS_VIS_RGB,COLOR_SENSORS_VIS_A} + +#define COLOR_SENSORS_MAN_RGB 1.0, 0.5, 1.0 +#define COLOR_SENSORS_MAN_A 1.0 +#define COLOR_SENSORS_MAN_RGBA {COLOR_SENSORS_MAN_RGB,COLOR_SENSORS_MAN_A} + + +#define COLOR_SENSORS_ENEMY_RGB 1.0, 0.0, 0.0 +#define COLOR_SENSORS_ENEMY_A 1.0 +#define COLOR_SENSORS_ENEMY_RGBA {COLOR_SENSORS_ENEMY_RGB,COLOR_SENSORS_ENEMY_A} + +#define COLOR_SENSORS_FRIENDLY_RGB 0.0, 1.0, 0.0 +#define COLOR_SENSORS_FRIENDLY_A 1.0 +#define COLOR_SENSORS_FRIENDLY_RGBA {COLOR_SENSORS_FRIENDLY_RGB,COLOR_SENSORS_FRIENDLY_A} + +#define COLOR_SENSORS_GROUP_RGB 0.7, 1.0, 0.4 +#define COLOR_SENSORS_GROUP_A 1.0 +#define COLOR_SENSORS_GROUP_RGBA {COLOR_SENSORS_GROUP_RGB,COLOR_SENSORS_GROUP_A} + +#define COLOR_SENSORS_WARNING_RGB 1.0, 1.0, 0.0 +#define COLOR_SENSORS_WARNING_A 1.0 +#define COLOR_SENSORS_WARNING_RGBA {COLOR_SENSORS_WARNING_RGB,COLOR_SENSORS_WARNING_A} + +#define COLOR_SENSORS_THREAT_RGB 1.0, 0.5, 0.0 +#define COLOR_SENSORS_THREAT_A 1.0 +#define COLOR_SENSORS_THREAT_RGBA {COLOR_SENSORS_THREAT_RGB,COLOR_SENSORS_THREAT_A} + +#define COLOR_SENSORS_DEFAULT_RGB 1.0, 1.0, 1.0 +#define COLOR_SENSORS_DEFAULT_A 1.0 +#define COLOR_SENSORS_DEFAULT_RGBA {COLOR_SENSORS_DEFAULT_RGB,COLOR_SENSORS_DEFAULT_A} \ No newline at end of file diff --git a/include/a3/ui_f/hpp/defineCommonGrids.inc b/include/a3/ui_f/hpp/defineCommonGrids.inc new file mode 100644 index 0000000000..777257255a --- /dev/null +++ b/include/a3/ui_f/hpp/defineCommonGrids.inc @@ -0,0 +1,464 @@ +/////////////////////////////////////////////////////////////////////////// +/// GUI +/////////////////////////////////////////////////////////////////////////// + +//--- Hack to avoid too large display upon first startup (fixed in engine) +//#define GUI_GRID_OLD_WAbs ((safezoneW / ((floor (safezoneW / safezoneH)) max 1)) min 1.2) + +//--- New grid for new A3 displays +#define GUI_GRID_WAbs ((safezoneW / safezoneH) min 1.2) +#define GUI_GRID_HAbs (GUI_GRID_WAbs / 1.2) +#define GUI_GRID_W (GUI_GRID_WAbs / 40) +#define GUI_GRID_H (GUI_GRID_HAbs / 25) +#define GUI_GRID_X (safezoneX) +#define GUI_GRID_Y (safezoneY + safezoneH - GUI_GRID_HAbs) + +//--- MUF - Test grid used in MP +#define GUI_GRID_MP_WAbs GUI_GRID_WAbs +#define GUI_GRID_MP_HAbs GUI_GRID_HAbs +#define GUI_GRID_MP_W GUI_GRID_W +#define GUI_GRID_MP_H GUI_GRID_H +#define GUI_GRID_MP_X (SafezoneX) +#define GUI_GRID_MP_Y (safezoneY) + +//--- Screen Center +#define GUI_GRID_CENTER_WAbs GUI_GRID_WAbs +#define GUI_GRID_CENTER_HAbs GUI_GRID_HAbs +#define GUI_GRID_CENTER_W GUI_GRID_W +#define GUI_GRID_CENTER_H GUI_GRID_H +#define GUI_GRID_CENTER_X (safezoneX + (safezoneW - GUI_GRID_CENTER_WAbs)/2) +#define GUI_GRID_CENTER_Y (safezoneY + (safezoneH - GUI_GRID_CENTER_HAbs)/2) + +//--- Bottom center position (used by Revive UI) +#define GUI_GRID_CENTER_BOTTOM_WAbs GUI_GRID_WAbs +#define GUI_GRID_CENTER_BOTTOM_HAbs GUI_GRID_HAbs +#define GUI_GRID_CENTER_BOTTOM_W GUI_GRID_W +#define GUI_GRID_CENTER_BOTTOM_H GUI_GRID_H +#define GUI_GRID_CENTER_BOTTOM_X (safezoneX + (safezoneW - GUI_GRID_CENTER_WAbs)/2) +#define GUI_GRID_CENTER_BOTTOM_Y (safezoneY + safezoneH - GUI_GRID_CENTER_HAbs) + +//--- Screen Top Center +#define GUI_GRID_TOPCENTER_WAbs GUI_GRID_WAbs +#define GUI_GRID_TOPCENTER_HAbs GUI_GRID_HAbs +#define GUI_GRID_TOPCENTER_W GUI_GRID_W +#define GUI_GRID_TOPCENTER_H GUI_GRID_H +#define GUI_GRID_TOPCENTER_X GUI_GRID_CENTER_X +#define GUI_GRID_TOPCENTER_Y safezoneY + +//--- Screen Bottom Center +#define GUI_GRID_BOTTOMCENTER_WAbs GUI_GRID_WAbs +#define GUI_GRID_BOTTOMCENTER_HAbs GUI_GRID_HAbs +#define GUI_GRID_BOTTOMCENTER_W GUI_GRID_W +#define GUI_GRID_BOTTOMCENTER_H GUI_GRID_H +#define GUI_GRID_BOTTOMCENTER_X GUI_GRID_CENTER_X +#define GUI_GRID_BOTTOMCENTER_Y GUI_GRID_Y + +//--- 2D Editor - TEST A3 +#define GUI_GRID_EDITOR_WAbs GUI_GRID_CENTER_WAbs +#define GUI_GRID_EDITOR_HAbs GUI_GRID_CENTER_HAbs +#define GUI_GRID_EDITOR_W GUI_GRID_CENTER_W +#define GUI_GRID_EDITOR_H GUI_GRID_CENTER_H +#define GUI_GRID_EDITOR_X (safezoneX) +#define GUI_GRID_EDITOR_Y (safezoneY) + +//--- Diary +#define GUI_GRID_DIARY_WAbs GUI_GRID_WAbs +#define GUI_GRID_DIARY_HAbs GUI_GRID_HAbs +#define GUI_GRID_DIARY_W GUI_GRID_W +#define GUI_GRID_DIARY_H GUI_GRID_H +#define GUI_GRID_DIARY_X (safezoneX) +#define GUI_GRID_DIARY_Y (safezoneY) + +//--- Top left +#define GUI_GRID_TOPLEFT_WAbs GUI_GRID_WAbs +#define GUI_GRID_TOPLEFT_HAbs GUI_GRID_HAbs +#define GUI_GRID_TOPLEFT_W GUI_GRID_W +#define GUI_GRID_TOPLEFT_H GUI_GRID_H +#define GUI_GRID_TOPLEFT_X (safezoneX) +#define GUI_GRID_TOPLEFT_Y (safezoneY) + + +/////////////////////////////////////////////////////////////////////////// +/// iGUI +/////////////////////////////////////////////////////////////////////////// + +//--- IGUI Vehicle +#define IGUI_GRID_VEHICLE_WAbs (10 * GUI_GRID_W) +#define IGUI_GRID_VEHICLE_HAbs (4.5 * GUI_GRID_H) +#define IGUI_GRID_VEHICLE_XDef (safezoneX + 0.5 * GUI_GRID_W) +#define IGUI_GRID_VEHICLE_YDef (safezoneY + 0.5 * GUI_GRID_H) +#define IGUI_GRID_VEHICLE_X (profilenamespace getvariable ["IGUI_GRID_VEHICLE_X",IGUI_GRID_VEHICLE_XDef]) +#define IGUI_GRID_VEHICLE_Y (profilenamespace getvariable ["IGUI_GRID_VEHICLE_Y",IGUI_GRID_VEHICLE_YDef]) +#define IGUI_GRID_VEHICLE_W GUI_GRID_W +#define IGUI_GRID_VEHICLE_H GUI_GRID_H + +//--- IGUI Radar +#define IGUI_GRID_RADAR_WAbs (5.6 * GUI_GRID_W) +#define IGUI_GRID_RADAR_HAbs (5.6 * GUI_GRID_H) +#define IGUI_GRID_RADAR_XDef (safezoneX + safezoneW / 2 - 2.8 * GUI_GRID_W) +#define IGUI_GRID_RADAR_YDef (safezoneY + 0.5 * GUI_GRID_H) +#define IGUI_GRID_RADAR_X (profilenamespace getvariable ["IGUI_GRID_RADAR_X",IGUI_GRID_RADAR_XDef]) +#define IGUI_GRID_RADAR_Y (profilenamespace getvariable ["IGUI_GRID_RADAR_Y",IGUI_GRID_RADAR_YDef]) +#define IGUI_GRID_RADAR_W GUI_GRID_W +#define IGUI_GRID_RADAR_H GUI_GRID_H + +//--- IGUI Weapon +#define IGUI_GRID_WEAPON_WAbs (10 * GUI_GRID_W) +#define IGUI_GRID_WEAPON_HAbs (4.5 * GUI_GRID_H) +#define IGUI_GRID_WEAPON_XDef ((safezoneX + safezoneW) - IGUI_GRID_WEAPON_WAbs - 4.3 * GUI_GRID_W) +#define IGUI_GRID_WEAPON_YDef (safezoneY + 0.5 * GUI_GRID_H) +#define IGUI_GRID_WEAPON_X (profilenamespace getvariable ["IGUI_GRID_WEAPON_X",IGUI_GRID_WEAPON_XDef]) +#define IGUI_GRID_WEAPON_Y (profilenamespace getvariable ["IGUI_GRID_WEAPON_Y",IGUI_GRID_WEAPON_YDef]) +#define IGUI_GRID_WEAPON_W GUI_GRID_W +#define IGUI_GRID_WEAPON_H GUI_GRID_H + +//--- IGUI Stance indicator +#define IGUI_GRID_STANCE_WAbs (3.7 * GUI_GRID_W) +#define IGUI_GRID_STANCE_HAbs (3.7 * GUI_GRID_H) +#define IGUI_GRID_STANCE_XDef ((safezoneX + safezoneW) - IGUI_GRID_STANCE_WAbs - 0.5 * GUI_GRID_W) +#define IGUI_GRID_STANCE_YDef (safezoneY + 0.5 * GUI_GRID_H) +#define IGUI_GRID_STANCE_X (profilenamespace getvariable ["IGUI_GRID_STANCE_X",IGUI_GRID_STANCE_XDef]) +#define IGUI_GRID_STANCE_Y (profilenamespace getvariable ["IGUI_GRID_STANCE_Y",IGUI_GRID_STANCE_YDef]) +#define IGUI_GRID_STANCE_W GUI_GRID_W +#define IGUI_GRID_STANCE_H GUI_GRID_H + +//--- IGUI Stamina Bar +#define IGUI_GRID_STAMINA_WAbs (10 * GUI_GRID_W) +#define IGUI_GRID_STAMINA_HAbs (1 * GUI_GRID_H) +#define IGUI_GRID_STAMINA_XDef IGUI_GRID_WEAPON_XDef +#define IGUI_GRID_STAMINA_YDef (safezoneY + 4.05 * GUI_GRID_H) +#define IGUI_GRID_STAMINA_X (profilenamespace getvariable ["IGUI_GRID_STAMINA_X",IGUI_GRID_STAMINA_XDef]) +#define IGUI_GRID_STAMINA_Y (profilenamespace getvariable ["IGUI_GRID_STAMINA_Y",IGUI_GRID_STAMINA_YDef]) +#define IGUI_GRID_STAMINA_W GUI_GRID_W +#define IGUI_GRID_STAMINA_H GUI_GRID_H + +//--- IGUI Notification +#define IGUI_GRID_NOTIFICATION_WAbs (12 * GUI_GRID_W) +#define IGUI_GRID_NOTIFICATION_HAbs (6 * GUI_GRID_H) +#define IGUI_GRID_NOTIFICATION_XDef (0.5 - 6 * GUI_GRID_W) +#define IGUI_GRID_NOTIFICATION_YDef (safezoneY + 6.5 * GUI_GRID_H) +#define IGUI_GRID_NOTIFICATION_X (profilenamespace getvariable ["IGUI_GRID_NOTIFICATION_X",IGUI_GRID_NOTIFICATION_XDef]) +#define IGUI_GRID_NOTIFICATION_Y (profilenamespace getvariable ["IGUI_GRID_NOTIFICATION_Y",IGUI_GRID_NOTIFICATION_YDef]) +#define IGUI_GRID_NOTIFICATION_W GUI_GRID_W +#define IGUI_GRID_NOTIFICATION_H GUI_GRID_H + +//--- IGUI Action / Command Menu +#define IGUI_GRID_MENU_WAbs (4.5 * GUI_GRID_W) +#define IGUI_GRID_MENU_HAbs (13.5 * IGUI_TEXT_SIZE_MEDIUM) +#define IGUI_GRID_MENU_XDef (1.5 * GUI_GRID_W + safezoneX) +#define IGUI_GRID_MENU_YDef (5 * GUI_GRID_H + safezoneY) +#define IGUI_GRID_MENU_X (profilenamespace getvariable ["IGUI_GRID_MENU_X",IGUI_GRID_MENU_XDef]) +#define IGUI_GRID_MENU_Y (profilenamespace getvariable ["IGUI_GRID_MENU_Y",IGUI_GRID_MENU_YDef]) +#define IGUI_GRID_MENU_W GUI_GRID_W +#define IGUI_GRID_MENU_H GUI_GRID_H + +//--- IGUI Communication menu icons +#define IGUI_GRID_COMM_WAbs (1.5 * GUI_GRID_W) +#define IGUI_GRID_COMM_HAbs (15 * GUI_GRID_H) +#define IGUI_GRID_COMM_XDef (0 * GUI_GRID_W + safezoneX) +#define IGUI_GRID_COMM_YDef (5 * GUI_GRID_H + safezoneY) +#define IGUI_GRID_COMM_X (profilenamespace getvariable ["IGUI_GRID_COMM_X",IGUI_GRID_COMM_XDef]) +#define IGUI_GRID_COMM_Y (profilenamespace getvariable ["IGUI_GRID_COMM_Y",IGUI_GRID_COMM_YDef]) +#define IGUI_GRID_COMM_W GUI_GRID_W +#define IGUI_GRID_COMM_H GUI_GRID_H + +//--- IGUI Hint +#define IGUI_GRID_HINT_WAbs (12 * GUI_GRID_W) +#define IGUI_GRID_HINT_HAbs (8 * GUI_GRID_H) +#define IGUI_GRID_HINT_XDef ((safezoneX + safezoneW) - IGUI_GRID_HINT_WAbs - 1 * GUI_GRID_W) +#define IGUI_GRID_HINT_YDef (safezoneY + 6 * GUI_GRID_H) +#define IGUI_GRID_HINT_X (profilenamespace getvariable ["IGUI_GRID_HINT_X",IGUI_GRID_HINT_XDef]) +#define IGUI_GRID_HINT_Y (profilenamespace getvariable ["IGUI_GRID_HINT_Y",IGUI_GRID_HINT_YDef]) +#define IGUI_GRID_HINT_W GUI_GRID_W +#define IGUI_GRID_HINT_H GUI_GRID_H + +//--- IGUI GPS +#define IGUI_GRID_GPS_XDef (safezoneX + safezoneW - 11 * GUI_GRID_W) +#define IGUI_GRID_GPS_YDef (safezoneY + safezoneH - 20.5 * GUI_GRID_H) +#define IGUI_GRID_GPS_WDef (10 * GUI_GRID_W) +#define IGUI_GRID_GPS_HDef (10 * GUI_GRID_H) +#define IGUI_GRID_GPS_X (profilenamespace getvariable ['IGUI_GRID_GPS_X',IGUI_GRID_GPS_XDef]) +#define IGUI_GRID_GPS_Y (profilenamespace getvariable ['IGUI_GRID_GPS_Y',IGUI_GRID_GPS_YDef]) +#define IGUI_GRID_GPS_WAbs (profilenamespace getvariable ['IGUI_GRID_GPS_W',IGUI_GRID_GPS_WDef]) +#define IGUI_GRID_GPS_HAbs (profilenamespace getvariable ['IGUI_GRID_GPS_H',IGUI_GRID_GPS_HDef]) + +//--- IGUI AV Camera +#define IGUI_GRID_AVCAMERA_XDef (safezoneX + safezoneW - 11.6 * GUI_GRID_W) +#define IGUI_GRID_AVCAMERA_YDef (safezoneY + safezoneH - 17.2 * GUI_GRID_H) +#define IGUI_GRID_AVCAMERA_WDef (10.6 * GUI_GRID_W) +#define IGUI_GRID_AVCAMERA_HDef (6.7 * GUI_GRID_H) +#define IGUI_GRID_AVCAMERA_X (profilenamespace getvariable ['IGUI_GRID_AVCAMERA_X',IGUI_GRID_AVCAMERA_XDef]) +#define IGUI_GRID_AVCAMERA_Y (profilenamespace getvariable ['IGUI_GRID_AVCAMERA_Y',IGUI_GRID_AVCAMERA_YDef]) +#define IGUI_GRID_AVCAMERA_WAbs (profilenamespace getvariable ['IGUI_GRID_AVCAMERA_W',IGUI_GRID_AVCAMERA_WDef]) +#define IGUI_GRID_AVCAMERA_HAbs (profilenamespace getvariable ['IGUI_GRID_AVCAMERA_H',IGUI_GRID_AVCAMERA_HDef]) + +//--- IGUI IGUI Chat Log +#define IGUI_GRID_CHAT_XDef (safezoneX + 1 * GUI_GRID_W) +#define IGUI_GRID_CHAT_YDef (safezoneY + safezoneH - 10.5 * GUI_GRID_H) +#define IGUI_GRID_CHAT_WDef (20 * GUI_GRID_W) +#define IGUI_GRID_CHAT_HDef (5 * GUI_GRID_H) +#define IGUI_GRID_CHAT_X (profilenamespace getvariable ["IGUI_GRID_CHAT_X",IGUI_GRID_CHAT_XDef]) +#define IGUI_GRID_CHAT_Y (profilenamespace getvariable ["IGUI_GRID_CHAT_Y",IGUI_GRID_CHAT_YDef]) +#define IGUI_GRID_CHAT_WAbs (profilenamespace getvariable ["IGUI_GRID_CHAT_W",IGUI_GRID_CHAT_WDef]) +#define IGUI_GRID_CHAT_HAbs (profilenamespace getvariable ["IGUI_GRID_CHAT_H",IGUI_GRID_CHAT_HDef]) + +//--- IGUI Command Bar +#define IGUI_GRID_BAR_WAbs (36 * GUI_GRID_W) +#define IGUI_GRID_BAR_HAbs (4 * GUI_GRID_H) +#define IGUI_GRID_BAR_XDef (safezoneX + 1 * GUI_GRID_W) +#define IGUI_GRID_BAR_YDef (safezoneY + safezoneH - 4.5 * GUI_GRID_H) +#define IGUI_GRID_BAR_X (profilenamespace getvariable ["IGUI_GRID_BAR_X",IGUI_GRID_BAR_XDef]) +#define IGUI_GRID_BAR_Y (profilenamespace getvariable ["IGUI_GRID_BAR_Y",IGUI_GRID_BAR_YDef]) +#define IGUI_GRID_BAR_W GUI_GRID_W +#define IGUI_GRID_BAR_H GUI_GRID_H + +//--- IGUI MP Progress +#define IGUI_GRID_MP_WAbs (2.5 * GUI_GRID_W) +#define IGUI_GRID_MP_HAbs (15 * GUI_GRID_H) +#define IGUI_GRID_MP_XDef (safezoneX + safezoneW - 2 * GUI_GRID_W) +#define IGUI_GRID_MP_YDef (5 * GUI_GRID_H + safezoneY) +#define IGUI_GRID_MP_X (profilenamespace getvariable ["IGUI_GRID_MP_X",IGUI_GRID_MP_XDef]) +#define IGUI_GRID_MP_Y (profilenamespace getvariable ["IGUI_GRID_MP_Y",IGUI_GRID_MP_YDef]) +#define IGUI_GRID_MP_W GUI_GRID_W +#define IGUI_GRID_MP_H GUI_GRID_H + +//--- IGUI Custom Mission Display +#define IGUI_GRID_MISSION_WAbs (20 * GUI_GRID_W) +#define IGUI_GRID_MISSION_HAbs (5 * GUI_GRID_H) +#define IGUI_GRID_MISSION_XDef (safezoneX + safezoneW - 21 * GUI_GRID_W) +#define IGUI_GRID_MISSION_YDef (safezoneY + safezoneH - 10.5 * GUI_GRID_H) +#define IGUI_GRID_MISSION_X (profilenamespace getvariable ["IGUI_GRID_MISSION_X",IGUI_GRID_MISSION_XDef]) +#define IGUI_GRID_MISSION_Y (profilenamespace getvariable ["IGUI_GRID_MISSION_Y",IGUI_GRID_MISSION_YDef]) +#define IGUI_GRID_MISSION_W GUI_GRID_W +#define IGUI_GRID_MISSION_H GUI_GRID_H + +//--- IGUI Custom Info +#define IGUI_GRID_CUSTOMINFO_WDef (10 * GUI_GRID_W) +#define IGUI_GRID_CUSTOMINFO_HDef (10 * GUI_GRID_H) +#define IGUI_GRID_CUSTOMINFOLEFT_XDef (safezoneX + 0.5 * GUI_GRID_W) +#define IGUI_GRID_CUSTOMINFOLEFT_YDef (safezoneY + safezoneH - 21 * GUI_GRID_H) +#define IGUI_GRID_CUSTOMINFORIGHT_XDef ((safezoneX + safezoneW) - (IGUI_GRID_CUSTOMINFO_WDef + 0.5 * GUI_GRID_W)) +#define IGUI_GRID_CUSTOMINFORIGHT_YDef (safezoneY + safezoneH - 21 * GUI_GRID_H) + +#define IGUI_GRID_CUSTOMINFOLEFT_X (profilenamespace getvariable ["IGUI_GRID_CUSTOMINFOLEFT_X",IGUI_GRID_CUSTOMINFOLEFT_XDef]) +#define IGUI_GRID_CUSTOMINFOLEFT_Y (profilenamespace getvariable ["IGUI_GRID_CUSTOMINFOLEFT_Y",IGUI_GRID_CUSTOMINFOLEFT_YDef]) +#define IGUI_GRID_CUSTOMINFORIGHT_X (profilenamespace getvariable ["IGUI_GRID_CUSTOMINFORIGHT_X",IGUI_GRID_CUSTOMINFORIGHT_XDef]) +#define IGUI_GRID_CUSTOMINFORIGHT_Y (profilenamespace getvariable ["IGUI_GRID_CUSTOMINFORIGHT_Y",IGUI_GRID_CUSTOMINFORIGHT_YDef]) +#define IGUI_GRID_CUSTOMINFO_WAbs (profilenamespace getvariable ["IGUI_GRID_CUSTOMINFORIGHT_W",IGUI_GRID_CUSTOMINFO_WDef]) +#define IGUI_GRID_CUSTOMINFO_HAbs (profilenamespace getvariable ["IGUI_GRID_CUSTOMINFORIGHT_H",IGUI_GRID_CUSTOMINFO_HDef]) +#define IGUI_GRID_CUSTOMINFO_INNER_WAbs IGUI_GRID_CUSTOMINFO_WAbs - 0.25 * GUI_GRID_W +#define IGUI_GRID_CUSTOMINFO_INNER_HAbs IGUI_GRID_CUSTOMINFO_HAbs - 1.25 * GUI_GRID_H + + +/////////////////////////////////////////////////////////////////////////// +/// Old +/////////////////////////////////////////////////////////////////////////// + +//--- Old grid, that is used for old A3 and TKOH displays +#define GUI_GRID_OLD_WAbs ((safezoneW / safezoneH) min 1.2) +#define GUI_GRID_OLD_HAbs (GUI_GRID_OLD_WAbs / 1.2) +#define GUI_GRID_OLD_W (GUI_GRID_OLD_WAbs / 32) +#define GUI_GRID_OLD_H (GUI_GRID_OLD_HAbs / 20) +#define GUI_GRID_OLD_X (safezoneX) +#define GUI_GRID_OLD_Y (safezoneY + safezoneH - GUI_GRID_OLD_HAbs) + +//--- Centered +//#define GUI_GRID_OLD_X (safezoneX + (safezoneW - GUI_GRID_OLD_CENTER_WAbs)/2) +//--- Dark magic +//#define GUI_GRID_OLD_X (profilenamespace getvariable ['GUI_GRID_OLD_X',(safezoneX + (safezoneW - GUI_GRID_OLD_CENTER_WAbs)/2)]) +//#define GUI_GRID_OLD_Y (profilenamespace getvariable ['GUI_GRID_OLD_Y',(safezoneY + safezoneH - GUI_GRID_OLD_HAbs)]) + +//MUF-TEST: Anchor near the right edge of the screen - when changing Interface size, this point doesn't change its X position +#define GUI_ANCHOR_RIGHT (0.983 * safezoneW + safezoneX) +#define GUI_ANCHOR_LEFT 0 + +//--- Screen Center +#define GUI_GRID_OLD_CENTER_WAbs GUI_GRID_OLD_WAbs +#define GUI_GRID_OLD_CENTER_HAbs GUI_GRID_OLD_HAbs +#define GUI_GRID_OLD_CENTER_W GUI_GRID_OLD_W +#define GUI_GRID_OLD_CENTER_H GUI_GRID_OLD_H +#define GUI_GRID_OLD_CENTER_X (safezoneX + (safezoneW - GUI_GRID_OLD_CENTER_WAbs)/2) +#define GUI_GRID_OLD_CENTER_Y (safezoneY + (safezoneH - GUI_GRID_OLD_CENTER_HAbs)/2) + +//--- 2D Editor +#define GUI_GRID_OLD_EDITOR_WAbs GUI_GRID_OLD_CENTER_WAbs +#define GUI_GRID_OLD_EDITOR_HAbs GUI_GRID_OLD_CENTER_HAbs +#define GUI_GRID_OLD_EDITOR_W GUI_GRID_OLD_CENTER_W +#define GUI_GRID_OLD_EDITOR_H GUI_GRID_OLD_CENTER_H +#define GUI_GRID_OLD_EDITOR_X GUI_GRID_OLD_CENTER_X +#define GUI_GRID_OLD_EDITOR_Y (safezoneY) + +//--- Debug console (center down) +#define GUI_GRID_OLD_DEBUG_WAbs GUI_GRID_OLD_WAbs +#define GUI_GRID_OLD_DEBUG_HAbs GUI_GRID_OLD_HAbs +#define GUI_GRID_OLD_DEBUG_W GUI_GRID_OLD_W +#define GUI_GRID_OLD_DEBUG_H GUI_GRID_OLD_H +#define GUI_GRID_OLD_DEBUG_X (safezoneX + (safezoneW - GUI_GRID_OLD_DEBUG_WAbs)/2) +#define GUI_GRID_OLD_DEBUG_Y (safezoneY + safezoneH - GUI_GRID_OLD_DEBUG_HAbs) + +//--- IGUI Common +#define IGUI_GRID_OLD_WAbs GUI_GRID_OLD_WAbs +#define IGUI_GRID_OLD_HAbs GUI_GRID_OLD_HAbs +#define IGUI_GRID_OLD_W GUI_GRID_OLD_W +#define IGUI_GRID_OLD_H GUI_GRID_OLD_H +#define IGUI_GRID_OLD_X (safezoneX + (safezoneW - IGUI_GRID_OLD_WAbs) / 2) +#define IGUI_GRID_OLD_Y (safezoneY + safezoneH - IGUI_GRID_OLD_HAbs) + +//--- IGUI Bottom +#define IGUI_GRID_OLD_BOTTOM_WAbs IGUI_GRID_OLD_WAbs +#define IGUI_GRID_OLD_BOTTOM_HAbs IGUI_GRID_OLD_HAbs +#define IGUI_GRID_OLD_BOTTOM_W IGUI_GRID_OLD_W +#define IGUI_GRID_OLD_BOTTOM_H IGUI_GRID_OLD_H +#define IGUI_GRID_OLD_BOTTOM_X (safezoneX + (safezoneW - IGUI_GRID_OLD_BOTTOM_WAbs) / 2) +#define IGUI_GRID_OLD_BOTTOM_Y (safezoneY + safezoneH - IGUI_GRID_OLD_BOTTOM_HAbs) + +//--- IGUI Analogue Gauges ----------------------------------------------------------------------------------------------------- +//--- Analogue gauge - Speed +#define IGUI_GRID_GAUGESPEED_XDef (safezoneX + (safezoneW / 2) - 19.75 * GUI_GRID_W) +#define IGUI_GRID_GAUGESPEED_YDef (safezoneY + safezoneH - 11.7 * GUI_GRID_H) +#define IGUI_GRID_GAUGESPEED_X (profilenamespace getvariable ['IGUI_GRID_GAUGESPEED_X',IGUI_GRID_GAUGESPEED_XDef]) +#define IGUI_GRID_GAUGESPEED_Y (profilenamespace getvariable ['IGUI_GRID_GAUGESPEED_Y',IGUI_GRID_GAUGESPEED_YDef]) +#define IGUI_GRID_GAUGESPEED_WAbs (7.5 * GUI_GRID_W) +#define IGUI_GRID_GAUGESPEED_HAbs (7.5 * GUI_GRID_H) + +//--- Analogue gauge - Alt +#define IGUI_GRID_GAUGEALT_XDef (safezoneX + (safezoneW / 2) - 11.75 * GUI_GRID_W) +#define IGUI_GRID_GAUGEALT_YDef (safezoneY + safezoneH - 11.7 * GUI_GRID_H) +#define IGUI_GRID_GAUGEALT_X (profilenamespace getvariable ['IGUI_GRID_GAUGEALT_X',IGUI_GRID_GAUGEALT_XDef]) +#define IGUI_GRID_GAUGEALT_Y (profilenamespace getvariable ['IGUI_GRID_GAUGEALT_Y',IGUI_GRID_GAUGEALT_YDef]) +#define IGUI_GRID_GAUGEALT_WAbs (7.5 * GUI_GRID_W) +#define IGUI_GRID_GAUGEALT_HAbs (7.5 * GUI_GRID_H) + +//--- Analogue gauge - Horizon +#define IGUI_GRID_GAUGEHORIZON_XDef (safezoneX + ((safezoneW - 7.5 * GUI_GRID_W) / 2)) +#define IGUI_GRID_GAUGEHORIZON_YDef (safezoneY + safezoneH - 11.7 * GUI_GRID_H) +#define IGUI_GRID_GAUGEHORIZON_X (profilenamespace getvariable ['IGUI_GRID_GAUGEHORIZON_X',IGUI_GRID_GAUGEHORIZON_XDef]) +#define IGUI_GRID_GAUGEHORIZON_Y (profilenamespace getvariable ['IGUI_GRID_GAUGEHORIZON_Y',IGUI_GRID_GAUGEHORIZON_YDef]) +#define IGUI_GRID_GAUGEHORIZON_WAbs (7.5 * GUI_GRID_W) +#define IGUI_GRID_GAUGEHORIZON_HAbs (7.5 * GUI_GRID_H) + +//--- Analogue gauge - Stability +#define IGUI_GRID_GAUGESTABILITY_XDef (safezoneX + (safezoneW / 2) + 4.25 * GUI_GRID_W) +#define IGUI_GRID_GAUGESTABILITY_YDef (safezoneY + safezoneH - 11.7 * GUI_GRID_H) +#define IGUI_GRID_GAUGESTABILITY_X (profilenamespace getvariable ['IGUI_GRID_GAUGESTABILITY_X',IGUI_GRID_GAUGESTABILITY_XDef]) +#define IGUI_GRID_GAUGESTABILITY_Y (profilenamespace getvariable ['IGUI_GRID_GAUGESTABILITY_Y',IGUI_GRID_GAUGESTABILITY_YDef]) +#define IGUI_GRID_GAUGESTABILITY_WAbs (7.5 * GUI_GRID_W) +#define IGUI_GRID_GAUGESTABILITY_HAbs (7.5 * GUI_GRID_H) + +//--- Analogue gauge - Compass +#define IGUI_GRID_GAUGECOMPASS_XDef (safezoneX + (safezoneW / 2) + 12.25 * GUI_GRID_W) +#define IGUI_GRID_GAUGECOMPASS_YDef (safezoneY + safezoneH - 11.7 * GUI_GRID_H) +#define IGUI_GRID_GAUGECOMPASS_X (profilenamespace getvariable ['IGUI_GRID_GAUGECOMPASS_X',IGUI_GRID_GAUGECOMPASS_XDef]) +#define IGUI_GRID_GAUGECOMPASS_Y (profilenamespace getvariable ['IGUI_GRID_GAUGECOMPASS_Y',IGUI_GRID_GAUGECOMPASS_YDef]) +#define IGUI_GRID_GAUGECOMPASS_WAbs (7.5 * GUI_GRID_W) +#define IGUI_GRID_GAUGECOMPASS_HAbs (7.5 * GUI_GRID_H) + +//--- Analogue gauge - Damage indicators +// #define IGUI_GRID_GAUGEDAMAGE_XDef (safezoneX + (safezoneW / 2) - 19 * GUI_GRID_W) +// #define IGUI_GRID_GAUGEDAMAGE_YDef (safezoneY + safezoneH - 7 * GUI_GRID_H) +// #define IGUI_GRID_GAUGEDAMAGE_X (profilenamespace getvariable ['IGUI_GRID_GAUGEDAMAGE_X',IGUI_GRID_GAUGEDAMAGE_XDef]) +// #define IGUI_GRID_GAUGEDAMAGE_Y (profilenamespace getvariable ['IGUI_GRID_GAUGEDAMAGE_Y',IGUI_GRID_GAUGEDAMAGE_YDef]) +// #define IGUI_GRID_GAUGEDAMAGE_WAbs (9.6 * GUI_GRID_W) +// #define IGUI_GRID_GAUGEDAMAGE_HAbs (2.4 * GUI_GRID_H) +//--- IGUI Analogue Gauges ----------------------------------------------------------------------------------------------------- + +//--- Sling Load Assistant +#define IGUI_GRID_SLINGLOADASSISTANT_XDef (safezoneX + safezoneW - 8 * GUI_GRID_W) +#define IGUI_GRID_SLINGLOADASSISTANT_YDef (safezoneY + safezoneH - 19.5 * GUI_GRID_H) +#define IGUI_GRID_SLINGLOADASSISTANT_WDef (7 * GUI_GRID_W) +#define IGUI_GRID_SLINGLOADASSISTANT_HDef (9.5 * GUI_GRID_H) +#define IGUI_GRID_SLINGLOADASSISTANT_X (profilenamespace getvariable ['IGUI_GRID_SLINGLOADASSISTANT_X',IGUI_GRID_SLINGLOADASSISTANT_XDef]) +#define IGUI_GRID_SLINGLOADASSISTANT_Y (profilenamespace getvariable ['IGUI_GRID_SLINGLOADASSISTANT_Y',IGUI_GRID_SLINGLOADASSISTANT_YDef]) +#define IGUI_GRID_SLINGLOADASSISTANT_WAbs (profilenamespace getvariable ['IGUI_GRID_SLINGLOADASSISTANT_W',IGUI_GRID_SLINGLOADASSISTANT_WDef]) +#define IGUI_GRID_SLINGLOADASSISTANT_HAbs (profilenamespace getvariable ['IGUI_GRID_SLINGLOADASSISTANT_H',IGUI_GRID_SLINGLOADASSISTANT_HDef]) + +//--- Squad Radar +// #define IGUI_GRID_SQUADRADAR_XDef (safezoneX + (safezoneW / 2) - 3 * GUI_GRID_W) +// #define IGUI_GRID_SQUADRADAR_YDef (safezoneY + safezoneH - 10.9 * GUI_GRID_H) +// #define IGUI_GRID_SQUADRADAR_X (profilenamespace getvariable ['IGUI_GRID_SQUADRADAR_X',IGUI_GRID_SQUADRADAR_XDef]) +// #define IGUI_GRID_SQUADRADAR_Y (profilenamespace getvariable ['IGUI_GRID_SQUADRADAR_Y',IGUI_GRID_SQUADRADAR_YDef]) +// #define IGUI_GRID_SQUADRADAR_WAbs (6 * GUI_GRID_W) +// #define IGUI_GRID_SQUADRADAR_HAbs (6 * GUI_GRID_H) + +// #define IGUI_GRID_SQUADRADAR_LIST1_XDef (IGUI_GRID_SQUADRADAR_XDef + IGUI_GRID_SQUADRADAR_WAbs) +// #define IGUI_GRID_SQUADRADAR_LIST1_YDef (IGUI_GRID_SQUADRADAR_YDef) +// #define IGUI_GRID_SQUADRADAR_LIST1_X (profilenamespace getvariable ['IGUI_GRID_SQUADRADAR_LIST1_X',IGUI_GRID_SQUADRADAR_LIST1_XDef]) +// #define IGUI_GRID_SQUADRADAR_LIST1_Y (profilenamespace getvariable ['IGUI_GRID_SQUADRADAR_LIST1_Y',IGUI_GRID_SQUADRADAR_LIST1_YDef]) +// #define IGUI_GRID_SQUADRADAR_LIST1_WAbs (6 * GUI_GRID_W) +// #define IGUI_GRID_SQUADRADAR_LIST1_HAbs (6 * GUI_GRID_H) + +// #define IGUI_GRID_SQUADRADAR_LIST2_XDef (IGUI_GRID_SQUADRADAR_LIST1_XDef + IGUI_GRID_SQUADRADAR_LIST1_WAbs) +// #define IGUI_GRID_SQUADRADAR_LIST2_YDef (IGUI_GRID_SQUADRADAR_LIST1_YDef) +// #define IGUI_GRID_SQUADRADAR_LIST2_X (profilenamespace getvariable ['IGUI_GRID_SQUADRADAR_LIST2_X',IGUI_GRID_SQUADRADAR_LIST2_XDef]) +// #define IGUI_GRID_SQUADRADAR_LIST2_Y (profilenamespace getvariable ['IGUI_GRID_SQUADRADAR_LIST2_Y',IGUI_GRID_SQUADRADAR_LIST2_YDef]) +// #define IGUI_GRID_SQUADRADAR_LIST2_WAbs (6 * GUI_GRID_W) +// #define IGUI_GRID_SQUADRADAR_LIST2_HAbs (6 * GUI_GRID_H) + +//--- IGUI Action / Command Menu +#define IGUI_GRID_OLD_MENU_WAbs (4.5 * IGUI_GRID_OLD_W) +#define IGUI_GRID_OLD_MENU_HAbs (10 * (IGUI_TEXT_SIZE_MEDIUM * 1.3)) +#define IGUI_GRID_OLD_MENU_XDef (1 * IGUI_GRID_OLD_W + safezoneX) +#define IGUI_GRID_OLD_MENU_YDef (5 * IGUI_GRID_OLD_H + safezoneY) +#define IGUI_GRID_OLD_MENU_X (profilenamespace getvariable ["IGUI_GRID_OLD_MENU_X",IGUI_GRID_OLD_MENU_XDef]) +#define IGUI_GRID_OLD_MENU_Y (profilenamespace getvariable ["IGUI_GRID_OLD_MENU_Y",IGUI_GRID_OLD_MENU_YDef]) +#define IGUI_GRID_OLD_MENU_W IGUI_GRID_OLD_W +#define IGUI_GRID_OLD_MENU_H IGUI_GRID_OLD_H + +//--- E3 +/* +#define IGUI_GRID_OLD_MENU_WAbs (4.5 * IGUI_GRID_OLD_W) +#define IGUI_GRID_OLD_MENU_HAbs (10 * (IGUI_TEXT_SIZE_MEDIUM * 1.3)) +#define IGUI_GRID_OLD_MENU_XDef (0.6) +#define IGUI_GRID_OLD_MENU_YDef (0.55) +#define IGUI_GRID_OLD_MENU_X (profilenamespace getvariable ["IGUI_GRID_OLD_MENU_X",IGUI_GRID_OLD_MENU_XDef]) +#define IGUI_GRID_OLD_MENU_Y (profilenamespace getvariable ["IGUI_GRID_OLD_MENU_Y",IGUI_GRID_OLD_MENU_YDef]) +#define IGUI_GRID_OLD_MENU_W IGUI_GRID_OLD_W +#define IGUI_GRID_OLD_MENU_H IGUI_GRID_OLD_H +*/ + +//--- IGUI Task +#define IGUI_GRID_OLD_TASK_WAbs (12 * IGUI_GRID_OLD_W) +#define IGUI_GRID_OLD_TASK_HAbs (2 * IGUI_GRID_OLD_H) +#define IGUI_GRID_OLD_TASK_XDef (10 * IGUI_GRID_OLD_W + IGUI_GRID_OLD_X) +#define IGUI_GRID_OLD_TASK_YDef (1 * IGUI_GRID_OLD_H + safezoneY) +#define IGUI_GRID_OLD_TASK_X IGUI_GRID_OLD_TASK_XDef +#define IGUI_GRID_OLD_TASK_Y IGUI_GRID_OLD_TASK_YDef +#define IGUI_GRID_OLD_TASK_W IGUI_GRID_OLD_W +#define IGUI_GRID_OLD_TASK_H IGUI_GRID_OLD_H + +//--- IGUI PIP +#define IGUI_GRID_OLD_PIP_XDef (safezoneX + safezoneW - 6.8 * IGUI_GRID_OLD_W) +#define IGUI_GRID_OLD_PIP_YDef (7 * IGUI_GRID_OLD_H + IGUI_GRID_OLD_Y) +#define IGUI_GRID_OLD_PIP_WDef (6 * IGUI_GRID_OLD_W) +#define IGUI_GRID_OLD_PIP_HDef (IGUI_GRID_OLD_PIP_WDef) +//#define IGUI_GRID_OLD_PIP_X (profilenamespace getvariable ['IGUI_GRID_OLD_PIP_X',IGUI_GRID_OLD_PIP_XDef]) +//#define IGUI_GRID_OLD_PIP_Y (profilenamespace getvariable ['IGUI_GRID_OLD_PIP_Y',IGUI_GRID_OLD_PIP_YDef]) +//#define IGUI_GRID_OLD_PIP_WAbs (profilenamespace getvariable ['IGUI_GRID_OLD_PIP_W',IGUI_GRID_OLD_PIP_WDef]) +#define IGUI_GRID_OLD_PIP_X IGUI_GRID_OLD_PIP_XDef +#define IGUI_GRID_OLD_PIP_Y IGUI_GRID_OLD_PIP_YDef +#define IGUI_GRID_OLD_PIP_WAbs IGUI_GRID_OLD_PIP_WDef +#define IGUI_GRID_OLD_PIP_HAbs (IGUI_GRID_OLD_PIP_WAbs) + + +//--- MUF - experimental optics grid +// #define GUI_GRID_OLD_OPTICS_X (SafezoneX + ((SafezoneW - SafezoneH) / 2)) +// #define GUI_GRID_OLD_OPTICS_Y (SafezoneY) +// #define GUI_GRID_OLD_OPTICS_W (0.01875) +// #define GUI_GRID_OLD_OPTICS_H (0.025) +// #define GUI_GRID_OLD_OPTICS_WAbs ((SafezoneX + ((SafezoneW - SafezoneH) / 2)) / 0.01875) +// #define GUI_GRID_OLD_OPTICS_HAbs (SafezoneH / 0.01875) + +#define GUI_GRID_OLD_OPTICS_X (SafezoneX + ((SafezoneW - SafezoneH) / 2)) +#define GUI_GRID_OLD_OPTICS_Y (SafezoneY) +#define GUI_GRID_OLD_OPTICS_W (0.01875 * SafezoneH) +#define GUI_GRID_OLD_OPTICS_H (0.025 * SafezoneH) +#define GUI_GRID_OLD_OPTICS_WAbs (SafezoneH) +#define GUI_GRID_OLD_OPTICS_HAbs (SafezoneH) + +//--- MUF - experimental AV Terminal grid +#define GUI_GRID_OLD_AV_TERMINAL_X (safezoneX) +#define GUI_GRID_OLD_AV_TERMINAL_Y (safezoneY) +#define GUI_GRID_OLD_AV_TERMINAL_W (safezoneW / 64) +#define GUI_GRID_OLD_AV_TERMINAL_H (safezoneH / 40) +#define GUI_GRID_OLD_AV_TERMINAL_WAbs (safezoneW) +#define GUI_GRID_OLD_AV_TERMINAL_HAbs (safezoneH) \ No newline at end of file diff --git a/tools/cba/addons/main/script_macros_common.hpp b/include/x/cba/addons/main/script_macros_common.hpp similarity index 94% rename from tools/cba/addons/main/script_macros_common.hpp rename to include/x/cba/addons/main/script_macros_common.hpp index a847909490..77feb5171e 100644 --- a/tools/cba/addons/main/script_macros_common.hpp +++ b/include/x/cba/addons/main/script_macros_common.hpp @@ -354,6 +354,27 @@ Author: ------------------------------------------- */ #define MESSAGE_WITH_TITLE(TITLE,MESSAGE) LOG_SYS_FILELINENUMBERS(TITLE,MESSAGE) +/* ------------------------------------------- +Macro: RETDEF() + If a variable is undefined, return the default value. Otherwise, return the + variable itself. + +Parameters: + VARIABLE - the variable to check + DEFAULT_VALUE - the default value to use if variable is undefined + +Example: + (begin example) + // _var is undefined + hintSilent format ["_var=%1", RETDEF(_var,5)]; // "_var=5" + _var = 7; + hintSilent format ["_var=%1", RETDEF(_var,5)]; // "_var=7" + (end example) +Author: + 654wak654 +------------------------------------------- */ +#define RETDEF(VARIABLE,DEFAULT_VALUE) (if (isNil {VARIABLE}) then [{DEFAULT_VALUE}, {VARIABLE}]) + /* ------------------------------------------- Macro: RETNIL() If a variable is undefined, return the value nil. Otherwise, return the @@ -365,13 +386,13 @@ Parameters: Example: (begin example) // _var is undefined - hintSilent format ["_var=%1", RETNIL(_var) ]; // "_var=any" + hintSilent format ["_var=%1", RETNIL(_var)]; // "_var=any" (end example) Author: Alef (see CBA issue #8514) ------------------------------------------- */ -#define RETNIL(VARIABLE) if (isNil{VARIABLE}) then {nil} else {VARIABLE} +#define RETNIL(VARIABLE) RETDEF(VARIABLE,nil) /* ------------------------------------------- Macros: TRACE_n() @@ -457,8 +478,8 @@ Group: General // ************************************* // Internal Functions -#define DOUBLES(var1,var2) ##var1##_##var2 -#define TRIPLES(var1,var2,var3) ##var1##_##var2##_##var3 +#define DOUBLES(var1,var2) var1##_##var2 +#define TRIPLES(var1,var2,var3) var1##_##var2##_##var3 #define QUOTE(var1) #var1 #ifdef MODULAR @@ -712,29 +733,29 @@ Examples: Author: Sickboy ------------------------------------------- */ -#define ISNILS(VARIABLE,DEFAULT_VALUE) if (isNil #VARIABLE) then { ##VARIABLE = ##DEFAULT_VALUE } +#define ISNILS(VARIABLE,DEFAULT_VALUE) if (isNil #VARIABLE) then { VARIABLE = DEFAULT_VALUE } #define ISNILS2(var1,var2,var3,var4) ISNILS(TRIPLES(var1,var2,var3),var4) #define ISNILS3(var1,var2,var3) ISNILS(DOUBLES(var1,var2),var3) #define ISNIL(var1,var2) ISNILS2(PREFIX,COMPONENT,var1,var2) #define ISNILMAIN(var1,var2) ISNILS3(PREFIX,var1,var2) -#define CREATELOGICS(var1,var2) ##var1##_##var2## = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["LOGIC", [0, 0, 0], [], 0, "NONE"] -#define CREATELOGICLOCALS(var1,var2) ##var1##_##var2## = "LOGIC" createVehicleLocal [0, 0, 0] -#define CREATELOGICGLOBALS(var1,var2) ##var1##_##var2## = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["LOGIC", [0, 0, 0], [], 0, "NONE"]; publicVariable QUOTE(DOUBLES(var1,var2)) -#define CREATELOGICGLOBALTESTS(var1,var2) ##var1##_##var2## = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit [QUOTE(DOUBLES(ADDON,logic)), [0, 0, 0], [], 0, "NONE"] +#define CREATELOGICS(var1,var2) var1##_##var2 = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["LOGIC", [0, 0, 0], [], 0, "NONE"] +#define CREATELOGICLOCALS(var1,var2) var1##_##var2 = "LOGIC" createVehicleLocal [0, 0, 0] +#define CREATELOGICGLOBALS(var1,var2) var1##_##var2 = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["LOGIC", [0, 0, 0], [], 0, "NONE"]; publicVariable QUOTE(DOUBLES(var1,var2)) +#define CREATELOGICGLOBALTESTS(var1,var2) var1##_##var2 = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit [QUOTE(DOUBLES(ADDON,logic)), [0, 0, 0], [], 0, "NONE"] -#define GETVARS(var1,var2,var3) (##var1##_##var2 getVariable #var3) +#define GETVARS(var1,var2,var3) (var1##_##var2 getVariable #var3) #define GETVARMAINS(var1,var2) GETVARS(var1,MAINLOGIC,var2) #ifndef PATHTO_SYS - #define PATHTO_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\##var2\##var3.sqf + #define PATHTO_SYS(var1,var2,var3) \MAINPREFIX\var1\SUBPREFIX\var2\var3.sqf #endif #ifndef PATHTOF_SYS - #define PATHTOF_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\##var2\##var3 + #define PATHTOF_SYS(var1,var2,var3) \MAINPREFIX\var1\SUBPREFIX\var2\var3 #endif #ifndef PATHTOF2_SYS - #define PATHTOF2_SYS(var1,var2,var3) MAINPREFIX\##var1\SUBPREFIX\##var2\##var3 + #define PATHTOF2_SYS(var1,var2,var3) MAINPREFIX\var1\SUBPREFIX\var2\var3 #endif #define PATHTO_R(var1) PATHTOF2_SYS(PREFIX,COMPONENT_C,var1) @@ -760,9 +781,9 @@ Author: #define COMPILE_FILE_SYS(var1,var2,var3) COMPILE_FILE2_SYS('PATHTO_SYS(var1,var2,var3)') #define COMPILE_FILE_CFG_SYS(var1,var2,var3) COMPILE_FILE2_CFG_SYS('PATHTO_SYS(var1,var2,var3)') -#define SETVARS(var1,var2) ##var1##_##var2 setVariable +#define SETVARS(var1,var2) var1##_##var2 setVariable #define SETVARMAINS(var1) SETVARS(var1,MAINLOGIC) -#define GVARMAINS(var1,var2) ##var1##_##var2## +#define GVARMAINS(var1,var2) var1##_##var2 #define CFGSETTINGSS(var1,var2) configFile >> "CfgSettings" >> #var1 >> #var2 //#define SETGVARS(var1,var2,var3) ##var1##_##var2##_##var3 = //#define SETGVARMAINS(var1,var2) ##var1##_##var2 = @@ -773,9 +794,9 @@ Author: // #define PREP_SYS2(var1,var2,var3,var4) ##var1##_##var2##_fnc_##var4 = { ##var1##_##var2##_fnc_##var4 = COMPILE_FILE_SYS(var1,var3,DOUBLES(fnc,var4)); if (isNil "_this") then { call ##var1##_##var2##_fnc_##var4 } else { _this call ##var1##_##var2##_fnc_##var4 } } // Compile-Once, at Macro. As opposed to Compile-Once, on first use. -#define PREPMAIN_SYS(var1,var2,var3) ##var1##_fnc_##var3 = COMPILE_FILE_SYS(var1,var2,DOUBLES(fnc,var3)) -#define PREP_SYS(var1,var2,var3) ##var1##_##var2##_fnc_##var3 = COMPILE_FILE_SYS(var1,var2,DOUBLES(fnc,var3)) -#define PREP_SYS2(var1,var2,var3,var4) ##var1##_##var2##_fnc_##var4 = COMPILE_FILE_SYS(var1,var3,DOUBLES(fnc,var4)) +#define PREPMAIN_SYS(var1,var2,var3) var1##_fnc_##var3 = COMPILE_FILE_SYS(var1,var2,DOUBLES(fnc,var3)) +#define PREP_SYS(var1,var2,var3) var1##_##var2##_fnc_##var3 = COMPILE_FILE_SYS(var1,var2,DOUBLES(fnc,var3)) +#define PREP_SYS2(var1,var2,var3,var4) var1##_##var2##_fnc_##var4 = COMPILE_FILE_SYS(var1,var3,DOUBLES(fnc,var4)) #define LSTR(var1) TRIPLES(ADDON,STR,var1) @@ -867,7 +888,7 @@ Author: #define GETVAR(var1) GETVARS(PREFIX,COMPONENT,var1) #define SETVAR SETVARS(PREFIX,COMPONENT) #define SETVARMAIN SETVARMAINS(PREFIX) -#define IFCOUNT(var1,var2,var3) if (count ##var1 > ##var2) then { ##var3 = ##var1 select ##var2 }; +#define IFCOUNT(var1,var2,var3) if (count var1 > var2) then { var3 = var1 select var2 }; //#define PREP(var1) PREP_SYS(PREFIX,COMPONENT_F,var1) @@ -1039,7 +1060,7 @@ Parameters: Author: Spooner ------------------------------------------- */ -#define IS_META_SYS(VAR,TYPE) (if (isNil {VAR}) then { false } else { (VAR) isEqualType TYPE }) +#define IS_META_SYS(VAR,TYPE) (if (isNil {VAR}) then {false} else {(VAR) isEqualType TYPE}) #define IS_ARRAY(VAR) IS_META_SYS(VAR,[]) #define IS_BOOL(VAR) IS_META_SYS(VAR,false) #define IS_CODE(VAR) IS_META_SYS(VAR,{}) @@ -1057,10 +1078,10 @@ Author: #define IS_BOOLEAN(VAR) IS_BOOL(VAR) #define IS_FUNCTION(VAR) IS_CODE(VAR) -#define IS_INTEGER(VAR) if ( IS_SCALAR(VAR) ) then { (floor(VAR) == (VAR)) } else { false } +#define IS_INTEGER(VAR) (if (IS_SCALAR(VAR)) then {floor (VAR) == (VAR)} else {false}) #define IS_NUMBER(VAR) IS_SCALAR(VAR) -#define FLOAT_TO_STRING(num) (str parseNumber (str (_this%_this) + str floor abs _this) + "." + (str (abs _this-floor abs _this) select [2]) + "0") +#define FLOAT_TO_STRING(num) (if (_this == 0) then {"0"} else {str parseNumber (str (_this % _this) + str floor abs _this) + "." + (str (abs _this - floor abs _this) select [2]) + "0"}) /* ------------------------------------------- Macro: SCRIPT() @@ -1173,6 +1194,9 @@ Author: #define ELSTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2)) #define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1)) #define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2)) + + #define LLSTRING(var1) localize QUOTE(TRIPLES(STR,ADDON,var1)) + #define LELSTRING(var1,var2) localize QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2)) #endif @@ -1704,3 +1728,36 @@ Author: commy2 ------------------------------------------- */ #define IS_ADMIN_LOGGED serverCommandAvailable "#shutdown" + +/* ------------------------------------------- +Macro: FILE_EXISTS + Check if a file exists on machines with interface + + Reports "false" if the file does not exist and throws an error in RPT. + +Parameters: + FILE - Path to the file + +Example: + (begin example) + // print "true" if file exists + systemChat str FILE_EXISTS("\A3\ui_f\data\igui\cfg\cursors\weapon_ca.paa"); + (end) + +Author: + commy2 +------------------------------------------- */ +#define FILE_EXISTS(FILE) (call {\ + private _return = false;\ + isNil {\ + private _control = (uiNamespace getVariable ["RscDisplayMain", displayNull]) ctrlCreate ["RscHTML", -1];\ + if (isNull _control) then {\ + _return = loadFile (FILE) != "";\ + } else {\ + _control htmlLoad (FILE);\ + _return = ctrlHTMLLoaded _control;\ + ctrlDelete _control;\ + };\ + };\ + _return\ +}) diff --git a/include/x/cba/addons/xeh/script_xeh.hpp b/include/x/cba/addons/xeh/script_xeh.hpp new file mode 100644 index 0000000000..6fe7465203 --- /dev/null +++ b/include/x/cba/addons/xeh/script_xeh.hpp @@ -0,0 +1,110 @@ +/* + Header: script_xeh.hpp + + Description: + Used internally. +*/ +///////////////////////////////////////////////////////////////////////////////// +// MACRO: EXTENDED_EVENTHANDLERS +// Add all XEH event handlers +///////////////////////////////////////////////////////////////////////////////// + +#define EXTENDED_EVENTHANDLERS init = "call cba_xeh_fnc_init"; \ +fired = "call cba_xeh_fnc_fired"; \ +animChanged = "call cba_xeh_fnc_animChanged"; \ +animDone = "call cba_xeh_fnc_animDone"; \ +animStateChanged = "call cba_xeh_fnc_animStateChanged"; \ +containerClosed = "call cba_xeh_fnc_containerClosed"; \ +containerOpened = "call cba_xeh_fnc_containerOpened"; \ +controlsShifted = "call cba_xeh_fnc_controlsShifted"; \ +dammaged = "call cba_xeh_fnc_dammaged"; \ +engine = "call cba_xeh_fnc_engine"; \ +epeContact = "call cba_xeh_fnc_epeContact"; \ +epeContactEnd = "call cba_xeh_fnc_epeContactEnd"; \ +epeContactStart = "call cba_xeh_fnc_epeContactStart"; \ +explosion = "call cba_xeh_fnc_explosion"; \ +firedNear = "call cba_xeh_fnc_firedNear"; \ +fuel = "call cba_xeh_fnc_cba_xeh_fuel"; \ +gear = "call cba_xeh_fnc_gear"; \ +getIn = "call cba_xeh_fnc_getIn"; \ +getInMan = "call cba_xeh_fnc_getInMan"; \ +getOut = "call cba_xeh_fnc_getOut"; \ +getOutMan = "call cba_xeh_fnc_getOutMan"; \ +handleHeal = "call cba_xeh_fnc_handleHeal"; \ +hit = "call cba_xeh_fnc_hit"; \ +hitPart = "call cba_xeh_fnc_hitPart"; \ +incomingMissile = "call cba_xeh_fnc_incomingMissile"; \ +inventoryClosed = "call cba_xeh_fnc_inventoryClosed"; \ +inventoryOpened = "call cba_xeh_fnc_inventoryOpened"; \ +killed = "call cba_xeh_fnc_killed"; \ +landedTouchDown = "call cba_xeh_fnc_landedTouchDown"; \ +landedStopped = "call cba_xeh_fnc_landedStopped"; \ +local = "call cba_xeh_fnc_local"; \ +respawn = "call cba_xeh_fnc_respawn"; \ +put = "call cba_xeh_fnc_put"; \ +take = "call cba_xeh_fnc_take"; \ +seatSwitched = "call cba_xeh_fnc_seatSwitched"; \ +seatSwitchedMan = "call cba_xeh_fnc_seatSwitchedMan"; \ +soundPlayed = "call cba_xeh_fnc_soundPlayed"; \ +weaponAssembled = "call cba_xeh_fnc_weaponAssembled"; \ +weaponDisassembled = "call cba_xeh_fnc_weaponDisassembled"; \ +weaponDeployed = "call cba_xeh_fnc_weaponDeployed"; \ +weaponRested = "call cba_xeh_fnc_weaponRested"; \ +reloaded = "call cba_xeh_fnc_reloaded"; \ +firedMan = "call cba_xeh_fnc_firedMan"; \ +turnIn = "call cba_xeh_fnc_turnIn"; \ +turnOut = "call cba_xeh_fnc_turnOut"; \ +deleted = "call cba_xeh_fnc_deleted"; + +/* + MACRO: DELETE_EVENTHANDLERS + + Removes all event handlers. +*/ + +#define DELETE_EVENTHANDLERS init = ""; \ +fired = ""; \ +animChanged = ""; \ +animDone = ""; \ +animStateChanged = ""; \ +containerClosed = ""; \ +containerOpened = ""; \ +controlsShifted = ""; \ +dammaged = ""; \ +engine = ""; \ +epeContact = ""; \ +epeContactEnd = ""; \ +epeContactStart = ""; \ +explosion = ""; \ +firedNear = ""; \ +fuel = ""; \ +gear = ""; \ +getIn = ""; \ +getInMan = ""; \ +getOut = ""; \ +getOutMan = ""; \ +handleHeal = ""; \ +hit = ""; \ +hitPart = ""; \ +incomingMissile = ""; \ +inventoryClosed = ""; \ +inventoryOpened = ""; \ +killed = ""; \ +landedTouchDown = ""; \ +landedStopped = ""; \ +local = ""; \ +respawn = ""; \ +put = ""; \ +take = ""; \ +seatSwitched = ""; \ +seatSwitchedMan = ""; \ +soundPlayed = ""; \ +weaponAssembled = ""; \ +weaponDisassembled = ""; \ +weaponDeployed = ""; \ +weaponRested = ""; \ +reloaded = ""; \ +firedMan = ""; \ +turnIn = ""; \ +turnOut = ""; \ +deleted = ""; diff --git a/optionals/particles/script_component.hpp b/optionals/particles/script_component.hpp index 82729c42da..53a4988a8d 100644 --- a/optionals/particles/script_component.hpp +++ b/optionals/particles/script_component.hpp @@ -43,14 +43,13 @@ interval = 1; \ }; \ } -#define MERGE(var1,var2) ##var1####var2 -#define EFFECT_AFTER_WATER(color) class ACE_SmokeAfterWater##color##: ACE_SmokeAfterWaterWhite { \ +#define EFFECT_AFTER_WATER(color) class ACE_SmokeAfterWater##color: ACE_SmokeAfterWaterWhite { \ class SmokeAfterWater: SmokeAfterWater { \ - type = QUOTE(MERGE(ACE_SmokeAfterWater,color)); \ + type = QUOTE(ACE_SmokeAfterWater##color); \ }; \ } #define CLOUDLET_UNDERWATER(color) class SmokeShell##color##UW; \ class SmokeShell##color##2UW: SmokeShell##color##UW { \ - postEffects = QUOTE(MERGE(ACE_SmokeAfterWater,color)); \ + postEffects = QUOTE(ACE_SmokeAfterWater##color); \ } diff --git a/tools/cba/addons/xeh/script_xeh.hpp b/tools/cba/addons/xeh/script_xeh.hpp deleted file mode 100644 index ef62f1df53..0000000000 --- a/tools/cba/addons/xeh/script_xeh.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - Header: script_xeh.hpp - - Description: - Used internally. -*/ -///////////////////////////////////////////////////////////////////////////////// -// MACRO: EXTENDED_EVENTHANDLERS -// Add all XEH event handlers -///////////////////////////////////////////////////////////////////////////////// - -#define EXTENDED_EVENTHANDLERS init = "(_this select 0) call CBA_fnc_initEvents; (_this select 0) call CBA_fnc_init"; \ -fired = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_fired"")"; \ -animChanged = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_animChanged"")"; \ -animDone = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_animDone"")"; \ -animStateChanged = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_animStateChanged"")"; \ -containerClosed = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_containerClosed"")"; \ -containerOpened = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_containerOpened"")"; \ -controlsShifted = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_controlsShifted"")"; \ -dammaged = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_dammaged"")"; \ -engine = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_engine"")"; \ -epeContact = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_epeContact"")"; \ -epeContactEnd = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_epeContactEnd"")"; \ -epeContactStart = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_epeContactStart"")"; \ -explosion = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_explosion"")"; \ -firedNear = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_firedNear"")"; \ -fuel = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_cba_xeh_fuel"")"; \ -gear = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_gear"")"; \ -getIn = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_getIn"")"; \ -getInMan = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_getInMan"")"; \ -getOut = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_getOut"")"; \ -getOutMan = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_getOutMan"")"; \ -handleHeal = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_handleHeal"")"; \ -hit = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_hit"")"; \ -hitPart = "{_this call _x} forEach ((_this select 0 select 0) getVariable ""cba_xeh_hitPart"")"; \ -incomingMissile = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_incomingMissile"")"; \ -inventoryClosed = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_inventoryClosed"")"; \ -inventoryOpened = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_inventoryOpened"")"; \ -killed = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_killed"")"; \ -landedTouchDown = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_landedTouchDown"")"; \ -landedStopped = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_landedStopped"")"; \ -local = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_local"")"; \ -respawn = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_respawn"")"; \ -put = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_put"")"; \ -take = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_take"")"; \ -seatSwitched = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_seatSwitched"")"; \ -seatSwitchedMan = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_seatSwitchedMan"")"; \ -soundPlayed = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_soundPlayed"")"; \ -weaponAssembled = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_weaponAssembled"")"; \ -weaponDisassembled = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_weaponDisassembled"")"; \ -weaponDeployed = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_weaponDeployed"")"; \ -weaponRested = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_weaponRested"")"; \ -reloaded = "{_this call _x} forEach ((_this select 0) getVariable ""cba_xeh_reloaded"")"; - - -/* - MACRO: DELETE_EVENTHANDLERS - - Removes all event handlers. -*/ - -#define DELETE_EVENTHANDLERS init = ""; \ -fired = ""; \ -animChanged = ""; \ -animDone = ""; \ -animStateChanged = ""; \ -containerClosed = ""; \ -containerOpened = ""; \ -controlsShifted = ""; \ -dammaged = ""; \ -engine = ""; \ -epeContact = ""; \ -epeContactEnd = ""; \ -epeContactStart = ""; \ -explosion = ""; \ -firedNear = ""; \ -fuel = ""; \ -gear = ""; \ -getIn = ""; \ -getInMan = ""; \ -getOut = ""; \ -getOutMan = ""; \ -handleHeal = ""; \ -hit = ""; \ -hitPart = ""; \ -incomingMissile = ""; \ -inventoryClosed = ""; \ -inventoryOpened = ""; \ -killed = ""; \ -landedTouchDown = ""; \ -landedStopped = ""; \ -local = ""; \ -respawn = ""; \ -put = ""; \ -take = ""; \ -seatSwitched = ""; \ -soundPlayed = ""; \ -weaponAssembled = ""; \ -weaponDisassembled = ""; \ -weaponDeployed = ""; \ -weaponRested = ""; \ -reloaded = ""; diff --git a/tools/make.ps1 b/tools/make.ps1 new file mode 100644 index 0000000000..2aac0f2c9f --- /dev/null +++ b/tools/make.ps1 @@ -0,0 +1,130 @@ +$projectRoot = Split-Path -Parent $PSScriptRoot +$releasePage = "https://github.com/KoffeinFlummi/armake/releases" +$downloadPage = "https://github.com/KoffeinFlummi/armake/releases/download/v{0}/armake_v{0}.zip" +$armake = "$projectRoot\tools\armake.exe" +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + + +function Compare-VersionNewerThan { + param( + [Parameter(Mandatory=$True)] + $version1, + + [Parameter(Mandatory=$True)] + $version2 + ) + + $version1 = $version1.Split(".") | % {[int] $_} + $version2 = $version2.Split(".") | % {[int] $_} + + $newer = $False + for ($i = 0; $i -lt $version1.Length; $i++) { + if ($version1[$i] -gt $version2[$i]) { + $newer = $True + break + } + } + + $newer +} + + +function Get-InstalledArmakeVersion { + if (Test-Path $armake) { + $version = & $armake --version + $version = $version.Substring(1) + } else { + $version = "0.0.0" + } + + $version +} + + +function Get-LatestArmakeVersion { + $client = New-Object Net.WebClient + $content = $client.DownloadString($releasePage) + $client.dispose() + + $match = $content -match "" + if (!$match) { + Write-Error "Failed to find valid armake download link." + $version = "0.0.0" + } else { + $version = $matches[1] + } + + $version +} + + +function Update-Armake { + param( + [Parameter(Mandatory=$True)] + $url + ) + + New-Item "$PSScriptRoot\temp" -ItemType "directory" -Force | Out-Null + + Write-Output "Downloading armake..." + $client = New-Object Net.WebClient + $client.DownloadFile($url, "$PSScriptRoot\temp\armake.zip") + $client.dispose() + + Write-Output "Download complete, unpacking..." + Expand-Archive "$PSScriptRoot\temp\armake.zip" "$PSScriptRoot\temp\armake" + Remove-Item "$PSScriptRoot\temp\armake.zip" + + if ([Environment]::Is64BitProcess) { + $binary = Get-ChildItem -Path "$PSScriptRoot\temp\armake" -Include "*.exe" -Recurse | Where-Object {$_.Name -match ".*w64.exe"} + } else { + $binary = Get-ChildItem -Path "$PSScriptRoot\temp\armake" -Include "*.exe" -Recurse | Where-Object {$_.Name -match ".*w64.exe"} + } + Move-Item $binary.FullName $armake -Force + + Remove-Item "$PSScriptRoot\temp" -Recurse -Force +} + + +function Build-Directory { + param( + [Parameter(Mandatory=$True)] + $directory + ) + + $component = $directory.Name + $fullPath = $directory.FullName + $parent = $directory.Parent + $binPath = "$projectRoot\@ace\$parent\ace_$component.pbo" + + Write-Output " PBO $component" + & $armake build -i "$projectRoot\include" -w unquoted-string -w redefinition-wo-undef -f $fullPath $binPath + + if ($LastExitCode -ne 0) { + Write-Error "Failed to build $component." + } +} + + +function Main { + $installed = Get-InstalledArmakeVersion + $latest = Get-LatestArmakeVersion + + if (Compare-VersionNewerThan $latest $installed) { + Write-Output "Found newer version of armake:" " Installed: $installed" " Latest: $latest" + Update-Armake ($downloadPage -f $latest) + Write-Output "Update complete, armake up-to-date." + } + + $orgLocation = Get-Location + Set-Location -Path $projectRoot + foreach ($folder in "addons", "optionals") { + New-Item "$projectRoot\@ace\$folder" -ItemType "directory" -Force | Out-Null + foreach ($component in Get-ChildItem -Directory "$PSScriptRoot\..\$folder") { + Build-Directory $component + } + } + Set-Location $orgLocation +} + +Main diff --git a/tools/setup.py b/tools/setup.py index af1b224cbb..2991985e7b 100644 --- a/tools/setup.py +++ b/tools/setup.py @@ -96,10 +96,10 @@ def main(): return -1 try: - shutil.copytree(os.path.join(projectpath, "tools", "cba"), CBA) + shutil.copytree(os.path.join(projectpath, "include", "x", "cba"), CBA) except: raise - print("Something went wrong while copying CBA includes. Please copy tools\\cba to {} manually.".format(CBA)) + print("Something went wrong while copying CBA includes. Please copy include\\x\\cba to {} manually.".format(CBA)) return 7 print("# CBA includes copied successfully to {}.".format(CBA))