fmt: just fmt (rust only)
Build TDK Pinball / build (macos-latest) (push) Canceled after 0s
Build TDK Pinball / build (ubuntu-latest) (push) Canceled after 0s
Build TDK Pinball / build (windows-latest) (push) Canceled after 0s
Build TDK Pinball / build (macos-latest) (push) Canceled after 0s
Build TDK Pinball / build (ubuntu-latest) (push) Canceled after 0s
Build TDK Pinball / build (windows-latest) (push) Canceled after 0s
This commit is contained in:
+78
-53
@@ -1,24 +1,67 @@
|
||||
use std::path::Path;
|
||||
|
||||
use macroquad::prelude::*;
|
||||
|
||||
use crate::{
|
||||
assets::Assets,
|
||||
game::{Controls, Event, Game, Nudge},
|
||||
persistence::{
|
||||
HighScore, Language, Persistence, SavedData, insert_high_score, qualifies_high_score,
|
||||
HighScore,
|
||||
Language,
|
||||
Persistence,
|
||||
SavedData,
|
||||
insert_high_score,
|
||||
qualifies_high_score,
|
||||
},
|
||||
};
|
||||
use macroquad::prelude::*;
|
||||
use std::path::Path;
|
||||
|
||||
const WIDTH: f32 = 640.0;
|
||||
const HEIGHT: f32 = 460.0;
|
||||
const DETAIL_TIMER_SECONDS: [f32; 5] = [0.050, 0.040, 0.030, 0.020, 0.010];
|
||||
const ADD_PLAYER_KEYS: [KeyCode; 3] = [KeyCode::KpAdd, KeyCode::RightBracket, KeyCode::Equal];
|
||||
const TARGET_POSITIONS: [[(f32, f32); 5]; 6] = [
|
||||
[(9.0, 41.0), (23.0, 11.0), (56.0, 14.0), (63.0, 47.0), (35.0, 63.0)],
|
||||
[(11.0, 45.0), (18.0, 13.0), (52.0, 11.0), (63.0, 42.0), (39.0, 64.0)],
|
||||
[(13.0, 50.0), (15.0, 17.0), (46.0, 9.0), (64.0, 37.0), (44.0, 62.0)],
|
||||
[(17.0, 55.0), (11.0, 23.0), (39.0, 7.0), (64.0, 30.0), (50.0, 59.0)],
|
||||
[(21.0, 60.0), (9.0, 28.0), (35.0, 7.0), (62.0, 25.0), (54.0, 56.0)],
|
||||
[(8.0, 35.0), (26.0, 8.0), (59.0, 18.0), (59.0, 50.0), (27.0, 61.0)],
|
||||
[
|
||||
(9.0, 41.0),
|
||||
(23.0, 11.0),
|
||||
(56.0, 14.0),
|
||||
(63.0, 47.0),
|
||||
(35.0, 63.0),
|
||||
],
|
||||
[
|
||||
(11.0, 45.0),
|
||||
(18.0, 13.0),
|
||||
(52.0, 11.0),
|
||||
(63.0, 42.0),
|
||||
(39.0, 64.0),
|
||||
],
|
||||
[
|
||||
(13.0, 50.0),
|
||||
(15.0, 17.0),
|
||||
(46.0, 9.0),
|
||||
(64.0, 37.0),
|
||||
(44.0, 62.0),
|
||||
],
|
||||
[
|
||||
(17.0, 55.0),
|
||||
(11.0, 23.0),
|
||||
(39.0, 7.0),
|
||||
(64.0, 30.0),
|
||||
(50.0, 59.0),
|
||||
],
|
||||
[
|
||||
(21.0, 60.0),
|
||||
(9.0, 28.0),
|
||||
(35.0, 7.0),
|
||||
(62.0, 25.0),
|
||||
(54.0, 56.0),
|
||||
],
|
||||
[
|
||||
(8.0, 35.0),
|
||||
(26.0, 8.0),
|
||||
(59.0, 18.0),
|
||||
(59.0, 50.0),
|
||||
(27.0, 61.0),
|
||||
],
|
||||
];
|
||||
const BUMPER_VALUE_REGIONS: [(i32, i32, i32, i32); 5] = [
|
||||
(103, 304, 121, 323),
|
||||
@@ -116,11 +159,7 @@ impl AttractAnimation {
|
||||
|
||||
fn target_active(self, index: usize) -> bool {
|
||||
let index = u32::try_from(index).unwrap_or(0);
|
||||
let first_activation = if index == 0 {
|
||||
32
|
||||
} else {
|
||||
index * 2
|
||||
};
|
||||
let first_activation = if index == 0 { 32 } else { index * 2 };
|
||||
self.tick >= first_activation && self.tick.wrapping_sub(index * 2) % 32 < 16
|
||||
}
|
||||
|
||||
@@ -137,11 +176,7 @@ impl AttractAnimation {
|
||||
|
||||
fn record_strip_active(self, index: usize) -> bool {
|
||||
let index = u32::try_from(index).unwrap_or(0);
|
||||
let first_activation = if index == 0 {
|
||||
40
|
||||
} else {
|
||||
index * 4
|
||||
};
|
||||
let first_activation = if index == 0 { 40 } else { index * 4 };
|
||||
self.tick >= first_activation && self.tick.wrapping_sub(index * 4) % 40 < 20
|
||||
}
|
||||
|
||||
@@ -151,11 +186,7 @@ impl AttractAnimation {
|
||||
|
||||
fn item_index(self) -> Option<usize> {
|
||||
let phase = (self.tick % 144) / 8;
|
||||
let item = if phase < 10 {
|
||||
phase
|
||||
} else {
|
||||
18 - phase
|
||||
};
|
||||
let item = if phase < 10 { phase } else { 18 - phase };
|
||||
(item != 0).then(|| usize::try_from(item - 1).unwrap_or(0))
|
||||
}
|
||||
|
||||
@@ -495,7 +526,8 @@ impl App {
|
||||
self.name.pop();
|
||||
}
|
||||
let click = is_mouse_button_pressed(MouseButton::Left).then(Self::logical_mouse);
|
||||
let clicked_ok = click.is_some_and(|point| Rect::new(255.0, 256.0, 60.0, 23.0).contains(point));
|
||||
let clicked_ok =
|
||||
click.is_some_and(|point| Rect::new(255.0, 256.0, 60.0, 23.0).contains(point));
|
||||
let clicked_cancel =
|
||||
click.is_some_and(|point| Rect::new(324.0, 256.0, 60.0, 23.0).contains(point));
|
||||
if is_key_pressed(KeyCode::Escape) || clicked_cancel {
|
||||
@@ -574,11 +606,8 @@ impl App {
|
||||
}
|
||||
|
||||
if self.attract.magnetic_records_active() {
|
||||
for (x, y, width, height) in [
|
||||
(151, 389, 13, 49),
|
||||
(11, 344, 13, 49),
|
||||
(291, 346, 13, 49),
|
||||
] {
|
||||
for (x, y, width, height) in [(151, 389, 13, 49), (11, 344, 13, 49), (291, 346, 13, 49)]
|
||||
{
|
||||
self.draw_active_table_region(x, y, width, height);
|
||||
}
|
||||
}
|
||||
@@ -605,12 +634,7 @@ impl App {
|
||||
}
|
||||
|
||||
if let Some(item) = self.attract.item_index() {
|
||||
draw_texture(
|
||||
&self.assets.diamond[item],
|
||||
123.0,
|
||||
300.0,
|
||||
WHITE,
|
||||
);
|
||||
draw_texture(&self.assets.diamond[item], 123.0, 300.0, WHITE);
|
||||
}
|
||||
self.draw_intro_marquee();
|
||||
}
|
||||
@@ -929,7 +953,15 @@ impl App {
|
||||
} else if (66..=128).contains(&frame) {
|
||||
draw_texture_region(&self.assets.wheel, 79.0, 33.0, 91.0, 90.0, 180.0, 90.0);
|
||||
if frame < 83 {
|
||||
draw_texture_region(wide_a, 79.0, ((82 - frame) * 2) as f32, 91.0, 90.0, 0.0, 0.0);
|
||||
draw_texture_region(
|
||||
wide_a,
|
||||
79.0,
|
||||
((82 - frame) * 2) as f32,
|
||||
91.0,
|
||||
90.0,
|
||||
0.0,
|
||||
0.0,
|
||||
);
|
||||
} else {
|
||||
let height = (128 - frame) * 2;
|
||||
draw_texture_region(
|
||||
@@ -1122,14 +1154,7 @@ impl App {
|
||||
draw_centered("SETTINGS", 122.0, 30, BLACK);
|
||||
let rows = [
|
||||
format!("GRAPHICS DETAIL / SPEED: {}", self.saved.settings.speed),
|
||||
format!(
|
||||
"SOUND: {}",
|
||||
if self.sounds_enabled {
|
||||
"ON"
|
||||
} else {
|
||||
"OFF"
|
||||
}
|
||||
),
|
||||
format!("SOUND: {}", if self.sounds_enabled { "ON" } else { "OFF" }),
|
||||
format!("LANGUAGE: {}", self.saved.settings.language.label()),
|
||||
];
|
||||
for (index, row) in rows.iter().enumerate() {
|
||||
@@ -1181,7 +1206,13 @@ impl App {
|
||||
draw_rectangle(x, y, 270.0, 124.0, Color::from_rgba(192, 192, 192, 255));
|
||||
draw_rectangle_lines(x, y, 270.0, 124.0, 2.0, WHITE);
|
||||
draw_rectangle_lines(x + 2.0, y + 2.0, 266.0, 120.0, 2.0, DARKGRAY);
|
||||
draw_rectangle(x + 4.0, y + 4.0, 262.0, 20.0, Color::from_rgba(0, 0, 128, 255));
|
||||
draw_rectangle(
|
||||
x + 4.0,
|
||||
y + 4.0,
|
||||
262.0,
|
||||
20.0,
|
||||
Color::from_rgba(0, 0, 128, 255),
|
||||
);
|
||||
draw_text(
|
||||
"Congratulations! This is a Top Ten Score!",
|
||||
x + 9.0,
|
||||
@@ -1319,13 +1350,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn attract_timer_uses_the_selected_detail_callback() {
|
||||
for (detail, interval) in [
|
||||
(1, 0.050),
|
||||
(2, 0.040),
|
||||
(3, 0.030),
|
||||
(4, 0.020),
|
||||
(5, 0.010),
|
||||
] {
|
||||
for (detail, interval) in [(1, 0.050), (2, 0.040), (3, 0.030), (4, 0.020), (5, 0.010)] {
|
||||
let mut animation = AttractAnimation::default();
|
||||
animation.update(interval - 0.001, detail);
|
||||
assert_eq!(animation.tick, 0);
|
||||
|
||||
Reference in New Issue
Block a user