org.jzuul.engine
Class Engine

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

public class Engine
extends Object

Die Hauptklasse des JZuul Engines

Version:
$Revision: 1.42 $

Nested Class Summary
private  class Engine.BefehlListener
          Der default ActionListener des spieles, behandelt die normalen Befehle des spieles.
protected  class Engine.MyHistRun
          Diese Klasse ist für den Ablauf der History zuständig.
private  class Engine.NPCThread
          Diese Klasse wird verwendet um die NPCs in einem Thread laufen zu lassen
private  class Engine.PlayerNameListener
          Diese Klasse wird verwendet um bei einem Spiel mit Spielernamen den Spielernamen zu ermitteln
private  class Engine.RingVector
          Diese Klasse implementiert einen ringförmigen Vector
private  class Engine.SaveTimer
          Diese Klasse wird verwendet um alle 5 Minuten zu speichern
private  class Engine.SpecialKeyListener
          KeyListener für die Spezialtasten.
private  class Engine.TimerEventNotifier
          Diese Klasse wird verwendet um das Event.TIMER auszulösen.
 
Field Summary
private static List commandHistory
          Eine Liste der eingegebenen Befehle, bereinigt von nicht bekannten.
private  String[] commandNames
          Die Namen aller aktiven Befehle
static Map commands
          Eine Map die ein Mapping von befehl auf Command Objekt enthällt
private  Vector completions
          Befehle die für die Befehlscompletition verwendet werden
static int DEBUG
          Der Debug flag des Engines
static String gamefile
          Der Dateiname der Spieldatei
static GuiInterface gui
          Das GUI des Engines
private  int historyPos
          Die aktuelle Position in der Befehlshistory
private static Engine instance
           
static GameMap map
          Die aktuelle Spielkarte
private static int MAX_DEBUG
          Der maximal erlaubte Debug wert
private static Engine.NPCThread npcRunner
          Der Thread der für NPCs Benutzt wird, falls dies aktiviert ist, null sonst
private  List NPCs
          Eine Liste von Character Objekten
static Map objectPool
          Der globale ObjektPool, enthällt alle GameObjects die im Spiel enthalten sind
static Player player
          Das Spielerobjekt des Spieles.
static Engine.RingVector players
          Ein RingVector von Player Objekten, falls das Spiel im Multiplayer läuft, sonst null
private  GameFileReader reader
          Den GameFileReader den das Engine benutzt
private  boolean threadedNpcs
          Sollen die NPCs von einem Thread gesteuert werden?
private static Timer timer
          Der Timer der die Timer Events auslöst
static String VERSION
          Die Globale Version des Engines
 
Constructor Summary
Engine(String gamefile, CommandList commands, GuiInterface gui)
          Compatibility creator
Engine(String gamefile, CommandList commands, GuiInterface gui, boolean threadedNpc)
          Erstellt ein neues Engine Objekt
Engine(String gamefile, CommandList commands, GuiInterface gui, boolean threadedNpc, int numOfPlayers)
          Erstellt ein neues Engine Objekt
Engine(String gamefile, CommandList commands, GuiInterface gui, int numOfPlayers)
          Compatibility creator
 
Method Summary
protected  void addToCompletition(String command)
          Fügt einen Befehl (ein Wort) zu der Liste der möglichen Befehle für die Tabcompletition hinzu
protected  void addToCompletition(String[] commands)
           
protected  void addToCompletition(Vector commands)
          Fügt eine Liste von Befehlen zu der Liste für die Tabcompletition hinzu
private  String[] commandNames(Map commands)
          Liefert ein Array der Befehlsnamen zurück (Benötigt für die Autocompletion)
static void debug(String message, int level)
          Die zentrale Debugmethode für das JZuul Engine.
static void delay(int ms)
          Unterbricht die Ausführung für eine Gegebene Zeit.
private  void doNPCaction()
          Wird benötigt um für jeden Character die doEvent(Event.DEFAULT) methode aufzurufen
static void exit(int status)
           
protected  void finalize()
           
static InputStream getFileStream(String filename)
           
 void getPlayerName()
          Fordert den Spieler zur Eingabe eines Namens auf.
protected  String getUniqueCompletition(String input)
          Holt für einen gegebenen Inputstring die einzige mögliche Vervollständigung.
protected  boolean hasUniqueCompletition(String input)
          Überpüft ob es für einen Teilstring eine eindeutige Vervollständigung gibt.
static Element historyToElement()
          Wandelt die Befehlshistory in ein JDOM XML Element um.
static boolean loadFromFile(String filename)
          Diese Methode lädt Spielstände.
static void notifyAll(int id)
          Schicke Event id an alle EventListener im Spiel (an die Räume und die Objekte)
protected  void printCompletitions(String input)
          Gibt die möglichen Vervollständigungen für einen Inputsting aus.
 void run(boolean askPlayerName)
          Started das Spiel.
 void runHistory(String filename)
          Die Methode runHistory verarbeitet eine Listvon Befehlen innerhalb des Engines ab.
static boolean saveToFile(String filename)
          Diese Methode speichert Spielstände.
static Element toElement()
          Wandelt den stand des Engines in ein JDOM XML Element um.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instance

private static Engine instance

commandNames

private String[] commandNames
Die Namen aller aktiven Befehle


NPCs

private List NPCs
Eine Liste von Character Objekten


historyPos

private int historyPos
Die aktuelle Position in der Befehlshistory


completions

private Vector completions
Befehle die für die Befehlscompletition verwendet werden


npcRunner

private static Engine.NPCThread npcRunner
Der Thread der für NPCs Benutzt wird, falls dies aktiviert ist, null sonst


threadedNpcs

private boolean threadedNpcs
Sollen die NPCs von einem Thread gesteuert werden?


reader

private GameFileReader reader
Den GameFileReader den das Engine benutzt


timer

private static Timer timer
Der Timer der die Timer Events auslöst

See Also:
Event

players

public static Engine.RingVector players
Ein RingVector von Player Objekten, falls das Spiel im Multiplayer läuft, sonst null


VERSION

public static final String VERSION
Die Globale Version des Engines

See Also:
Constant Field Values

commandHistory

private static List commandHistory
Eine Liste der eingegebenen Befehle, bereinigt von nicht bekannten.


gui

public static GuiInterface gui
Das GUI des Engines


map

public static GameMap map
Die aktuelle Spielkarte


player

public static Player player
Das Spielerobjekt des Spieles. Bei Multiplayerspielen wird das Objekt pro Runde ausgetauscht


gamefile

public static String gamefile
Der Dateiname der Spieldatei


objectPool

public static Map objectPool
Der globale ObjektPool, enthällt alle GameObjects die im Spiel enthalten sind


commands

public static Map commands
Eine Map die ein Mapping von befehl auf Command Objekt enthällt


DEBUG

public static int DEBUG
Der Debug flag des Engines


MAX_DEBUG

private static final int MAX_DEBUG
Der maximal erlaubte Debug wert

See Also:
Constant Field Values
Constructor Detail

Engine

public Engine(String gamefile,
              CommandList commands,
              GuiInterface gui)
Compatibility creator

Parameters:
gamefile - der Dateinamen mit dem Spielfile
commands - die in dem Spiel erlaubten Befehle
gui - das GUI

Engine

public Engine(String gamefile,
              CommandList commands,
              GuiInterface gui,
              int numOfPlayers)
Compatibility creator

Parameters:
gamefile - der Dateinamen mit dem Spielfile
commands - die in dem Spiel erlaubten Befehle
gui - das GUI
numOfPlayers - die Anzahl der Spieler

Engine

public Engine(String gamefile,
              CommandList commands,
              GuiInterface gui,
              boolean threadedNpc)
Erstellt ein neues Engine Objekt

Parameters:
gamefile - der Dateiname der Spieldatei
commands - die in dem Spiel erlaubten Befehle
gui - das GUI
threadedNpc - Sollen die NPCs in einem eigenen Thread laufen?

Engine

public Engine(String gamefile,
              CommandList commands,
              GuiInterface gui,
              boolean threadedNpc,
              int numOfPlayers)
Erstellt ein neues Engine Objekt

Parameters:
gamefile - der Dateinamen der Spieldatei
commands - die in dem Spiel erlaubten Befehle
gui - das GUI
threadedNpc - Sollen die NPCs in einem eigenen Thread laufen?
numOfPlayers - die Anzahl der Spieler
Method Detail

debug

public static void debug(String message,
                         int level)
Die zentrale Debugmethode für das JZuul Engine. Der Nachricht wird automatisch die Aufrufende Methode vorangestellt.

Parameters:
message - die Nachricht, die ausgegeben werden soll
level - das Debuglevel, bei dem diese Nachricht erscheinen soll
Throws:
IllegalArgumentException - wenn das level > MAX_DEBUG

run

public void run(boolean askPlayerName)
Started das Spiel. Zuerst werden die wichtigen Spielvariablen abgefragt (playr,gui,map und gamefile), dann wir der Spielername gefragt wenn gefordert und dann dem Gui der Start des Spieles signalisiert.

Parameters:
askPlayerName - sollen Spielernamen abgefragt werden?
Throws:
EngineRuntimeException - Falls eine der oben genannten Variablen null ist.

commandNames

private String[] commandNames(Map commands)
Liefert ein Array der Befehlsnamen zurück (Benötigt für die Autocompletion)

Parameters:
commands - eine Map von Kommandos, der Keys die Kommandonamen sind
Returns:
String[] of Action Names

doNPCaction

private void doNPCaction()
Wird benötigt um für jeden Character die doEvent(Event.DEFAULT) methode aufzurufen

See Also:
Event

addToCompletition

protected void addToCompletition(String command)
Fügt einen Befehl (ein Wort) zu der Liste der möglichen Befehle für die Tabcompletition hinzu

Parameters:
command - das hinzuzufügende Wort

addToCompletition

protected void addToCompletition(Vector commands)
Fügt eine Liste von Befehlen zu der Liste für die Tabcompletition hinzu

Parameters:
commands - die Befehle die Hinzugefügt werden sollen

addToCompletition

protected void addToCompletition(String[] commands)
Parameters:
commands - Eine String Array von Befehlen das hinzugefügt werden soll
See Also:
addToCompletition(Vector commands)

hasUniqueCompletition

protected boolean hasUniqueCompletition(String input)
Überpüft ob es für einen Teilstring eine eindeutige Vervollständigung gibt.

Parameters:
input - der Teilstring der überprüft werden soll
Returns:
true falls es eine eindeutige Vervollständigung gibt, false sonst.

printCompletitions

protected void printCompletitions(String input)
Gibt die möglichen Vervollständigungen für einen Inputsting aus.

Parameters:
input - der Teilstring für den die Vervollständigungen ausgegeben werden sollen

getUniqueCompletition

protected String getUniqueCompletition(String input)
Holt für einen gegebenen Inputstring die einzige mögliche Vervollständigung.

Parameters:
input - ein Teilstring für den die Vervollständigung geholt werden soll
Returns:
die Vervollständigung wenn eindeutig, null sonst

historyToElement

public static Element historyToElement()
Wandelt die Befehlshistory in ein JDOM XML Element um. Die Befehlshistory enthällt nur gültige Befehle

Returns:
ein JDOM XML Element das die History wiederspiegelt

toElement

public static Element toElement()
Wandelt den stand des Engines in ein JDOM XML Element um. Diese Methode verwandelt den aktullen Stand des Engines in ein JDOM XML Element indem es nacheinander die Methoden toElement() der Karte, des Spielers und der History aufruft.

Returns:
ein JDOM XML Element das den aktuellen Stand des Engines wiederspiegelt

saveToFile

public static boolean saveToFile(String filename)
Diese Methode speichert Spielstände. Diese Methode ruft Engine.toElement auf und speichert das Ergebnis in dem Übergebenen Namen an das sie ".xml" anhängt.

Parameters:
filename - der Dateiname, ohne Endung
Returns:
true bei Erfolg, false bei Fehlern

loadFromFile

public static boolean loadFromFile(String filename)
Diese Methode lädt Spielstände. Die Methode wird von dem Befehl "load" sowie von der Named Game Verwaltung aufgerufen um einen Spielstand zu laden. Da ein Spielstand nur den aktuellen Zustand und nicht die gesamten Objektbeschreibungen enthällt, wird zuerst die Spieldatei und dann das Savegame geladen.

Parameters:
filename - der Name der Savegamedatei
Returns:
true bei Erfolg, false bei fehlern

runHistory

public void runHistory(String filename)
Die Methode runHistory verarbeitet eine Listvon Befehlen innerhalb des Engines ab.

Parameters:
filename - eine JZuul XML Datei, deren Teil abegearbeitet werden soll

delay

public static void delay(int ms)
Unterbricht die Ausführung für eine Gegebene Zeit. Diese Methode versucht relativ genau eine gewisse Zeit zu schlafen, indem sie die übergebene Zeit aufteilt und dann die tatsächlich geschlafene Zeit überprüft.

Parameters:
ms - Millisekunden die geschlafen werden sollen

getPlayerName

public void getPlayerName()
Fordert den Spieler zur Eingabe eines Namens auf. Diese Methode setzt dem Gui als ActionListener eine PlayerNameListener Objekt welches dann die Eingabe des Namens verarbeitet und gibt eine Aufforderung zur Eingabe des Names aus.


notifyAll

public static void notifyAll(int id)
Schicke Event id an alle EventListener im Spiel (an die Räume und die Objekte)

Parameters:
id - die Event id
See Also:
Event

exit

public static void exit(int status)

finalize

protected void finalize()

getFileStream

public static InputStream getFileStream(String filename)


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