summaryrefslogtreecommitdiffhomepage
path: root/digital/io-hub/src/apbirthday
diff options
context:
space:
mode:
authorNicolas Schodet2013-05-09 09:29:25 +0200
committerNicolas Schodet2013-05-09 09:29:25 +0200
commita00a678a0ffec752028d500b587c5b8a63c6705a (patch)
tree09842041912deb0b6b8bd9215fee4c22c1b28424 /digital/io-hub/src/apbirthday
parent35fcb4c2e26c08177ceb7b98a20325e8c14ccf40 (diff)
digital/io-hub/src/apbirthday: fix double candle push
Diffstat (limited to 'digital/io-hub/src/apbirthday')
-rw-r--r--digital/io-hub/src/apbirthday/candles.cc33
1 files changed, 14 insertions, 19 deletions
diff --git a/digital/io-hub/src/apbirthday/candles.cc b/digital/io-hub/src/apbirthday/candles.cc
index 6139efc1..f0944818 100644
--- a/digital/io-hub/src/apbirthday/candles.cc
+++ b/digital/io-hub/src/apbirthday/candles.cc
@@ -274,20 +274,8 @@ FSM_TRANS (AI_CANDLE_READY, ai_candle_blow, AI_CANDLE_READY)
{
if (robot->candles.actual_pos[i] != -1)
{
- // We can already punch if we know the color.
- if (robot->candles.state[robot->candles.actual_pos[i]] == Candles::UNPUNCHED
- && (robot->candles.color[robot->candles.actual_pos[i]] == (Candles::Color) team_color
- || robot->candles.color[robot->candles.actual_pos[i]] == Candles::WHITE))
- {
- if (Candles::is_far (robot->candles.actual_pos[i]))
- FSM_HANDLE (AI, ai_candle_far_punch);
- else
- FSM_HANDLE (AI, ai_candle_near_punch);
- robot->candles.state[robot->candles.actual_pos[i]] = Candles::PUNCHED;
- robot->candles.actual_pos[i] = -1;
- }
- // We need to analyse color.
- else if (robot->candles.color[robot->candles.actual_pos[i]] == Candles::UNKNOWN)
+ // Analyse color if needed.
+ if (robot->candles.color[robot->candles.actual_pos[i]] == Candles::UNKNOWN)
{
if (Candles::is_far (robot->candles.actual_pos[i]))
{
@@ -296,8 +284,6 @@ FSM_TRANS (AI_CANDLE_READY, ai_candle_blow, AI_CANDLE_READY)
robot->candles.color[robot->candles.actual_pos[i]] = Candles::RED;
else if (c == Rgb::BLUE)
robot->candles.color[robot->candles.actual_pos[i]] = Candles::BLUE;
- if (robot->candles.color[robot->candles.actual_pos[i]] == (Candles::Color) team_color)
- FSM_HANDLE (AI, ai_candle_far_punch);
}
else
{
@@ -306,11 +292,20 @@ FSM_TRANS (AI_CANDLE_READY, ai_candle_blow, AI_CANDLE_READY)
robot->candles.color[robot->candles.actual_pos[i]] = Candles::RED;
else if (c == Rgb::BLUE)
robot->candles.color[robot->candles.actual_pos[i]] = Candles::BLUE;
- if (robot->candles.color[robot->candles.actual_pos[i]] == (Candles::Color) team_color)
- FSM_HANDLE (AI, ai_candle_near_punch);
-
}
}
+ // We can already punch if we know the color.
+ if (robot->candles.state[robot->candles.actual_pos[i]] == Candles::UNPUNCHED
+ && (robot->candles.color[robot->candles.actual_pos[i]] == (Candles::Color) team_color
+ || robot->candles.color[robot->candles.actual_pos[i]] == Candles::WHITE))
+ {
+ if (Candles::is_far (robot->candles.actual_pos[i]))
+ FSM_HANDLE (AI, ai_candle_far_punch);
+ else
+ FSM_HANDLE (AI, ai_candle_near_punch);
+ robot->candles.state[robot->candles.actual_pos[i]] = Candles::PUNCHED;
+ }
+ robot->candles.actual_pos[i] = -1;
}
}
}