diff --git a/.gitattributes b/.gitattributes index aa9c8a4cce8..3168d97ff22 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java index 49ef5a3ecc5..89ddc6787fe 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java +++ b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java @@ -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; * *

(E at beginning of class name denotes an enum.) */ -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}; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java b/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java index 7772d41c235..7bad96f2bd2 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java @@ -7,10 +7,11 @@ package forge.screens.home; * *

(E at beginning of class name denotes an enum.) */ -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; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java b/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java index a9e15cb43dc..41f2287f036 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java @@ -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); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java new file mode 100644 index 00000000000..8c0156ae4c7 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java @@ -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 getMenus() { + List menus = new ArrayList(); + return menus; + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java new file mode 100644 index 00000000000..355a52c0d95 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java @@ -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 { + 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; + } +} diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 3d0fda08cb2..4fbb0a8b66c 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -88,8 +88,8 @@ public class ForgePreferences extends PreferencesStore { SUBMENU_CURRENTMENU ("CONSTRUCTED"), SUBMENU_SANCTIONED ("true"), + SUBMENU_ONLINE ("false"), SUBMENU_GAUNTLET ("false"), - SUBMENU_VARIANT ("false"), SUBMENU_QUEST ("false"), SUBMENU_SETTINGS ("false"), SUBMENU_UTILITIES ("false"),