Example #1
0
 private void restart() {
   currentTrajectory = new Trajectory(ColorGenerator.getInstance().next());
   gameOver = false;
   ball.setPosition(new Point(INITIAL_BALL_POSITION));
   currentTrajectory.addPoint(ball.getPosition());
   synchronized (trajectoriesLock) {
     trajectories.add(currentTrajectory);
   }
   renderer.getTrajectoriesTableModel().addElement(currentTrajectory);
 }
Example #2
0
 public static void main(String[] args) {
   MobileFactory mf;
   Mobile m;
   mf = new MotorolaFactory();
   m = mf.produceMobile();
   m.call();
   mf = new NokiaFactory();
   m = mf.produceMobile();
   m.call();
 }
Example #3
0
  public static Item createEquipped(Mobile on, int graphic, int hue) {
    long serial = ObjectRegistry.get().registerItemSerial();

    Item item = new Item(serial, graphic);
    item.setParent(on);
    item.setHue(hue);
    item.setLocation(new Point3D(0, 0, 0));
    ObjectRegistry.get().registerObject(item);
    on.equipItem(item);

    return item;
  }
Example #4
0
 private void clearTrajectories() {
   synchronized (trajectoriesLock) {
     trajectories.clear();
   }
   renderer.getTrajectoriesTableModel().removeAllElements();
   currentTrajectory = new Trajectory(ColorGenerator.getInstance().current());
   if (!gameOver) {
     currentTrajectory.addPoint(ball.getPosition());
     synchronized (trajectoriesLock) {
       trajectories.add(currentTrajectory);
     }
     renderer.getTrajectoriesTableModel().addElement(currentTrajectory);
   }
 }
Example #5
0
 @Override
 public void update(GameContainer gc, int delta) throws SlickException {
   super.update(gc, delta);
   super.ai.action(this);
   // currentAnim = "walking";
 }
  @Override
  public boolean tick(Tickable ticking, int tickID) {
    tickStatus = Tickable.STATUS_MISC + 0;
    super.tick(ticking, tickID);

    tickStatus = Tickable.STATUS_MISC + 1;
    if (tickID != Tickable.TICKID_MOB) {
      tickStatus = Tickable.STATUS_NOT;
      return true;
    }
    if (!canFreelyBehaveNormal(ticking)) {
      tickStatus = Tickable.STATUS_NOT;
      return true;
    }
    final MOB mob = (MOB) ticking;

    // ridden things dont wander!
    if (ticking instanceof Rideable)
      if (((Rideable) ticking).numRiders() > 0) {
        tickStatus = Tickable.STATUS_NOT;
        return true;
      }
    tickStatus = Tickable.STATUS_MISC + 2;
    if (((mob.amFollowing() != null) && (mob.location() == mob.amFollowing().location()))
        || (!CMLib.flags().canTaste(mob))) {
      tickStatus = Tickable.STATUS_NOT;
      return true;
    }

    tickStatus = Tickable.STATUS_MISC + 3;
    final Room thisRoom = mob.location();
    MOB victim = GoodGuardian.anyPeaceToMake(mob.location(), mob);
    GoodGuardian.keepPeace(mob, victim);
    victim = null;
    int dirCode = -1;
    tickStatus = Tickable.STATUS_MISC + 4;
    for (int d = Directions.NUM_DIRECTIONS() - 1; d >= 0; d--) {
      tickStatus = Tickable.STATUS_MISC + 5 + d;
      final Room room = thisRoom.getRoomInDir(d);
      final Exit exit = thisRoom.getExitInDir(d);
      if ((room != null) && (exit != null) && (okRoomForMe(mob, thisRoom, room, false))) {
        tickStatus = Tickable.STATUS_MISC + 20 + d;
        if (exit.isOpen()) {
          tickStatus = Tickable.STATUS_MISC + 40 + d;
          victim = GoodGuardian.anyPeaceToMake(room, mob);
          if (victim != null) {
            dirCode = d;
            break;
          }
          tickStatus = Tickable.STATUS_MISC + 60 + d;
        }
        tickStatus = Tickable.STATUS_MISC + 80 + d;
      }
      if (dirCode >= 0) break;
      tickStatus = Tickable.STATUS_MISC + 100 + d;
    }
    tickStatus = Tickable.STATUS_MISC + 120;
    if ((dirCode >= 0) && (!CMSecurity.isDisabled(CMSecurity.DisFlag.MOBILITY))) {
      tickStatus = Tickable.STATUS_MISC + 121;
      CMLib.tracking().walk(mob, dirCode, false, false);
      tickStatus = Tickable.STATUS_MISC + 122;
      GoodGuardian.keepPeace(mob, victim);
      tickStatus = Tickable.STATUS_MISC + 123;
    }
    tickStatus = Tickable.STATUS_NOT;
    return true;
  }
Example #7
0
  private void update() {
    if (renderer.shouldRestart()) {
      restart();

      renderer.setSpeedX(0.0);
      renderer.setSpeedY(0.0);
      renderer.setMagnusForce(0.0);
      renderer.refreshInformationPanel();

      renderer.resetRestartFlag();
      renderer.stop();
    }
    if (renderer.shouldClearTrajectories()) {
      clearTrajectories();
      renderer.resetClearTrajectoriesFlag();
    }
    if (renderer.hasStarted()) {
      if (!gameOver) {
        synchronized (ballLock) {
          Vector gravitationalForce = new Vector(0.0, -9.81 * ball.getMass());
          Vector frictionForce = Vector.product(-dragCoefficient, ball.getSpeed());
          Vector magnusForceTmp =
              Vector.product(MAGNUS_COEFFICIENT * ball.getFrequency(), ball.getSpeed());
          Vector magnusForce = new Vector(-magnusForceTmp.y, magnusForceTmp.x);

          renderer.setSpeedX(ball.getSpeed().x);
          renderer.setSpeedY(ball.getSpeed().y);
          renderer.setMagnusForce(magnusForce.length());
          renderer.refreshInformationPanel();

          ball.applyForce(Vector.sum(Vector.sum(gravitationalForce, frictionForce), magnusForce));
          ball.update();
          if (ball.getPosition().x <= 0.0) {
            gameOver = true;
          }
          double dy = ball.getPosition().y - ball.getSize().y / 2 - GROUND_Y;
          if (dy <= 0.0) {
            double t = dy / ball.getSpeed().y;
            double dx = t * ball.getSpeed().x;
            Point newPosition = ball.getPosition();
            newPosition.x -= dx;
            newPosition.y -= dy;
            ball.setPosition(newPosition);
            gameOver = true;
          }
          currentTrajectory.addPoint(ball.getPosition());

          renderer.getTrajectoriesTableModel().refreshCell(trajectories.size() - 1, 1);
          renderer.getTrajectoriesTableModel().refreshCell(trajectories.size() - 1, 2);
        }
      }
    } else {
      double initialSpeedX = renderer.getInitialSpeed() * Math.cos(renderer.getInitialDirection());
      double initialSpeedY = renderer.getInitialSpeed() * Math.sin(renderer.getInitialDirection());
      dragCoefficient = renderer.getDragCoefficient();
      synchronized (ballLock) {
        ball.setSpeed(new Vector(initialSpeedX, initialSpeedY));
        ball.setFrequency(renderer.getFrequency());
      }
    }
  }