|
|
|
@ -17,7 +17,12 @@ pub(crate) struct Display2dPlugin;
|
|
|
|
impl Plugin for Display2dPlugin {
|
|
|
|
impl Plugin for Display2dPlugin {
|
|
|
|
fn build(&self, app: &mut App) {
|
|
|
|
fn build(&self, app: &mut App) {
|
|
|
|
app.add_systems(Startup, (initialize_camera, set_background))
|
|
|
|
app.add_systems(Startup, (initialize_camera, set_background))
|
|
|
|
.add_systems(OnEnter(GameState::Loading), load_spritesheet)
|
|
|
|
.add_systems(
|
|
|
|
|
|
|
|
Update,
|
|
|
|
|
|
|
|
load_spritesheet
|
|
|
|
|
|
|
|
.run_if(on_event::<AssetEvent<Tweakfile>>())
|
|
|
|
|
|
|
|
.run_if(in_state(GameState::Loading)),
|
|
|
|
|
|
|
|
)
|
|
|
|
.add_systems(OnExit(GameState::Loading), initialize_board)
|
|
|
|
.add_systems(OnExit(GameState::Loading), initialize_board)
|
|
|
|
.add_systems(
|
|
|
|
.add_systems(
|
|
|
|
Update,
|
|
|
|
Update,
|
|
|
|
@ -65,6 +70,7 @@ pub(crate) struct Display2d;
|
|
|
|
struct BackgroundImage;
|
|
|
|
struct BackgroundImage;
|
|
|
|
|
|
|
|
|
|
|
|
/// All possible sprites
|
|
|
|
/// All possible sprites
|
|
|
|
|
|
|
|
/// Necessary because individual components of Piece, Side, and Light/Dark are not homogeneous
|
|
|
|
#[derive(Debug, Deserialize, Component, Clone, PartialEq)]
|
|
|
|
#[derive(Debug, Deserialize, Component, Clone, PartialEq)]
|
|
|
|
pub(crate) enum GameSprite {
|
|
|
|
pub(crate) enum GameSprite {
|
|
|
|
RedQueen,
|
|
|
|
RedQueen,
|
|
|
|
@ -123,19 +129,23 @@ fn load_spritesheet(
|
|
|
|
tweaks: Res<Assets<tweak::Tweakfile>>,
|
|
|
|
tweaks: Res<Assets<tweak::Tweakfile>>,
|
|
|
|
mut commands: Commands,
|
|
|
|
mut commands: Commands,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
|
|
|
|
info!("Loading spritesheet");
|
|
|
|
let handle: Handle<tweak::Tweakfile> = server.load("martian.tweak.toml");
|
|
|
|
let handle: Handle<tweak::Tweakfile> = server.load("martian.tweak.toml");
|
|
|
|
|
|
|
|
info!("Handle: {:?}", handle);
|
|
|
|
let tweak = tweaks.get(&handle).expect("Load tweakfiles");
|
|
|
|
let tweak = tweaks.get(&handle).expect("Load tweakfiles");
|
|
|
|
|
|
|
|
info!("Tweak: {:?}", tweak);
|
|
|
|
let atlas = TextureAtlas::from_grid(
|
|
|
|
let atlas = TextureAtlas::from_grid(
|
|
|
|
server.load(tweak.display2d.sprites.file.clone()),
|
|
|
|
server.load(tweak.display2d.sprites.file.clone()),
|
|
|
|
Vec2::new(
|
|
|
|
Vec2::new(
|
|
|
|
tweak.display2d.sprites.tile_size.x,
|
|
|
|
tweak.display2d.sprites.tile_size[0] as f32,
|
|
|
|
tweak.display2d.sprites.tile_size.y,
|
|
|
|
tweak.display2d.sprites.tile_size[1] as f32,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
tweak.display2d.sprites.columns,
|
|
|
|
tweak.display2d.sprites.columns,
|
|
|
|
tweak.display2d.sprites.rows,
|
|
|
|
tweak.display2d.sprites.rows,
|
|
|
|
None,
|
|
|
|
None,
|
|
|
|
None,
|
|
|
|
None,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
info!("Atlas: {:?}", atlas);
|
|
|
|
commands.insert_resource(SpriteSheet {
|
|
|
|
commands.insert_resource(SpriteSheet {
|
|
|
|
handle: texture_atlases.add(atlas),
|
|
|
|
handle: texture_atlases.add(atlas),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
@ -414,7 +424,7 @@ pub(crate) mod tweaks {
|
|
|
|
#[serde(default)]
|
|
|
|
#[serde(default)]
|
|
|
|
pub file: String,
|
|
|
|
pub file: String,
|
|
|
|
#[serde(default)]
|
|
|
|
#[serde(default)]
|
|
|
|
pub tile_size: Vec2,
|
|
|
|
pub tile_size: [u8; 2],
|
|
|
|
#[serde(default)]
|
|
|
|
#[serde(default)]
|
|
|
|
pub columns: usize,
|
|
|
|
pub columns: usize,
|
|
|
|
#[serde(default)]
|
|
|
|
#[serde(default)]
|
|
|
|
|