mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +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/QuestWinLose.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/ConquestMapScreen.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.game.GameType;
|
||||
import forge.screens.achievements.AchievementsScreen;
|
||||
import forge.screens.online.OnlineMenu;
|
||||
import forge.screens.settings.SettingsScreen;
|
||||
import forge.toolbox.FButton;
|
||||
import forge.toolbox.FEvent;
|
||||
@@ -38,9 +39,9 @@ public class HomeScreen extends FScreen {
|
||||
addButton("Play Online", new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
OnlineMenu.getPreferredScreen().open();
|
||||
}
|
||||
});
|
||||
buttons.get(buttons.size() - 1).setEnabled(false);
|
||||
addButton("Deck Manager", new FEventHandler() {
|
||||
@Override
|
||||
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 FSkinColor textColor;
|
||||
private final TextRenderer renderer;
|
||||
private boolean centerVertically;
|
||||
|
||||
public FTextArea(boolean parseReminderText0) {
|
||||
this(parseReminderText0, "");
|
||||
@@ -43,6 +44,13 @@ public class FTextArea extends FScrollPane {
|
||||
alignment = alignment0;
|
||||
}
|
||||
|
||||
public boolean getCenterVertically() {
|
||||
return centerVertically;
|
||||
}
|
||||
public void setCenterVertically(boolean centerVertically0) {
|
||||
centerVertically = centerVertically0;
|
||||
}
|
||||
|
||||
public FSkinFont getFont() {
|
||||
return font;
|
||||
}
|
||||
@@ -71,6 +79,6 @@ public class FTextArea extends FScrollPane {
|
||||
|
||||
@Override
|
||||
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"),
|
||||
LOAD_GAME_SCREEN("BoosterDraft"),
|
||||
PLAY_ONLINE_SCREEN("Lobby"),
|
||||
|
||||
SUBMENU_CURRENTMENU ("CONSTRUCTED"),
|
||||
SUBMENU_SANCTIONED ("true"),
|
||||
|
||||
Reference in New Issue
Block a user