private void initMilitaryTopPane() { Table contentTable = new Table(); int itemPerRow = (int) (militaryTablePos.width / (militaryTablePortraitSize.x + militaryTableCaptionSize.x)); int index = 0; for (Military m : parent.getCurrentArchitecture().getMilitariesWithLeader()) { Table item = new Table(); Person leader = m.getLeader(); ImageWidget<Military> portrait; if (leader != null) { portrait = new ImageWidget<>( parent.getScreen().getSmallPortrait(leader.getPortraitId()), militaryTablePortraitColor); } else { portrait = new ImageWidget<>(null, militaryTablePortraitColor); } portrait.setExtra(m); item.add(portrait).width(militaryTablePortraitSize.x).height(militaryTablePortraitSize.y); Table detail = new Table(); TextWidget<Military> caption = new TextWidget<>(militaryTableCaptionTemplate); caption.setExtra(m); caption.setText(m.getName()); detail .add(caption) .width(militaryTableCaptionSize.x) .height(militaryTableCaptionSize.y) .row(); TextWidget<Military> quantity = new TextWidget<>(militaryTableDetailTemplate); quantity.setExtra(m); quantity.setText( GlobalStrings.getString(GlobalStrings.Keys.MILITARY_QUANTITY_SHORT) + m.getQuantity()); detail.add(quantity).width(militaryTableDetailSize.x).height(militaryTableDetailSize.y).row(); TextWidget<Military> morale = new TextWidget<>(militaryTableDetailTemplate); morale.setExtra(m); morale.setText( GlobalStrings.getString(GlobalStrings.Keys.MILITARY_MORALE_SHORT) + m.getMorale()); detail.add(morale).width(militaryTableDetailSize.x).height(militaryTableDetailSize.y).row(); TextWidget<Military> combativity = new TextWidget<>(militaryTableDetailTemplate); combativity.setExtra(m); combativity.setText( GlobalStrings.getString(GlobalStrings.Keys.MILITARY_COMBATIVITY_SHORT) + m.getCombativity()); detail .add(combativity) .width(militaryTableDetailSize.x) .height(militaryTableDetailSize.y) .row(); detail.top(); item.add(detail); item.addListener( new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { currentMilitary = m; currentMilitaryPos = new Rectangle( item.getX() + militaryTablePos.getX(), item.getY() + militaryTablePos.getY(), item.getWidth(), item.getHeight()); if (m.isCampaignable()) { parent .getScreen() .getMapLayer() .startSelectingLocation( parent.getCurrentArchitecture().getCampaignablePositions(), p -> { m.startCampaign(p); invalidateListPanes(); }); } return true; } }); contentTable.add(item); index++; if (index % itemPerRow == 0) { contentTable.row(); } } contentTable.top().left(); ScrollPane data = new ScrollPane(contentTable); militaryTopPane = WidgetUtility.setupScrollpane( militaryTablePos.getX(), militaryTablePos.getY(), militaryTablePos.getWidth(), militaryTablePos.getHeight(), data, parent.getScrollbar()); parent.addActor(militaryTopPane); }
@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(); }); }); } }
private void initMilitaryBottomPane() { Table contentTable = new Table(); for (Military m : parent.getCurrentArchitecture().getMilitariesWithoutLeader()) { List<TextWidget<Military>> rowWidgets = new ArrayList<>(); TextWidget<Military> name = new TextWidget<>(militaryListTextTemplate); name.setExtra(m); name.setText(m.getName()); contentTable.add(name).width(listNameWidth).height(listRowHeight); rowWidgets.add(name); TextWidget<Military> quantity = new TextWidget<>(militaryListTextTemplate); quantity.setExtra(m); quantity.setText(String.valueOf(m.getQuantity())); contentTable.add(quantity).width(listQuantityWidth).height(listRowHeight); rowWidgets.add(quantity); TextWidget<Military> recruit = new TextWidget<>(militaryListTextTemplate); recruit.setExtra(m); if (m.isFullyRecruited()) { recruit.setText(GlobalStrings.getString(GlobalStrings.Keys.TICK)); } else if (m.isBeingRecruited()) { recruit.setText(GlobalStrings.getString(GlobalStrings.Keys.UP_ARROW)); } else { recruit.setText(""); } contentTable.add(recruit).width(listRecruitWidth).height(listRowHeight).center(); rowWidgets.add(recruit); TextWidget<Military> train = new TextWidget<>(militaryListTextTemplate); train.setExtra(m); if (m.isFullyTrained()) { train.setText(GlobalStrings.getString(GlobalStrings.Keys.TICK)); } else if (m.isBeingTrained()) { train.setText(GlobalStrings.getString(GlobalStrings.Keys.UP_ARROW)); } else { train.setText(""); } contentTable.add(train).width(listTrainWidth).height(listRowHeight).center(); rowWidgets.add(train); rowWidgets.forEach( x -> x.addListener( new InputListener() { @Override public boolean touchDown( InputEvent event, float x, float y, int pointer, int button) { currentMilitary = m; currentMilitaryPos = new Rectangle( name.getX() + militaryListPos.getX(), name.getY() + militaryListPos.getY(), militaryListPos.getWidth(), name.getHeight()); return true; } })); showingTextWidgets.addAll(rowWidgets); contentTable.row().height(listRowHeight); } contentTable.top().left(); ScrollPane data = new ScrollPane(contentTable); militaryBottomPane = WidgetUtility.setupScrollpane( militaryListPos.getX(), militaryListPos.getY(), militaryListPos.getWidth(), militaryListPos.getHeight(), data, parent.getScrollbar()); parent.addActor(militaryBottomPane); }