예제 #1
0
        public static PacketWriter GetStream(ScriptMessages id)
        {
            var s = GameClient.GetScriptMessageStream();

            s.Write((byte)id);
            return(s);
        }
예제 #2
0
        public PacketWriter Create(ScriptMessages messageId)
        {
            PacketWriter writer = Create();

            writer.Write((byte)messageId);
            return(writer);
        }
예제 #3
0
        void GameClient.IScriptClient.ReadScriptMessage(PacketReader stream)
        {
            ScriptMessages id = (ScriptMessages)stream.ReadByte();

            Logger.Log(Logger.LOG_INFO, $"Received Script message '{id}' from '{SystemAddress}'");

            //Log.Logger.Log(id);
            if (_HandlerSelector.TryGetMessageHandler(id, out IScriptMessageHandler handler))
            {
                handler.HandleMessage(this, stream);
            }
            else
            {
                Logger.LogWarning($"Unhandled ScriptMessage '{id.ToString()}'");
            }
        }
예제 #4
0
        public virtual void ReadScriptMessage(PacketReader stream)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            ScriptMessages id = (ScriptMessages)stream.ReadByte();

            Log.Logger.Log(id);
            switch (id)
            {
            case ScriptMessages.PlayerQuit:
                break;

            case ScriptMessages.GameInfo:
                ReadGameInfo(stream);
                break;

            case ScriptMessages.ChatMessage:
                _Chat.ReadMessage(stream);
                break;

            case ScriptMessages.ChatTeamMessage:
                _Chat.ReadTeamMessage(stream);
                break;

            default:
            {
                if (_HandlerSelector.TryGetMessageHandler(id, out IScriptMessageHandler handler))
                {
                    handler.HandleMessage(this, stream);
                }
                else
                {
                    _Log.Warn($"Unknown script message with id '{id}' received.");
                }
            }
            break;
            }
        }
예제 #5
0
        public override void ReadScriptMessage(PacketReader stream)
        {
            ScriptMessages id = (ScriptMessages)stream.ReadByte();

            //Log.Logger.Log(id);
            switch (id)
            {
            case ScriptMessages.JoinGame:
                FMSpawn();
                break;

            case ScriptMessages.Spectate:
                FMSpectate();
                break;

            case ScriptMessages.CharEdit:
                string oldName = charInfo.Name;
                charInfo.Read(stream);
                if (oldName != charInfo.Name)
                {
                    SendPlayerInfoMessage();
                }
                if (GMTeamID == TeamIdent.FFAPlayer)
                {
                    FMSpawn();
                }
                break;

            case ScriptMessages.DuelRequest:
                DuelMode.ReadRequest(this, stream);
                break;

            case ScriptMessages.ChatMessage:
                Chat.ReadMessage(this, stream);
                break;

            case ScriptMessages.DuelScoreBoard:
                DuelBoard.Instance.Toggle(this, stream.ReadBit());
                break;

            case ScriptMessages.ModeSpectate:
                if (GameMode.IsActive)
                {
                    GameMode.ActiveMode.JoinAsSpectator(this);
                }
                break;

            case ScriptMessages.TDMTeamSelect:
                if (TDMMode.IsActive)
                {
                    TDMMode.ActiveMode.JoinTeam(this, stream.ReadByte());
                }
                break;

            case ScriptMessages.TDMScoreBoard:
                TDMScoreBoard.Instance.Toggle(this, TDMMode.IsActive ? stream.ReadBit() : false);
                break;

            case ScriptMessages.ModeClassSelect:
                if (GameMode.IsActive)
                {
                    GameMode.ActiveMode.SelectClass(this, stream.ReadByte());
                }
                break;

            case ScriptMessages.BRJoin:
                if (BRMode.IsActive)
                {
                    BRMode.ActiveMode.Join(this);
                }
                break;

            case ScriptMessages.HordeScoreBoard:
                HordeBoard.Instance.Toggle(this, HordeMode.IsActive ? stream.ReadBit() : false);
                break;
            }
        }
예제 #6
0
        public override void ReadScriptMessage(PacketReader stream)
        {
            ScriptMessages id = (ScriptMessages)stream.ReadByte();

            Log.Logger.Log(id);
            switch (id)
            {
            case ScriptMessages.GameInfo:
                ReadGameInfo(stream);
                break;

            case ScriptMessages.DuelRequest:
                DuelMode.ReadRequest(stream);
                break;

            case ScriptMessages.DuelStart:
                DuelMode.ReadStart(stream);
                break;

            case ScriptMessages.DuelWin:
                DuelMode.ReadWin(stream);
                break;

            case ScriptMessages.DuelEnd:
                DuelMode.ReadEnd(stream);
                break;

            case ScriptMessages.ChatMessage:
                Chat.ReadMessage(stream);
                break;

            case ScriptMessages.ChatTeamMessage:
                Chat.ReadTeamMessage(stream);
                break;

            case ScriptMessages.DuelScoreBoard:
                DuelBoardScreen.Instance.ReadMessage(stream);
                break;

            case ScriptMessages.PlayerInfo:
                PlayerInfo.ReadPlayerInfoMessage(stream);
                break;

            case ScriptMessages.PlayerInfoTeam:
                PlayerInfo.ReadPlayerInfoTeam(stream);
                break;

            case ScriptMessages.PlayerQuit:
                PlayerInfo.ReadPlayerQuitMessage(stream);
                break;

            case ScriptMessages.PointsMessage:
                int points = stream.ReadSByte();
                Sumpfkraut.Menus.ScreenScrollText.AddText((points > 0 ? "Punkte +" : "Punkte ") + points);
                break;

            case ScriptMessages.ModeStart:
                GameMode.Start(stream.ReadString());
                break;

            case ScriptMessages.ModePhase:
                GameMode.ReadPhase(stream);
                break;

            case ScriptMessages.TDMScoreBoard:
                TDMScoreBoard.Instance.ReadMessage(stream);
                break;

            case ScriptMessages.TDMWin:
                TDMMode.ReadWinMessage(stream);
                break;

            case ScriptMessages.HordeScoreBoard:
                HordeScoreBoard.Instance.ReadMessage(stream);
                break;

            case ScriptMessages.HordeWin:
                HordeMode.End(true);
                break;

            case ScriptMessages.HordeLoss:
                HordeMode.End(false);
                break;
            }
        }
예제 #7
0
 public ScoreBoard(ScriptMessages messageID)
 {
     msgID       = messageID;
     clients     = new Dictionary <ArenaClient, GUCTimer>(20);
     packetTimer = new GUCTimer(UpdateInterval, WriteUpdate);
 }
예제 #8
0
 protected ScoreBoardScreen(ScriptMessages messageID)
 {
     this.msgID      = messageID;
     this.closeTimer = new GUCTimer(DoClose);
 }