示例#1
0
        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");
            }
        }
示例#2
0
        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");
            }
        }