@Override public void onClick(float x, float y) { if (newMilitaryPos.contains(x, y)) { parent .getScreen() .showTabList( GlobalStrings.getString(GlobalStrings.Keys.NEW_MILITARY), TabListGameFrame.ListKindType.MILITARY_KIND, parent.getCurrentArchitecture(), parent.getCurrentArchitecture().getActualCreatableMilitaryKinds(), TabListGameFrame.Selection.SINGLE, selectedItems -> { MilitaryKind kind = (MilitaryKind) selectedItems.get(0); parent.getCurrentArchitecture().createMilitary(kind); invalidateListPanes(); }); } else if (recruitPos.contains(x, y) && parent.getCurrentArchitecture().getRecruitableMilitaries().size() > 0) { parent .getScreen() .showTabList( GlobalStrings.getString(GlobalStrings.Keys.RECRUIT_MILITARY), TabListGameFrame.ListKindType.PERSON, parent.getCurrentArchitecture(), parent.getCurrentArchitecture().getPersonsExcludingMayor(), TabListGameFrame.Selection.MULTIPLE, selectedItems -> { for (GameObject i : selectedItems) { Person p = (Person) i; p.setDoingWork(Person.DoingWork.RECRUIT); } invalidateListPanes(); }); } else if (trainingPos.contains(x, y) && parent.getCurrentArchitecture().getSelectTrainableMilitaries().size() > 0) { parent .getScreen() .showTabList( GlobalStrings.getString(GlobalStrings.Keys.TRAIN_MILITARY), TabListGameFrame.ListKindType.PERSON, parent.getCurrentArchitecture().getPersonsExcludingMayor(), TabListGameFrame.Selection.MULTIPLE, selectedItems -> { for (GameObject i : selectedItems) { Person p = (Person) i; p.setDoingWork(Person.DoingWork.TRAINING); } invalidateListPanes(); }); } else if (reorganizePos.contains(x, y) && currentMilitary != null) { GameObjectList<Person> leaderCandidates = new GameObjectList<>(parent.getCurrentArchitecture().getPersonsNotInMilitary()); leaderCandidates.add(currentMilitary.getLeader()); parent .getScreen() .showTabList( GlobalStrings.getString(GlobalStrings.Keys.ASSIGN_LEADER), TabListGameFrame.ListKindType.PERSON, leaderCandidates, TabListGameFrame.Selection.SINGLE, selectedItems -> { currentMilitary.setLeader((Person) selectedItems.get(0)); parent .getScreen() .showTabList( GlobalStrings.getString(GlobalStrings.Keys.ASSIGN_MILITARY_PERSON), TabListGameFrame.ListKindType.PERSON, parent.getCurrentArchitecture().getPersonsNotInMilitary(), TabListGameFrame.Selection.MULTIPLE, selectedItems1 -> { currentMilitary.setPersons( selectedItems1 .stream() .map(o -> (Person) o) .collect(Collectors.toCollection(GameObjectList<Person>::new))); invalidateListPanes(); }); }); } }