@Override public ArrayList<String> getVision(GameObjectID player) throws BozorgExceptionBase { if (!player.getClass().equals(Player.class)) throw new BozorgExceptionBase(); if (((Player) (objects.get(player.getNumber()))).getHp() == 0) throw new BozorgExceptionBase(); if (((Player) objects.get(player.getNumber())).getVision() > 0) { ArrayList<String> ret = new ArrayList<String>(); for (int i = 0; i < map.getWidth(); i++) for (int j = 0; j < map.getHeight(); j++) ret.add(i + "," + j); return ret; } TreeSet<String> set = new TreeSet<String>(); Player p = (Player) objects.get(player.getNumber()); for (Object o : objects) { if (o.getClass().equals(Fan.class)) if (((Fan) o).owner.equals((Player) objects.get(player.getNumber())) && ((Fan) o).isAlive) set.add(((Fan) o).x + "," + ((Fan) o).y); } for (int i = Math.max(0, p.x - p.getVision()); i < Math.min(map.getWidth(), p.x + p.getVision() + 1); i++) for (int j = Math.max(0, p.y - p.getVision()); j < Math.min(map.getHeight(), p.y + p.getVision() + 1); j++) set.add(i + "," + j); ArrayList<String> ret = new ArrayList<String>(); for (String s : set) ret.add(s); return ret; }