@Override public Mode chooseMode(Modes modes, Ability source, Game game) { if (this.isHuman()) { Iterator<Mode> it = modes.getAvailableModes(source, game).iterator(); Mode mode = it.next(); if (modes.size() == 1) { return mode; } int modeNum = RandomUtil.nextInt(modes.getAvailableModes(source, game).size()); for (int i = 0; i < modeNum; i++) { mode = it.next(); } return mode; } return super.chooseMode(modes, source, game); }
@Override public Mode chooseMode(Modes modes, Ability source, Game game) { log.debug("chooseMode"); if (modes.getMode() != null && modes.getMaxModes() == modes.getSelectedModes().size()) { // mode was already set by the AI return modes.getMode(); } //TODO: improve this; AvailableMode: for (Mode mode : modes.getAvailableModes(source, game)) { for (UUID selectedModeId : modes.getSelectedModes()) { Mode selectedMode = modes.get(selectedModeId); if (selectedMode.getId().equals(mode.getId())) { continue AvailableMode; } } if (mode.getTargets().canChoose(source.getSourceId(), source.getControllerId(), game)) { // and where targets are available return mode; } } return null; }
Map<UUID, String> modeMap = new LinkedHashMap<>(); AvailableModes: for (Mode mode : modes.getAvailableModes(source, game)) { int timesSelected = 0; for (UUID selectedModeId : modes.getSelectedModes()) { for (Mode mode : modes.getAvailableModes(source, game)) { if (mode.getId().equals(response.getUUID())) { return mode;