cicaprojekt/cicaprojekt/Gate.java

106 lines
3.0 KiB
Java

package cicaprojekt;
/**
* A játékban megjelenő kapukat reprezentáló osztály.
*/
public class Gate extends Tile {
/**
* A kapu nyitottságát jelzi, alapértelemezett értéke csukva.
*/
private boolean open = false;
/**
* Az osztály konstruktora.
*/
public Gate() {
super();
}
/**
* Akkor hívódik meg, ha a kapu felé egy csillagkaput lőnek.
* Ha a kapu nyitva van, akkor továbbítja a csillagkaput a megfelelő irányba.
*
* @param stargate a <code>Stargate</code> példány, amely a kapuhoz érkezik
* @param direction az a <code>Direction</code>, amerről jön a csillagkapu-
* lövedék, és amerre tovább kell mennie.
*/
@Override
public void spawnStargate(Stargate stargate, Direction direction) {
if (this.open) adjacentTile.get(direction).spawnStargate(stargate, direction);
}
/**
* A függvény igazzal tér vissza, ha a kapu nyitva van, hamissal, ha csukva.
*
* @return a kapu állapota
*/
@Override
public boolean boxPermission()
{
return open;
}
/**
* A függvény akkor hívódik meg, ha egy személy rá akar lépni a kapura.
* Ha a kapu nyitva van, akkor ez lehetséges, ekkor a személy helyzete
* átkerül a kapura.
*
* @param playerBase az a <code>PlayerBase</code> példány, amely rá akar
* lépni a kapura
*/
@Override
public void onEntry(PlayerBase playerBase) {
super.onEntry(playerBase);
if (open) playerBase.setCurrentTile(this);
}
/**
* A függvény akkor hívódik meg, ha egy személy el akarja hagyni a kaput.
* Ha a kapu zárva van, akkor benne lévő személy megsemmisül.
*
* @param playerBase az a <code>PlayerBase</code> példány, amely ki akar
* lépni a kapuból
*/
@Override
public void onExit(PlayerBase playerBase) {
if (!open) {
playerBase.destroy();
}
}
/**
* A függvény azzal tér vissza, hogy rá lehet-e lépni a kapura.
* Ha az nyitva van, akkor annak függvényében dől el a válasz, hogy
* van-e rajta doboz, egyébként pedig attól függ, hogy nyitva van-e
* a kapu.
*
* @return a ráléphetőség igazságértéke
*/
@Override
public boolean isSteppable()
{
if(open)
return !hasBox();
else
return open;
}
/**
* A függvény visszatér a kapu nyitvalevőségével.
*
* @return nyitvalevőség
*/
public boolean isOpen() {
return open;
}
/**
* A függvény beállítja a kapott paramétrre a kapu nyitvalevőségét.
*
* @param gateState a kapott érték, hogy nyitva, vagy csukva legyen a kapu
*/
public void setOpen(boolean gateState) {
this.open = gateState;
}
}