fix: eating stew
This commit is contained in:
1 parent
aab128b55c
commit
0c4ca0e4f9
2 files changed
+18
-1
No files matched your search
+17
@@ -55,9 +55,26 @@ func (s *wifesGlobalState) Execute(e *Elsa) {
|
||||
// specifically because she should react to it "when in any state,"
|
||||
// same reasoning as why the bathroom-call check above lives in the
|
||||
// global state rather than in DoHousework.
|
||||
//
|
||||
// One guard we added that the book's snippet didn't show: if Bob
|
||||
// comes home again while a stew is already in the oven (his fatigue
|
||||
// or thirst can send him home more than once before her 1.5-second
|
||||
// cooking timer fires), this used to unconditionally call
|
||||
// ChangeState(CookStew()) even though she was already IN CookStew.
|
||||
// That triggered a pointless Exit-then-Enter round trip on the same
|
||||
// state - CookStew.Exit fired (printing "Puttin' the stew on the
|
||||
// table" while the stew was still cooking!) and then Enter's
|
||||
// "!e.Cooking()" check correctly skipped starting a second stew, so
|
||||
// nothing useful happened, just a confusing extra print. Checking
|
||||
// Cooking() first avoids the whole misfire.
|
||||
func (s *wifesGlobalState) OnMessage(e *Elsa, msg Telegram) bool {
|
||||
switch MessageType(msg.Msg) {
|
||||
case MsgHiHoneyImHome:
|
||||
if e.Cooking() {
|
||||
// already got dinner covered - nothing new to do
|
||||
return true
|
||||
}
|
||||
|
||||
fmt.Printf("\nMessage handled by %s at time: %.5f", GetNameOfEntity(e.ID()), Clock.GetCurrentTime())
|
||||
fmt.Printf("\n%s: Hi honey. Let me make you some of mah fine country stew", GetNameOfEntity(e.ID()))
|
||||
e.FSM().ChangeState(CookStew())
|
||||
|
||||
Reference in new issue
Block a user