Package world

Source Code of world.PlayerManager

package world;

import java.util.HashSet;
import java.util.Observable;
import java.util.Observer;

import network.MCConnection;
import packets.SPacket;
import packets.s2cpackets.S0x14;

import entities.Player;
import exceptions.MCConnectionException;


/**
* The playermanager will keep track of the logged in players.
*/
public class PlayerManager extends WorldStateMonitor implements Observer {

  private HashSet<Player> players = new HashSet<Player>();
 
  public PlayerManager(WorldState state) {
    super(state);
  }

  @Override
  public void update(Observable o, Object arg) {
    // TODO Auto-generated method stub
  }

 
  /**
   * To be called once the player has succesfully logged in.
   * It will start sending all nececariy post-login data to
   * the player.
   * @throws MCConnectionException
   */
  public void registerPlayer(Player player) throws MCConnectionException {
    this.players.add(player);
    player.addObserver(this);
   
    /**
     * Send packet to all others
     */
    sendOthersToOne(player);
    sendToOthers(player);
   
    state.chatmanager().newMessage(player.getName() + " joined the game.");
  }

 
  /**
   * To be called once the player has left the server.
   * It will start sending all nececariy instructions to the other players
   * in order to remove this player.
   */
  public void deregisterPlayer(Player player) {
    player.deleteObserver(this);
    this.players.remove(player);
   
    state.chatmanager().newMessage(player.getName() + " disconnected.");
  }
 
 
 
 
  /**

   *
   * @param playerconnection Player to send all other known entities to.
   * @throws MCConnectionException
   */
  private void sendOthersToOne(Player player) throws MCConnectionException {
    for(Player otherplayer : players) {
      if(otherplayer != player) {
        SPacket p = new S0x14(otherplayer);
        getWorldState().connectionManager().sendPacketTo(player, p);
      }
    }
  }
 
  /**
   * Informs all players that onther player (object) has joined the server.
   * Its initial state is sent to all others.
   *
   * @param player Connected player which will be added to all logged in player.
   */
  private void sendToOthers(Player player) {
    SPacket p = new S0x14(player);
    getWorldState().connectionManager().sendPacketToAllOthers(p, player);
  }


 
}
TOP

Related Classes of world.PlayerManager

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.