@Override
    public final boolean checkWin() {
        int sum = 0;

        for (IPlayer player : getPlayers()) {
            sum += player.getPoints();
        }

        if (sum >= getWinThreshold()) {
            return true;
        }

        for (IPlayer player : getPlayers()) {
            ICoordinates coord = player.getCoordinates();
            ITile tile = getMap().getTile(coord.toTile());
            IField field = getMap().getField(coord);

            // Game is Won if everyone is on Helipad...
            if (!tile.getTileType().getName().equals("Helicopter")) {
                return false;
            }

            if (field.getZombie() != null) {
                return false;
            }

            // ... and on center Field
            if (!coord.toRelativeField().equals(new Coordinates(1, 1))) {
                return false;
            }
        }

        return true;
    }