From 98fbfb9d546f54760ed7f0d6e7a3f3a354578d35 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Fri, 18 May 2012 16:50:38 +0200 Subject: digital/io-hub/src/guybrush: report really bad failure --- digital/io-hub/src/guybrush/strat.c | 14 ++++++++++++++ digital/io-hub/src/guybrush/strat.h | 4 ++++ digital/io-hub/src/guybrush/top.c | 1 + 3 files changed, 19 insertions(+) (limited to 'digital/io-hub/src') diff --git a/digital/io-hub/src/guybrush/strat.c b/digital/io-hub/src/guybrush/strat.c index b18fb74e..ab3c3f8e 100644 --- a/digital/io-hub/src/guybrush/strat.c +++ b/digital/io-hub/src/guybrush/strat.c @@ -276,6 +276,20 @@ strat_failure (void) } } +void +strat_bad_failure (void) +{ + switch (strat.last_decision) + { + default: + if (strat.place[strat.last_place].fail_nb < 256 - 20) + strat.place[strat.last_place].fail_nb += 20; + break; + case STRAT_DECISION_UNLOAD: + break; + } +} + void strat_giveup (void) { diff --git a/digital/io-hub/src/guybrush/strat.h b/digital/io-hub/src/guybrush/strat.h index 96649d7d..4f3465c4 100644 --- a/digital/io-hub/src/guybrush/strat.h +++ b/digital/io-hub/src/guybrush/strat.h @@ -57,6 +57,10 @@ strat_success (void); void strat_failure (void); +/** Report a really bad failure. */ +void +strat_bad_failure (void); + /** Report a failure of last decision, never try again. */ void strat_giveup (void); diff --git a/digital/io-hub/src/guybrush/top.c b/digital/io-hub/src/guybrush/top.c index de27f28b..eb1cc0a5 100644 --- a/digital/io-hub/src/guybrush/top.c +++ b/digital/io-hub/src/guybrush/top.c @@ -337,6 +337,7 @@ FSM_TRANS (TOP_CLAMP_ERROR_DECISION, clamp_blocked, else { strat_clamp_dead (); + strat_bad_failure (); FSM_HANDLE (AI, clamp_is_dead); return FSM_NEXT (TOP_CLAMP_ERROR_DECISION, clamp_blocked, dead); } -- cgit v1.2.3