public void OnClientSummonMechRequest(SummonMechRequest r) { ClientA.CurrentClientRequestResponseBundle = new SummonMechRequest_ResponseBundle(); ClientB.CurrentClientRequestResponseBundle = new SummonMechRequest_ResponseBundle(); BattlePlayer sp = GetPlayerByClientId(r.clientId); CardInfo_Mech info = (CardInfo_Mech)sp.HandManager.GetHandCardInfo(r.handCardInstanceId); List <int> targetMechIds = r.targetMechIds; List <int> targetMechIds_real = new List <int>(); for (int i = 0; i < targetMechIds.Count; i++) { bool isTemp = r.isTargetMechIdTempIds[i]; int realMechId = r.targetMechIds[i]; if (isTemp) { realMechId = sp.BattleGroundManager.GetMechIdByClientMechTempId(realMechId); } if (realMechId != -1) { targetMechIds_real.Add(realMechId); } } sp.HandManager.UseCard(r.handCardInstanceId, targetMechIds); sp.BattleGroundManager.AddMech(info, r.battleGroundIndex, targetMechIds_real, r.clientMechTempId, r.handCardInstanceId); Broadcast_SendOperationResponse(); }
IEnumerator Co_RetrySummonRequest(ModuleMech mech, int cardInstanceId, List <int> targetMechIds, List <bool> isTargetMechIdTempIds) { while (true) { int battleGroundIndex = GetIndexOfAliveMechs(mech); //确定的时候再获取位置信息(召唤的过程中可能会有协议没有跑完,会有机甲生成) if (battleGroundIndex != -1) { mech.M_ClientTempMechID = GenerateClientMechTempId(); SummonMechRequest request = new SummonMechRequest(Client.Instance.Proxy.ClientID, cardInstanceId, battleGroundIndex, mech.M_ClientTempMechID, targetMechIds, isTargetMechIdTempIds); Client.Instance.Proxy.SendMessage(request); break; } yield return(null); } yield return(null); }