0.1.0-0-pre.1

This commit is contained in:
2026-09-15 23:26:37 +02:00
commit 8b4c79c431
57 changed files with 2314 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
# file: crates/games/game-reflex-poc/Cargo.toml
# version: 1
[package]
name = "game-reflex-poc"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
publish.workspace = true
[dependencies]
engine-v1-common = { path = "../../engines/engine-v1-common" }
engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" }
engine-v1-sdl = { path = "../../engines/engine-v1-sdl" }
[lints]
workspace = true

View File

@@ -0,0 +1,13 @@
// file: crates/games/game-reflex-poc/src/lib.rs
// version: 1
#![warn(missing_docs)]
#![deny(unreachable_pub)]
#![forbid(unsafe_code)]
//! Structural POC for a one-button reflex game using engine generation V1.
mod state;
/// Re-export of the Reflex POC state.
pub use self::state::ReflexState;

View File

@@ -0,0 +1,37 @@
// file: crates/games/game-reflex-poc/src/state.rs
// version: 1
/// Minimal deterministic state used to validate the first game boundary.
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ReflexState {
score: u64,
}
impl ReflexState {
/// Creates a fresh Reflex state.
#[must_use]
pub const fn new() -> Self {
return Self { score: 0 };
}
/// Returns the current score.
#[must_use]
pub const fn score(self) -> u64 {
return self.score;
}
/// Registers one successful reflex action.
pub const fn register_success(&mut self) {
self.score = self.score.saturating_add(1);
}
}
#[cfg(test)]
mod unit_tests {
#[test]
fn success_increments_score() {
let mut state = crate::ReflexState::new();
state.register_success();
assert_eq!(state.score(), 1);
}
}

View File

@@ -0,0 +1,19 @@
# file: crates/games/game-snake-poc/Cargo.toml
# version: 1
[package]
name = "game-snake-poc"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
publish.workspace = true
[dependencies]
engine-v1-common = { path = "../../engines/engine-v1-common" }
engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" }
engine-v1-sdl = { path = "../../engines/engine-v1-sdl" }
[lints]
workspace = true

View File

@@ -0,0 +1,13 @@
// file: crates/games/game-snake-poc/src/lib.rs
// version: 1
#![warn(missing_docs)]
#![deny(unreachable_pub)]
#![forbid(unsafe_code)]
//! Structural POC for a Snake-style game using engine generation V1.
mod state;
/// Re-export of the Snake POC state.
pub use self::state::SnakeState;

View File

@@ -0,0 +1,43 @@
// file: crates/games/game-snake-poc/src/state.rs
// version: 1
/// Minimal Snake state used to validate reusable engine dependencies.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SnakeState {
length: u32,
}
impl Default for SnakeState {
fn default() -> Self {
return Self::new();
}
}
impl SnakeState {
/// Creates a fresh Snake state.
#[must_use]
pub const fn new() -> Self {
return Self { length: 1 };
}
/// Returns the current snake length.
#[must_use]
pub const fn length(self) -> u32 {
return self.length;
}
/// Registers one consumed growth item.
pub const fn grow(&mut self) {
self.length = self.length.saturating_add(1);
}
}
#[cfg(test)]
mod unit_tests {
#[test]
fn growth_increments_length() {
let mut state = crate::SnakeState::new();
state.grow();
assert_eq!(state.length(), 2);
}
}