2016-04-19 09:46:06 +00:00
|
|
|
package cicaprojekt;
|
|
|
|
|
2016-04-24 20:48:17 +00:00
|
|
|
import java.util.ArrayList;
|
2016-04-19 09:46:06 +00:00
|
|
|
import java.util.List;
|
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* A játékban megjelenő játékosokat reprezentáló osztály. A két játékos
|
|
|
|
* Jaffa és O'Neill ezredes lehet.
|
|
|
|
*/
|
2016-04-24 21:01:34 +00:00
|
|
|
public class Player extends PlayerBase {
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* A már begyűjtött ZPM-eket tároló lista.
|
|
|
|
*/
|
2016-04-24 21:01:34 +00:00
|
|
|
private List<ZPM> zpmContainer;
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Az éppen aktuálisan felemelt dobozt tárolja.
|
|
|
|
*/
|
2016-04-24 21:01:34 +00:00
|
|
|
private Box boxLifted;
|
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* A játékos elpusztításáért felelős függvény. Amennyiben a játékosnál van
|
|
|
|
* egy doboz, az is elpusztuls. Ilyenkor a játékos ZPM-tárolója is kiürül.
|
|
|
|
*/
|
2016-05-13 20:10:29 +00:00
|
|
|
@Override
|
|
|
|
public void destroy() {
|
|
|
|
destroyed = true;
|
|
|
|
if(hasBox())
|
|
|
|
boxLifted.destroy();
|
2016-05-13 20:53:19 +00:00
|
|
|
Game.instance.playerDestroyed(this);
|
2016-05-14 22:02:29 +00:00
|
|
|
zpmContainer.clear();
|
2016-05-13 20:10:29 +00:00
|
|
|
}
|
2016-04-24 21:01:34 +00:00
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Az osztály konstruktora. A játékos kezdőcsempéjét tulajdonságait állítja be.
|
|
|
|
*
|
|
|
|
* @param name a játékos neve
|
|
|
|
* @param startTile a kezdőcsempe
|
|
|
|
* @param startDirection a játékos kezdőiránya
|
|
|
|
*/
|
2016-04-25 11:56:41 +00:00
|
|
|
public Player(String name, Tile startTile, Direction startDirection) {
|
|
|
|
super(name, startTile, startDirection);
|
2016-04-24 20:48:17 +00:00
|
|
|
zpmContainer = new ArrayList<>();
|
2016-04-24 21:01:34 +00:00
|
|
|
}
|
2016-04-23 11:19:55 +00:00
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Megmondja, hogy a játékosnál van-e éppen doboz.
|
|
|
|
*
|
|
|
|
* @return true, ha van nála doboz
|
|
|
|
* false, egyébként
|
|
|
|
*/
|
2016-05-07 14:19:57 +00:00
|
|
|
public boolean hasBox() {
|
|
|
|
return (boxLifted != null);
|
|
|
|
}
|
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Egy doboz felemelését implementáló függvény. A játékos előtt lévő doboz
|
|
|
|
* emeli fel.
|
|
|
|
*/
|
2016-04-24 21:01:34 +00:00
|
|
|
public void boxLift() {
|
2016-05-13 20:10:29 +00:00
|
|
|
if(!isDestroyed())
|
2016-05-14 11:13:44 +00:00
|
|
|
boxLifted = currentTile.getAdjacentTile(facingDirection).getABox();
|
2016-04-24 21:01:34 +00:00
|
|
|
}
|
2016-04-19 09:46:06 +00:00
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Egy doboz lerakását implementáló függvény. A játékos előtt lévő csempére
|
|
|
|
* teszi le a dobozt, ha a csempére lehet dobozokat rakni.
|
|
|
|
*
|
|
|
|
* @see Tile#boxPermission()
|
|
|
|
*/
|
2016-04-24 21:01:34 +00:00
|
|
|
public void boxDrop() {
|
2016-05-13 20:10:29 +00:00
|
|
|
if(!isDestroyed()) {
|
|
|
|
Tile target = currentTile.getAdjacentTile(facingDirection);
|
2016-05-14 17:47:29 +00:00
|
|
|
if (target.boxPermission()) {
|
2016-05-13 20:10:29 +00:00
|
|
|
target.putABox(boxLifted);
|
|
|
|
boxLifted = null;
|
|
|
|
}
|
2016-05-13 18:54:17 +00:00
|
|
|
}
|
2016-04-24 21:01:34 +00:00
|
|
|
}
|
2016-04-24 20:48:17 +00:00
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Egy ZPM felvevését implementáló függvény adott csempéről.
|
|
|
|
* A felvett ZPM bekerül a tárolóba, majd új ZPM generálódik.
|
|
|
|
*
|
|
|
|
* @param tile a kapott csempe
|
|
|
|
* @see Game#generateZPM()
|
|
|
|
*/
|
2016-04-24 20:48:17 +00:00
|
|
|
@Override
|
2016-04-24 21:01:34 +00:00
|
|
|
public void pickZPM(Tile tile) {
|
2016-04-24 20:48:17 +00:00
|
|
|
zpmContainer.add(tile.getZPMFromTile());
|
2016-05-14 20:37:43 +00:00
|
|
|
Game.instance.generateZPM();
|
2016-04-24 20:48:17 +00:00
|
|
|
}
|
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Egy csillagkapu kilövését megvalósító függvény. A játékos aktuális
|
|
|
|
* irányába lövi ki a kapott csillagkaput.
|
|
|
|
*
|
|
|
|
* @param stargate kapott csillagkapu
|
|
|
|
*/
|
2016-04-24 20:48:17 +00:00
|
|
|
public void shootStargate(Stargate stargate) {
|
2016-05-13 20:10:29 +00:00
|
|
|
if(!isDestroyed())
|
|
|
|
this.currentTile.getAdjacentTile(facingDirection).spawnStargate(stargate, facingDirection);
|
2016-04-24 21:01:34 +00:00
|
|
|
}
|
2016-04-25 22:43:58 +00:00
|
|
|
|
2016-05-16 17:14:21 +00:00
|
|
|
/**
|
|
|
|
* Visszatér a játékos tárolójában lévő ZPM-ek számával.
|
|
|
|
*
|
|
|
|
* @return ZPM-ek száma
|
|
|
|
*/
|
2016-04-25 22:43:58 +00:00
|
|
|
public int getZPMCount(){
|
|
|
|
return zpmContainer.size();
|
|
|
|
}
|
2016-04-19 09:46:06 +00:00
|
|
|
}
|