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; } }