Comments added to Tile.java

This commit is contained in:
Siket Melinda Tekla 2016-05-16 17:59:02 +02:00
parent e9d3e72680
commit c7cd02abda

View File

@ -4,44 +4,114 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Stack; import java.util.Stack;
/**
* A játékban megjelenő különböző csempetípusokat reprezentáló osztály.
* @author MelindaTekla
*
*/
public abstract class Tile { public abstract class Tile {
/**
* A csempe szomszédos csempéit tároló <code>Map</code>.
*/
protected Map<Direction, Tile> adjacentTile; protected Map<Direction, Tile> adjacentTile;
/**
* A csempén lévő ZPM.
*/
protected ZPM zpmOnTile; protected ZPM zpmOnTile;
/**
* A csempén lévő dobozok.
*/
protected Stack<Box> boxStack; protected Stack<Box> boxStack;
/**
* A csempe y-koordinátája.
*/
protected int y = -666; protected int y = -666;
/**
* A csempe x-koordinátája.
*/
protected int x = -666; protected int x = -666;
/**
* A csempén lévő személy.
*/
protected PlayerBase playerBaseOnTile = null; protected PlayerBase playerBaseOnTile = null;
/**
* Az osztály konstruktora.
*/
public Tile() { public Tile() {
adjacentTile = new HashMap<>(); adjacentTile = new HashMap<>();
boxStack = new Stack<>(); boxStack = new Stack<>();
} }
/**
* A csempe x-koordinátájával tér vissza.
*
* @return x-koordináta
*/
public int getX() { return this.x; } public int getX() { return this.x; }
/**
* A csempe y-koordinátájával tér vissza.
*
* @return y-koordináta
*/
public int getY() { return this.y; } public int getY() { return this.y; }
/**
* A csempe x-koordinátáját állítja be a kapott paraméterre.
*
* @param x a kapott x-koordináta
*/
public void setX(int x) { public void setX(int x) {
if (x >= 0) if (x >= 0)
this.x = x; this.x = x;
} }
/**
* A csempe y-koordinátáját állítja be a kapott paraméterre.
*
* @param y a kapott y-koordináta
*/
public void setY(int y) { public void setY(int y) {
if (y >= 0) if (y >= 0)
this.y = y; this.y = y;
} }
/**
* A csempére való léphetőséget tárolja.
* @return
*/
public abstract boolean isSteppable(); public abstract boolean isSteppable();
/**
* A csempe kapott irányban lévő szomszédos csempéjével tér vissza.
*
* @param direction a kapott irány
* @return a szomszédos csempe
*/
public Tile getAdjacentTile(Direction direction) { public Tile getAdjacentTile(Direction direction) {
return adjacentTile.get(direction); return adjacentTile.get(direction);
} }
/**
* A csempe kapott irányban lévő szomszédjára állítja be a kapott csempét.
*
* @param newTile a kapott csempe
* @param direction a kapott irány
*/
public void setAdajacentTile(Tile newTile, Direction direction) { public void setAdajacentTile(Tile newTile, Direction direction) {
adjacentTile.put(direction, newTile); adjacentTile.put(direction, newTile);
} }
/**
* A függvény akkor hívódik meg, ha egy csillagkapu érkezik a csempére.
* Ekkor ha a Replikátor áll a csempén, az megsemmisül, a csillagkapu pedig
* a kapott irányban halad tovább.
*
* @param stargate az érkező csillagkapu
* @param direction a kapott irány
*/
public void spawnStargate(Stargate stargate, Direction direction) { public void spawnStargate(Stargate stargate, Direction direction) {
if (playerBaseOnTile != null && playerBaseOnTile.name.equals("Replicator")) if (playerBaseOnTile != null && playerBaseOnTile.name.equals("Replicator"))
playerBaseOnTile.destroy(); playerBaseOnTile.destroy();
@ -49,55 +119,118 @@ public abstract class Tile {
adjacentTile.get(direction).spawnStargate(stargate, direction); adjacentTile.get(direction).spawnStargate(stargate, direction);
} }
/**
* A függvény akkor hívódik meg, ha egy személy lép a csempére.
*
* @param playerBase a <code>PlayerBase</code> példány, amely a csempére lépett
*/
public void onEntry(PlayerBase playerBase) { public void onEntry(PlayerBase playerBase) {
playerBaseOnTile = playerBase; playerBaseOnTile = playerBase;
} }
/**
* A függvény akkor hívódik meg, ha egy személy lelép a csempéről.
*
* @param playerBase a <code>PlayerBase</code> példány, amely lelépett
* a csempéről
*/
public abstract void onExit(PlayerBase playerBase); public abstract void onExit(PlayerBase playerBase);
/**
* Beállítja a kapott ZPM-et a csempére.
*
* @param zpm a kapott ZPM
*/
public void setZPMOnTile(ZPM zpm) { public void setZPMOnTile(ZPM zpm) {
zpmOnTile = zpm; zpmOnTile = zpm;
} }
/**
* Visszatér a csempén lévő ZPM-el, majd a csempén lévő ZPM értékét null-ra
* állítja.
*
* @return a csempén lévő ZPM
*/
public ZPM getZPMFromTile() { public ZPM getZPMFromTile() {
ZPM zpm = zpmOnTile; ZPM zpm = zpmOnTile;
zpmOnTile = null; zpmOnTile = null;
return zpm; return zpm;
} }
/**
* A függvény igazzal tér vissza, ha a csempe egy szakadék.
*
* @return false
*/
public boolean isGap() { public boolean isGap() {
return false; return false;
} }
/**
* A függvény a kapott dobozt rárakja a csempére.
*
* @param box a kapott doboz
*/
public void putABox(Box box) { public void putABox(Box box) {
if (box == null) if (box == null)
return; return;
boxStack.push(box); boxStack.push(box);
} }
/**
* A függvény leveszi a csempén lévő dobozrakás tetején lévő dobozt,
* azzal tér vissza.
*
* @return a levett doboz
*/
public Box getABox() { public Box getABox() {
if (boxStack.isEmpty()) if (boxStack.isEmpty())
return null; return null;
return boxStack.pop(); return boxStack.pop();
} }
/**
* Kiírja a csempe koordinátáit.
*/
@Override @Override
public String toString() { public String toString() {
return String.format("%d, %d", x, y); return String.format("%d, %d", x, y);
} }
/**
* A függvény aszerint tér vissza, hogy van-e a csempén ZPM.
*
* @return true, ha van a csempén ZPM
* false, egyébként
*/
public boolean hasZPM() { public boolean hasZPM() {
return zpmOnTile != null; return zpmOnTile != null;
} }
/**
* A függvény aszerint tér vissza, hogy van-e a csempén doboz.
*
* @return true, ha van a csempén doboz
* false, egyébként
*/
public boolean hasBox() { public boolean hasBox() {
return !boxStack.isEmpty(); return !boxStack.isEmpty();
} }
/**
* A függvény aszerint tér vissza, hogy lehet-e a csempén doboz.
*
* @return true
*/
public boolean boxPermission() { public boolean boxPermission() {
return true; return true;
} }
/**
* A függvény aszerint tér vissza, hogy lehet-e a csempén ZPM.
*
* @return false
*/
public boolean canHazZPM() { public boolean canHazZPM() {
return false; return false;
} }