Package org.moparscape.msc.gs.phandler.client

Source Code of org.moparscape.msc.gs.phandler.client.FriendHandler

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

import java.util.ArrayList;

import org.apache.mina.common.IoSession;
import org.moparscape.msc.gs.Instance;
import org.moparscape.msc.gs.alert.AlertHandler;
import org.moparscape.msc.gs.builders.ls.MiscPacketBuilder;
import org.moparscape.msc.gs.connection.Packet;
import org.moparscape.msc.gs.connection.RSCPacket;
import org.moparscape.msc.gs.model.Player;
import org.moparscape.msc.gs.model.World;
import org.moparscape.msc.gs.model.snapshot.Activity;
import org.moparscape.msc.gs.model.snapshot.Chatlog;
import org.moparscape.msc.gs.phandler.PacketHandler;
import org.moparscape.msc.gs.tools.DataConversions;
import org.moparscape.msc.gs.util.Logger;

public class FriendHandler implements PacketHandler {
  /**
   * World instance
   */
  public static final World world = Instance.getWorld();
  private MiscPacketBuilder loginSender = Instance.getServer()
      .getLoginConnector().getActionSender();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int pID = ((RSCPacket) p).getID();

    long user = player.getUsernameHash();
    long friend = p.readLong();
    switch (pID) {
    case 168: // Add friend
      if (player.friendCount() >= 200) {
        player.getActionSender().sendMessage(
            "Your friend list is too full");
        return;
      }
      loginSender.addFriend(user, friend);
      player.addFriend(friend, 0);
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " added friend "
          + DataConversions.hashToUsername(friend)
          + " at: "
          + player.getX() + "/" + player.getY()));

      break;
    case 52: // Remove friend
      loginSender.removeFriend(user, friend);
      player.removeFriend(friend);
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " removed friend "
          + DataConversions.hashToUsername(friend)
          + " at: "
          + player.getX() + "/" + player.getY()));

      break;
    case 25: // Add ignore
      if (player.ignoreCount() >= 200) {
        player.getActionSender().sendMessage(
            "Your ignore list is too full");
        return;
      }
      loginSender.addIgnore(user, friend);
      player.addIgnore(friend);
      break;
    case 108: // Remove ignore
      loginSender.removeIgnore(user, friend);
      player.removeIgnore(friend);
      break;
    case 254: // Send PM
      try {
        byte[] data = p.getRemainingData();
        String s = DataConversions.byteToString(data, 0, data.length);
        s = s.toLowerCase();
        String k = s;
        s = s.replace(" ", "");
        s = s.replace(".", "");
        if (s.contains("runeblast")) {
          Logger.println(player.getUsername() + " pmed "
              + DataConversions.hashToUsername(friend) + ":" + k);
          AlertHandler.sendAlert(player.getUsername() + " pmed "
              + DataConversions.hashToUsername(friend) + ":" + k,
              2);
          return;
        }
        ArrayList<String> temp = new ArrayList<String>();
        temp.add(DataConversions.hashToUsername(friend));
        world.addEntryToSnapshots(new Chatlog(player.getUsername(),
            "(PM) " + k, temp));

        loginSender.sendPM(user, friend, player.isPMod(), data);
      } catch (NegativeArraySizeException e) {
        player.destroy(false);
      }
      break;
    }
  }

}
TOP

Related Classes of org.moparscape.msc.gs.phandler.client.FriendHandler

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.