feat: Allow TileState to hold ItemType (Seeds)
This commit is contained in:
@@ -7,18 +7,20 @@ pub struct Tile {
|
||||
pub y: u32,
|
||||
}
|
||||
|
||||
#[derive(Component, Default, Serialize, Deserialize, Clone, Copy, Debug)]
|
||||
#[derive(Component, Default, Serialize, Deserialize, Clone, Debug)]
|
||||
pub enum TileState {
|
||||
#[default]
|
||||
Unclaimed,
|
||||
Empty,
|
||||
Occupied,
|
||||
Occupied {
|
||||
seed: ItemType,
|
||||
},
|
||||
}
|
||||
|
||||
impl TileState {
|
||||
pub fn is_blocking(&self) -> bool {
|
||||
match self {
|
||||
TileState::Occupied => true,
|
||||
TileState::Occupied { .. } => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,14 +73,14 @@ fn update_tile_colors(
|
||||
slice.name = match state {
|
||||
TileState::Unclaimed => "Unclaimed",
|
||||
TileState::Empty => "Empty",
|
||||
TileState::Occupied => "Occupied",
|
||||
TileState::Occupied { .. } => "Occupied",
|
||||
}
|
||||
.into();
|
||||
|
||||
slice.aseprite = match state {
|
||||
TileState::Unclaimed => asset_server.load("tiles/tile-unclaimed.aseprite"),
|
||||
TileState::Empty => asset_server.load("tiles/tile-empty.aseprite"),
|
||||
TileState::Occupied => asset_server.load("tiles/tile-occupied.aseprite"),
|
||||
TileState::Occupied { .. } => asset_server.load("tiles/tile-occupied.aseprite"),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,8 +121,12 @@ fn debug_click(
|
||||
(x, y),
|
||||
|state| match state {
|
||||
TileState::Unclaimed => TileState::Empty,
|
||||
TileState::Empty => TileState::Occupied,
|
||||
TileState::Occupied => TileState::Unclaimed,
|
||||
TileState::Empty => TileState::Occupied {
|
||||
seed: ItemType::BerrySeed {
|
||||
name: "Debug".into(),
|
||||
},
|
||||
},
|
||||
TileState::Occupied { .. } => TileState::Unclaimed,
|
||||
},
|
||||
tile_query,
|
||||
)
|
||||
|
||||
@@ -55,7 +55,7 @@ fn dump_savegame(
|
||||
for y in 0..grid.height {
|
||||
if let Ok(entity) = grid.get_tile((x, y)) {
|
||||
if let Ok(state) = tile_query.get(entity) {
|
||||
col.push(*state);
|
||||
col.push(state.clone());
|
||||
} else {
|
||||
col.push(TileState::Unclaimed);
|
||||
}
|
||||
@@ -146,7 +146,7 @@ fn load_savegame(
|
||||
if x < grid.width && y < grid.height {
|
||||
if let Ok(entity) = grid.get_tile((x, y)) {
|
||||
if let Ok(mut state) = tile_query.get_mut(entity) {
|
||||
*state = save_data.tiles[x as usize][y as usize];
|
||||
*state = save_data.tiles[x as usize][y as usize].clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user