Pacman 3D .:. www.stormzone.de/uni/pacman3d/

pacman3d.labyrinth.items
Class Item

java.lang.Object
  |
  +--pacman3d.labyrinth.items.Item
All Implemented Interfaces:
Cloneable, Identifiable, MessageListener, XMLSerializeable
Direct Known Subclasses:
ItemSignalLamp, ItemToolkit, ItemTorch

public class Item
extends Object
implements XMLSerializeable, Cloneable, Identifiable, MessageListener

Title: Pacman 3D - Nicht wirklich ;)
Description:

Die Itembasisklasse für bewegliche und/oder kleine Objekte in Labyrinthzellen, die mit Pacmans interagieren können und über eigene Logik für die 3D-Darstellung verfügen.

Items sind Objekte die „kleiner“ als Zellen sind wie Vitaminpille, Werkzeugkoffer, Erste-Hilfe-Kasten, Lichtschalter, Tretmine, Tarnkleidung. Sie liegen in Zellen. Entsprechend kann eine Zelle beispielsweise eine Vitaminpille und einen Lichtschalter enthalten. Items sind also die zentralen Interaktionselemente zwischen Pacmans und Labyrinth im Spiel.

Items bestehen aus einem Verhalten und einer Optik. Beim Verhalten kann es sich beispielsweise um das Erhöhen des Pacmanpunktestands handeln, bei der Optik um die Visualisierung von Vitaminpillen oder Waffen, visualisiert durch Java3D-Objekte. Diese Objekte werden von der Item-Klasse und ihren Ableitungen eigenständig verwaltet.

Copyright: Copyright (c) 2001

Author:
Labyrinth-Gruppe

Field Summary
static Color3f black
          Grundlegende Farbe um Appearance bzw.
protected  ID m_oID
          Die eindeutige Bezeichnung dieser Item-Instanz
protected  Labyrinth m_oLabyrinth
          eine Instanz auf das Labyrinth, in dem sich das Item befindet
static Color3f white
          Grundlegende Farbe um Appearance bzw.
 
Constructor Summary
Item()
          Diese Konstruktormethode initialisiert ein neues Itemobjekt mit Standardwerten
 
Method Summary
 Object clone()
          klont das Objekt und liefert es zurück
 boolean equals(Object obj)
          vergleicht die Zelle mit dem angegebenen Objekt und liefert true bei Gleichheit, sonst falsch.
 void execute(Pacman oPacman)
          Wird aufgerufen, um Funktionalität und Semantik des mit der Instanz repräsentierten Gegenstandes auszuführen.
 ID getID()
          Gibt die eindeutige Bezeichnung des Items zurueck.
 void getMessage(Message oMessage)
          Nimmt eine Nachricht entgegen, die anschliessend ausgewertet wird.
 Node getNode()
          Liefert den Java3D-Node zurück, der den Gegenstand darstellt, der von der Item-Instanz repräsentiert wird.
 boolean isCoreItem()
          returns whether or not this item is a core item.
 boolean isTakable()
          Liefert zurück, ob der mit der Instanz beschriebene Spielgegenstand "aufgenommen" - also benutzt - werden kann (to take!).
 boolean isVisible()
          returns visibility status of this item.
 void loadFromDOM(Element oElement)
          Nimmt ein XML Element entgegen, und deserialisiert den Zustand des eigenen Objektes.
 Element saveToDOM(Document oDoc)
          Serialisiert den Zustand der Instanz in ein XML-Element.
 void setID(ID oID)
          Setzt die eindeutige Bezeichnung des Items.
 void setLabyrinth(Labyrinth oLabyrinth)
          setzt einen Zeiger auf das Labyrinth, in dem sich das Item befindet (dieses Konstrukt ist nötig geworden, um eine Kommunikation zwischen Labyrinth und Items zu ermöglichen.
 void setVisibility(boolean bVisibility)
          sets the visibility status of this item.
 void take(Pacman oPacman)
          "nimmt den Gegenstand auf" und führt je nach Implementierung der abgeleiteten Itemklasse zu einem internen Statuswechsel.
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

black

public static Color3f black
Grundlegende Farbe um Appearance bzw. Material zu erzeugen


white

public static Color3f white
Grundlegende Farbe um Appearance bzw. Material zu erzeugen


m_oID

protected ID m_oID
Die eindeutige Bezeichnung dieser Item-Instanz


m_oLabyrinth

protected Labyrinth m_oLabyrinth
eine Instanz auf das Labyrinth, in dem sich das Item befindet

Constructor Detail

Item

public Item()
Diese Konstruktormethode initialisiert ein neues Itemobjekt mit Standardwerten

Method Detail

isTakable

public boolean isTakable()
Liefert zurück, ob der mit der Instanz beschriebene Spielgegenstand "aufgenommen" - also benutzt - werden kann (to take!). Für Vitaminpillen trifft dies beispielsweise zu, für an die Decke gehängte Lampen - beide werden als items implementiert - jedoch nicht.

Die Methode sollte vor dem eigentlichen Aufruf von take() aufgerufen werden

Zudem kann ein item-Objekt ein wechselthaftes Verhalten aufweisen und nach bestimmten Kriterien unterschieden mal das "aufnehmen" zulassen und zu anderen Zeitpunkten bzw. Zuständen nicht.

Returns:
true wenn Objekt aufgenommen/benutzt werden kann,
false wenn nicht.

getID

public ID getID()
Gibt die eindeutige Bezeichnung des Items zurueck.

Specified by:
getID in interface Identifiable
See Also:
ID, Identifiable

setID

public void setID(ID oID)
Setzt die eindeutige Bezeichnung des Items.

See Also:
ID, Identifiable

take

public void take(Pacman oPacman)

"nimmt den Gegenstand auf" und führt je nach Implementierung der abgeleiteten Itemklasse zu einem internen Statuswechsel. Manche Items sind beispielsweise nach der Aufnahme durch Pacmans unsichtbar und können nicht mehr aufgenommen werden.

Parameters:
oPacman - die Instanz eines Pacman-Objekts. Der Parameter wird zur potentiellen Zwei-Wege-Kommunikation mit dem Objekt verwendet.
Returns:
nothing

execute

public void execute(Pacman oPacman)

Wird aufgerufen, um Funktionalität und Semantik des mit der Instanz repräsentierten Gegenstandes auszuführen. Dies läßt erkennen, dass items nicht benutzt werden sondern aktiv und autark arbeiten sollen. Mit diesem Ansatz bietet sich ein weiteres Feld an Erweiterungsmöglichkeiten, als wenn die Item-Klassen nur passive Codefragmente wären.

Die Nutzung dieser Klasse gestaltet sich dann so, dass ein Pacman von der Zelle eine Reihe von darin enthaltenen Items erhält (oder auch keine bei einer leergeräumten Zelle). Mit der Methode isTakable() prüft Pacman, ob das jeweilige Item aufnehmbar ist und nimmt es dann auch mit take() auf. Sofort oder zu einem späteren Zeitpunkt kann mit dieser Methode execute() die Ausführung der Semantik des Items begonnen werden, die ihrerseits primär auf das übergebene Pacman-Objekt einwirken, aber auch die Umgebung und sich selbst beeinflussen können (Licht, etc.)

Parameters:
oPacman - die Instanz eines Pacman-Objekts. Der Parameter wird zur potentiellen Zwei-Wege-Kommunikation mit dem Objekt verwendet.
Returns:
nothing
See Also:
take(pacman3d.pacman.Pacman), isTakable()

getNode

public Node getNode()
Liefert den Java3D-Node zurück, der den Gegenstand darstellt, der von der Item-Instanz repräsentiert wird. Ein Objekt vom Typ TransformGroup ist hier sicherlich nicht unüblich, aber auch Shape3D oder BranchGroup Instanzen sind denkbar.

Returns:
ein Java3D-Node-Objekt, das zum Rendern des Items in der Szene benötigt wird.

clone

public Object clone()
klont das Objekt und liefert es zurück

Overrides:
clone in class Object
Returns:
der Klon der Instanz mit dem gleichen Typ (aber per Definition als Objekt gecastet)

equals

public boolean equals(Object obj)
vergleicht die Zelle mit dem angegebenen Objekt und liefert true bei Gleichheit, sonst falsch.

Overrides:
equals in class Object
Parameters:
obj - das mit sich selbst zu vergleichende Objekt
Returns:
true bei Gleichheit, sonst false

loadFromDOM

public void loadFromDOM(Element oElement)
Nimmt ein XML Element entgegen, und deserialisiert den Zustand des eigenen Objektes.

Specified by:
loadFromDOM in interface XMLSerializeable
Parameters:
oElement - Das XML-Element, unterhalb dessen ein Objekt seinen Zustand speichern darf.

saveToDOM

public Element saveToDOM(Document oDoc)
Serialisiert den Zustand der Instanz in ein XML-Element.

Specified by:
saveToDOM in interface XMLSerializeable
Parameters:
oDoc - das Document, in das die Daten eingefügt werden sollen (wird für das Erzeugen von Elementen nach dem Factory-Konzept benötigt)
Returns:
Valide XML-Daten in String-Form.

getMessage

public void getMessage(Message oMessage)
Nimmt eine Nachricht entgegen, die anschliessend ausgewertet wird.

Specified by:
getMessage in interface MessageListener
Parameters:
oMessage - die entgegengenommene Nachricht
See Also:
Message

isVisible

public boolean isVisible()
returns visibility status of this item. In Item it will always return true, but in Itemtoolkit it will be overridden.

Returns:
true

setVisibility

public void setVisibility(boolean bVisibility)
sets the visibility status of this item.


isCoreItem

public boolean isCoreItem()
returns whether or not this item is a core item. All Core Items have to be taken in order to sucessfully end the game.

Returns:
true if item is a core item false otherwise

setLabyrinth

public void setLabyrinth(Labyrinth oLabyrinth)
setzt einen Zeiger auf das Labyrinth, in dem sich das Item befindet (dieses Konstrukt ist nötig geworden, um eine Kommunikation zwischen Labyrinth und Items zu ermöglichen. Alternativ hätte man auch das Labyrinth mit einem MessageListener ausstatten können, aber dieser Weg erschien der direktere zu sein)

Parameters:
oLabyrinth - die zu speichernde Labyrinth-Instanz

Pacman 3D .:. www.stormzone.de/uni/pacman3d/