Пример #1
0
  @Override
  public void execute(GameEngine context) {
    Queue<ChatMessage> messages = player.getChatMessageQueue();
    if (messages.size() > 0) {
      player.getUpdateFlags().flag(UpdateFlag.CHAT);
      ChatMessage message = player.getChatMessageQueue().poll();
      player.setCurrentChatMessage(message);
    } else {
      player.setCurrentChatMessage(null);
    }

    if (player.getCombatState().getAttackDelay() > 0) {
      player.getCombatState().decreaseAttackDelay(1);
    }
    if (player.getCombatState().getSpellDelay() > 0) {
      player.getCombatState().decreaseSpellDelay(1);
    }
    if (player.getCombatState().getWeaponSwitchTimer() > 0) {
      player.getCombatState().decreaseWeaponSwitchTimer(1);
    }
    if (player.getCombatState().getSkullTicks() > 0) {
      player.getCombatState().decreaseSkullTicks(1);
    }

    /*
     * Gets the next two hits from the queue.
     */
    List<Hit> hits = player.getHitQueue();
    Hit first = null;
    if (hits.size() > 0) {
      for (int i = 0; i < hits.size(); i++) {
        Hit hit = hits.get(i);
        if (hit.getDelay() < 1) {
          first = hit;
          hits.remove(hit);
          break;
        }
      }
    }
    if (first != null) {
      player.setPrimaryHit(first);
      player.getUpdateFlags().flag(UpdateFlag.HIT);
    }
    Hit second = null;
    if (hits.size() > 0) {
      for (int i = 0; i < hits.size(); i++) {
        Hit hit = hits.get(i);
        if (hit.getDelay() < 1) {
          second = hit;
          hits.remove(hit);
          break;
        }
      }
    }
    if (second != null) {
      player.setSecondaryHit(second);
      player.getUpdateFlags().flag(UpdateFlag.HIT_2);
    }
    if (hits.size() > 0) { // tells us we still have more hits
      Iterator<Hit> hitIt = hits.iterator();
      while (hitIt.hasNext()) {
        Hit hit = hitIt.next();
        if (hit.getDelay() > 0) {
          hit.setDelay(hit.getDelay() - 1);
        }
        if (hit.getHitPriority() == HitPriority.LOW_PRIORITY) {
          hitIt.remove();
        }
      }
    }

    player.getWalkingQueue().processNextMovement();
  }