public virtual void StartLevel(PlayerInfo sender, StartLevelInfo options, SongInfo song) { if (sender.Equals(roomHost)) { selectedSong = song; startLevelInfo = options; SongWithOptions songWithDifficulty = new SongWithOptions(selectedSong, startLevelInfo); NetOutgoingMessage outMsg = HubListener.ListenerServer.CreateMessage(); outMsg.Write((byte)CommandType.StartLevel); startLevelInfo.AddToMessage(outMsg); selectedSong.AddToMessage(outMsg); BroadcastPacket(outMsg, NetDeliveryMethod.ReliableOrdered, 0); BroadcastWebSocket(CommandType.StartLevel, songWithDifficulty); roomState = RoomState.InGame; _songStartTime = DateTime.Now; _readyPlayers.Clear(); } else { Logger.Instance.Warning($"{sender.playerName}({sender.playerId}) tried to start the level, but he is not the host"); } }
public virtual void SetLevelOptions(PlayerInfo sender, StartLevelInfo info) { if (sender.Equals(roomHost)) { startLevelInfo = info; NetOutgoingMessage outMsg = HubListener.ListenerServer.CreateMessage(); outMsg.Write((byte)CommandType.SetLevelOptions); startLevelInfo.AddToMessage(outMsg); BroadcastPacket(outMsg, NetDeliveryMethod.ReliableOrdered, 0, new List <Client>() { roomClients.First(x => x.playerInfo.Equals(sender)) }); BroadcastWebSocket(CommandType.SetLevelOptions, startLevelInfo); } else { Logger.Instance.Warning($"{sender.playerName}({sender.playerId}) tried to change level options, but he is not the host"); } }