+void
+Kugelblitz::try_activate()
+{
+ // Much smaller offscreen distances to pop out of nowhere and surprise Tux
+ float X_OFFSCREEN_DISTANCE = 400;
+ float Y_OFFSCREEN_DISTANCE = 600;
+
+ Player* player = get_nearest_player();
+ if (!player) return;
+ Vector dist = player->get_bbox().get_middle() - get_bbox().get_middle();
+ if ((fabsf(dist.x) <= X_OFFSCREEN_DISTANCE) && (fabsf(dist.y) <= Y_OFFSCREEN_DISTANCE)) {
+ set_state(STATE_ACTIVE);
+ if (!is_initialized) {
+
+ // if starting direction was set to AUTO, this is our chance to re-orient the badguy
+ if (start_dir == AUTO) {
+ Player* player = get_nearest_player();
+ if (player && (player->get_bbox().p1.x > get_bbox().p2.x)) {
+ dir = RIGHT;
+ } else {
+ dir = LEFT;
+ }
+ }
+
+ initialize();
+ is_initialized = true;
+ }
+ activate();
+ }
+}
+
+/* EOF */