From 3fb03cfbcb037c0100f7b7c44d45096ed071fdf1 Mon Sep 17 00:00:00 2001 From: Tao Tien <29749622+taotien@users.noreply.github.com> Date: Thu, 8 Jan 2026 23:58:26 -0800 Subject: [PATCH] init wall --- flake.nix | 1 + src/{game.rs => game/mod.rs} | 23 +++++++------------- src/game/player.rs | 9 ++++++++ src/game/wall.rs | 12 +++++++++++ src/tiles.rs | 42 ++++++++++++++++++++++++++++++------ src/tui/input.rs | 5 ++--- src/tui/mod.rs | 4 ++-- 7 files changed, 69 insertions(+), 27 deletions(-) rename src/{game.rs => game/mod.rs} (81%) create mode 100644 src/game/player.rs create mode 100644 src/game/wall.rs diff --git a/flake.nix b/flake.nix index 780a53d..3e5342f 100644 --- a/flake.nix +++ b/flake.nix @@ -53,6 +53,7 @@ xorg.libXcursor libxkbcommon ]; + # RUST_LOG = "jong=off"; }; } ); diff --git a/src/game.rs b/src/game/mod.rs similarity index 81% rename from src/game.rs rename to src/game/mod.rs index c514b02..2f2598b 100644 --- a/src/game.rs +++ b/src/game/mod.rs @@ -4,24 +4,20 @@ use bevy::prelude::*; use crate::tiles::{self, *}; +mod player; +pub(crate) mod wall; + pub struct Riichi; impl Plugin for Riichi { fn build(&self, app: &mut App) { app.init_resource::() .add_systems(Startup, init_match) - .add_systems(Startup, tiles::init_tiles); + .add_systems(Startup, tiles::init_tiles) + .add_systems(Startup, wall::build_wall); } } -#[derive(Component)] -pub(crate) struct Player { - pub(crate) name: String, -} - -#[derive(Component)] -pub(crate) struct Points(isize); - #[derive(Component)] pub(crate) struct Dice(u8, u8); @@ -52,14 +48,11 @@ pub(crate) struct MatchSettings { pub(crate) player_count: u8, } -#[derive(Component)] -pub(crate) struct Wall(VecDeque); - pub(crate) fn next_round(mut compass: Res) {} pub(crate) fn init_match( mut commands: Commands, - // , mut compass: ResMut + // mut compass: ResMut ) { let starting = 25000; let player_count = 4; @@ -72,10 +65,10 @@ pub(crate) fn init_match( let players = (1..=player_count) .map(|i| { ( - Player { + player::Player { name: format!("Player {i}"), }, - Points(starting), + player::Points(starting), ) }) .collect::>(); diff --git a/src/game/player.rs b/src/game/player.rs new file mode 100644 index 0000000..45d3c04 --- /dev/null +++ b/src/game/player.rs @@ -0,0 +1,9 @@ +use bevy::prelude::*; + +#[derive(Component)] +pub(crate) struct Player { + pub(crate) name: String, +} + +#[derive(Component)] +pub(crate) struct Points(pub isize); diff --git a/src/game/wall.rs b/src/game/wall.rs new file mode 100644 index 0000000..98ec61f --- /dev/null +++ b/src/game/wall.rs @@ -0,0 +1,12 @@ +use std::collections::VecDeque; + +use bevy::prelude::*; + +use crate::tiles::Tile; + +#[derive(Component)] +pub(crate) struct Wall(Vec); + +pub(crate) fn build_wall(tiles: Query<&Tile>) { + info!("built a wall!") +} diff --git a/src/tiles.rs b/src/tiles.rs index 8a75d3d..a5c59a1 100644 --- a/src/tiles.rs +++ b/src/tiles.rs @@ -1,8 +1,26 @@ -use bevy::prelude::*; +use bevy::{ecs::entity::MapEntities, prelude::*}; use strum::FromRepr; +use crate::game::wall::Wall; + +// #[derive(Component)] +// #[derive(relasionship(re))] +// pub struct TileEntity { +// #[relationship] +// pub parent: Entity, + +// r#type: Tile, +// } + +struct Hand; + #[derive(Component)] -pub enum Tile { +pub struct Tile { + suit: Suit, +} + +#[derive(MapEntities)] +pub enum Suit { Pin(Rank), Sou(Rank), Man(Rank), @@ -34,15 +52,25 @@ pub struct Dora; pub fn init_tiles(mut commands: Commands) { for _ in 0..4 { for i in 1..=9 { - commands.spawn(Tile::Pin(Rank(i))); - commands.spawn(Tile::Sou(Rank(i))); - commands.spawn(Tile::Man(Rank(i))); + commands.spawn(Tile { + suit: Suit::Pin(Rank(i)), + }); + commands.spawn(Tile { + suit: Suit::Sou(Rank(i)), + }); + commands.spawn(Tile { + suit: Suit::Man(Rank(i)), + }); } for i in 0..4 { - commands.spawn(Tile::Wind(Wind::from_repr(i).unwrap())); + commands.spawn(Tile { + suit: Suit::Wind(Wind::from_repr(i).unwrap()), + }); } for i in 0..3 { - commands.spawn(Tile::Dragon(Dragon::from_repr(i).unwrap())); + commands.spawn(Tile { + suit: Suit::Dragon(Dragon::from_repr(i).unwrap()), + }); } } } diff --git a/src/tui/input.rs b/src/tui/input.rs index 4e6a41f..e4d36f1 100644 --- a/src/tui/input.rs +++ b/src/tui/input.rs @@ -5,8 +5,7 @@ use bevy::prelude::*; use bevy_ratatui::crossterm::event::KeyCode; pub(crate) fn keyboard_input_system( - input: Res>, - key_input: Res>, + input: Option>>, + key_input: Option>>, ) { - } diff --git a/src/tui/mod.rs b/src/tui/mod.rs index 1c9822b..c9feace 100644 --- a/src/tui/mod.rs +++ b/src/tui/mod.rs @@ -22,8 +22,8 @@ impl Plugin for RiichiTui { ..Default::default() }, )) - .add_systems(Update, draw_system) - .add_systems(Update, input::keyboard_input_system); + .add_systems(Update, input::keyboard_input_system) + .add_systems(Update, draw_system); } }