cicaprojekt/cicaprojekt/Wall.java

110 lines
3.0 KiB
Java

package cicaprojekt;
/**
* A játékban megjelenő falakat reprezentáló osztály.
*/
public class Wall extends Tile {
/**
* A fajlon lévő csillagkapu.
*/
private Stargate sg = null;
/**
* Az osztály konstruktora.
*/
public Wall() {
super();
}
/**
* A függvény akkor hívódik meg, ha egy csillagkapu érkezik a falra.
* Ha nincs a falon korábbi csillagkapu, akkor az érkező kapu a falon marad,
* beállítódik a hozzátartozó irány, majd frissítődik a megjelenítés.
*
* @param stargate az érkező csillagkapu
* @param direction az irány, ahonnan jön
*/
@Override
public void spawnStargate(Stargate stargate, Direction direction) {
if(stargate.isSpawned())
stargate.getCurrentWall().clearStargate();
if (sg == null) {
sg = stargate;
sg.setCurrentWall(this, direction);
Game.instance.updateDisplay();
}
}
/**
* A függvény azzal tér vissza, hogy rá lehet-e lépni a falra.
* Ha van rajta csillagkapu, akkor a csillagkapu nyitvalévőségétől függ,
* ha nincs rajta, akkor nem lehet rálépni.
*
* @return true, ha van rajta nyitott csillagkapu
* false, egyébként
*/
@Override
public boolean isSteppable() {
if(sg != null)
return sg.isOpen();
return false;
}
/**
* A falon lévő csillagkapu eltüntetésére szolgáló függvény.
* Ha volt ott csillagkapu, akkor a rámutató referencia értékét
* null-ra állítja
*/
public void clearStargate() {
if(sg != null) {
sg.setCurrentWall(null, null);
sg = null;
}
}
/**
* A függvény azzal tér vissza, hogy lehet-e az adott <code>Tile</code> típuson
* doboz.
*
* @return false
*/
@Override
public boolean boxPermission()
{
return false;
}
/**
* A függvény akkor hívódik meg, ha egy személy rá akar lépni a falra.
* Ha a falon van csillagkapu, akkor az átteleportálja a személyt.
*
* @param playerBase az a <code>PlayerBase</code> példány, amely
* rálépett a falra
*/
@Override
public void onEntry(PlayerBase playerBase) {
super.onEntry(playerBase);
if (sg != null)
sg.teleport(playerBase);
}
/**
* A függvény akkor hívódik meg, ha egy személy le akar lépni a falról.
*
* @param playerBase az a <code>PlayerBase</code> példány, amely
* lelépett a falról
*/
@Override
public void onExit(PlayerBase playerBase) {
}
/**
* A függvény a falon lévő csillagkapuval tér vissza.
*
* @return a csillagkapu
*/
public Stargate getStargate() {
return sg;
}
}