mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Start working on Online screens
This commit is contained in:
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -1337,6 +1337,9 @@ 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/LimitedWinLose.java -text
|
||||||
forge-gui-mobile/src/forge/screens/match/winlose/QuestWinLose.java -text
|
forge-gui-mobile/src/forge/screens/match/winlose/QuestWinLose.java -text
|
||||||
forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java -text
|
forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/online/OnlineChatScreen.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/online/OnlineMenu.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestDeckEditor.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestDeckEditor.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java -text
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import forge.assets.FSkinImage;
|
|||||||
import forge.deck.FDeckChooser;
|
import forge.deck.FDeckChooser;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.screens.achievements.AchievementsScreen;
|
import forge.screens.achievements.AchievementsScreen;
|
||||||
|
import forge.screens.online.OnlineMenu;
|
||||||
import forge.screens.settings.SettingsScreen;
|
import forge.screens.settings.SettingsScreen;
|
||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
@@ -38,9 +39,9 @@ public class HomeScreen extends FScreen {
|
|||||||
addButton("Play Online", new FEventHandler() {
|
addButton("Play Online", new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
|
OnlineMenu.getPreferredScreen().open();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
buttons.get(buttons.size() - 1).setEnabled(false);
|
|
||||||
addButton("Deck Manager", new FEventHandler() {
|
addButton("Deck Manager", new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package forge.screens.online;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import forge.screens.FScreen;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.toolbox.FChoiceList;
|
||||||
|
import forge.toolbox.FTextField;
|
||||||
|
import forge.util.Utils;
|
||||||
|
|
||||||
|
public class OnlineChatScreen extends FScreen {
|
||||||
|
private static final float PADDING = Utils.scale(5);
|
||||||
|
|
||||||
|
private final FChoiceList<String> lstLog = add(new FChoiceList<String>(new ArrayList<String>()));
|
||||||
|
private final FTextField txtSendMessage = add(new FTextField());
|
||||||
|
|
||||||
|
public OnlineChatScreen() {
|
||||||
|
super(null, OnlineMenu.getMenu());
|
||||||
|
|
||||||
|
txtSendMessage.setGhostText("Enter message to send");
|
||||||
|
txtSendMessage.setChangedHandler(new FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
sendMessage();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendMessage() {
|
||||||
|
String message = txtSendMessage.getText();
|
||||||
|
if (message.isEmpty()) { return; }
|
||||||
|
|
||||||
|
txtSendMessage.setText("");
|
||||||
|
|
||||||
|
lstLog.addItem(message);
|
||||||
|
lstLog.scrollToBottom();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float startY, float width, float height) {
|
||||||
|
float x = PADDING;
|
||||||
|
float y = startY + PADDING;
|
||||||
|
float w = width - 2 * PADDING;
|
||||||
|
float h = height - y - txtSendMessage.getHeight() - 2 * PADDING;
|
||||||
|
lstLog.setBounds(x, y, w, h);
|
||||||
|
y += h + PADDING;
|
||||||
|
txtSendMessage.setBounds(x, y, w, txtSendMessage.getHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package forge.screens.online;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||||
|
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.screens.LaunchScreen;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.toolbox.FTextArea;
|
||||||
|
import forge.util.Utils;
|
||||||
|
|
||||||
|
public class OnlineLobbyScreen extends LaunchScreen {
|
||||||
|
private static final float PADDING = Utils.scale(10);
|
||||||
|
|
||||||
|
private final FTextArea lblDesc = add(new FTextArea(false,
|
||||||
|
"Coming soon..."));
|
||||||
|
|
||||||
|
public OnlineLobbyScreen() {
|
||||||
|
super(null, OnlineMenu.getMenu());
|
||||||
|
|
||||||
|
lblDesc.setAlignment(HAlignment.CENTER);
|
||||||
|
lblDesc.setCenterVertically(true);
|
||||||
|
lblDesc.setFont(FSkinFont.get(20));
|
||||||
|
lblDesc.setTextColor(FLabel.INLINE_LABEL_COLOR);
|
||||||
|
|
||||||
|
btnStart.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayoutAboveBtnStart(float startY, float width, float height) {
|
||||||
|
float x = PADDING;
|
||||||
|
float y = startY + PADDING;
|
||||||
|
float w = width - 2 * PADDING;
|
||||||
|
float h = height - y - PADDING;
|
||||||
|
lblDesc.setBounds(x, y, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void startMatch() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean buildLaunchParams(LaunchParams launchParams) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
101
forge-gui-mobile/src/forge/screens/online/OnlineMenu.java
Normal file
101
forge-gui-mobile/src/forge/screens/online/OnlineMenu.java
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
package forge.screens.online;
|
||||||
|
|
||||||
|
import forge.Forge;
|
||||||
|
import forge.assets.FImage;
|
||||||
|
import forge.assets.FSkinImage;
|
||||||
|
import forge.menu.FMenuItem;
|
||||||
|
import forge.menu.FPopupMenu;
|
||||||
|
import forge.model.FModel;
|
||||||
|
import forge.properties.ForgePreferences;
|
||||||
|
import forge.properties.ForgePreferences.FPref;
|
||||||
|
import forge.screens.FScreen;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
|
||||||
|
public class OnlineMenu extends FPopupMenu {
|
||||||
|
public enum OnlineScreen {
|
||||||
|
Lobby("Lobby", FSkinImage.DECKLIST, OnlineLobbyScreen.class),
|
||||||
|
Chat("Chat", FSkinImage.HAND, OnlineChatScreen.class);
|
||||||
|
|
||||||
|
private final FMenuItem item;
|
||||||
|
private final Class<? extends FScreen> screenClass;
|
||||||
|
private FScreen screen;
|
||||||
|
|
||||||
|
private OnlineScreen(final String caption0, final FImage icon0, final Class<? extends FScreen> screenClass0) {
|
||||||
|
screenClass = screenClass0;
|
||||||
|
item = new FMenuItem(caption0, icon0, new FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
Forge.back(); //remove current screen from chain
|
||||||
|
open();
|
||||||
|
setPreferredScreen(OnlineScreen.this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeScreen() {
|
||||||
|
if (screen == null) { //don't initialize screen until it's opened the first time
|
||||||
|
try {
|
||||||
|
screen = screenClass.newInstance();
|
||||||
|
screen.setHeaderCaption("Play Online - " + item.getText());
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open() {
|
||||||
|
initializeScreen();
|
||||||
|
Forge.openScreen(screen);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAsBackScreen() {
|
||||||
|
initializeScreen();
|
||||||
|
Forge.setBackScreen(screen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final ForgePreferences prefs = FModel.getPreferences();
|
||||||
|
private static final OnlineMenu menu = new OnlineMenu();
|
||||||
|
private static OnlineScreen preferredScreen;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
preferredScreen = OnlineScreen.valueOf(prefs.getPref(FPref.PLAY_ONLINE_SCREEN));
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
preferredScreen = OnlineScreen.Lobby;
|
||||||
|
prefs.setPref(FPref.PLAY_ONLINE_SCREEN, preferredScreen.name());
|
||||||
|
prefs.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OnlineScreen getPreferredScreen() {
|
||||||
|
return preferredScreen;
|
||||||
|
}
|
||||||
|
public static void setPreferredScreen(OnlineScreen preferredScreen0) {
|
||||||
|
if (preferredScreen == preferredScreen0) { return; }
|
||||||
|
preferredScreen = preferredScreen0;
|
||||||
|
prefs.setPref(FPref.PLAY_ONLINE_SCREEN, preferredScreen.name());
|
||||||
|
prefs.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OnlineMenu getMenu() {
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
private OnlineMenu() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void buildMenu() {
|
||||||
|
FScreen currentScreen = Forge.getCurrentScreen();
|
||||||
|
for (OnlineScreen ngs : OnlineScreen.values()) {
|
||||||
|
addItem(ngs.item);
|
||||||
|
ngs.item.setSelected(currentScreen == ngs.screen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ public class FTextArea extends FScrollPane {
|
|||||||
private Vector2 insets;
|
private Vector2 insets;
|
||||||
private FSkinColor textColor;
|
private FSkinColor textColor;
|
||||||
private final TextRenderer renderer;
|
private final TextRenderer renderer;
|
||||||
|
private boolean centerVertically;
|
||||||
|
|
||||||
public FTextArea(boolean parseReminderText0) {
|
public FTextArea(boolean parseReminderText0) {
|
||||||
this(parseReminderText0, "");
|
this(parseReminderText0, "");
|
||||||
@@ -43,6 +44,13 @@ public class FTextArea extends FScrollPane {
|
|||||||
alignment = alignment0;
|
alignment = alignment0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getCenterVertically() {
|
||||||
|
return centerVertically;
|
||||||
|
}
|
||||||
|
public void setCenterVertically(boolean centerVertically0) {
|
||||||
|
centerVertically = centerVertically0;
|
||||||
|
}
|
||||||
|
|
||||||
public FSkinFont getFont() {
|
public FSkinFont getFont() {
|
||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
@@ -71,6 +79,6 @@ public class FTextArea extends FScrollPane {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawBackground(Graphics g) {
|
protected void drawBackground(Graphics g) {
|
||||||
renderer.drawText(g, text, font, textColor, insets.x - getScrollLeft(), insets.y - getScrollTop(), getScrollWidth() - 2 * insets.x, getScrollHeight() - 2 * insets.y, 0, getHeight(), true, alignment, false);
|
renderer.drawText(g, text, font, textColor, insets.x - getScrollLeft(), insets.y - getScrollTop(), getScrollWidth() - 2 * insets.x, getScrollHeight() - 2 * insets.y, 0, getHeight(), true, alignment, centerVertically);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
|||||||
|
|
||||||
NEW_GAME_SCREEN("Constructed"),
|
NEW_GAME_SCREEN("Constructed"),
|
||||||
LOAD_GAME_SCREEN("BoosterDraft"),
|
LOAD_GAME_SCREEN("BoosterDraft"),
|
||||||
|
PLAY_ONLINE_SCREEN("Lobby"),
|
||||||
|
|
||||||
SUBMENU_CURRENTMENU ("CONSTRUCTED"),
|
SUBMENU_CURRENTMENU ("CONSTRUCTED"),
|
||||||
SUBMENU_SANCTIONED ("true"),
|
SUBMENU_SANCTIONED ("true"),
|
||||||
|
|||||||
Reference in New Issue
Block a user