edu.umk.mat.merdacz.JGServer
Class Room

java.lang.Object
  extended byedu.umk.mat.merdacz.JGServer.Room

public class Room
extends java.lang.Object

In memory game room representation.

It should be probably reinvented in future, because at the moment it doesn't take care of NXD updates (which is actually done external in ServerThread. Tho It will need rewritting Game also :(

Author:
Marcin Daczkowski

Field Summary
private  java.lang.Class gamelet
          used to instantinate by ServerThread in its main while-loop TODO is it good to do sth like Class s = r.plugin.getClass() instead?
private  java.util.TreeSet invitations
          give, take away and modify invitations possible only for owner of channel
private  java.lang.Object lockInvitations
           
private  java.lang.Object lockPlayers
           
private  java.lang.Object lockPlugin
           
private  java.lang.String name
           
private  java.lang.String owner
           
private  Players players
           
private  Gamelet plugin
          used for keeping some per Room data like cache for boxes in Netris.
private  boolean roomState
          Used for two main purposes: 1) to auto leave players after it has been removed (they have to free reference in order to GC take care of it) 2) TODO to disallow new joins (is it important when we have 1) ?)
private  java.lang.String type
           
 
Constructor Summary
Room(java.lang.String name, java.lang.String owner, java.lang.String type, org.jdom.Element invitations)
          there are two essentialy diffrent scenarios of creating room first one is when the player wants to set up his room second when server is restarting. in second case we have to read data from NXD
 
Method Summary
 void broadcast(java.lang.String xmlToSend, Player playerToOmit)
           
 void delete()
          we have to destroy room when it is removed from array (Rooms class). destorying implies: removing internal objects (like plugin).
 java.lang.String getName()
           
 java.lang.String getOwner()
           
 java.lang.String getPlayersInRoom()
          yeah !
 void grantInvite(java.lang.String playerName)
           
 boolean isRemoved()
           
 boolean join(Player p)
           
 void leave(Player p)
           
 java.lang.String parseRequest(Player player, org.jdom.Document doc)
          Because in most games some data must be shared, or be persistent between requests we need to be aware that some synchronization must be made.
 void removeMe()
           
 void setGamelet(java.lang.Class gamelet)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

players

private Players players

name

private java.lang.String name

owner

private java.lang.String owner

type

private java.lang.String type

lockPlayers

private java.lang.Object lockPlayers

lockPlugin

private java.lang.Object lockPlugin

lockInvitations

private java.lang.Object lockInvitations

invitations

private java.util.TreeSet invitations
give, take away and modify invitations possible only for owner of channel


plugin

private Gamelet plugin
used for keeping some per Room data like cache for boxes in Netris. And for parsing specific per game requests.


gamelet

private java.lang.Class gamelet
used to instantinate by ServerThread in its main while-loop TODO is it good to do sth like Class s = r.plugin.getClass() instead? TODO getter + synchronized? (only reading) -> return new Class ga..


roomState

private boolean roomState
Used for two main purposes: 1) to auto leave players after it has been removed (they have to free reference in order to GC take care of it) 2) TODO to disallow new joins (is it important when we have 1) ?)

Constructor Detail

Room

public Room(java.lang.String name,
            java.lang.String owner,
            java.lang.String type,
            org.jdom.Element invitations)
there are two essentialy diffrent scenarios of creating room first one is when the player wants to set up his room second when server is restarting. in second case we have to read data from NXD

Parameters:
name -
owner -
type -
Method Detail

join

public boolean join(Player p)
Parameters:
p -

leave

public void leave(Player p)
Parameters:
p -

grantInvite

public void grantInvite(java.lang.String playerName)

setGamelet

public void setGamelet(java.lang.Class gamelet)
Parameters:
gamelet -

delete

public void delete()
we have to destroy room when it is removed from array (Rooms class). destorying implies: removing internal objects (like plugin). and informing all Players that the room they are in has been removed. destroying room doesn't check credentials (should it?) beacuse they were checked when removing from array (should be -> not yet)


getName

public java.lang.String getName()
Returns:

getOwner

public java.lang.String getOwner()
Returns:

isRemoved

public boolean isRemoved()
Returns:

removeMe

public void removeMe()

parseRequest

public java.lang.String parseRequest(Player player,
                                     org.jdom.Document doc)
Because in most games some data must be shared, or be persistent between requests we need to be aware that some synchronization must be made. Unless we don't want plugins developers to have a lot of mess with synchronizing this per room synchronized parseRequest has been written.

Parameters:
player -
doc -
Returns:

broadcast

public void broadcast(java.lang.String xmlToSend,
                      Player playerToOmit)
               throws java.io.IOException
Parameters:
xmlToSend -
playerToOmit -
Throws:
java.io.IOException

toString

public java.lang.String toString()

getPlayersInRoom

public java.lang.String getPlayersInRoom()
yeah ! yeah! yeah!

Returns: