Package org.moparscape.msc.gs.builders.client

Source Code of org.moparscape.msc.gs.builders.client.NpcPositionPacketBuilder

package org.moparscape.msc.gs.builders.client;

import java.util.Collection;

import org.moparscape.msc.gs.builders.RSCPacketBuilder;
import org.moparscape.msc.gs.connection.RSCPacket;
import org.moparscape.msc.gs.model.Npc;
import org.moparscape.msc.gs.model.Player;
import org.moparscape.msc.gs.tools.DataConversions;
import org.moparscape.msc.gs.util.StatefulEntityCollection;

public class NpcPositionPacketBuilder {
  private Player playerToUpdate;

  public RSCPacket getPacket() {
    StatefulEntityCollection<Npc> watchedNpcs = playerToUpdate
        .getWatchedNpcs();
    Collection<Npc> newNpcs = watchedNpcs.getNewEntities();
    Collection<Npc> knownNpcs = watchedNpcs.getKnownEntities();

    RSCPacketBuilder packet = new RSCPacketBuilder();
    packet.setID(77);
    packet.addBits(knownNpcs.size(), 8);
    for (Npc n : knownNpcs) {
      packet.addBits(n.getIndex(), 16);
      if (watchedNpcs.isRemoving(n)) {
        packet.addBits(1, 1);
        packet.addBits(1, 1);
        packet.addBits(12, 4);
      } else if (n.hasMoved()) {
        packet.addBits(1, 1);
        packet.addBits(0, 1);
        packet.addBits(n.getSprite(), 3);
      } else if (n.spriteChanged()) {
        packet.addBits(1, 1);
        packet.addBits(1, 1);
        packet.addBits(n.getSprite(), 4);
      } else {
        packet.addBits(0, 1);
      }
    }
    for (Npc n : newNpcs) {
      byte[] offsets = DataConversions.getMobPositionOffsets(
          n.getLocation(), playerToUpdate.getLocation());
      packet.addBits(n.getIndex(), 16);
      packet.addBits(offsets[0], 5);
      packet.addBits(offsets[1], 5);
      packet.addBits(n.getSprite(), 4);
      packet.addBits(n.getID(), 10);
    }
    return packet.toPacket();
  }

  /**
   * Sets the player to update
   */
  public void setPlayer(Player p) {
    playerToUpdate = p;
  }
}
TOP

Related Classes of org.moparscape.msc.gs.builders.client.NpcPositionPacketBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.