org.jzuul.engine
Class GameMap

java.lang.Object
  extended byorg.jzuul.engine.GameMap

public class GameMap
extends Object

Diese Klasse bildet die Karte (das Raumgeflecht in dem sich der Spieler bewegen kann) in einem Spiel ab. Da durch die Struktur der Spieldateien es zulässt, das Wege ohne Room Objekte angelegt werden werden die Wege in einer Queue ähnlichen Struktur gehalten und erst zum schluss angelegt.

Version:
$Revision: 1.12 $

Nested Class Summary
private  class GameMap.QueueItem
          Diese Klasse implementiert einen in der Queue gehaltenen Weg.
 
Field Summary
protected  Map connectQueue
          Die Queue der Wege die noch angelegt werden müssen.
protected  Map gameMap
          Der interne speicher für die Karte, enthällt Raumname auf Room Objekt mappings.
protected  String name
          Der Name dieser Karte
protected  List npcList
          Die Liste der NPCs die sich in den Räumen aufhalten.
protected  String startRoom
          Der Name des Startraumes für diese Karte
 
Constructor Summary
GameMap(String name)
          Erstell ein neues GameMap Objekt
 
Method Summary
 void addInvToRoom(String raum, Inventory inv)
          Weist einem Raum eine Inventory Objekt zu.
 void addItemToRoom(String name, GameObject object)
          Fügt ein GameObject Objekt in einen Raum ein.
 void addItemToRoom(String name, String itemName)
          Deprecated. Sollte nicht mehr funktionieren, da die Methode versucht das Objekt zu instanzieeren
 void addRoom(Room raum)
          Fügt ein neues Room Objekt der Karte hinzu.
 void addRoom(Room raum, int direction, String ofRoom)
          Fügt einen Room Objekt und einen Weg der Karte hinzu
 void addRoom(String name, String description)
          Fügt einen Raum der Karte hinzu.
 void addRoom(String name, String description, int direction, String ofRoom)
          Fügt einen neuen Raum und einen Weg in die Karte ein.
 void addRoom(String name, String description, String typeOfRoom)
          Fügt einen neuen typisierten Raum zu der Karte hinzu.
 void addTransRoom(String name, String[] preconditions, boolean isFinal, String target)
          Fügt einen TransitionRoom in die Karte ein.
protected  void connect(String name, int direction, String ofName)
          Erstellt eine bidirektionale Verbindung zwischen zwei Räumen.
private  boolean connectionExists(String room1, String room2)
          Überpüft ob schon ein Weg zwischen Raum 1 und Raum 2 in der Queue existiert.
 void enqueueWay(String name, int direction, String ofRoomName)
          Fügt einen Weg in die Wegequeue ein falls dieser noch nicht existiert.
 String getName()
          Zugriff auf den Namen der Karte.
 List getNpcList()
          Gibt eine Liste der Character Objekte die sich in den Räumen befinden zurück
 Room getRandomRoom()
          Gibt einen beliebigen Raum aus der Karte zurück
 Room getRoom(String name)
          Zugriff auf einzelne Room Objekte
 String getStartRoom()
          Zugriff auf den Namen des Startraumes der Karte
 Room getStartRoomObj()
          Zugriff auf das Room Objekt des Startraumes
 void notifyRooms(int eventId)
          Teilt allen Räumen in der Karte ein Event mit
 void processQueue()
          Macht einen Verbindungsdurchlauf.
protected  void processQueue(String name, List seen)
          Erstellt alle Verbindungen für den gegebenen Raum.
 void setRoomEventHandler(String room, String eventName, EventHandler eventHandler)
          Setzt einem Raum einen EventHandler
 void setRoomImageStream(String roomName, InputStream imageStream)
          Weist einem Raum einen auf ein Bild verweisenden Stream zu
 void setStartRoom(String name)
          Setzt den Startraum für diese Karte
 void setWayDescription(String name, int direction, String description)
          Fügt eine Beschreibung für eine Himmelsrichtung einem Raum hinzu.
 void setWayDescription(String name, String north, String east, String south, String west)
          Deprecated. Benutzen wir das irgendwo?
 Element toElement()
          Wandelt die Karte in ein JDOM XML Element um.
 boolean verifyMap()
          Versucht einen kompletten Durchlauf durch die Karte und überpüft ob alle Räume erreicht werden können.
 void verifyMap(Room raum, List seen)
          Testet übergänge von einem Raum in andere.
private  boolean wayExists(String room1, String room2)
          Überprüft bidirektional ob schon ein Weg zwischen beiden Räumen in der Queue existiert.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

gameMap

protected Map gameMap
Der interne speicher für die Karte, enthällt Raumname auf Room Objekt mappings.


startRoom

protected String startRoom
Der Name des Startraumes für diese Karte


connectQueue

protected Map connectQueue
Die Queue der Wege die noch angelegt werden müssen. Enthällt Ausgangsraum auf QueueItem Mappings.


npcList

protected List npcList
Die Liste der NPCs die sich in den Räumen aufhalten.


name

protected String name
Der Name dieser Karte

Constructor Detail

GameMap

public GameMap(String name)
Erstell ein neues GameMap Objekt

Parameters:
name - der Name dieser Karte
Method Detail

addRoom

public void addRoom(String name,
                    String description,
                    int direction,
                    String ofRoom)
Fügt einen neuen Raum und einen Weg in die Karte ein.

Parameters:
name - der Name des neuen Raumes
description - die Beschreibung des neuen Raumes
direction - ein Richtung in der ein anderer Raum liegt
ofRoom - der Name des Raumes der in dieser Richtung liegt
See Also:
Directions

addRoom

public void addRoom(Room raum)
Fügt ein neues Room Objekt der Karte hinzu. Für diesen Raum müssen später noch Wege angelegt werden!

Parameters:
raum - ein Room Objekt das der Karte hinzugefügt werden soll.

addRoom

public void addRoom(Room raum,
                    int direction,
                    String ofRoom)
Fügt einen Room Objekt und einen Weg der Karte hinzu

Parameters:
raum - das Room Objekt das hinzugefügt werden soll
direction - die Richtung in der ein anderer Raum liegt
ofRoom - der Name des Raumes der in dieser Richtung liegt
See Also:
Directions

addRoom

public void addRoom(String name,
                    String description)
Fügt einen Raum der Karte hinzu. Für diesen Raum müssen später noch Wege angelegt werden!

Parameters:
name - der Name des neuen Raums
description - die Beschreibung des neuen Raums

addRoom

public void addRoom(String name,
                    String description,
                    String typeOfRoom)
Fügt einen neuen typisierten Raum zu der Karte hinzu. Für diesen Raum müssen später noch Wege angelegt werden!

Parameters:
name - der Name des neuen Raumes
description - die Beschreibung des neuen Raumes
typeOfRoom - der Typ (die Klasse) des neuen Raumes
See Also:
org.jzuul.engine.rooms

getRoom

public Room getRoom(String name)
Zugriff auf einzelne Room Objekte

Parameters:
name - der Name eines Raumes
Returns:
das Room Objekt falls der Raum existiert, null sonst

connectionExists

private boolean connectionExists(String room1,
                                 String room2)
Überpüft ob schon ein Weg zwischen Raum 1 und Raum 2 in der Queue existiert.

Parameters:
room1 - der Name eines Raumes
room2 - der Name eines Raumes
Returns:
true wenn es einen Weg in der Queue von room1 nach room2 gibt, false sonst.

wayExists

private boolean wayExists(String room1,
                          String room2)
Überprüft bidirektional ob schon ein Weg zwischen beiden Räumen in der Queue existiert.

Parameters:
room1 - der Name eines Raumes
room2 - der Name eines Raumes
Returns:
true wenn es einen Weg zwischen den beiden Räumen in der Queue gibt, false sonst

enqueueWay

public void enqueueWay(String name,
                       int direction,
                       String ofRoomName)
Fügt einen Weg in die Wegequeue ein falls dieser noch nicht existiert.

Parameters:
name - der Name des Ausgangsraumes
direction - die Richtung in der der Weg liegt
ofRoomName - der Name des Zielraumes.

processQueue

protected void processQueue(String name,
                            List seen)
Erstellt alle Verbindungen für den gegebenen Raum. Die Räume für die Verbindungen erstellt wurden werden aus der Liste gelöscht.

Parameters:
name - der Name des Raumes bei dem begonnen werden soll
seen - die Liste der noch nicht besuchten Räume

processQueue

public void processQueue()
Macht einen Verbindungsdurchlauf. Alle in der Wegequeue vorhandenen Wege werden angelegt.


connect

protected void connect(String name,
                       int direction,
                       String ofName)
Erstellt eine bidirektionale Verbindung zwischen zwei Räumen.

Parameters:
name - der Name des ersten Raumes
direction - die Richtung in der der Weg liegt
ofName - der Name des zweiten Raumes
See Also:
Directions

addItemToRoom

public void addItemToRoom(String name,
                          GameObject object)
                   throws NoSuchRoomException
Fügt ein GameObject Objekt in einen Raum ein.

Parameters:
name - der Name des Raumes
object - das GameObject Objekt das in den Raum eingefügt werden soll.
Throws:
NoSuchRoomException

addItemToRoom

public void addItemToRoom(String name,
                          String itemName)
                   throws NoSuchRoomException
Deprecated. Sollte nicht mehr funktionieren, da die Methode versucht das Objekt zu instanzieeren

Fügt ein Item Objekt in einen Raum ein

Parameters:
name - der Name des Raumes
itemName - der Name des Item Objektes
Throws:
NoSuchRoomException

setWayDescription

public void setWayDescription(String name,
                              int direction,
                              String description)
Fügt eine Beschreibung für eine Himmelsrichtung einem Raum hinzu.

Parameters:
name - der Name des Raumes
direction - die Himmelrichtung
description - die Beschreibung
See Also:
Directions

setWayDescription

public void setWayDescription(String name,
                              String north,
                              String east,
                              String south,
                              String west)
Deprecated. Benutzen wir das irgendwo?

Setzt die Beschreibung für alle Himmelrichtungen in einem bestimmten Raum

Parameters:
name - der Name des Raumes
north - die Beschreibung für Directions.NORTH
east - die Beschreibung für Directions.EAST
south - die Beschreibung für Directions.SOUTH
west - die Beschreibung für Directions.WEST

verifyMap

public void verifyMap(Room raum,
                      List seen)
Testet übergänge von einem Raum in andere. Die Räume für die Übergange existieren werden aus der Liste gelöscht.

Parameters:
raum - der Raum von dem aus die Übergange getestet werden sollen
seen - eine Liste von noch nicht besuchten Räumen.

verifyMap

public boolean verifyMap()
                  throws NoSuchRoomException,
                         ConnectAllRoomsFailed
Versucht einen kompletten Durchlauf durch die Karte und überpüft ob alle Räume erreicht werden können.

Returns:
True falls alle Räume erreicht werden können, false sonst
Throws:
NoSuchRoomException - falls ein Raum besucht werden soll der nicht existiert
ConnectAllRoomsFailed

setStartRoom

public void setStartRoom(String name)
Setzt den Startraum für diese Karte

Parameters:
name - der Name des Startraumes

toElement

public Element toElement()
Wandelt die Karte in ein JDOM XML Element um.

Returns:
ein JDOM XML Element das den aktuellen Stand der Karte wiederspiegelt

getRandomRoom

public Room getRandomRoom()
Gibt einen beliebigen Raum aus der Karte zurück

Returns:
ein beliebiger Raum aus der Karte

addInvToRoom

public void addInvToRoom(String raum,
                         Inventory inv)
                  throws NoSuchRoomException
Weist einem Raum eine Inventory Objekt zu.

Parameters:
raum - der Name des Raumes
inv - das Inventory Objekt das dem Raum gesetzt werden soll
Throws:
NoSuchRoomException

getNpcList

public List getNpcList()
Gibt eine Liste der Character Objekte die sich in den Räumen befinden zurück

Returns:
Liste von Character Objekten

addTransRoom

public void addTransRoom(String name,
                         String[] preconditions,
                         boolean isFinal,
                         String target)
Fügt einen TransitionRoom in die Karte ein.

Parameters:
name - der Name des Raumes
preconditions - die Namen von GameObject Objekten die Vorbedingungen für einen Übergang sind
isFinal - ist das das Ende des Spieles?
target - der Name der Zielkarte

getName

public String getName()
Zugriff auf den Namen der Karte.

Returns:
der Name der Karte

getStartRoom

public String getStartRoom()
Zugriff auf den Namen des Startraumes der Karte

Returns:
der Name des Startraumes.

getStartRoomObj

public Room getStartRoomObj()
Zugriff auf das Room Objekt des Startraumes

Returns:
das Room Objekt des Startraume, null wenn kein Startraum gesetzt ist

notifyRooms

public void notifyRooms(int eventId)
Teilt allen Räumen in der Karte ein Event mit

Parameters:
eventId - eine Id eines Events
See Also:
Event

setRoomEventHandler

public void setRoomEventHandler(String room,
                                String eventName,
                                EventHandler eventHandler)
Setzt einem Raum einen EventHandler

Parameters:
room - der Name des Raumes für den EventHandler
eventName - der Name des Events
eventHandler - das EventHandler Objekt das das Event behandelt
See Also:
Event

setRoomImageStream

public void setRoomImageStream(String roomName,
                               InputStream imageStream)
Weist einem Raum einen auf ein Bild verweisenden Stream zu

Parameters:
roomName - der Name des Raumes dem der Stream zugewiesen werden soll
imageStream - der Stream der auf das Bild verweist.


Copyright © 2004 JZuul.org All Rights Reserved.
This documentation may be distributed and/or modified under the terms of the FDL