package fr.lyrgard.hexScape.gui.desktop.view.home; import java.awt.BorderLayout; import java.awt.Component; import java.awt.EventQueue; import java.util.concurrent.Callable; import com.google.common.eventbus.Subscribe; import fr.lyrgard.hexScape.HexScapeCore; import fr.lyrgard.hexScape.bus.CoreMessageBus; import fr.lyrgard.hexScape.bus.GuiMessageBus; import fr.lyrgard.hexScape.gui.desktop.HexScapeFrame; import fr.lyrgard.hexScape.gui.desktop.action.ConnectToServerAction; import fr.lyrgard.hexScape.gui.desktop.action.JoinGameAction; import fr.lyrgard.hexScape.gui.desktop.action.OpenConfigDialogAction; import fr.lyrgard.hexScape.gui.desktop.action.OpenNewGameDialogAction; //import fr.lyrgard.hexScape.gui.desktop.action.ConnectToServerAction; //import fr.lyrgard.hexScape.gui.desktop.action.OpenConfigDialogAction; //import fr.lyrgard.hexScape.gui.desktop.action.OpenNewGameDialogAction; import fr.lyrgard.hexScape.gui.desktop.view.AbstractView; import fr.lyrgard.hexScape.message.GameCreatedMessage; import fr.lyrgard.hexScape.message.GameJoinedMessage; import fr.lyrgard.hexScape.message.StartGameMessage; import fr.lyrgard.hexScape.model.TitleScreenSprite.Type; import fr.lyrgard.hexScape.model.CurrentUserInfo; import fr.lyrgard.hexScape.model.TitleScreenButtonClicked; public class HomeView extends AbstractView { private static final long serialVersionUID = 7669212340835857265L; public HomeView() { setLayout(new BorderLayout()); GuiMessageBus.register(this); } @Override public void refresh() { HexScapeCore.getInstance().getHexScapeJme3Application().enqueue(new Callable<Void>() { public Void call() throws Exception { HexScapeCore.getInstance().getHexScapeJme3Application().displayTitleScreen(); return null; } }); Component view3d = HexScapeFrame.getInstance().getView3d().getComponent(); //view3d.setPreferredSize(new Dimension(UNDEFINED_CONDITION, UNDEFINED_CONDITION)); add(view3d, BorderLayout.CENTER); System.out.println("HOME VIEW TAKES 3D"); } @Subscribe public void onGameCreatedSolo(GameCreatedMessage message) { if (!HexScapeCore.getInstance().isOnline()) { String gameId = message.getGame().getId(); JoinGameAction action = new JoinGameAction(gameId); action.actionPerformed(null); } } @Subscribe public void onGameJoinSolo(GameJoinedMessage message) { if (!HexScapeCore.getInstance().isOnline()) { StartGameMessage resultMessage = new StartGameMessage(CurrentUserInfo.getInstance().getPlayerId(), message.getGame().getId()); CoreMessageBus.post(resultMessage); } } @Subscribe public void onTitleScreenButtonClicked(TitleScreenButtonClicked message) { Type type = message.getType(); switch (type) { case SOLO: EventQueue.invokeLater(new Runnable() { public void run() { new OpenNewGameDialogAction(getTopLevelAncestor()).actionPerformed(null); } }); break; case MULTIPLAYER: new ConnectToServerAction().actionPerformed(null); break; case CONFIG: EventQueue.invokeLater(new Runnable() { public void run() { new OpenConfigDialogAction(getTopLevelAncestor()).actionPerformed(null); } }); break; default: } } }