more scripting

This commit is contained in:
2026-06-04 23:52:33 -05:00
parent e0477a12b8
commit 4f21f7fa8a
8 changed files with 558 additions and 121 deletions
+49 -10
View File
@@ -152,16 +152,27 @@ pub(crate) struct MapFileObjectEntry {
script_name: Option<String>,
}
fn default_true() -> bool { true }
fn default_zoom() -> u32 { 1 }
fn is_zoom_default(z: &u32) -> bool { *z == 1 }
fn default_true() -> bool {
true
}
fn default_zoom() -> u32 {
1
}
fn is_zoom_default(z: &u32) -> bool {
*z == 1
}
/// Parses an `"#RRGGBB"` hex color string into an [`Rgba8`].
/// Returns opaque black on any parse failure.
fn parse_color(hex: &str) -> Rgba8 {
let hex = hex.trim_start_matches('#');
if hex.len() != 6 {
return Rgba8 { r: 0, g: 0, b: 0, a: 255 };
return Rgba8 {
r: 0,
g: 0,
b: 0,
a: 255,
};
}
let r = u8::from_str_radix(&hex[0..2], 16).unwrap_or(0);
let g = u8::from_str_radix(&hex[2..4], 16).unwrap_or(0);
@@ -475,8 +486,14 @@ content = """
assert!(result.is_err());
// Use .err().unwrap() instead of .unwrap_err() to avoid requiring Board: Debug.
let msg = result.err().unwrap();
assert!(msg.contains("2 rows"), "expected row count in error, got: {msg}");
assert!(msg.contains("height = 3"), "expected declared height in error, got: {msg}");
assert!(
msg.contains("2 rows"),
"expected row count in error, got: {msg}"
);
assert!(
msg.contains("height = 3"),
"expected declared height in error, got: {msg}"
);
}
#[test]
@@ -487,8 +504,14 @@ content = """
let result = Board::try_from(mf);
assert!(result.is_err());
let msg = result.err().unwrap();
assert!(msg.contains("3 characters"), "expected col count in error, got: {msg}");
assert!(msg.contains("width = 4"), "expected declared width in error, got: {msg}");
assert!(
msg.contains("3 characters"),
"expected col count in error, got: {msg}"
);
assert!(
msg.contains("width = 4"),
"expected declared width in error, got: {msg}"
);
}
#[test]
@@ -549,8 +572,24 @@ bg = "#000000"
assert_eq!(obj.x, 1);
assert_eq!(obj.y, 1);
assert_eq!(obj.glyph.tile, 64);
assert_eq!(obj.glyph.fg, Rgba8 { r: 0x00, g: 0xFF, b: 0xFF, a: 255 });
assert_eq!(obj.glyph.bg, Rgba8 { r: 0, g: 0, b: 0, a: 255 });
assert_eq!(
obj.glyph.fg,
Rgba8 {
r: 0x00,
g: 0xFF,
b: 0xFF,
a: 255
}
);
assert_eq!(
obj.glyph.bg,
Rgba8 {
r: 0,
g: 0,
b: 0,
a: 255
}
);
// Save back to TOML and reload; glyph must survive.
let map_file = MapFile::from(&board);