Make it so quest tournaments screen can be opened on Android

This commit is contained in:
drdev
2016-07-10 21:02:27 +00:00
parent 7b1830632b
commit 2e367d02fc
2 changed files with 173 additions and 4 deletions

View File

@@ -223,7 +223,7 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
FScreen currentScreen = Forge.getCurrentScreen();
addItem(duelsItem); duelsItem.setSelected(currentScreen == duelsScreen);
addItem(challengesItem); challengesItem.setSelected(currentScreen == challengesScreen);
//addItem(tournamentsItem); tournamentsItem.setSelected(currentScreen == tournamentsScreen);
addItem(tournamentsItem); tournamentsItem.setSelected(currentScreen == tournamentsScreen);
addItem(decksItem); decksItem.setSelected(currentScreen == decksScreen);
addItem(spellShopItem); spellShopItem.setSelected(currentScreen == spellShopScreen);
addItem(bazaarItem); bazaarItem.setSelected(currentScreen == bazaarScreen);

View File

@@ -1,14 +1,60 @@
package forge.screens.quest;
public class QuestTournamentsScreen extends QuestLaunchScreen {
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import com.badlogic.gdx.math.Vector2;
import forge.assets.FSkinFont;
import forge.assets.FSkinImage;
import forge.interfaces.IButton;
import forge.limited.BoosterDraft;
import forge.quest.IQuestTournamentView;
import forge.quest.QuestTournamentController;
import forge.quest.QuestDraftUtils.Mode;
import forge.quest.data.QuestEventDraftContainer;
import forge.screens.FScreen;
import forge.toolbox.FDisplayObject;
import forge.toolbox.FLabel;
import forge.toolbox.FOptionPane;
import forge.toolbox.FScrollPane;
public class QuestTournamentsScreen extends QuestLaunchScreen implements IQuestTournamentView {
private final FLabel lblInfo = add(new FLabel.Builder().text("Select a tournament to join.")
.align(HAlignment.CENTER).font(FSkinFont.get(16)).build());
private final FLabel lblCredits = add(new FLabel.Builder().icon(FSkinImage.QUEST_COINSTACK)
.text("Available Credits: 0").align(HAlignment.CENTER).insets(Vector2.Zero)
.font(FSkinFont.get(13)).build());
private final FLabel lblNoTournaments = add(new FLabel.Builder()
.text("There are no tournaments available at this time.").align(HAlignment.CENTER).insets(Vector2.Zero)
.font(FSkinFont.get(12)).build());
private final QuestEventPanel.Container pnlTournaments = add(new QuestEventPanel.Container());
private final FLabel btnSpendToken = add(new FLabel.ButtonBuilder().text("Spend Token").font(FSkinFont.get(14)).build());
private final FLabel btnLeaveTournament = add(new FLabel.ButtonBuilder().text("Leave Tournament").font(FSkinFont.get(12)).build());
private final ResultsScreen resultsScreen = new ResultsScreen();
private final QuestTournamentController controller;
private Mode mode = Mode.SELECT_TOURNAMENT;
public QuestTournamentsScreen() {
super();
controller = new QuestTournamentController(this);
}
@Override
protected void doLayoutAboveBtnStart(float startY, float width, float height) {
// TODO Auto-generated method stub
float x = PADDING;
float y = startY + PADDING / 2;
float w = width - 2 * PADDING;
lblInfo.setBounds(x, y, w, lblInfo.getAutoSizeBounds().height);
y += lblInfo.getHeight();
lblCredits.setBounds(x, y, w, lblCredits.getAutoSizeBounds().height);
y += lblCredits.getHeight();
lblNoTournaments.setBounds(x, y, w, lblNoTournaments.getAutoSizeBounds().height);
pnlTournaments.setBounds(x, y, w, height - y);
}
@Override
@@ -18,5 +64,128 @@ public class QuestTournamentsScreen extends QuestLaunchScreen {
@Override
public void onUpdate() {
controller.update();
}
@Override
public Mode getMode() {
return mode;
}
@Override
public void setMode(Mode mode0) {
mode = mode0;
}
@Override
public void populate() {
//not needed
}
@Override
public IButton getLblCredits() {
return lblCredits;
}
@Override
public void updateEventList(QuestEventDraftContainer events) {
pnlTournaments.clear();
if (events == null) { return; }
/*for (QuestEventDraft event : events) {
pnlTournaments.add(new QuestEventPanel(event, pnlTournaments));
}*/
pnlTournaments.revalidate();
}
@Override
public void updateTournamentBoxLabel(String playerID, int iconID, int box, boolean first) {
}
@Override
public void startDraft(BoosterDraft draft) {
}
@Override
public void editDeck(boolean isNew) {
}
@Override
public IButton getLblFirst() {
return resultsScreen.lblFirst;
}
@Override
public IButton getLblSecond() {
return resultsScreen.lblSecond;
}
@Override
public IButton getLblThird() {
return resultsScreen.lblThird;
}
@Override
public IButton getLblFourth() {
return resultsScreen.lblTokens;
}
@Override
public IButton getLblTokens() {
return resultsScreen.lblFourth;
}
@Override
public IButton getBtnSpendToken() {
return btnSpendToken;
}
@Override
public IButton getBtnLeaveTournament() {
return btnLeaveTournament;
}
private static class ResultsScreen extends FScreen {
private static final float PADDING = FOptionPane.PADDING;
private final FScrollPane scroller = add(new FScrollPane() {
@Override
protected ScrollBounds layoutAndGetScrollBounds(float visibleWidth, float visibleHeight) {
float x = PADDING;
float y = PADDING;
float w = visibleWidth - 2 * PADDING;
float h = lblFirst.getAutoSizeBounds().height;
for (FDisplayObject lbl : getChildren()) {
if (lbl.isVisible()) {
lbl.setBounds(x, y, w, lbl.getHeight() == 0 ? h : lbl.getHeight()); //respect height override if set
y += lbl.getHeight() + PADDING;
}
}
return new ScrollBounds(visibleWidth, y);
}
});
private final FLabel lblFirst = new FLabel.Builder().font(FSkinFont.get(15)).build();
private final FLabel lblSecond = new FLabel.Builder().font(FSkinFont.get(15)).build();
private final FLabel lblThird = new FLabel.Builder().font(FSkinFont.get(15)).build();
private final FLabel lblFourth = new FLabel.Builder().font(FSkinFont.get(15)).build();
private final FLabel lblTokens = new FLabel.Builder().font(FSkinFont.get(15)).build();
private ResultsScreen() {
super("Past Results");
}
@Override
public void onActivate() {
}
@Override
protected void doLayout(float startY, float width, float height) {
scroller.setBounds(0, startY, width, height - startY);
}
}
}