animations

This commit is contained in:
2026-06-15 09:15:30 -05:00
parent 77eba1a09c
commit 32aef1ea08
9 changed files with 394 additions and 313 deletions
+9 -8
View File
@@ -264,7 +264,7 @@ fn scroll_opens_on_player_bump() {
}
#[test]
fn close_scroll_without_choice_clears_it() {
fn handle_scroll_without_choice_clears_it() {
let board = open_board(3, 1, (0, 0), vec![scripted_object(1, 0, "s")]);
let mut game = GameState::with_scripts(board, scripts_from(&[("s", r#"fn bump(id) { scroll(["Hello"]); }"#)]));
game.run_init();
@@ -272,14 +272,15 @@ fn close_scroll_without_choice_clears_it() {
game.tick(Duration::from_millis(16));
assert!(game.active_scroll.is_some());
game.close_scroll(None);
// No choice set — next tick clears the scroll without dispatching.
game.tick(Duration::from_millis(16));
assert!(game.active_scroll.is_none());
}
#[test]
fn close_scroll_with_choice_dispatches_send_to_source() {
// Closing with a choice string fires send() on the object that opened the
// scroll; fn eat() logging "eaten" confirms the dispatch arrived.
fn handle_scroll_with_choice_dispatches_send_to_source() {
// Setting choice on the scroll before a tick fires send() on the source object;
// fn eat() logging "eaten" confirms the dispatch arrived.
let board = open_board(3, 1, (0, 0), vec![scripted_object(1, 0, "s")]);
let mut game = GameState::with_scripts(board, scripts_from(&[("s", r#"
fn bump(id) { scroll(["Muffin?", ["eat", "Eat it"]]); }
@@ -290,9 +291,9 @@ fn close_scroll_with_choice_dispatches_send_to_source() {
game.tick(Duration::from_millis(16));
assert!(game.active_scroll.is_some());
game.close_scroll(Some("eat"));
assert!(game.active_scroll.is_none());
// eat() queues Action::Log onto the board queue; a tick resolves it.
// Set the choice, then tick — handle_scroll dispatches "eat" and resolve picks up the log.
game.active_scroll.as_mut().unwrap().choice = Some("eat".to_string());
game.tick(Duration::from_millis(16));
assert!(game.active_scroll.is_none());
assert!(log_texts(&game).iter().any(|t| t == "eaten"), "eat() should have logged");
}