@Override public HashMap<String, Integer> getInfo(GameObjectID id) throws BozorgExceptionBase { HashMap<String, Integer> ret = new HashMap<String, Integer>(); if (objects.get(id.getNumber()).getClass().equals(Fan.class)) { Fan f = (Fan) objects.get(id.getNumber()); ret.put(JudgeAbstract.ROW, f.x); ret.put(JudgeAbstract.COL, f.y); ret.put(JudgeAbstract.OWNER, f.owner.getName()); if (f.isAlive) ret.put(JudgeAbstract.IS_ALIVE, JudgeAbstract.ALIVE); else ret.put(JudgeAbstract.IS_ALIVE, JudgeAbstract.DEAD); } if (objects.get(id.getNumber()).getClass().equals(Player.class)) { Player p = (Player) objects.get(id.getNumber()); ret.put(JudgeAbstract.ROW, p.x); ret.put(JudgeAbstract.COL, p.y); ret.put(JudgeAbstract.SPEED, p.getSpeed()); ret.put(JudgeAbstract.NAME, p.getName()); if (Judge.winner == 4) ret.put(JudgeAbstract.IS_WINNER, JudgeAbstract.NOT_FINISHED); else if (Judge.winner == p.getName()) ret.put(JudgeAbstract.IS_WINNER, JudgeAbstract.WINS); else ret.put(JudgeAbstract.IS_WINNER, JudgeAbstract.LOST); ret.put(JudgeAbstract.POWER, p.getPower()); ret.put(JudgeAbstract.VISION, p.getVision()); ret.put(JudgeAbstract.FANS, p.getFans()); if (p.getHp() > 0) ret.put(JudgeAbstract.IS_ALIVE, JudgeAbstract.ALIVE); else ret.put(JudgeAbstract.IS_ALIVE, JudgeAbstract.DEAD); ret.put(JudgeAbstract.HEALTH, Math.max(p.getHp(), 0)); } return ret; }
@Override public void updateInfo(GameObjectID id, String infoKey, Integer infoValue) throws BozorgExceptionBase { if (objects.get(id.getNumber()).getClass().equals(Fan.class)) { Fan f = (Fan) objects.get(id.getNumber()); if (infoKey.equals(JudgeAbstract.ROW)) f.x = infoValue; if (infoKey.equals(JudgeAbstract.COL)) f.y = infoValue; if (infoKey.equals(JudgeAbstract.OWNER)) for (Player p : players) if (p.getName() == infoValue) f.owner = p; if (infoKey.equals(JudgeAbstract.IS_ALIVE)) if (infoValue == JudgeAbstract.ALIVE) f.isAlive = true; else f.isAlive = false; } if (objects.get(id.getNumber()).getClass().equals(Player.class)) { Player p = (Player) objects.get(id.getNumber()); if (infoKey.equals(JudgeAbstract.ROW)) p.x = infoValue; if (infoKey.equals(JudgeAbstract.COL)) p.y = infoValue; if (infoKey.equals(JudgeAbstract.IS_ALIVE)) if (infoValue == JudgeAbstract.ALIVE) if (p.getHp() == 0) p.setHp(100); if (infoKey.equals(JudgeAbstract.SPEED)) p.setSpeed(infoValue); if (infoKey.equals(JudgeAbstract.NAME)) p.setName(infoValue); if (infoKey.equals(JudgeAbstract.POWER)) p.setPower(infoValue); if (infoKey.equals(JudgeAbstract.VISION)) p.setVision(infoValue); if (infoKey.equals(JudgeAbstract.FANS)) p.setFans(infoValue); } }
@Override public void next50milis() { for (Player p : Judge.players) p.next50milis(); time += 50; if (time % 5000 != 0) return; if (winner == 4) { int tmp = 0; for (Player p : Judge.players) { if (map.getMap()[p.x][p.y].getType() == JudgeAbstract.JJ_CELL) { tmp++; winner = p.getName(); } } if (tmp > 1) winner = 4; } }