Example #1
0
    public void CancelPVP()
    {
        BattleManagerActionMessage message = new BattleManagerActionMessage();

        message.BattleManagerAction = BattleManagerActionEnum.CancelSearching;

        SendAction <PlayerStateMessage>(CsPackageTag.BattleManagerAction, message.ToByteArray(), ReceiveReplyData);
    }
Example #2
0
    public void EnterPVE()
    {
        BattleManagerActionMessage message = new BattleManagerActionMessage();

        message.BattleManagerAction = BattleManagerActionEnum.Pve;

        message.BattleId = 2;

        SendAction <PlayerStateMessage>(CsPackageTag.BattleManagerAction, message.ToByteArray(), ReceiveReplyData);
    }
Example #3
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 #4
0
    private void ReceiveActionData(int _playerUnit, BattleManagerActionMessage _message)
    {
        BattleUnit battleUnit;

        BattleSDS battleSDS;

        switch (_message.BattleManagerAction)
        {
        case BattleManagerActionEnum.Pvp:

            if (lastPlayer == -1)
            {
                lastPlayer = _playerUnit;

                ReplyClient(_playerUnit, false, PlayerStateEnum.Searching);
            }
            else if (lastPlayer == _playerUnit)
            {
                ReplyClient(_playerUnit, false, PlayerStateEnum.Searching);
            }
            else
            {
                battleUnit = GetBattleUnit(processBattle);

                battleList.Add(battleUnit);

                int tmpPlayer = lastPlayer;

                lastPlayer = -1;

                battleDic.Add(_playerUnit, battleUnit);

                battleDic.Add(tmpPlayer, battleUnit);

                battleSDS = StaticData.GetData <BattleSDS>(PVP_BATTLE_ID);

                battleUnit.Init(_playerUnit, tmpPlayer, battleSDS.mCards, battleSDS.oCards, battleSDS.mBase, battleSDS.oBase, battleSDS.maxTime, false);

                ReplyClient(_playerUnit, false, PlayerStateEnum.Battle);

                ReplyClient(tmpPlayer, true, PlayerStateEnum.Battle);
            }

            break;

        case BattleManagerActionEnum.Pve:

            if (lastPlayer == _playerUnit)
            {
                lastPlayer = -1;
            }

            int battleID = _message.BattleId;

            battleUnit = GetBattleUnit(processBattle);

            battleList.Add(battleUnit);

            battleDic.Add(_playerUnit, battleUnit);

            battleSDS = StaticData.GetData <BattleSDS>(battleID);

            battleUnit.Init(_playerUnit, -1, battleSDS.mCards, battleSDS.oCards, battleSDS.mBase, battleSDS.oBase, battleSDS.maxTime, true);

            ReplyClient(_playerUnit, false, PlayerStateEnum.Battle);

            break;

        case BattleManagerActionEnum.CancelSearching:

            if (lastPlayer == _playerUnit)
            {
                lastPlayer = -1;
            }

            ReplyClient(_playerUnit, false, PlayerStateEnum.Free);

            break;
        }
    }