diff options
| author | Andreas Grois <andi@grois.info> | 2023-04-02 22:40:29 +0200 |
|---|---|---|
| committer | Andreas Grois <andi@grois.info> | 2023-04-02 22:40:29 +0200 |
| commit | 7d1acb295b0dc9ebde45f6828d01baa8c6dce023 (patch) | |
| tree | 719be8654b94d7a775eb90d31c35ff919a44f023 /examples | |
| parent | 073c5319f4f2bfddd2bb4070b9f4ce346c407a2e (diff) | |
Example: Fix inconsistency in cashier handling.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/text-adventure/logic.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/examples/text-adventure/logic.rs b/examples/text-adventure/logic.rs index 3f05555..87ea8bb 100644 --- a/examples/text-adventure/logic.rs +++ b/examples/text-adventure/logic.rs @@ -217,7 +217,12 @@ fn handle_checkout<'a, 's: 'a>( 0 => { FreeSausageRoll::pure((Location::Shelves, inventory.clone())) }, 1 => { run!{ - r <= try_pay(inventory.clone()); + r <= if inventory.items.is_empty() { + let inventory = inventory.clone(); + exposition("You didn't take anything in the store, so you just walk past the cashier.").bind(move |_| FreeSausageRoll::pure(Ok(inventory.clone()))) as FreeSausageRoll<Result<Inventory, Inventory>> + } else { + try_pay(inventory.clone()) + }; match r { Ok(inventory) => { run!{ |
