Change castle sizes
This commit is contained in:
parent
1c7568e60e
commit
c9da5e9bb3
2 changed files with 19 additions and 14 deletions
22
src/main.rs
22
src/main.rs
|
@ -169,16 +169,25 @@ fn player_panel(model: &Model, draw: &Draw, bounds: Rect, player: Player) {
|
||||||
Player::Black => [part_bounds[1], part_bounds[0]],
|
Player::Black => [part_bounds[1], part_bounds[0]],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let player_stats = *model
|
||||||
|
.stats_of(player)
|
||||||
|
.read()
|
||||||
|
.expect("player stats poisoned");
|
||||||
|
|
||||||
let castle_bounds = castle_bounds.top_part(0.7);
|
let castle_bounds = castle_bounds.top_part(0.7);
|
||||||
|
let castle_texture = &model.textures.castle;
|
||||||
|
let castle_height = castle_texture.height() as f32 * (player_stats.castle as f32 / 100f32);
|
||||||
|
|
||||||
#[allow(clippy::cast_precision_loss)]
|
#[allow(clippy::cast_precision_loss)]
|
||||||
let castle_rect = Rect::from_x_y_w_h(
|
let castle_rect = Rect::from_x_y_w_h(
|
||||||
castle_bounds.x(),
|
castle_bounds.x(),
|
||||||
castle_bounds.y(),
|
castle_bounds.y(),
|
||||||
model.textures.castle.width() as f32,
|
castle_texture.width() as f32,
|
||||||
model.textures.castle.height() as f32,
|
castle_height,
|
||||||
)
|
)
|
||||||
.fit_into(castle_bounds);
|
.fit_into(castle_bounds)
|
||||||
draw.texture(&model.textures.castle)
|
.align_bottom_of(castle_bounds);
|
||||||
|
draw.texture(&castle_texture)
|
||||||
.xy(castle_rect.xy())
|
.xy(castle_rect.xy())
|
||||||
.wh(castle_rect.wh())
|
.wh(castle_rect.wh())
|
||||||
.finish();
|
.finish();
|
||||||
|
@ -186,11 +195,6 @@ fn player_panel(model: &Model, draw: &Draw, bounds: Rect, player: Player) {
|
||||||
let status_rect = status_bounds
|
let status_rect = status_bounds
|
||||||
.align_left_of(status_bounds)
|
.align_left_of(status_bounds)
|
||||||
.align_middle_y_of(status_bounds);
|
.align_middle_y_of(status_bounds);
|
||||||
|
|
||||||
let player_stats = *model
|
|
||||||
.stats_of(player)
|
|
||||||
.read()
|
|
||||||
.expect("player stats poisoned");
|
|
||||||
let status = match player {
|
let status = match player {
|
||||||
Player::Red => format!(
|
Player::Red => format!(
|
||||||
"{:<3} Builders\n{:<5} Bricks\n{:<3} Soldiers\n{:<4} Weapons\n{:<7} Magi\n{:<3} Crystals\n{:<5} Castle\n{:<6} Fence",
|
"{:<3} Builders\n{:<5} Bricks\n{:<3} Soldiers\n{:<4} Weapons\n{:<7} Magi\n{:<3} Crystals\n{:<5} Castle\n{:<6} Fence",
|
||||||
|
|
|
@ -36,20 +36,21 @@ impl Stats {
|
||||||
card::Stat::Weapons => self.weapons += effect.1,
|
card::Stat::Weapons => self.weapons += effect.1,
|
||||||
card::Stat::Magi => self.magi += effect.1,
|
card::Stat::Magi => self.magi += effect.1,
|
||||||
card::Stat::Crystals => self.crystals += effect.1,
|
card::Stat::Crystals => self.crystals += effect.1,
|
||||||
card::Stat::Castle => self.castle += effect.1,
|
card::Stat::Castle => self.castle = u16::clamp(self.castle + effect.1, 0, 100),
|
||||||
card::Stat::Fence => self.fence += effect.1,
|
card::Stat::Fence => self.fence += effect.1,
|
||||||
card::Stat::Attack => unreachable!(),
|
card::Stat::Attack => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self.castle >= 100 {
|
||||||
|
// TODO: Handle
|
||||||
|
println!("Game over!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn damage(&mut self, damage: u16) {
|
pub fn damage(&mut self, damage: u16) {
|
||||||
let castle_damage = damage.saturating_sub(self.fence);
|
let castle_damage = damage.saturating_sub(self.fence);
|
||||||
self.fence = self.fence.saturating_sub(damage);
|
self.fence = self.fence.saturating_sub(damage);
|
||||||
self.castle = self.castle.saturating_sub(castle_damage);
|
self.castle = self.castle.saturating_sub(castle_damage);
|
||||||
|
|
||||||
if self.castle >= 100 {
|
|
||||||
println!("Game over!");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn apply_gains(&mut self) {
|
pub fn apply_gains(&mut self) {
|
||||||
|
|
Loading…
Reference in a new issue