protected void CreateUI() { try { _mainMenuViewController = Resources.FindObjectsOfTypeAll <MainMenuViewController>().First(); _mainMenuRectTransform = _mainMenuViewController.transform as RectTransform; _mockPartyViewController = new MockPartyViewController(); if (Config.Instance.AutoStartLobby) { SteamAPI.CreateLobby(!Config.Instance.IsPublic); } AvatarController.LoadAvatars(); SongListUtils.Initialize(); MultiplayerListing.Init(); MultiplayerLobby.Init(); WaitingMenu.Init(); CreateMainMenuButton(); CreateSettingsMenu(); } catch (Exception e) { Logger.Error($"Unable to create UI! Exception: {e}"); } }
public static void SetReady() { Logger.Debug($"Broadcast to our lobby that we are ready"); Controllers.PlayerController.Instance._playerInfo.Downloading = true; if (_lobbyInfo.UsedSlots == 1) { StartPlaying(); } WaitingMenu.RefreshData(); }
protected void CreateUI() { try { _mainMenuViewController = Resources.FindObjectsOfTypeAll <MainMenuViewController>().First(); _mainMenuViewController.didFinishEvent += (sender, result) => { Logger.Debug($"finish \"{result}\""); if (result == MainMenuViewController.MenuButton.Party) { try { _mockPartyViewController = new MockPartyViewController(); } catch (Exception e) { Logger.Error(e); } } }; _mainMenuRectTransform = _mainMenuViewController.transform as RectTransform; if (Config.Instance.AutoStartLobby) { SteamAPI.CreateLobby(!Config.Instance.IsPublic); } try { AvatarController.LoadAvatars(); } catch (Exception e) { Logger.Error($"Unable to load avatars! Exception: {e}"); } SongListUtils.Initialize(); MultiplayerListing.Init(); MultiplayerLobby.Init(); WaitingMenu.Init(); CreateSettingsMenu(); CreateMainMenuButton(); } catch (Exception e) { Logger.Error($"Unable to create UI! Exception: {e}"); } }
public void LoadContent(ContentManager content) { font = content.Load <SpriteFont>("YuyukoFont"); //font = content.Load<SpriteFont>("ReimuFont"); mHost = new HostGameMenu(font, this); mStart = new StartMenu(font, this); mConnect = new ConnectGameMenu(font, this); mWait = new WaitingMenu(font, this); mStart.SwitchToHost += SwitchToHost; mStart.SwitchToConnect += SwitchToConnect; mStart.StartDebug += StartDebug; mHost.PortIsReady += HostIsReady; mHost.switchToMain += SwitchToMain; mHost.waitingForConnection += SwitchToWaiting; mConnect.switchToMain += SwitchToMain; mConnect.ConnectIsReady += ConnectIsReady; mConnect.waitingForConnection += SwitchToWaiting; }
public void UpsertPlayer(PlayerPacket info) { if (info.playerId == _playerInfo.playerId) { return; } try { if (!_connectedPlayers.Keys.Contains(info.playerId)) { _connectedPlayers.Add(info.playerId, info); if ((Config.Instance.AvatarsInLobby && Plugin.instance.CurrentScene == "MenuCore") || (Config.Instance.AvatarsInGame && Plugin.instance.CurrentScene == "GameCore")) { AvatarController avatar = new GameObject("AvatarController").AddComponent <AvatarController>(); avatar.SetPlayerPacket(info, new Vector3(0, 0, 0), info.playerId == _playerInfo.playerId); _connectedPlayerAvatars.Add(info.playerId, avatar); } MultiplayerLobby.RefreshScores(); Scoreboard.Instance.UpsertScoreboardEntry(info.playerId, info.playerName); return; } if (_connectedPlayers.ContainsKey(info.playerId)) { if (info.playerScore != _connectedPlayers[info.playerId].playerScore || info.playerComboBlocks != _connectedPlayers[info.playerId].playerComboBlocks) { Scoreboard.Instance.UpsertScoreboardEntry(info.playerId, info.playerName, (int)info.playerScore, (int)info.playerComboBlocks); MultiplayerLobby.RefreshScores(); } if (_connectedPlayerAvatars.ContainsKey(info.playerId) && (Config.Instance.AvatarsInLobby && Plugin.instance.CurrentScene == "MenuCore") || (Config.Instance.AvatarsInGame && Plugin.instance.CurrentScene == "GameCore")) { Vector3 offset = new Vector3(0, 0, 0); if (Plugin.instance.CurrentScene == "GameCore") { ulong[] playerInfosByID = new ulong[_connectedPlayers.Count + 1]; playerInfosByID[0] = _playerInfo.playerId; _connectedPlayers.Keys.ToList().CopyTo(playerInfosByID, 1); Array.Sort(playerInfosByID); offset = new Vector3((Array.IndexOf(playerInfosByID, info.playerId) - Array.IndexOf(playerInfosByID, _playerInfo.playerId)) * 2f, 0, Math.Abs((Array.IndexOf(playerInfosByID, info.playerId) - Array.IndexOf(playerInfosByID, _playerInfo.playerId)) * 2.5f)); } _connectedPlayerAvatars[info.playerId].SetPlayerPacket(info, offset, info.playerId == _playerInfo.playerId); } bool changedReady = (_connectedPlayers[info.playerId].Ready != info.Ready || _connectedPlayers[info.playerId].playerProgress != info.playerProgress); _connectedPlayers[info.playerId] = info; MockPartyViewController.Instance.UpdatePlayButton(); if (changedReady) { WaitingMenu.RefreshData(); if (SteamAPI.IsHost()) { if (info.Ready) { if (_connectedPlayers.Values.ToList().All(u => u.Ready)) { Data.Logger.Debug($"Everyone has confirmed that they are ready to play, broadcast that we want them all to start playing"); SteamAPI.StartPlaying(); } } else { if (_connectedPlayers.Values.ToList().All(u => !u.Ready)) { Data.Logger.Debug($"Everyone has confirmed they are in game, set the lobby screen to in game"); SteamAPI.StartGame(); } } } } } } catch (Exception e) { Logger.Error(e); } }