2026-01-08 20:49:19 -08:00
|
|
|
use std::collections::VecDeque;
|
|
|
|
|
|
|
|
|
|
use bevy::prelude::*;
|
|
|
|
|
|
|
|
|
|
use crate::tiles::{self, *};
|
|
|
|
|
|
2026-01-08 23:58:26 -08:00
|
|
|
mod player;
|
|
|
|
|
pub(crate) mod wall;
|
|
|
|
|
|
2026-01-08 20:49:19 -08:00
|
|
|
pub struct Riichi;
|
|
|
|
|
|
|
|
|
|
impl Plugin for Riichi {
|
|
|
|
|
fn build(&self, app: &mut App) {
|
|
|
|
|
app.init_resource::<Compass>()
|
|
|
|
|
.add_systems(Startup, init_match)
|
2026-01-08 23:58:26 -08:00
|
|
|
.add_systems(Startup, tiles::init_tiles)
|
|
|
|
|
.add_systems(Startup, wall::build_wall);
|
2026-01-08 20:49:19 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
pub(crate) struct Dice(u8, u8);
|
|
|
|
|
|
|
|
|
|
#[derive(Resource)]
|
|
|
|
|
pub(crate) struct Compass {
|
|
|
|
|
pub(crate) prevalent_wind: Wind,
|
|
|
|
|
pub(crate) round: u8,
|
|
|
|
|
pub(crate) dealer_wind: Wind,
|
|
|
|
|
pub(crate) riichi: usize,
|
|
|
|
|
pub(crate) honba: usize,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Default for Compass {
|
|
|
|
|
fn default() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
prevalent_wind: Wind::Ton,
|
|
|
|
|
round: 1,
|
|
|
|
|
dealer_wind: Wind::Ton,
|
|
|
|
|
riichi: 0,
|
|
|
|
|
honba: 0,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Resource)]
|
|
|
|
|
pub(crate) struct MatchSettings {
|
|
|
|
|
pub(crate) starting_points: isize,
|
|
|
|
|
pub(crate) player_count: u8,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub(crate) fn next_round(mut compass: Res<Compass>) {}
|
|
|
|
|
|
|
|
|
|
pub(crate) fn init_match(
|
|
|
|
|
mut commands: Commands,
|
2026-01-08 23:58:26 -08:00
|
|
|
// mut compass: ResMut<Compass>
|
2026-01-08 20:49:19 -08:00
|
|
|
) {
|
|
|
|
|
let starting = 25000;
|
|
|
|
|
let player_count = 4;
|
|
|
|
|
|
|
|
|
|
commands.insert_resource(MatchSettings {
|
|
|
|
|
starting_points: starting,
|
|
|
|
|
player_count,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let players = (1..=player_count)
|
|
|
|
|
.map(|i| {
|
|
|
|
|
(
|
2026-01-08 23:58:26 -08:00
|
|
|
player::Player {
|
2026-01-08 20:49:19 -08:00
|
|
|
name: format!("Player {i}"),
|
|
|
|
|
},
|
2026-01-08 23:58:26 -08:00
|
|
|
player::Points(starting),
|
2026-01-08 20:49:19 -08:00
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
.collect::<Vec<_>>();
|
|
|
|
|
commands.spawn_batch(players);
|
|
|
|
|
|
|
|
|
|
// *compass = Compass {
|
|
|
|
|
// prevalent_wind: Wind::Ton,
|
|
|
|
|
// round: 1,
|
|
|
|
|
// dealer_wind: todo!(),
|
|
|
|
|
// riichi: 0,
|
|
|
|
|
// honba: 0,
|
|
|
|
|
// }
|
|
|
|
|
}
|