Example #1
0
    public override void ReceiveData(byte[] _bytes)
    {
        if (uid != -1)
        {
            BattleManager.Instance.ReceiveData(uid, _bytes);
        }
        else
        {
            using (MemoryStream ms = new MemoryStream(_bytes))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    try
                    {
                        CsPackageTag tag = (CsPackageTag)br.ReadInt32();

                        if (tag == CsPackageTag.Login)
                        {
                            LoginMessage message = LoginMessage.Parser.ParseFrom(ms);

                            uid = int.Parse(message.Name);

                            PlayerUnitManager.Instance.Login(uid, this);

                            BattleManager.Instance.Login(uid);
                        }
                    }
                    catch (Exception e)
                    {
                        Log.Write(e.ToString());
                    }
                }
            }
        }
    }
Example #2
0
    internal void ReceiveData(int _playerUnit, byte[] _bytes)
    {
        using (MemoryStream ms = new MemoryStream(_bytes))
        {
            using (BinaryReader br = new BinaryReader(ms))
            {
                CsPackageTag tag = (CsPackageTag)br.ReadInt32();

                switch (tag)
                {
                case CsPackageTag.BattleData:

                    BattleUnit battleUnit;

                    if (battleDic.TryGetValue(_playerUnit, out battleUnit))
                    {
                        battleUnit.ReceiveData(_playerUnit, br);
                    }
                    else
                    {
                        if (_playerUnit == lastPlayer)
                        {
                            ReplyClient(_playerUnit, false, PlayerStateEnum.Searching);
                        }
                        else
                        {
                            ReplyClient(_playerUnit, false, PlayerStateEnum.Free);
                        }
                    }

                    break;

                case CsPackageTag.BattleManagerAction:

                    if (battleDic.ContainsKey(_playerUnit))
                    {
                        ReplyClient(_playerUnit, false, PlayerStateEnum.Battle);
                    }
                    else
                    {
                        BattleManagerActionMessage message = BattleManagerActionMessage.Parser.ParseFrom(ms);

                        ReceiveActionData(_playerUnit, message);
                    }
                    break;
                }
            }
        }
    }
Example #3
0
    private void SendAction <T>(CsPackageTag _tag, byte[] _bytes, Action <T> _callBack) where T : IMessage <T>, new()
    {
        Action <BinaryReader> dele = delegate(BinaryReader _br)
        {
            MessageParser <T> parser = new MessageParser <T>(() => new T());

            T result = parser.ParseFrom(_br.BaseStream);

            _callBack(result);
        };

        using (MemoryStream ms = new MemoryStream())
        {
            using (BinaryWriter bw = new BinaryWriter(ms))
            {
                bw.Write((int)_tag);

                bw.Write(_bytes);

                client.Send(ms, dele);
            }
        }
    }