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/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/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/quest/CSubmenuChallenges.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.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
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>
*/
public enum EDocID { /** */
CARD_PICTURE (VPicture.SINGLETON_INSTANCE), /** */
CARD_DETAIL (VDetail.SINGLETON_INSTANCE), /** */
CARD_ANTES (VAntes.SINGLETON_INSTANCE), /** */
public enum EDocID {
CARD_PICTURE (VPicture.SINGLETON_INSTANCE),
CARD_DETAIL (VDetail.SINGLETON_INSTANCE),
CARD_ANTES (VAntes.SINGLETON_INSTANCE),
EDITOR_ALLDECKS (VAllDecks.SINGLETON_INSTANCE), /** */
EDITOR_STATISTICS (VStatistics.SINGLETON_INSTANCE), /** */
EDITOR_PROBABILITIES (VProbabilities.SINGLETON_INSTANCE), /** */
EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE), /** */
EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE), /** */
EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE), /** */
EDITOR_ALLDECKS (VAllDecks.SINGLETON_INSTANCE),
EDITOR_STATISTICS (VStatistics.SINGLETON_INSTANCE),
EDITOR_PROBABILITIES (VProbabilities.SINGLETON_INSTANCE),
EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE),
EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE),
EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE),
WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE), /** */
WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE), /** */
WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE), /** */
WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE),
WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE),
WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE),
HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE), /** */
HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE), /** */
HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE), /** */
HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE), /** */
HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE), /** */
HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE), /** */
HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE), /** */
HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE), /** */
HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE), /** */
HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE), /** */
HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE), /** */
HOME_ACHIEVEMENTS (VSubmenuAchievements.SINGLETON_INSTANCE), /** */
HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE), /** */
HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE), /** */
HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE), /** */
HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE), /** */
HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE), /** */
HOME_WINSTON (VSubmenuWinston.SINGLETON_INSTANCE), /** */
HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE),
HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE),
HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE),
HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE),
HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE),
HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE),
HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE),
HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE),
HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE),
HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE),
HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE),
HOME_ACHIEVEMENTS (VSubmenuAchievements.SINGLETON_INSTANCE),
HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE),
HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE),
HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE),
HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE),
HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE),
HOME_WINSTON (VSubmenuWinston.SINGLETON_INSTANCE),
HOME_LOBBY (VSubmenuOnlineLobby.SINGLETON_INSTANCE),
HOME_RELEASE_NOTES (VSubmenuReleaseNotes.SINGLETON_INSTANCE),
REPORT_MESSAGE (VPrompt.SINGLETON_INSTANCE), /** */
REPORT_STACK (VStack.SINGLETON_INSTANCE), /** */
REPORT_COMBAT (VCombat.SINGLETON_INSTANCE), /** */
REPORT_LOG (VLog.SINGLETON_INSTANCE), /** */
REPORT_PLAYERS (VPlayers.SINGLETON_INSTANCE), /** */
REPORT_MESSAGE (VPrompt.SINGLETON_INSTANCE),
REPORT_STACK (VStack.SINGLETON_INSTANCE),
REPORT_COMBAT (VCombat.SINGLETON_INSTANCE),
REPORT_LOG (VLog.SINGLETON_INSTANCE),
REPORT_PLAYERS (VPlayers.SINGLETON_INSTANCE),
DEV_MODE (VDev.SINGLETON_INSTANCE), /** */
BUTTON_DOCK (VDock.SINGLETON_INSTANCE), /** */
DEV_MODE (VDev.SINGLETON_INSTANCE),
BUTTON_DOCK (VDock.SINGLETON_INSTANCE),
// Non-user battlefields (AI or teammate), use setDoc to register.
FIELD_0 (null), /** */
FIELD_1 (null), /** */
FIELD_2 (null), /** */
FIELD_3 (null), /** */
FIELD_4 (null), /** */
FIELD_5 (null), /** */
FIELD_6 (null), /** */
FIELD_7 (null), /** */
FIELD_0 (null),
FIELD_1 (null),
FIELD_2 (null),
FIELD_3 (null),
FIELD_4 (null),
FIELD_5 (null),
FIELD_6 (null),
FIELD_7 (null),
// Non-user hands (AI or teammate), use setDoc to register.
HAND_0 (null), /** */
HAND_1 (null), /** */
HAND_2 (null), /** */
HAND_3 (null), /** */
HAND_4 (null), /** */
HAND_5 (null), /** */
HAND_6 (null), /** */
HAND_7 (null), /** */
HAND_0 (null),
HAND_1 (null),
HAND_2 (null),
HAND_3 (null),
HAND_4 (null),
HAND_5 (null),
HAND_6 (null),
HAND_7 (null),
COMMAND_0 (null), /** */
COMMAND_1 (null), /** */
COMMAND_2 (null), /** */
COMMAND_3 (null), /** */
COMMAND_4 (null), /** */
COMMAND_5 (null), /** */
COMMAND_6 (null), /** */
COMMAND_7 (null); /** */
COMMAND_0 (null),
COMMAND_1 (null),
COMMAND_2 (null),
COMMAND_3 (null),
COMMAND_4 (null),
COMMAND_5 (null),
COMMAND_6 (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[] 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>
*/
public enum EMenuGroup { /** */
SANCTIONED ("Sanctioned Formats"), /** */
QUEST ("Quest Mode"), /** */
GAUNTLET ("Gauntlets"), /** */
public enum EMenuGroup {
SANCTIONED ("Sanctioned Formats"),
ONLINE ("Online Multiplayer"),
QUEST ("Quest Mode"),
GAUNTLET ("Gauntlets"),
SETTINGS ("Game Settings");
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.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
@@ -118,6 +119,8 @@ public enum VHomeUI implements IVTopLevelUI {
allSubmenus.add(VSubmenuSealed.SINGLETON_INSTANCE);
//allSubmenus.add(VSubmenuWinston.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuOnlineLobby.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuChallenges.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_SANCTIONED ("true"),
SUBMENU_ONLINE ("false"),
SUBMENU_GAUNTLET ("false"),
SUBMENU_VARIANT ("false"),
SUBMENU_QUEST ("false"),
SUBMENU_SETTINGS ("false"),
SUBMENU_UTILITIES ("false"),