Dig marks in the colour of the master who set them; every master's dungeon is lit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5121a2109b
commit
450e55d693
5 files changed
+65
-12
No files matched your search
+5
-2
@@ -217,11 +217,13 @@ pub struct Tile {
|
||||
pub reinforced: bool, // wall reinforced by imps
|
||||
#[serde(rename = "rs", default)]
|
||||
pub res: u8, // treasury: kind of treasure stored here (see RES_GOLD)
|
||||
#[serde(rename = "mb", default)]
|
||||
pub mark_by: u8, // side of the master who marked it for digging (its colour)
|
||||
}
|
||||
|
||||
impl Tile {
|
||||
pub fn new(kind: Kind) -> Tile {
|
||||
Tile { kind, owner: Owner::None, hp: 0.0, gold: 0, marked: false, reserved: 0, food: 0.0, bed: 0, var: 0, reinforced: false, res: 0 }
|
||||
Tile { kind, owner: Owner::None, hp: 0.0, gold: 0, marked: false, reserved: 0, food: 0.0, bed: 0, var: 0, reinforced: false, res: 0, mark_by: 0 }
|
||||
}
|
||||
pub fn solid(&self) -> bool {
|
||||
matches!(self.kind, Kind::Rock | Kind::Earth | Kind::Gold | Kind::Silver | Kind::Ruby | Kind::Diamond | Kind::Steel)
|
||||
@@ -865,7 +867,7 @@ fn tile_record(t: &Tile) -> [u8; REC] {
|
||||
let mut r = [0u8; REC];
|
||||
r[0] = KINDS.iter().position(|&k| k == t.kind).unwrap_or(0) as u8;
|
||||
r[1] = OWNERS.iter().position(|&o| o == t.owner).unwrap_or(0) as u8;
|
||||
r[2] = t.marked as u8 | (t.reinforced as u8) << 1 | (t.res & 3) << 2;
|
||||
r[2] = t.marked as u8 | (t.reinforced as u8) << 1 | (t.res & 3) << 2 | (t.mark_by & 7) << 4;
|
||||
r[3..7].copy_from_slice(&t.hp.to_le_bytes());
|
||||
r[7..11].copy_from_slice(&t.gold.to_le_bytes());
|
||||
r[11..15].copy_from_slice(&t.food.to_le_bytes());
|
||||
@@ -930,6 +932,7 @@ fn tiles_de<'de, D: Deserializer<'de>>(d: D) -> Result<Vec<Tile>, D::Error> {
|
||||
marked: r[2] & 1 != 0,
|
||||
reinforced: r[2] & 2 != 0,
|
||||
res: (r[2] >> 2) & 3,
|
||||
mark_by: (r[2] >> 4) & 7,
|
||||
hp: f32::from_le_bytes(f(3)),
|
||||
gold: i32::from_le_bytes(f(7)),
|
||||
food: f32::from_le_bytes(f(11)),
|
||||
|
||||
Reference in new issue
Block a user