@Override protected String execute(Player player, Map<String, Object> params, Session session) throws Exception { long lastUpdate = (Long) params.get("update"); Ally ally = player.getAlly(); if (ally == null) throw new IllegalOperationException("Vous n'appartanez à aucune alliance."); Player kicked = DataAccess.getPlayerById((Integer) params.get("id")); if (kicked == null) throw new IllegalOperationException("Ce joueur n'existe pas"); if (kicked.getIdAlly() != player.getIdAlly()) throw new IllegalOperationException("Ce joueur ne fait pas partie de votre alliance."); if (player.getAllyRank() < ally.getRequiredRank(Ally.RIGHT_KICK, kicked.getAllyRank())) throw new IllegalOperationException( "Vous n'avez pas les droits nécessaires pour éjecter ce membre."); List<Player> members = ally.getMembers(); // Quitte les canaux de discussion de l'alliance ChatManager.getInstance().leaveAllyChannels(kicked); synchronized (kicked.getLock()) { kicked = DataAccess.getEditable(kicked); kicked.setAllyRank(0); kicked.setIdAlly(0); kicked.setLastAllyIn(Utilities.now()); kicked.save(); } // Vérifie les liens entre flottes des membres de l'alliance synchronized (members) { for (Player member : members) FleetTools.checkLinks(member); } // TODO bmoyet Event : Ajoutez un événement pour le kick // DataAccess.save(new Event()); // Met à jour l'influence de l'alliance ally.updateInfluences(); // Mise à jour des secteurs consultés pour les joueurs de l'alliance, // afin que le membre éjecté soit pris en compte, au besoin UpdateTools.queueAreaUpdate(ally.getMembers()); UpdateTools.queueAllyUpdate(kicked.getId(), 0, false); UpdateTools.queueChatChannelsUpdate(kicked.getId(), false); UpdateTools.queueAreaUpdate(kicked); return UpdateTools.formatUpdates( player, Update.getAllyUpdate(lastUpdate), Update.getAreaUpdate()); }
public boolean isAdmissible(Ally ally) { long points = 0; if (ally != null) points = ally.getPoints(); if (minPoints != -1 && points < minPoints) return false; if (maxPoints != -1 && points > minPoints) return false; int level = ally.getMediumLevel(); if (minLevel != -1 && level < minLevel) return false; if (maxLevel != -1 && level > minLevel) return false; return true; }
public static JSONStringer getPlayerProducts(JSONStringer json, Player player) { if (json == null) json = new JSONStringer(); json.array(); if (player.getIdAlly() != 0) { Ally ally = player.getAlly(); List<Area> areas = DataAccess.getAllAreas(); synchronized (areas) { for (Area area : areas) if (area.getIdDominatingAlly() == ally.getId() && area.getProduct() != 0) json.value(area.getProduct()); } } json.endArray(); return json; }
@Override protected String execute(Player player, Map<String, Object> params, Session session) throws Exception { AllyNews news = DataAccess.getAllyNewsById((Integer) params.get("news")); if (news == null) throw new IllegalOperationException("Cette news n'existe pas."); Ally ally = player.getAlly(); if (ally == null) throw new IllegalOperationException("Vous n'appartenez à aucune alliance."); if (news.getIdAlly() != player.getIdAlly()) throw new IllegalOperationException("Vous ne pouvez pas supprimer cette news."); if (player.getAllyRank() < ally.getRequiredRank(Ally.RIGHT_MANAGE_NEWS)) throw new IllegalOperationException( "Vous n'avez pas les droits nécessaires pour effectuer cette action."); if (news.getIdApplicant() != 0) throw new IllegalOperationException( "Impossible de supprimer une news concernant la candidature d'un joueur."); JSONStringer json = new JSONStringer(); news.delete(); Event event = new Event( Event.EVENT_ALLY_REMOVED_NEWS, Event.TARGET_ALLY, ally.getId(), 0, -1, -1, player.getLogin()); event.save(); UpdateTools.queueNewEventUpdate(ally.getMembers(), false); return json.object().key("id").value(news.getId()).endObject().toString(); }
public void run() { this.setName("OrganizeElection (daily)"); List<Ally> allies = new ArrayList<Ally>(DataAccess.getAllAllies()); for (Ally ally : allies) { if (!ally.getOrganization().equals(Ally.ORGANIZATION_DEMOCRACY) && !ally.getOrganization().equals(Ally.ORGANIZATION_WARMONGER)) continue; if (ally.getDaysFromCreation() % Election.FREQUENCY == 0 && ally.getDaysFromCreation() != 0 && DataAccess.getElectionByAlly(ally.getId()) == null) { DataAccess.save(new Election(Utilities.now(), ally.getId())); // TODO bmoyet Event : Avertir l'alliance du démarrage du vote Event event = new Event(Event.EVENT_ELECTION_START, Event.TARGET_ALLY, ally.getId(), 0, -1, -1); event.save(); UpdateTools.queueNewEventUpdate(ally.getMembers(), false); } } }