From acd85e3352a63f47ffe9dd52a945ca227ec79609 Mon Sep 17 00:00:00 2001
From: mazinskihenry <33608576+mazinskihenry@users.noreply.github.com>
Date: Sun, 13 Oct 2024 22:04:55 -0700
Subject: [PATCH] Fluid Shift and Recovery Position fixes
---
.../functions/fnc_getBloodVolumeChange.sqf | 73 ++++++++++-----
addons/vitals/XEH_preInit.sqf | 9 ++
.../functions/fnc_handleOxygenFunction.sqf | 8 +-
.../functions/fnc_handleSimpleVitals.sqf | 2 +-
.../vitals/functions/fnc_handleUnitVitals.sqf | 14 +--
addons/vitals/stringtable.xml | 5 +
addons/watch/RscTitles.hpp | 92 +++++++++++--------
7 files changed, 130 insertions(+), 73 deletions(-)
diff --git a/addons/pharma/functions/fnc_getBloodVolumeChange.sqf b/addons/pharma/functions/fnc_getBloodVolumeChange.sqf
index 0892d77b4..e9261107e 100644
--- a/addons/pharma/functions/fnc_getBloodVolumeChange.sqf
+++ b/addons/pharma/functions/fnc_getBloodVolumeChange.sqf
@@ -22,16 +22,13 @@ params ["_unit", "_deltaT", "_syncValues"];
private _bloodLoss = [_unit] call ACEFUNC(medical_status,getBloodLoss);
private _internalBleeding = GET_INTERNAL_BLEEDING(_unit);
private _lossVolumeChange = (-_deltaT * ((_bloodLoss + _internalBleeding * (GET_HEART_RATE(_unit) / DEFAULT_HEART_RATE)) / GET_VASOCONSTRICTION(_unit)));
+private _enableFluidShift = EGVAR(vitals,enableFluidShift);
private _fluidVolume = GET_BODY_FLUID(_unit);
-private _SRBCChange = 0;
-_fluidVolume params ["_ECP","_ECB","_SRBC","_ISP","_fullVolume"];
+_fluidVolume params ["_ECB","_ECP","_SRBC","_ISP","_fullVolume"];
_ECP = _ECP + (_lossVolumeChange * LITERS_TO_ML) / 2;
_ECB = _ECB + (_lossVolumeChange * LITERS_TO_ML) / 2;
-_SRBCChange = if (_SRBC > 100 && _ECB < DEFAULT_ECB) then { ((DEFAULT_ECB - _ECB) min (abs ((_lossVolumeChange * LITERS_TO_ML)) / 2 + 1)) } else { 0 };
-_ECB = _ECB + _SRBCChange;
-
if (!isNil {_unit getVariable [QACEGVAR(medical,ivBags),[]]}) then {
private _bloodBags = _unit getVariable [QACEGVAR(medical,ivBags), []];
private _IVarray = _unit getVariable [QGVAR(IV), [0,0,0,0,0,0]];
@@ -68,7 +65,16 @@ if (!isNil {_unit getVariable [QACEGVAR(medical,ivBags),[]]}) then {
// Plasma adds to ECP. Saline splits between the ECP and ISP. Blood adds to ECB
switch (true) do {
case(_type == "Plasma"): { _ECP = _ECP + _bagChange; _lossVolumeChange = _lossVolumeChange + (_bagChange / ML_TO_LITERS); };
- case(_type == "Saline"): { _ECP = _ECP + _bagChange / 2; _ISP = _ISP + _bagChange / 2; _lossVolumeChange = _lossVolumeChange + (_bagChange / 2000); };
+ case(_type == "Saline"): {
+ if (_enableFluidShift) then {
+ _ECP = _ECP + _bagChange / 2;
+ _ISP = _ISP + _bagChange / 2;
+ _lossVolumeChange = _lossVolumeChange + (_bagChange / 2000);
+ } else {
+ _ECP = _ECP + _bagChange;
+ _lossVolumeChange = _lossVolumeChange + (_bagChange / ML_TO_LITERS);
+ };
+ };
case(_type == "Blood"): { _ECB = _ECB + _bagChange; _lossVolumeChange = _lossVolumeChange + (_bagChange / ML_TO_LITERS); };
};
};
@@ -88,7 +94,7 @@ if (!isNil {_unit getVariable [QACEGVAR(medical,ivBags),[]]}) then {
_unit setVariable [QACEGVAR(medical,ivBags), _bloodBags, _syncValues];
};
- // Incoming fluids impacting internal temperature
+ // Incoming fluids impacting internal temperature
if (_hypothermia) then {
{ _fluidHeat = _fluidHeat + _x; } forEach _incomingVolumeChange;
@@ -102,27 +108,44 @@ if (!isNil {_unit getVariable [QACEGVAR(medical,ivBags),[]]}) then {
};
};
-// Movement and recovery of interstital fluid
-private _shiftValue = 0;
-switch (true) do {
- case (((_ECB + _ECP) > (_ISP * 0.6)) && ((_ECB + _ECP) > 4500)): {
- // Negative shifts only happen above 4500ml of blood volume, to prevent issues with falling back into arrest/unconsciousness
- _shiftValue = (2 min ((_ECP + _ECB) - (_ISP * 0.6)));
- _ECP = _ECP - _shiftValue;
- _ISP = _ISP + _shiftValue;
- };
- case ((_ECB + _ECP) < (_ISP * 0.6)): {
- _shiftValue = (2 min ((_ISP * 0.6) - (_ECP + _ECB)));
- _ECP = _ECP + _shiftValue;
- _ISP = _ISP - _shiftValue;
+// Movement and recovery of interstital fluid and SRBC collection
+private _SRBCChange = 0;
+
+if (_enableFluidShift) then {
+ private _shiftValue = 0;
+ private _defaultShift = false;
+
+ _SRBCChange = if ((_SRBC > 0) && (_ECB < DEFAULT_ECB)) then { 0.5 } else { 0 };
+ _ECB = _ECB + (_SRBCChange * _deltaT);
+ _SRBC = _SRBC - (_SRBCChange * _deltaT);
+
+ switch (true) do {
+ case (((_ECB + _ECP) > (_ISP * 0.6)) && ((_ECB + _ECP) > 4500)): {
+ // Negative shifts only happen above 4500ml of blood volume, to prevent patients from falling back into arrest/unconsciousness
+ _shiftValue = (1 min ((_ECP + _ECB) - (_ISP * 0.6))) * _deltaT;
+
+ _ECP = _ECP - _shiftValue;
+ _ISP = _ISP + _shiftValue;
+ };
+ case ((_ECB + _ECP) < (_ISP * 0.6)): {
+ _shiftValue = (1 min ((_ISP * 0.6) - (_ECP + _ECB))) *_deltaT;
+
+ if (_shiftValue < 0.1) exitWith { _defaultShift = true; };
+
+ _ECP = _ECP + _shiftValue;
+ _ISP = _ISP - _shiftValue;
+ };
+ default {
+ _defaultShift = true;
+ };
};
- default {
- // If no shift is required, fluids begin returning to baseline in both ISP and SRBC volumes
- _ISP = _ISP + ((DEFAULT_ISP - _ISP) min 2);
- _SRBC = _SRBC + ((DEFAULT_SRBC - _SRBC) min 1);
+
+ if (_defaultShift) then {
+ _ISP = _ISP + ((((DEFAULT_ISP - _ISP) max -2) min 2) *_deltaT);
+ _SRBC = _SRBC + ((((DEFAULT_SRBC - _SRBC) max -1) min 1) * _deltaT);
};
};
-_unit setVariable [QEGVAR(circulation,bodyFluid), [_ECP, _ECB, (_SRBC - _SRBCChange), _ISP, (_ECP + _ECB)], _syncValues];
+_unit setVariable [QEGVAR(circulation,bodyFluid), [_ECB, _ECP, _SRBC, _ISP, (_ECP + _ECB)], _syncValues];
((_lossVolumeChange + GET_BLOOD_VOLUME_LITERS(_unit)) max 0.01)
\ No newline at end of file
diff --git a/addons/vitals/XEH_preInit.sqf b/addons/vitals/XEH_preInit.sqf
index 1f942547e..28e3c4f04 100644
--- a/addons/vitals/XEH_preInit.sqf
+++ b/addons/vitals/XEH_preInit.sqf
@@ -17,4 +17,13 @@ PREP_RECOMPILE_END;
true
] call CBA_Settings_fnc_init;
+[
+ QGVAR(enableFluidShift),
+ "CHECKBOX",
+ LLSTRING(FLUID_SHIFT),
+ [CBA_SETTINGS_CAT, ELSTRING(GUI,SubCategory_Basic)],
+ [true],
+ true
+] call CBA_Settings_fnc_init;
+
ADDON = true;
diff --git a/addons/vitals/functions/fnc_handleOxygenFunction.sqf b/addons/vitals/functions/fnc_handleOxygenFunction.sqf
index 2ff90dfcc..982bbc795 100644
--- a/addons/vitals/functions/fnc_handleOxygenFunction.sqf
+++ b/addons/vitals/functions/fnc_handleOxygenFunction.sqf
@@ -49,12 +49,12 @@ if (IN_CRDC_ARRST(_unit)) then {
private _tidalVolume = GET_KAT_SURFACE_AREA(_unit);
// Respiratory Rate is supressed by Opioids
- _respiratoryRate = [((_demandVentilation / _tidalVolume) - (_opioidDepression * 10)) min MAXIMUM_RR, 20] select (_unit getVariable [QEGVAR(breathing,BVMInUse), false]);
+ _respiratoryRate = [((_demandVentilation / _tidalVolume) - (_opioidDepression * 10)) min MAXIMUM_RR, 25] select (_unit getVariable [QEGVAR(breathing,BVMInUse), false]);
_actualVentilation = _tidalVolume * _respiratoryRate;
};
// The greater the imbalance between CO2 explusion and O2 intake, the higher PaCO2 gets
-private _paco2 = if ((_demandVentilation / _actualVentilation) == 1) then { _previousCyclePaco2 + (PACO2_MAX_CHANGE min (-PACO2_MAX_CHANGE max ((DEFAULT_PACO2 + ((_anerobicPressure max 1) - 1) * 150) - _previousCyclePaco2))) } else { [ _previousCyclePaco2 - (PACO2_MAX_CHANGE * _deltaT), _previousCyclePaco2 + (PACO2_MAX_CHANGE * _deltaT)] select ((_demandVentilation / _actualVentilation) > 0) };
+private _paco2 = if ((_demandVentilation / _actualVentilation) == 1) then { _previousCyclePaco2 + (PACO2_MAX_CHANGE min (-PACO2_MAX_CHANGE max ((DEFAULT_PACO2 + ((_anerobicPressure max 1) - 1) * 150) - _previousCyclePaco2))) } else { [ _previousCyclePaco2 - (PACO2_MAX_CHANGE * _deltaT), _previousCyclePaco2 + (PACO2_MAX_CHANGE * _deltaT)] select ((_demandVentilation / _actualVentilation) > 0) };
// Generated ETCO2 quadratic. Ensures ETCO2 moves with Respiratory Rate and is constantly below PaCO2
private _etco2 = [((_paco2 - 3) - ((-0.0416667 * (_respiratoryRate^2)) + (3.09167 * (_respiratoryRate)) - DEFAULT_ETCO2) max 10), 0] select (IN_CRDC_ARRST(_unit));
@@ -71,7 +71,9 @@ if (EGVAR(pharma,kidneyAction)) then {
// Fractional Oxygen when breathing normal air is 0.21, 1 when breathing 100% Oxygen, and 0 when no air is being brought into the lungs
private _fio2 = switch (true) do {
- case ((_unit getVariable [QEGVAR(airway,occluded), false]) || (_unit getVariable [QEGVAR(airway,obstruction), false])): { 0 };
+ case ((_unit getVariable [QEGVAR(airway,occluded), false]) || (_unit getVariable [QEGVAR(airway,obstruction), false])): {
+ [0, DEFAULT_FIO2] select ((_unit getVariable [QEGVAR(airway,recovery), false]) || (_unit getVariable [QEGVAR(airway,overstretch), false]))
+ };
case ((_unit getVariable [QEGVAR(chemical,airPoisoning), false]) || (_unit getVariable [QEGVAR(breathing,tensionpneumothorax), false]) || (_unit getVariable [QEGVAR(breathing,hemopneumothorax), false])): { 0 };
case (_unit getVariable [QEGVAR(breathing,oxygenTankConnected), false]): { 1 };
default { DEFAULT_FIO2 };
diff --git a/addons/vitals/functions/fnc_handleSimpleVitals.sqf b/addons/vitals/functions/fnc_handleSimpleVitals.sqf
index 4903a9b14..ca3c9d8c4 100644
--- a/addons/vitals/functions/fnc_handleSimpleVitals.sqf
+++ b/addons/vitals/functions/fnc_handleSimpleVitals.sqf
@@ -72,7 +72,7 @@ if !(_adjustments isEqualTo []) then {
private _heartRate = [_unit, _hrTargetAdjustment, _deltaT, _syncValues] call ACEFUNC(medical_vitals,updateHeartRate); //Rename
[_unit, _painSupressAdjustment, _deltaT, _syncValues] call ACEFUNC(medical_vitals,updatePainSuppress); //Leave alone
-private _bloodPressure = [120,80];
+private _bloodPressure = [80,120];
_unit setVariable [VAR_BLOOD_PRESS, _bloodPressure, _syncValues];
// Statements are ordered by most lethal first.
diff --git a/addons/vitals/functions/fnc_handleUnitVitals.sqf b/addons/vitals/functions/fnc_handleUnitVitals.sqf
index f854d1c95..584df69a9 100644
--- a/addons/vitals/functions/fnc_handleUnitVitals.sqf
+++ b/addons/vitals/functions/fnc_handleUnitVitals.sqf
@@ -17,7 +17,7 @@
params ["_unit"];
-if (!(isPlayer _unit) && (_unit getVariable [QEGVAR(circulation,simpleMedical), false])) exitWith { [_unit] call FUNC(handleSimpleVitals) };
+if (!(isPlayer _unit) && (_unit getVariable [QEGVAR(vitals,simpleMedical), false])) exitWith { [_unit] call FUNC(handleSimpleVitals) };
private _lastTimeUpdated = _unit getVariable [QACEGVAR(medical_vitals,lastTimeUpdated), 0];
private _deltaT = (CBA_missionTime - _lastTimeUpdated) min 10;
@@ -144,29 +144,29 @@ _unit setVariable [VAR_BLOOD_PRESS, _bloodPressure, _syncValues];
_bloodPressure params ["_bloodPressureL", "_bloodPressureH"];
// Statements are ordered by most lethal first.
-// Add SpO2 reactions to switch statement ---------------------------------------------------------------------
- switch (true) do {
- case (_spo2 < EGVAR(breathing,SpO2_dieValue) && EGVAR(breathing,SpO2_dieActive)): {
+switch (true) do {
+ case ((_spo2 < EGVAR(breathing,SpO2_dieValue)) && EGVAR(breathing,SpO2_dieActive)): {
TRACE_3("O2 Fatal",_unit,EGVAR(breathing,SpO2_dieValue),_spo2);
[QACEGVAR(medical,FatalInjury), _unit] call CBA_fnc_localEvent;
+ [QACEGVAR(medical,Death), _unit] call CBA_fnc_localEvent; // We have to call the Death state because if FatalInjuries is disabled, the patient won't actually die and just go into arrest
};
case (_bloodVolume < BLOOD_VOLUME_FATAL): {
TRACE_3("BloodVolume Fatal",_unit,BLOOD_VOLUME_FATAL,_bloodVolume);
[QACEGVAR(medical,Bleedout), _unit] call CBA_fnc_localEvent;
};
case (IN_CRDC_ARRST(_unit)): {}; // if in cardiac arrest just break now to avoid throwing unneeded events
- case (_spo2 < EGVAR(breathing,SpO2_cardiacValue) && EGVAR(breathing,SpO2_cardiacActive)): {
+ case ((_spo2 < EGVAR(breathing,SpO2_cardiacValue)) && EGVAR(breathing,SpO2_cardiacActive)): {
[QACEGVAR(medical,FatalVitals), _unit] call CBA_fnc_localEvent;
};
case (_hemorrhage == 4): {
TRACE_3("Class IV Hemorrhage",_unit,_hemorrhage,_bloodVolume);
[QACEGVAR(medical,FatalVitals), _unit] call CBA_fnc_localEvent;
};
- case (_heartRate < 20 || {_heartRate > 220}): {
+ case (_heartRate < 20 || (_heartRate > 220)): {
TRACE_2("heartRate Fatal",_unit,_heartRate);
[QACEGVAR(medical,FatalVitals), _unit] call CBA_fnc_localEvent;
};
- case (_bloodPressureL < 20 || {_bloodPressureL > 180}): {
+ case (_bloodPressureL < 20 || (_bloodPressureL > 180)): {
TRACE_2("bloodPressure L above or below limits",_unit,_bloodPressureL);
[QACEGVAR(medical,CriticalVitals), _unit] call CBA_fnc_localEvent;
};
diff --git a/addons/vitals/stringtable.xml b/addons/vitals/stringtable.xml
index bc823a806..e03ecb5f1 100644
--- a/addons/vitals/stringtable.xml
+++ b/addons/vitals/stringtable.xml
@@ -8,4 +8,9 @@
AI用単純化医療を有効化
+
+
+ Enable Patient Fluid Shift
+
+
diff --git a/addons/watch/RscTitles.hpp b/addons/watch/RscTitles.hpp
index 6e57d6c6c..b5c77204d 100644
--- a/addons/watch/RscTitles.hpp
+++ b/addons/watch/RscTitles.hpp
@@ -11,9 +11,27 @@
#define ST_CENTER 2
#define ST_RIGHT 1
+#define pixelW (1 / (getResolution select 2))
+#define pixelH (1 / (getResolution select 3))
+#define pixelScale 0.50
+
+// pixel grids macros
+#define UI_GRID_W (pixelW * pixelGridBase)
+#define UI_GRID_H (pixelH * pixelGridBase)
+#define UI_GUTTER_W (pixelW * 2)
+#define UI_GUTTER_H (pixelH * 2)
+
+// sizes for our control
+#define BOX_W (UI_GRID_W * 24)
+#define BOX_H (UI_GRID_H * 24)
+
+#define KAT_WATCH_RESOLUTION_W (getResolution select 0)
+#define KAT_WATCH_RESOLUTION_H (getResolution select 1)
+
class RscText;
class RscPicture;
class RscButton;
+class RscPictureKeepAspect;
class RscTitles
{
class KAT_Katmin
@@ -31,10 +49,10 @@ class RscTitles
{
idc = 19800;
text = "\x\kat\addons\watch\UI\watch_katmin.paa";
- x = "0.0328437 * safezoneW + safezoneX";
- y = "0.652 * safezoneH + safezoneY";
- w = "0.225 * safezoneW";
- h = "0.4 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W - 300) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H - 300) / KAT_WATCH_RESOLUTION_H);
+ w = QUOTE(BOX_W * (1.7777 / (getResolution select 4)));
+ h = QUOTE(BOX_H);
};
class KatminIcon: KatminImage
{
@@ -71,13 +89,13 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "12:00"; //--- ToDo: Localize;
- x = "0.104 * safezoneW + safezoneX";
- y = "0.8328 * safezoneH + safezoneY";
- w = "0.061875 * safezoneW";
- h = "0.033 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 28) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 58) / KAT_WATCH_RESOLUTION_H);
+ w = QUOTE((UI_GRID_W * 7) * (1.7777 / (getResolution select 4)));
+ h = QUOTE(UI_GRID_W * 2.5);
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
- sizeEx = QUOTE(KAT_POS_H(2));
+ sizeEx = QUOTE((UI_GRID_W * 4) * (1.7777 / (getResolution select 4)));
};
class KatminMonth: RscText
{
@@ -87,10 +105,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "JAN"; //--- ToDo: Localize;
- x = "0.157316 * safezoneW + safezoneX";
- y = "0.8394 * safezoneH + safezoneY";
- w = "0.0257812 * safezoneW";
- h = "0.013 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 274.8) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 65.2) / KAT_WATCH_RESOLUTION_H);
+ w = "0.0257812 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.013 * safezoneH / ((getResolution select 5) * 1.7777)";
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
sizeEx = QUOTE(KAT_POS_H(0.8));
@@ -103,10 +121,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "01"; //--- ToDo: Localize;
- x = "0.157316 * safezoneW + safezoneX";
- y = "0.8525 * safezoneH + safezoneY";
- w = "0.0257812 * safezoneW";
- h = "0.013 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 274.8) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 97.84) / KAT_WATCH_RESOLUTION_H);
+ w = "0.0257812 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.013 * safezoneH / ((getResolution select 5) * 1.7777)";
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
sizeEx = QUOTE(KAT_POS_H(0.8));
@@ -119,10 +137,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "760"; //--- ToDo: Localize;
- x = "0.158625 * safezoneW + safezoneX";
- y = "0.80844 * safezoneH + safezoneY";
- w = "0.020625 * safezoneW";
- h = "0.022 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 283.2) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 10.4) / KAT_WATCH_RESOLUTION_H);
+ w = "0.020625 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.022 * safezoneH / ((getResolution select 5) * 1.7777)";
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
sizeEx = QUOTE(KAT_POS_H(0.95));
@@ -135,10 +153,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "80"; //--- ToDo: Localize;
- x = "0.149375 * safezoneW + safezoneX";
- y = "0.8732 * safezoneH + safezoneY";
- w = "0.020625 * safezoneW";
- h = "0.022 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 240.8) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 131.8) / KAT_WATCH_RESOLUTION_H);
+ w = "0.020625 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.022 * safezoneH / ((getResolution select 5) * 1.7777)";
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
sizeEx = QUOTE(KAT_POS_H(1.2));
@@ -151,10 +169,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "97"; //--- ToDo: Localize;
- x = "0.118469 * safezoneW + safezoneX";
- y = "0.8732 * safezoneH + safezoneY";
- w = "0.020625 * safezoneW";
- h = "0.022 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 100.2) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 131.8) / KAT_WATCH_RESOLUTION_H);
+ w = "0.020625 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.022 * safezoneH / ((getResolution select 5) * 1.7777)";
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
sizeEx = QUOTE(KAT_POS_H(1.2));
@@ -167,10 +185,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "76F"; //--- ToDo: Localize;
- x = "0.134937 * safezoneW + safezoneX";
- y = "0.8094 * safezoneH + safezoneY";
- w = "0.020625 * safezoneW";
- h = "0.022 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 174.2) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 10.4) / KAT_WATCH_RESOLUTION_H);
+ w = "0.020625 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.022 * safezoneH / ((getResolution select 5) * 1.7777)";
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
sizeEx = QUOTE(KAT_POS_H(1));
@@ -183,10 +201,10 @@ class RscTitles
shadow = 0;
font = "PuristaBold";
text = "1000";
- x = "0.111219 * safezoneW + safezoneX";
- y = "0.80844 * safezoneH + safezoneY";
- w = "0.020625 * safezoneW";
- h = "0.022 * safezoneH";
+ x = QUOTE((KAT_WATCH_RESOLUTION_W + 67.2) / KAT_WATCH_RESOLUTION_W);
+ y = QUOTE((KAT_WATCH_RESOLUTION_H + 10.4) / KAT_WATCH_RESOLUTION_H);
+ w = "0.020625 * safezoneW / ((getResolution select 5) * 1.7777)";
+ h = "0.022 * safezoneH / ((getResolution select 5) * 1.7777)";
sizeEx = QUOTE(KAT_POS_H(0.95));
};
};