Skip to content

Commit 5c215fa

Browse files
authored
Medical Status - Add window action on wake up (#11176)
* medical: add window action on wake up * fmt
1 parent ef29cc5 commit 5c215fa

File tree

17 files changed

+712
-386
lines changed

17 files changed

+712
-386
lines changed

Cargo.lock

Lines changed: 476 additions & 347 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ace.dll

-512 Bytes
Binary file not shown.

ace_x64.dll

-6.5 KB
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
class ACE_ExtensionsHashes {
22
class ace {
3-
dll = "b83c2c9c7c989eaf888c885d13a2fdf4a61d1c5f";
4-
dll_x64 = "356a61c4bd2aa13556a8ba0b467c819b3b438d6c";
3+
dll = "24c4fa6d921b00f875099e8de9230efab246e4db";
4+
dll_x64 = "6c4661210262056274afadd8aeeff9aa46f3d943";
55
};
66
};

addons/medical_status/functions/fnc_setUnconsciousState.sqf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,17 @@ if (_active) then {
7070
if (_unit getVariable [QGVAR(reenableRadioProtocol), false]) then {
7171
_unit enableAI "RADIOPROTOCOL";
7272
};
73+
74+
if (_unit == ACE_player) then {
75+
switch EGVAR(medical,windowOnWakeUp) do {
76+
case 1: { // Focus
77+
"ace" callExtension ["window:focus", []];
78+
};
79+
case 2: { // Flash
80+
"ace" callExtension ["window:flash", []];
81+
};
82+
};
83+
};
7384
};
7485

7586
// This event doesn't correspond to unconscious in statemachine

addons/medical_status/initSettings.inc.sqf

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,20 @@
3333
[0, 1, 0, 2, true],
3434
true
3535
] call CBA_fnc_addSetting;
36+
37+
[
38+
QEGVAR(medical,windowOnWakeUp),
39+
"LIST",
40+
[LSTRING(WindowOnWakeUp_DisplayName), LSTRING(WindowOnWakeUp_Description)],
41+
ELSTRING(medical,Category),
42+
[
43+
[0,1,2],
44+
[
45+
LSTRING(WindowOnWakeUp_Option_Nothing),
46+
LSTRING(WindowOnWakeUp_Option_Focus),
47+
LSTRING(WindowOnWakeUp_Option_Flash)
48+
],
49+
1
50+
],
51+
0
52+
] call CBA_fnc_addSetting;

addons/medical_status/stringtable.xml

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,5 +152,90 @@
152152
<Turkish>Durum</Turkish>
153153
<Ukrainian>Статус</Ukrainian>
154154
</Key>
155+
<Key ID="STR_ACE_Medical_Status_WindowOnWakeUp_DisplayName">
156+
<English>Wake Up Window Action</English>
157+
<Czech>Akce okna při probuzení</Czech>
158+
<French>Action de la fenêtre au réveil</French>
159+
<Spanish>Acción de la ventana al despertar</Spanish>
160+
<Italian>Azione della finestra al risveglio</Italian>
161+
<Polish>Akcja okna przy przebudzeniu</Polish>
162+
<Portuguese>Ação da Janela ao Despertar</Portuguese>
163+
<Russian>Действие окна при пробуждении</Russian>
164+
<German>Aktion des Fensters beim Aufwachen</German>
165+
<Korean>기상 창 동작</Korean>
166+
<Japanese>起床時のウィンドウアクション</Japanese>
167+
<Chinese>醒來視窗動作</Chinese>
168+
<Chinesesimp>醒来窗口动作</Chinesesimp>
169+
<Turkish>Uyanma Penceresi Eylemi</Turkish>
170+
<Ukrainian>Дія вікна при пробудженні</Ukrainian>
171+
</Key>
172+
<Key ID="STR_ACE_Medical_Status_WindowOnWakeUp_Description">
173+
<English>Action on the window when waking up</English>
174+
<Czech>Akce okna při probuzení</Czech>
175+
<French>Action de la fenêtre au réveil</French>
176+
<Spanish>Acción de la ventana al despertar</Spanish>
177+
<Italian>Azione della finestra al risveglio</Italian>
178+
<Polish>Akcja okna przy przebudzeniu</Polish>
179+
<Portuguese>Ação na janela ao despertar</Portuguese>
180+
<Russian>Действие окна при пробуждении</Russian>
181+
<German>Aktion des Fensters beim Aufwachen</German>
182+
<Korean>기상 시 창의 동작</Korean>
183+
<Japanese>起床時のウィンドウの動作</Japanese>
184+
<Chinese>醒來時視窗的動作</Chinese>
185+
<Chinesesimp>醒来时窗口的动作</Chinesesimp>
186+
<Turkish>Uyanırken pencere üzerindeki eylem</Turkish>
187+
<Ukrainian>Дія вікна при пробудженні</Ukrainian>
188+
</Key>
189+
<Key ID="STR_ACE_Medical_Status_WindowOnWakeUp_Option_Nothing">
190+
<English>Do Nothing</English>
191+
<Czech>Nedělat nic</Czech>
192+
<French>Ne rien faire</French>
193+
<Spanish>No hacer nada</Spanish>
194+
<Italian>Non fare nulla</Italian>
195+
<Polish>Nie robić nic</Polish>
196+
<Portuguese>Não Fazer Nada</Portuguese>
197+
<Russian>Ничего не делать</Russian>
198+
<German>Nichts tun</German>
199+
<Korean>아무것도 하지 않음</Korean>
200+
<Japanese>何もしない</Japanese>
201+
<Chinese>不做任何事</Chinese>
202+
<Chinesesimp>不做任何事</Chinesesimp>
203+
<Turkish>Hiçbir şey yapma</Turkish>
204+
<Ukrainian>Нічого не робити</Ukrainian>
205+
</Key>
206+
<Key ID="STR_ACE_Medical_Status_WindowOnWakeUp_Option_Focus">
207+
<English>Focus Window</English>
208+
<Czech>Ostření okna</Czech>
209+
<French>Mettre la fenêtre au premier plan</French>
210+
<Spanish>Enfocar ventana</Spanish>
211+
<Italian>Focalizza finestra</Italian>
212+
<Polish>Ustaw fokus na okno</Polish>
213+
<Portuguese>Focar Janela</Portuguese>
214+
<Russian>Фокус на окно</Russian>
215+
<German>Fenster fokussieren</German>
216+
<Korean>창에 포커스 맞추기</Korean>
217+
<Japanese>ウィンドウにフォーカス</Japanese>
218+
<Chinese>聚焦視窗</Chinese>
219+
<Chinesesimp>聚焦窗口</Chinesesimp>
220+
<Turkish>Pencereye Odaklan</Turkish>
221+
<Ukrainian>Фокус на вікно</Ukrainian>
222+
</Key>
223+
<Key ID="STR_ACE_Medical_Status_WindowOnWakeUp_Option_Flash">
224+
<English>Flash Window</English>
225+
<Czech>Blikání okna</Czech>
226+
<French>Faire clignoter la fenêtre</French>
227+
<Spanish>Parpadear ventana</Spanish>
228+
<Italian>Finestra lampeggiante</Italian>
229+
<Polish>Błysk okna</Polish>
230+
<Portuguese>Janela Piscante</Portuguese>
231+
<Russian>Мигание окна</Russian>
232+
<German>Fenster blinken lassen</German>
233+
<Korean>창 깜박이기</Korean>
234+
<Japanese>ウィンドウを点滅させる</Japanese>
235+
<Chinese>閃爍視窗</Chinese>
236+
<Chinesesimp>闪烁窗口</Chinesesimp>
237+
<Turkish>Pencereyi Flaş Yap</Turkish>
238+
<Ukrainian>Миттєве вікно</Ukrainian>
239+
</Key>
155240
</Package>
156241
</Project>

extension/Cargo.toml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
[package]
22
name = "ace"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
[lib]
77
name = "ace"
88
crate-type = ["cdylib"]
99

1010
[dependencies]
11-
arma-rs = { version = "1.11.10", default-features = false, features = ["extension", "uuid"]}
12-
uuid = { version = "1.10.0", features = ["v4"] }
11+
arma-rs = { version = "1.11.15", default-features = false, features = ["extension", "uuid"]}
12+
uuid = { version = "1.19.0", features = ["v4"] }
1313
rand = "0.8.5"
1414
rand_chacha = "0.3.1"
1515

@@ -19,5 +19,12 @@ rayon = "1.10.0"
1919
# Clipboard
2020
arboard = { version = "3.4.0" }
2121

22+
# Window
23+
windows = { version = "0.62.2", features = [
24+
"Win32_Foundation",
25+
"Win32_UI_WindowsAndMessaging",
26+
"Win32_System_Threading"
27+
] }
28+
2229
[build-dependencies]
2330
git2 = "0.20.2"

extension/src/artillery/mod.rs

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::f64::consts::{FRAC_PI_2, FRAC_PI_4, PI};
33
use arma_rs::{Context, Group};
44
use rayon::prelude::*;
55

6-
use crate::common::{Height, MuzzleVelocity, Temperature, GRAVITY};
6+
use crate::common::{GRAVITY, Height, MuzzleVelocity, Temperature};
77

88
mod simulate;
99

@@ -267,7 +267,7 @@ fn calc_range_table_line(
267267
"{:0width$.precision$}",
268268
headwind_offset,
269269
width = 1,
270-
precision = if headwind_offset.abs() > 9.949 { 0 } else { 1 }
270+
precision = usize::from(headwind_offset.abs() <= 9.949)
271271
)
272272
},
273273
{
@@ -286,7 +286,7 @@ fn calc_range_table_line(
286286
"{:0width$.precision$}",
287287
tailwind_offset,
288288
width = 1,
289-
precision = if tailwind_offset.abs() > 9.949 { 0 } else { 1 }
289+
precision = usize::from(tailwind_offset.abs() <= 9.949)
290290
)
291291
},
292292
{
@@ -305,7 +305,7 @@ fn calc_range_table_line(
305305
"{:0width$.precision$}",
306306
temp_dec_offset,
307307
width = 1,
308-
precision = if temp_dec_offset.abs() > 9.949 { 0 } else { 1 }
308+
precision = usize::from(temp_dec_offset.abs() <= 9.949)
309309
)
310310
},
311311
{
@@ -324,7 +324,7 @@ fn calc_range_table_line(
324324
"{:0width$.precision$}",
325325
temp_inc_offset,
326326
width = 1,
327-
precision = if temp_inc_offset.abs() > 9.949 { 0 } else { 1 }
327+
precision = usize::from(temp_inc_offset.abs() <= 9.949)
328328
)
329329
},
330330
{
@@ -343,11 +343,7 @@ fn calc_range_table_line(
343343
"{:0width$.precision$}",
344344
air_density_dec_offset,
345345
width = 1,
346-
precision = if air_density_dec_offset.abs() > 9.949 {
347-
0
348-
} else {
349-
1
350-
}
346+
precision = usize::from(air_density_dec_offset.abs() <= 9.949)
351347
)
352348
},
353349
{
@@ -366,11 +362,7 @@ fn calc_range_table_line(
366362
"{:0width$.precision$}",
367363
air_density_inc_offset,
368364
width = 1,
369-
precision = if air_density_inc_offset.abs() > 9.949 {
370-
0
371-
} else {
372-
1
373-
}
365+
precision = usize::from(air_density_inc_offset.abs() <= 9.949)
374366
)
375367
},
376368
)
@@ -384,7 +376,7 @@ fn calc_range_table_line(
384376
format!(
385377
"{:.precision$}",
386378
line_tof,
387-
precision = if line_tof < 99.945 { 1 } else { 0 }
379+
precision = usize::from(line_tof < 99.945)
388380
),
389381
crosswind_offset,
390382
headwind_offset,
@@ -442,12 +434,11 @@ mod tests {
442434
|name, func, data| {
443435
recv.fetch_add(1, Ordering::SeqCst);
444436
if name == "ace:artillery" && func == "calculate_table" {
445-
if let Some(Value::Array(data)) = data {
446-
if let Value::Array(line) = &data[1] {
447-
if line[0] == Value::String(String::from("3500")) {
448-
println!("data: {line:?}");
449-
}
450-
}
437+
if let Some(Value::Array(data)) = data
438+
&& let Value::Array(line) = &data[1]
439+
&& line[0] == Value::String(String::from("3500"))
440+
{
441+
println!("data: {line:?}");
451442
}
452443
if recv.load(Ordering::SeqCst) == lines {
453444
Result::Ok(())

extension/src/artillery/simulate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::common::{Height, MuzzleVelocity, Temperature, Vector3, GRAVITY, GRAVITY_ACCEL};
1+
use crate::common::{GRAVITY, GRAVITY_ACCEL, Height, MuzzleVelocity, Temperature, Vector3};
22

33
const TIME_STEP: f64 = 1.0 / 60.0;
44

@@ -94,7 +94,7 @@ pub fn find_solution(
9494
let mut current_elevation = -1.0;
9595
loop {
9696
number_of_attempts -= 1;
97-
current_elevation = (search_min + search_max) / 2.0;
97+
current_elevation = f64::midpoint(search_min, search_max);
9898
let (_, shot_distance, shot_time) = shot(
9999
current_elevation,
100100
height_to_hit,

0 commit comments

Comments
 (0)