summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/guybrush/strat.c
diff options
context:
space:
mode:
authorNicolas Schodet2012-05-06 16:01:02 +0200
committerNicolas Schodet2012-05-07 16:31:46 +0200
commitc82623b6b12153e697e2226a56ce44773875a3d0 (patch)
tree4ab73c155bfe2e33415ae7da6c5421eb37472306 /digital/io-hub/src/guybrush/strat.c
parentf78d43b5767db1ef7e39c871202851fc5d5360c9 (diff)
digital/io-hub/src/guybrush: push bottle
Diffstat (limited to 'digital/io-hub/src/guybrush/strat.c')
-rw-r--r--digital/io-hub/src/guybrush/strat.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/digital/io-hub/src/guybrush/strat.c b/digital/io-hub/src/guybrush/strat.c
index 6ed38d01..a59fb4e1 100644
--- a/digital/io-hub/src/guybrush/strat.c
+++ b/digital/io-hub/src/guybrush/strat.c
@@ -40,6 +40,11 @@ enum
STRAT_PLACE_TOTEM1,
STRAT_PLACE_TOTEM2,
STRAT_PLACE_TOTEM3,
+ /** Message in a bottle. */
+ STRAT_PLACE_BOTTLE0,
+ STRAT_PLACE_BOTTLE1,
+ STRAT_PLACE_BOTTLE2,
+ STRAT_PLACE_BOTTLE3,
/** Number of places, should be last. */
STRAT_PLACE_NB
};
@@ -63,6 +68,10 @@ static const struct strat_place_t strat_place[STRAT_PLACE_NB] = {
PG_LENGTH / 2 - PATH_TOTEM_CLEAR_MM }, 100, STRAT_DECISION_TOTEM },
{ { PG_WIDTH / 2 + PG_TOTEM_X_OFFSET_MM,
PG_LENGTH / 2 - PATH_TOTEM_CLEAR_MM }, 100, STRAT_DECISION_TOTEM },
+ { { PG_BOTTLE0_X, BOT_SIZE_RADIUS + 70 }, 100, STRAT_DECISION_BOTTLE },
+ { { PG_BOTTLE1_X, BOT_SIZE_RADIUS + 70 }, 100, STRAT_DECISION_BOTTLE },
+ { { PG_BOTTLE2_X, BOT_SIZE_RADIUS + 70 }, 100, STRAT_DECISION_BOTTLE },
+ { { PG_BOTTLE3_X, BOT_SIZE_RADIUS + 70 }, 100, STRAT_DECISION_BOTTLE },
};
/** Place dynamic information. */
@@ -93,6 +102,16 @@ strat_init (void)
strat.last_decision = -1;
for (i = 0; i < STRAT_PLACE_NB; i++)
strat.place[i].valid = 1;
+ if (team_color)
+ {
+ strat.place[STRAT_PLACE_BOTTLE1].valid = 0;
+ strat.place[STRAT_PLACE_BOTTLE3].valid = 0;
+ }
+ else
+ {
+ strat.place[STRAT_PLACE_BOTTLE0].valid = 0;
+ strat.place[STRAT_PLACE_BOTTLE2].valid = 0;
+ }
}
uint8_t
@@ -126,8 +145,10 @@ strat_success (void)
switch (strat.last_decision)
{
case STRAT_DECISION_TOTEM:
- strat.place[strat.last_place].valid = 0;
strat.load++;
+ /* no break; */
+ case STRAT_DECISION_BOTTLE:
+ strat.place[strat.last_place].valid = 0;
break;
case STRAT_DECISION_UNLOAD:
strat.load = 0;