Start working on Online screens

This commit is contained in:
drdev
2015-04-24 14:36:35 +00:00
parent 6ee1ea2c58
commit 0eba04016a
7 changed files with 211 additions and 2 deletions

3
.gitattributes vendored
View File

@@ -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

View File

@@ -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) {

View File

@@ -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());
}
}

View File

@@ -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;
}
}

View 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);
}
}
}

View File

@@ -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);
} }
} }

View File

@@ -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"),