mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Create menu button support
Start working on Quest Mode
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1201,6 +1201,7 @@ forge-gui-mobile/src/forge/screens/match/winlose/ControlWinLose.java -text
|
||||
forge-gui-mobile/src/forge/screens/match/winlose/GauntletWinLose.java -text
|
||||
forge-gui-mobile/src/forge/screens/match/winlose/LimitedWinLose.java -text
|
||||
forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java -text
|
||||
forge-gui-mobile/src/forge/screens/quest/QuestDuelsScreen.java -text
|
||||
forge-gui-mobile/src/forge/screens/quest/QuestScreen.java -text
|
||||
forge-gui-mobile/src/forge/screens/sealed/SealedScreen.java -text
|
||||
forge-gui-mobile/src/forge/screens/settings/FilesPage.java -text
|
||||
|
||||
@@ -10,6 +10,7 @@ import forge.assets.FSkinColor;
|
||||
import forge.assets.FSkinFont;
|
||||
import forge.assets.FSkinColor.Colors;
|
||||
import forge.assets.FSkinTexture;
|
||||
import forge.menu.FPopupMenu;
|
||||
import forge.screens.settings.SettingsScreen;
|
||||
import forge.toolbox.FContainer;
|
||||
import forge.toolbox.FEvent;
|
||||
@@ -26,6 +27,9 @@ public abstract class FScreen extends FContainer {
|
||||
protected FScreen(String headerCaption) {
|
||||
this(headerCaption == null ? null : new DefaultHeader(headerCaption));
|
||||
}
|
||||
protected FScreen(String headerCaption, FPopupMenu menu) {
|
||||
this(new MenuHeader(headerCaption, menu));
|
||||
}
|
||||
protected FScreen(Header header0) {
|
||||
header = header0;
|
||||
if (header != null) {
|
||||
@@ -57,12 +61,12 @@ public abstract class FScreen extends FContainer {
|
||||
}
|
||||
|
||||
public void showMenu() {
|
||||
SettingsScreen.show(); //TODO: Build menu containing settings item
|
||||
//buildMenu();
|
||||
}
|
||||
|
||||
protected void buildMenu() {
|
||||
|
||||
if (header instanceof MenuHeader) {
|
||||
((MenuHeader)header).btnMenu.trigger();
|
||||
}
|
||||
else { //just so settings screen if no menu header
|
||||
SettingsScreen.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,8 +99,8 @@ public abstract class FScreen extends FContainer {
|
||||
public abstract float getPreferredHeight();
|
||||
}
|
||||
private static class DefaultHeader extends Header {
|
||||
private static final float HEIGHT = Math.round(Utils.AVG_FINGER_HEIGHT * 0.8f);
|
||||
private static final FSkinFont FONT = FSkinFont.get(16);
|
||||
protected static final float HEIGHT = Math.round(Utils.AVG_FINGER_HEIGHT * 0.8f);
|
||||
protected static final FSkinFont FONT = FSkinFont.get(16);
|
||||
|
||||
private final FLabel btnBack, lblCaption;
|
||||
|
||||
@@ -132,6 +136,26 @@ public abstract class FScreen extends FContainer {
|
||||
lblCaption.setBounds(height, 0, width - 2 * height, height);
|
||||
}
|
||||
}
|
||||
private static class MenuHeader extends DefaultHeader {
|
||||
private final FLabel btnMenu;
|
||||
|
||||
public MenuHeader(String headerCaption, final FPopupMenu menu) {
|
||||
super(headerCaption);
|
||||
btnMenu = add(new FLabel.Builder().icon(new MenuIcon(HEIGHT, HEIGHT)).pressedColor(BTN_PRESSED_COLOR).align(HAlignment.CENTER).command(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
menu.show(btnMenu, 0, HEIGHT);
|
||||
}
|
||||
}).build());
|
||||
btnMenu.setSize(HEIGHT, HEIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLayout(float width, float height) {
|
||||
super.doLayout(width, height);
|
||||
btnMenu.setLeft(width - height);
|
||||
}
|
||||
}
|
||||
|
||||
protected static class BackIcon implements FImage {
|
||||
private static final float THICKNESS = Utils.scaleMax(3);
|
||||
@@ -165,6 +189,47 @@ public abstract class FScreen extends FContainer {
|
||||
}
|
||||
}
|
||||
|
||||
protected static class MenuIcon implements FImage {
|
||||
private static final FSkinColor COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||
|
||||
private final float width, height;
|
||||
public MenuIcon(float width0, float height0) {
|
||||
width = width0;
|
||||
height = height0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Graphics g, float x, float y, float w, float h) {
|
||||
float thickness = Math.round(h / 5);
|
||||
float delta = Math.round(thickness * 1.75f);
|
||||
y += (h - 2 * delta - thickness) / 2;
|
||||
|
||||
g.fillRect(COLOR, x, y, thickness, thickness);
|
||||
y += delta;
|
||||
g.fillRect(COLOR, x, y, thickness, thickness);
|
||||
y += delta;
|
||||
g.fillRect(COLOR, x, y, thickness, thickness);
|
||||
x += delta;
|
||||
y -= 2 * delta;
|
||||
w -= delta;
|
||||
g.fillRect(COLOR, x, y, w, thickness);
|
||||
y += delta;
|
||||
g.fillRect(COLOR, x, y, w, thickness);
|
||||
y += delta;
|
||||
g.fillRect(COLOR, x, y, w, thickness);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyDown(int keyCode) {
|
||||
if (keyCode == Keys.ESCAPE || keyCode == Keys.BACK) {
|
||||
|
||||
@@ -9,7 +9,7 @@ import forge.assets.FSkinImage;
|
||||
import forge.screens.constructed.ConstructedScreen;
|
||||
import forge.screens.draft.DraftScreen;
|
||||
import forge.screens.gauntlet.GauntletScreen;
|
||||
import forge.screens.quest.QuestScreen;
|
||||
import forge.screens.quest.QuestDuelsScreen;
|
||||
import forge.screens.sealed.SealedScreen;
|
||||
import forge.screens.settings.SettingsScreen;
|
||||
import forge.toolbox.FButton;
|
||||
@@ -46,9 +46,9 @@ public class HomeScreen extends FScreen {
|
||||
addButton("Quest Mode", new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
Forge.openScreen(new QuestScreen());
|
||||
Forge.openScreen(new QuestDuelsScreen());
|
||||
}
|
||||
}, false);
|
||||
}, true);
|
||||
addButton("Gauntlets", new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package forge.screens.quest;
|
||||
|
||||
public class QuestDuelsScreen extends QuestScreen {
|
||||
|
||||
public QuestDuelsScreen() {
|
||||
super("Quest Duels");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLayout(float startY, float width, float height) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,68 @@
|
||||
package forge.screens.quest;
|
||||
|
||||
import forge.game.GameType;
|
||||
import forge.screens.LaunchScreen;
|
||||
import forge.assets.FSkinImage;
|
||||
import forge.menu.FMenuItem;
|
||||
import forge.menu.FPopupMenu;
|
||||
import forge.screens.FScreen;
|
||||
import forge.toolbox.FEvent;
|
||||
import forge.toolbox.FEvent.FEventHandler;
|
||||
|
||||
public class QuestScreen extends LaunchScreen {
|
||||
public QuestScreen() {
|
||||
super("Quest Mode");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLayoutAboveBtnStart(float startY, float width, float height) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean buildLaunchParams(LaunchParams launchParams) {
|
||||
launchParams.gameType = GameType.Quest;
|
||||
return false; //TODO: Support launching match
|
||||
public abstract class QuestScreen extends FScreen {
|
||||
protected QuestScreen(String headerCaption) {
|
||||
super(headerCaption, new FPopupMenu() {
|
||||
@Override
|
||||
protected void buildMenu() {
|
||||
addItem(new FMenuItem("Duels", FSkinImage.QUEST_GEAR, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Challenges", FSkinImage.QUEST_HEART, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Tournaments", FSkinImage.PACK, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Travel", FSkinImage.QUEST_MAP, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Spell Shop", FSkinImage.QUEST_BOOK, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Bazaar", FSkinImage.QUEST_BOTTLES, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Change Deck", FSkinImage.DECKLIST, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("New Quest", FSkinImage.NEW, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Load Quest", FSkinImage.OPEN, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Preferences", FSkinImage.SETTINGS, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,6 +198,14 @@ public class FLabel extends FDisplayObject implements IButton {
|
||||
return handled;
|
||||
}
|
||||
|
||||
public boolean trigger() {
|
||||
if (isEnabled() && command != null) {
|
||||
command.handleEvent(new FEvent(this, FEventType.TAP));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public TextBounds getAutoSizeBounds() {
|
||||
TextBounds bounds;
|
||||
if (text.isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user