public void CancelPVP() { BattleManagerActionMessage message = new BattleManagerActionMessage(); message.BattleManagerAction = BattleManagerActionEnum.CancelSearching; SendAction <PlayerStateMessage>(CsPackageTag.BattleManagerAction, message.ToByteArray(), ReceiveReplyData); }
public void EnterPVE() { BattleManagerActionMessage message = new BattleManagerActionMessage(); message.BattleManagerAction = BattleManagerActionEnum.Pve; message.BattleId = 2; SendAction <PlayerStateMessage>(CsPackageTag.BattleManagerAction, message.ToByteArray(), ReceiveReplyData); }
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; } } } }
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; } }