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 Stargate példány, amely a kapuhoz érkezik * @param direction az a Direction, 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 PlayerBase 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 PlayerBase 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; } }