Comments added to Stargate.java

This commit is contained in:
Siket Melinda Tekla 2016-05-16 20:49:08 +02:00
parent d118036fc0
commit 57c636d6a0

View File

@ -4,25 +4,75 @@ import java.awt.*;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
/**
* A játékban megjelenő csillagkapukat reprezentáló osztály.
*/
public class Stargate { public class Stargate {
/**
* Egy darab sárga csillagkapu létrehozása és tárolása.
*/
public static final Stargate yellowStargate = new Stargate("Yellow Stargate"); public static final Stargate yellowStargate = new Stargate("Yellow Stargate");
/**
* Egy darab kék csillagkapu létrehozása és tárolása.
*/
public static final Stargate blueStargate = new Stargate("Blue Stargate"); public static final Stargate blueStargate = new Stargate("Blue Stargate");
/**
* Egy darab piros csillagkapu létrehozása és tárolása.
*/
public static final Stargate redStargate = new Stargate("Red Stargate"); public static final Stargate redStargate = new Stargate("Red Stargate");
/**
* Egy darab zöld csillagkapu létrehozása és tárolása.
*/
public static final Stargate greenStargate = new Stargate("Green Stargate"); public static final Stargate greenStargate = new Stargate("Green Stargate");
/**
* A csillagkapu párjának, a másik csillagkapunak a tárolása.
*/
public Stargate other; public Stargate other;
/**
* A csillagkapu létrehozottságának a tárolása.
*/
private boolean isSpawned; private boolean isSpawned;
/**
* A csillagkapu aktuális helyének a tárolása.
*/
private Wall currentWall; private Wall currentWall;
/**
* A csillagkapu kilépési irányának a tárolása.
*/
private Direction exitDirection; private Direction exitDirection;
/**
* A csillagkapu nevének a tárolása.
*/
private String name; private String name;
/**
* A csillagkapukat és színüket tároló <code>Map</code>.
*/
private static Map<Color, Stargate> stargates = new HashMap<>(); private static Map<Color, Stargate> stargates = new HashMap<>();
/**
* Az osztály konstruktora.
*
* @param name a csillagkapu neve
*/
private Stargate(String name) { private Stargate(String name) {
isSpawned = false; isSpawned = false;
this.name = name; this.name = name;
} }
/**
* A csillagkapuk inicializálása. Az egyes párok meghatározása és a
* <code>Map</code>-ben való eltárolása.
*/
public static void init() { public static void init() {
yellowStargate.other = blueStargate; yellowStargate.other = blueStargate;
blueStargate.other = yellowStargate; blueStargate.other = yellowStargate;
@ -35,14 +85,32 @@ public class Stargate {
stargates.put(Color.GREEN, greenStargate); stargates.put(Color.GREEN, greenStargate);
} }
/**
* A kapott szín alapján visszatér a kér csillagkapuval.
*
* @param color csillagkapu színe
* @return elvárt csillagkapu
*/
public static Stargate get(Color color) { public static Stargate get(Color color) {
return stargates.get(color); return stargates.get(color);
} }
/**
* A csillagkapu aktuális helyével tér vissza.
*
* @return aktuális fal
*/
public Wall getCurrentWall() { public Wall getCurrentWall() {
return currentWall; return currentWall;
} }
/**
* A csillagkapu aktuális helyének beállítása megadott fal és megadott irány
* alapján.
*
* @param wall megadott fal
* @param direction megadott irány
*/
public void setCurrentWall(Wall wall, Direction direction) { public void setCurrentWall(Wall wall, Direction direction) {
currentWall = wall; currentWall = wall;
if(direction != null) if(direction != null)
@ -50,20 +118,46 @@ public class Stargate {
isSpawned = wall != null; isSpawned = wall != null;
} }
/**
* Egy csillagkapuról lekérdezi, hogy létre van-e hozva.
*
* @return true, ha létre van hozva
* false, egyébként
*/
public boolean isSpawned() { public boolean isSpawned() {
return isSpawned; return isSpawned;
} }
/**
* Egy csillagkapuról lekérdezi, hogy nyitva van-e. Ezt annak függvényében
* dönti el, hogy a csillagkapu kilépési irányában lévő csempére lehet-e
* lépni.
*
* @return true, ha lehet lépni
* false, egyébként
*/
public boolean isOpen() { public boolean isOpen() {
if(isSpawned & other.isSpawned) if(isSpawned & other.isSpawned)
return other.getCurrentWall().getAdjacentTile(other.getExitDirection()).isSteppable(); return other.getCurrentWall().getAdjacentTile(other.getExitDirection()).isSteppable();
return false; return false;
} }
/**
* Visszatér a csillagkapu kilépési irányával.
*
* @return kilépési irány
*/
private Direction getExitDirection() { private Direction getExitDirection() {
return exitDirection; return exitDirection;
} }
/**
* A játékban való teleportálást implementáló függvény.
* Ha a csillagkapu átjárható, akkor a belépő személy átkerül a kilépési
* pontjára, egyébként marad a helyén.
*
* @param player a belépő személy
*/
public void teleport(PlayerBase player) { public void teleport(PlayerBase player) {
if(isOpen()) if(isOpen())
{ {
@ -75,6 +169,11 @@ public class Stargate {
player.setCurrentTile(this.getCurrentWall()); player.setCurrentTile(this.getCurrentWall());
} }
/**
* Ha a csillagkapu létre van hozva, akkor a nevével és az aktuális
* tartózkodási helyével tér vissza, ha nincs létre hozva, akkor
* pedig a nevével és a "not spawned" szöveggel.
*/
@Override @Override
public String toString() { public String toString() {
if(isSpawned) if(isSpawned)
@ -82,6 +181,11 @@ public class Stargate {
else return String.format("%s: not spawned", name); else return String.format("%s: not spawned", name);
} }
/**
* Visszatér a csillagkapu nevével.
*
* @return a csillagkapu neve
*/
public String getName() { public String getName() {
return name; return name;
} }