public synchronized void tick() { if (!isFollowing()) return; if (isDemoMode()) { if (hasBeenDemoTrackingFor(DEMO_MODE_FOCUS_TIME_IN_SECONDS + DEMO_MODE_ZOOM_TIME_IN_SECONDS)) startTrackingRandomLivingThing(); else if (hasBeenDemoTrackingFor(DEMO_MODE_FOCUS_TIME_IN_SECONDS)) viewport.zoomOut(); } if (target.getLabel().equals("narjillo")) { Narjillo narjillo = (Narjillo) target; if (narjillo.isDead()) { if (isDemoMode()) startTrackingRandomLivingThing(); else { Thing nextClosestNarjillo = locator.findNarjilloAt(narjillo.getPosition()); if (nextClosestNarjillo == null) { stopTracking(); return; } else startTracking(nextClosestNarjillo); } } } if (target.getLabel().equals("egg")) { Narjillo hatched = ((Egg) target).getHatchedNarjillo(); if (hatched != null) startTracking(hatched); return; } if (target.getLabel().equals("food_pellet")) { Thing eater = ((FoodPellet) target).getEater(); if (eater != null) startTracking(eater); return; } viewport.centerOn(target); }
@Override protected String getTypeTag(Thing obj) { return obj.getLabel(); }