package game;
import java.util.ArrayList;
import account.Account;
public class Team implements IGameElement {
//private boolean laser;
//視野//
//Accountを3人持っている
private ArrayList<Account> playersAccount = new ArrayList<Account>();
//Bombを0〜6持ってる
//private ArrayList<Bomb> bombList = new ArrayList<Bomb>();
//LaserTurretを0〜1持っている
private LaserTurret laserTurret = null;
//Mirrorを0〜3持っている
private ArrayList<Mirror> mirrorList = new ArrayList<Mirror>();
//laserのクールタイム falseでクールタイムがない状態
private int coolTime = 0;
private boolean coolTimeFlag = false;
//チームにアカウントを追加
public void addMember(Account ac) {
playersAccount.add(ac);
}
//チームのアカウントを削除
public void removeMember(Account ac) {
playersAccount.remove(ac);
}
// チームのn番目のアカウント情報を取得
public Account getMember(int n) {
return playersAccount.get(n);
}
//チームのアカウントをカウント
public int getTeamMemberCount(){
return playersAccount.size();
}
//LaserTurretを取得
public LaserTurret getLaserTurret() {
return laserTurret;
}
//LaserTurretを新規作成
public void createLaserTurret(double x, double y, double z, double a, String state, String sId) {
laserTurret = new LaserTurret(x,y,z,a,state,sId);
}
//LaserTurertを更新
public void updateLaserTurret(double angle, String state) {
this.laserTurret.setAngle(angle);
this.laserTurret.setState(state);
}
//LaserTurretを削除
public void removeLaserTurret(int countTime) {
this.laserTurret = null;
coolTime = countTime;
coolTimeFlag = true;
}
//Mirrorを新規作成
public void createMirror(double mPointX, double mPointY, double mPointZ, double mAngle, String mState, String sId) {
mirrorList.add(new Mirror(mPointX,mPointY,mPointZ,mAngle,mState,sId));
}
//Mirrorを更新
public void updateMirror(double angle, String state, Mirror myMirror) {
myMirror.setAngle(angle);
myMirror.setState(state);
}
//Mirrorを削除
public void removeMirror(Mirror mirror) {
mirrorList.remove(mirror);
}
//Mirrorの数
public int countMirror() {
return mirrorList.size();
}
//i番目のMirrorを取得
public Mirror getMirror(int i) {
return mirrorList.get(i);
}
//自分自身の設置したMirrorをsIdで探す
public Mirror getMyMirror(String sId) {
Mirror mirror;
for (int i=0; i<mirrorList.size(); i++) {
mirror = mirrorList.get(i);
//一致するsIdを探し、一致した場合、accountを返す
if (mirror.getsId().equals(sId)) {
return mirror;
}
}
return null;
}
//レーザのcoolTime
public int getCoolTime() {
return coolTime;
}
public void setCoolTimeFlag(boolean flag) {
coolTimeFlag = flag;
}
public boolean getCoolTimeFlag() {
return coolTimeFlag;
}
//visitorによる処理を受け入れる
public boolean accept(IGameElementVisitor v) {
if (!v.visit(this)) return false;
for (Account account: playersAccount) {
if (!account.accept(v)) return false;
}
return true;
}
}