public override void DragComponent_OnMouseUp(BoardAreaTypes boardAreaType, List <Slot> slots, ModuleMech moduleMech, Ship ship, Vector3 dragLastPosition, Vector3 dragBeginPosition, Quaternion dragBeginQuaternion) { base.DragComponent_OnMouseUp(boardAreaType, slots, moduleMech, ship, dragLastPosition, dragBeginPosition, dragBeginQuaternion); RoundManager.Instance.HideTargetPreviewArrow(); if (DragManager.Instance.IsCanceling) { DragManager.Instance.IsCanceling = false; return; } if (moduleMech) { if (moduleMech.ClientPlayer != ClientPlayer) { if (moduleMech.CheckModuleMechCanAttackMe(this)) { MechAttackMechRequest request = new MechAttackMechRequest(ClientPlayer.ClientId, M_MechID, RoundManager.Instance.EnemyClientPlayer.ClientId, moduleMech.M_MechID); Client.Instance.Proxy.SendMessage(request); } else { NoticeManager.Instance.ShowInfoPanelCenter(LanguageManager.Instance.GetText("ModuleMech_ShouldAttackDefenderFirst"), 0, 0.5f); } } } else if (ship) { if (ship.ClientPlayer != ClientPlayer) { if (ship.CheckModuleMechCanAttackMe(this) != 0) { MechAttackShipRequest request = new MechAttackShipRequest(Client.Instance.Proxy.ClientID, M_MechID); Client.Instance.Proxy.SendMessage(request); } else { NoticeManager.Instance.ShowInfoPanelCenter(LanguageManager.Instance.GetText("ModuleMech_ShouldAttackMechsFirst"), 0, 0.5f); } } } DragManager.Instance.DragOutDamage = 0; }
public void OnClientMechAttackMechRequest(MechAttackMechRequest r) { ClientA.CurrentClientRequestResponseBundle = new MechAttackMechRequest_ResponseBundle(); ClientB.CurrentClientRequestResponseBundle = new MechAttackMechRequest_ResponseBundle(); BattlePlayer cpat = GetPlayerByClientId(r.clientId); BattlePlayer cpba = GetPlayerByClientId(r.BeAttackedMechClientId); ModuleMech attackMech = cpat.BattleGroundManager.GetMech(r.AttackMechId); ModuleMech beAttackedMech = cpba.BattleGroundManager.GetMech(r.BeAttackedMechId); bool isAttackValid = attackMech.BeforeAttack(beAttackedMech, false); if (isAttackValid) { MechAttackMechServerRequest request = new MechAttackMechServerRequest(r.clientId, r.AttackMechId, r.BeAttackedMechClientId, r.BeAttackedMechId); Broadcast_AddRequestToOperationResponse(request); attackMech.Attack(beAttackedMech, false); } Broadcast_SendOperationResponse(); }