From 79ca6f5141a48c1914c5b61261686b321368e0a6 Mon Sep 17 00:00:00 2001 From: Filip Maciejewski Date: Sat, 13 Jun 2020 22:53:50 +0200 Subject: [PATCH] Medical - Add Patient Info to Layout Editor (#7745) * Move GVAR(RscPatientInfo) contents into ControlsGroup * Add CfgUIGrids for Medical PatientInfo * Move Medical PatientInfo to Layout Editor position * Uniform macro names * Apply suggestions from code review * Add IGUI category translation * Update addons/medical_gui/stringtable.xml Co-authored-by: Blutze <37950828+Blutze@users.noreply.github.com> * Update addons/medical_gui/CfgUIGrids.hpp Co-authored-by: PabstMirror * Remove redundant translations Co-authored-by: Blutze <37950828+Blutze@users.noreply.github.com> Co-authored-by: PabstMirror --- addons/medical_gui/CfgUIGrids.hpp | 30 +++ addons/medical_gui/config.cpp | 1 + addons/medical_gui/gui.hpp | 211 +++++++++--------- addons/medical_gui/script_component.hpp | 7 + addons/medical_gui/stringtable.xml | 4 + .../ui/patient_info_preview_ca.paa | Bin 0 -> 48059 bytes 6 files changed, 152 insertions(+), 101 deletions(-) create mode 100644 addons/medical_gui/CfgUIGrids.hpp create mode 100644 addons/medical_gui/ui/patient_info_preview_ca.paa diff --git a/addons/medical_gui/CfgUIGrids.hpp b/addons/medical_gui/CfgUIGrids.hpp new file mode 100644 index 0000000000..b0835fe709 --- /dev/null +++ b/addons/medical_gui/CfgUIGrids.hpp @@ -0,0 +1,30 @@ +class CfgUIGrids { + class IGUI { + class Presets { + class Arma3 { + class Variables { + GVAR(patientInfo)[] = { + { + PATIENT_INFO_IGUI_BASE_X, + PATIENT_INFO_IGUI_BASE_Y, + POS_W(9), + POS_H(20) + }, + GUI_GRID_W, + GUI_GRID_H + }; + }; + }; + }; + + class Variables { + class GVAR(patientInfo) { + displayName = ECSTRING(medical,Category); + description = CSTRING(IGUI_PatientInfo); + preview = QPATHTOF(ui\patient_info_preview_ca.paa); + saveToProfile[] = {0, 1}; + canResize = 0; + }; + }; + }; +}; diff --git a/addons/medical_gui/config.cpp b/addons/medical_gui/config.cpp index 10efc9d90f..b09143a6c9 100644 --- a/addons/medical_gui/config.cpp +++ b/addons/medical_gui/config.cpp @@ -14,6 +14,7 @@ class CfgPatches { }; }; +#include "CfgUIGrids.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "gui.hpp" diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index 06db05ad38..6aa6c7d354 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -533,116 +533,125 @@ class RscTitles { movingEnable = 0; onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(RscPatientInfo), _this select 0)]); class controls { - class BodyImage: GVAR(BodyImage) { - x = safeZoneX + POS_W(2.25); - y = safeZoneY + POS_H(1.5); - w = POS_W(8.5); - h = POS_H(8.5); - class controls: controls { - class Background: Background { + class PatientInfoContainer: RscControlsGroupNoScrollbars { + idc = -1; + x = safeZoneX + PATIENT_INFO_IGUI_OFFSET_X; + y = safeZoneY + PATIENT_INFO_IGUI_OFFSET_Y; + w = safeZoneW; + h = safeZoneH; + class controls { + class BodyImage: GVAR(BodyImage) { + x = POS_W(2.25); + y = POS_H(1.5); w = POS_W(8.5); h = POS_H(8.5); + class controls: controls { + class Background: Background { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class Head: Head { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class Torso: Torso { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class ArmLeft: ArmLeft { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class ArmRight: ArmRight { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class LegLeft: LegLeft { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class LegRight: LegRight { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class ArmLeftB: ArmLeftB { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class ArmRightB: ArmRightB { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class LegLeftB: LegLeftB { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class LegRightB: LegRightB { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class ArmLeftT: ArmLeftT { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class ArmRightT: ArmRightT { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class LegLeftT: LegLeftT { + w = POS_W(8.5); + h = POS_H(8.5); + }; + class LegRightT: LegRightT { + w = POS_W(8.5); + h = POS_H(8.5); + }; + }; }; - class Head: Head { - w = POS_W(8.5); - h = POS_H(8.5); + class InjuriesLabel: RscText { + idc = -1; + text = CSTRING(INJURIES); + x = POS_W(2); + y = POS_H(10.2); + w = POS_W(9); + h = POS_H(0.7); + sizeEx = POS_H(0.7); + colorBackground[] = GUI_BCG_COLOR; }; - class Torso: Torso { - w = POS_W(8.5); - h = POS_H(8.5); + class Injuries: RscListBox { + idc = IDC_INJURIES; + x = POS_W(2); + y = POS_H(11); + w = POS_W(9); + h = POS_H(9); + sizeEx = POS_H(0.7); + colorSelect[] = {1, 1, 1, 1}; + colorSelect2[] = {1, 1, 1, 1}; + colorBackground[] = {0, 0, 0, 0.2}; + colorSelectBackground[] = {0, 0, 0, 0}; + colorSelectBackground2[] = {0, 0, 0, 0}; + colorScrollbar[] = {0.9, 0.9, 0.9, 1}; }; - class ArmLeft: ArmLeft { - w = POS_W(8.5); - h = POS_H(8.5); + class TriageStatus: RscText { + idc = IDC_TRIAGE_STATUS; + x = POS_W(2); + y = POS_H(20.2); + w = POS_W(9); + h = POS_H(0.7); + sizeEx = POS_H(0.7); + shadow = 0; }; - class ArmRight: ArmRight { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class LegLeft: LegLeft { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class LegRight: LegRight { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class ArmLeftB: ArmLeftB { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class ArmRightB: ArmRightB { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class LegLeftB: LegLeftB { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class LegRightB: LegRightB { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class ArmLeftT: ArmLeftT { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class ArmRightT: ArmRightT { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class LegLeftT: LegLeftT { - w = POS_W(8.5); - h = POS_H(8.5); - }; - class LegRightT: LegRightT { - w = POS_W(8.5); - h = POS_H(8.5); + class Activity: Injuries { + idc = IDC_ACTIVITY; + x = POS_W(1.75); + y = POS_H(21); + w = POS_W(15); + h = POS_H(7); + shadow = 2; + colorBackground[] = {0, 0, 0, 0}; }; }; }; - class InjuriesLabel: RscText { - idc = -1; - text = CSTRING(INJURIES); - x = safeZoneX + POS_W(2); - y = safeZoneY + POS_H(10.2); - w = POS_W(9); - h = POS_H(0.7); - sizeEx = POS_H(0.7); - colorBackground[] = GUI_BCG_COLOR; - }; - class Injuries: RscListBox { - idc = IDC_INJURIES; - x = safeZoneX + POS_W(2); - y = safeZoneY + POS_H(11); - w = POS_W(9); - h = POS_H(9); - sizeEx = POS_H(0.7); - colorSelect[] = {1, 1, 1, 1}; - colorSelect2[] = {1, 1, 1, 1}; - colorBackground[] = {0, 0, 0, 0.2}; - colorSelectBackground[] = {0, 0, 0, 0}; - colorSelectBackground2[] = {0, 0, 0, 0}; - colorScrollbar[] = {0.9, 0.9, 0.9, 1}; - }; - class TriageStatus: RscText { - idc = IDC_TRIAGE_STATUS; - x = safeZoneX + POS_W(2); - y = safeZoneY + POS_H(20.2); - w = POS_W(9); - h = POS_H(0.7); - sizeEx = POS_H(0.7); - shadow = 0; - }; - class Activity: Injuries { - idc = IDC_ACTIVITY; - x = safeZoneX + POS_W(1.75); - y = safeZoneY + POS_H(21); - w = POS_W(15); - h = POS_H(7); - shadow = 2; - colorBackground[] = {0, 0, 0, 0}; - }; }; }; }; diff --git a/addons/medical_gui/script_component.hpp b/addons/medical_gui/script_component.hpp index 04565dc5b6..48382ed6fa 100644 --- a/addons/medical_gui/script_component.hpp +++ b/addons/medical_gui/script_component.hpp @@ -27,6 +27,13 @@ #define POS_W(N) ((N) * GUI_GRID_W) #define POS_H(N) ((N) * GUI_GRID_H) +#define PATIENT_INFO_IGUI_BASE_X (safeZoneX + POS_W(2)) +#define PATIENT_INFO_IGUI_BASE_Y (safeZoneY + POS_H(1)) +#define PATIENT_INFO_IGUI_X (profilenamespace getVariable ['TRIPLES(IGUI,GVAR(patientInfo),X)', 0]) +#define PATIENT_INFO_IGUI_Y (profilenamespace getVariable ['TRIPLES(IGUI,GVAR(patientInfo),Y)', 0]) +#define PATIENT_INFO_IGUI_OFFSET_X (PATIENT_INFO_IGUI_X - PATIENT_INFO_IGUI_BASE_X) +#define PATIENT_INFO_IGUI_OFFSET_Y (PATIENT_INFO_IGUI_Y - PATIENT_INFO_IGUI_BASE_Y) + #define IDD_MEDICAL_MENU 38580 #define IDC_TITLE 1200 diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml index cf53ee1842..7e3a73f621 100644 --- a/addons/medical_gui/stringtable.xml +++ b/addons/medical_gui/stringtable.xml @@ -1075,5 +1075,9 @@ Parsiyel %1 Частичное %1 + + Patient Info + Informacje o pacjencie + diff --git a/addons/medical_gui/ui/patient_info_preview_ca.paa b/addons/medical_gui/ui/patient_info_preview_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..17c974a436ecd18cd85b08e94ace49ea5db63223 GIT binary patch literal 48059 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