Create shell for Online Multiplayer Lobby

This commit is contained in:
drdev
2014-10-25 21:15:34 +00:00
parent 0c3e46dbf5
commit b4ed726de1
7 changed files with 217 additions and 67 deletions

2
.gitattributes vendored
View File

@@ -915,6 +915,8 @@ forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletBuil
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletContests.java -text forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletContests.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletLoad.java -text forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletLoad.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java -text forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java -text
forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java -text
forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java -text
forge-gui-desktop/src/main/java/forge/screens/home/package-info.java -text forge-gui-desktop/src/main/java/forge/screens/home/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java -text forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java -text forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java -text

View File

@@ -8,6 +8,7 @@ import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests; import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad; import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick; import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.*; import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed; import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft; import forge.screens.home.sanctioned.VSubmenuDraft;
@@ -29,79 +30,80 @@ import forge.screens.workshop.views.VWorkshopCatalog;
* *
* <br><br><i>(E at beginning of class name denotes an enum.)</i> * <br><br><i>(E at beginning of class name denotes an enum.)</i>
*/ */
public enum EDocID { /** */ public enum EDocID {
CARD_PICTURE (VPicture.SINGLETON_INSTANCE), /** */ CARD_PICTURE (VPicture.SINGLETON_INSTANCE),
CARD_DETAIL (VDetail.SINGLETON_INSTANCE), /** */ CARD_DETAIL (VDetail.SINGLETON_INSTANCE),
CARD_ANTES (VAntes.SINGLETON_INSTANCE), /** */ CARD_ANTES (VAntes.SINGLETON_INSTANCE),
EDITOR_ALLDECKS (VAllDecks.SINGLETON_INSTANCE), /** */ EDITOR_ALLDECKS (VAllDecks.SINGLETON_INSTANCE),
EDITOR_STATISTICS (VStatistics.SINGLETON_INSTANCE), /** */ EDITOR_STATISTICS (VStatistics.SINGLETON_INSTANCE),
EDITOR_PROBABILITIES (VProbabilities.SINGLETON_INSTANCE), /** */ EDITOR_PROBABILITIES (VProbabilities.SINGLETON_INSTANCE),
EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE), /** */ EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE),
EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE), /** */ EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE),
EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE), /** */ EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE),
WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE), /** */ WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE),
WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE), /** */ WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE),
WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE), /** */ WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE),
HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE), /** */ HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE),
HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE), /** */ HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE),
HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE), /** */ HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE),
HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE), /** */ HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE),
HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE), /** */ HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE),
HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE), /** */ HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE),
HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE), /** */ HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE),
HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE), /** */ HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE),
HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE), /** */ HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE),
HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE), /** */ HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE),
HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE), /** */ HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE),
HOME_ACHIEVEMENTS (VSubmenuAchievements.SINGLETON_INSTANCE), /** */ HOME_ACHIEVEMENTS (VSubmenuAchievements.SINGLETON_INSTANCE),
HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE), /** */ HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE),
HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE), /** */ HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE),
HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE), /** */ HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE),
HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE), /** */ HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE),
HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE), /** */ HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE),
HOME_WINSTON (VSubmenuWinston.SINGLETON_INSTANCE), /** */ HOME_WINSTON (VSubmenuWinston.SINGLETON_INSTANCE),
HOME_LOBBY (VSubmenuOnlineLobby.SINGLETON_INSTANCE),
HOME_RELEASE_NOTES (VSubmenuReleaseNotes.SINGLETON_INSTANCE), HOME_RELEASE_NOTES (VSubmenuReleaseNotes.SINGLETON_INSTANCE),
REPORT_MESSAGE (VPrompt.SINGLETON_INSTANCE), /** */ REPORT_MESSAGE (VPrompt.SINGLETON_INSTANCE),
REPORT_STACK (VStack.SINGLETON_INSTANCE), /** */ REPORT_STACK (VStack.SINGLETON_INSTANCE),
REPORT_COMBAT (VCombat.SINGLETON_INSTANCE), /** */ REPORT_COMBAT (VCombat.SINGLETON_INSTANCE),
REPORT_LOG (VLog.SINGLETON_INSTANCE), /** */ REPORT_LOG (VLog.SINGLETON_INSTANCE),
REPORT_PLAYERS (VPlayers.SINGLETON_INSTANCE), /** */ REPORT_PLAYERS (VPlayers.SINGLETON_INSTANCE),
DEV_MODE (VDev.SINGLETON_INSTANCE), /** */ DEV_MODE (VDev.SINGLETON_INSTANCE),
BUTTON_DOCK (VDock.SINGLETON_INSTANCE), /** */ BUTTON_DOCK (VDock.SINGLETON_INSTANCE),
// Non-user battlefields (AI or teammate), use setDoc to register. // Non-user battlefields (AI or teammate), use setDoc to register.
FIELD_0 (null), /** */ FIELD_0 (null),
FIELD_1 (null), /** */ FIELD_1 (null),
FIELD_2 (null), /** */ FIELD_2 (null),
FIELD_3 (null), /** */ FIELD_3 (null),
FIELD_4 (null), /** */ FIELD_4 (null),
FIELD_5 (null), /** */ FIELD_5 (null),
FIELD_6 (null), /** */ FIELD_6 (null),
FIELD_7 (null), /** */ FIELD_7 (null),
// Non-user hands (AI or teammate), use setDoc to register. // Non-user hands (AI or teammate), use setDoc to register.
HAND_0 (null), /** */ HAND_0 (null),
HAND_1 (null), /** */ HAND_1 (null),
HAND_2 (null), /** */ HAND_2 (null),
HAND_3 (null), /** */ HAND_3 (null),
HAND_4 (null), /** */ HAND_4 (null),
HAND_5 (null), /** */ HAND_5 (null),
HAND_6 (null), /** */ HAND_6 (null),
HAND_7 (null), /** */ HAND_7 (null),
COMMAND_0 (null), /** */ COMMAND_0 (null),
COMMAND_1 (null), /** */ COMMAND_1 (null),
COMMAND_2 (null), /** */ COMMAND_2 (null),
COMMAND_3 (null), /** */ COMMAND_3 (null),
COMMAND_4 (null), /** */ COMMAND_4 (null),
COMMAND_5 (null), /** */ COMMAND_5 (null),
COMMAND_6 (null), /** */ COMMAND_6 (null),
COMMAND_7 (null); /** */ COMMAND_7 (null);
public final static EDocID[] Commands = new EDocID[] {COMMAND_0, COMMAND_1, COMMAND_2, COMMAND_3, COMMAND_4, COMMAND_5, COMMAND_6, COMMAND_7}; public final static EDocID[] Commands = new EDocID[] {COMMAND_0, COMMAND_1, COMMAND_2, COMMAND_3, COMMAND_4, COMMAND_5, COMMAND_6, COMMAND_7};
public final static EDocID[] Fields = new EDocID[] {FIELD_0, FIELD_1, FIELD_2, FIELD_3, FIELD_4, FIELD_5, FIELD_6, FIELD_7}; public final static EDocID[] Fields = new EDocID[] {FIELD_0, FIELD_1, FIELD_2, FIELD_3, FIELD_4, FIELD_5, FIELD_6, FIELD_7};

View File

@@ -7,10 +7,11 @@ package forge.screens.home;
* *
* <br><br><i>(E at beginning of class name denotes an enum.)</i> * <br><br><i>(E at beginning of class name denotes an enum.)</i>
*/ */
public enum EMenuGroup { /** */ public enum EMenuGroup {
SANCTIONED ("Sanctioned Formats"), /** */ SANCTIONED ("Sanctioned Formats"),
QUEST ("Quest Mode"), /** */ ONLINE ("Online Multiplayer"),
GAUNTLET ("Gauntlets"), /** */ QUEST ("Quest Mode"),
GAUNTLET ("Gauntlets"),
SETTINGS ("Game Settings"); SETTINGS ("Game Settings");
private final String strTitle; private final String strTitle;

View File

@@ -27,6 +27,7 @@ import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests; import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad; import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick; import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.*; import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed; import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft; import forge.screens.home.sanctioned.VSubmenuDraft;
@@ -118,6 +119,8 @@ public enum VHomeUI implements IVTopLevelUI {
allSubmenus.add(VSubmenuSealed.SINGLETON_INSTANCE); allSubmenus.add(VSubmenuSealed.SINGLETON_INSTANCE);
//allSubmenus.add(VSubmenuWinston.SINGLETON_INSTANCE); //allSubmenus.add(VSubmenuWinston.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuOnlineLobby.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE); allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuChallenges.SINGLETON_INSTANCE); allSubmenus.add(VSubmenuChallenges.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestDraft.SINGLETON_INSTANCE); allSubmenus.add(VSubmenuQuestDraft.SINGLETON_INSTANCE);

View File

@@ -0,0 +1,44 @@
package forge.screens.home.online;
import forge.UiCommand;
import forge.gui.framework.ICDoc;
import forge.menus.IMenuProvider;
import forge.menus.MenuUtil;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider {
SINGLETON_INSTANCE;
private final VSubmenuOnlineLobby view = VSubmenuOnlineLobby.SINGLETON_INSTANCE;
@Override
public void update() {
MenuUtil.setMenuProvider(this);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
}
});
}
@Override
public void initialize() {
}
@Override
public UiCommand getCommandOnSelect() {
return null;
}
@Override
public List<JMenu> getMenus() {
List<JMenu> menus = new ArrayList<JMenu>();
return menus;
}
}

View File

@@ -0,0 +1,98 @@
package forge.screens.home.online;
import javax.swing.JButton;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
import forge.gui.framework.DragCell;
import forge.gui.framework.DragTab;
import forge.gui.framework.EDocID;
import forge.screens.home.EMenuGroup;
import forge.screens.home.IVSubmenu;
import forge.screens.home.LblHeader;
import forge.screens.home.StartButton;
import forge.screens.home.VHomeUI;
import forge.toolbox.FSkin;
public enum VSubmenuOnlineLobby implements IVSubmenu<CSubmenuOnlineLobby> {
SINGLETON_INSTANCE;
private DragCell parentCell;
private final DragTab tab = new DragTab("Lobby");
// General variables
private final LblHeader lblTitle = new LblHeader("Online Multiplayer: Lobby");
private final StartButton btnStart = new StartButton();
private final JPanel pnlStart = new JPanel(new MigLayout("insets 0, gap 0, wrap 2"));
private final JPanel constructedFrame = new JPanel(new MigLayout("insets 0, gap 0, wrap 2")); // Main content frame
private VSubmenuOnlineLobby() {
lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
constructedFrame.setOpaque(false);
pnlStart.setOpaque(false);
pnlStart.add(btnStart, "align center");
}
@Override
public void populate() {
JPanel container = VHomeUI.SINGLETON_INSTANCE.getPnlDisplay();
container.removeAll();
container.setLayout(new MigLayout("insets 0, gap 0, wrap 1, ax right"));
container.add(lblTitle, "w 80%, h 40px!, gap 0 0 15px 15px, span 2, al right, pushx");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(constructedFrame, "gap 20px 20px 20px 0px, push, grow");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlStart, "gap 0 0 3.5%! 3.5%!, ax center");
if (container.isShowing()) {
container.validate();
container.repaint();
}
}
public JButton getBtnStart() {
return btnStart;
}
@Override
public EMenuGroup getGroupEnum() {
return EMenuGroup.ONLINE;
}
@Override
public String getMenuTitle() {
return "Lobby";
}
@Override
public EDocID getItemEnum() {
return EDocID.HOME_LOBBY;
}
@Override
public EDocID getDocumentID() {
return EDocID.HOME_LOBBY;
}
@Override
public DragTab getTabLabel() {
return tab;
}
@Override
public CSubmenuOnlineLobby getLayoutControl() {
return CSubmenuOnlineLobby.SINGLETON_INSTANCE;
}
@Override
public void setParentCell(DragCell cell0) {
parentCell = cell0;
}
@Override
public DragCell getParentCell() {
return parentCell;
}
}

View File

@@ -88,8 +88,8 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
SUBMENU_CURRENTMENU ("CONSTRUCTED"), SUBMENU_CURRENTMENU ("CONSTRUCTED"),
SUBMENU_SANCTIONED ("true"), SUBMENU_SANCTIONED ("true"),
SUBMENU_ONLINE ("false"),
SUBMENU_GAUNTLET ("false"), SUBMENU_GAUNTLET ("false"),
SUBMENU_VARIANT ("false"),
SUBMENU_QUEST ("false"), SUBMENU_QUEST ("false"),
SUBMENU_SETTINGS ("false"), SUBMENU_SETTINGS ("false"),
SUBMENU_UTILITIES ("false"), SUBMENU_UTILITIES ("false"),