private void summonSpellRequestToEquip(ModuleEquip targetEquip) { UseSpellCardToEquipRequest request = new UseSpellCardToEquipRequest(Client.Instance.Proxy.ClientID, M_CardInstanceId, new List <int> { targetEquip.M_EquipID }); Client.Instance.Proxy.SendMessage(request); Usable = false; }
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; CancelPlayOut(dragBeginPosition, dragBeginQuaternion); return; } if (boardAreaType != ClientPlayer.BattlePlayer.HandArea) //离开手牌区域 { if (!CardInfo.TargetInfo.HasTargetMech && !CardInfo.TargetInfo.HasTargetEquip && !CardInfo.TargetInfo.HasTargetShip) { summonSpellRequest(); return; } else { if (CardInfo.TargetInfo.HasTargetMech) { //To Mech if (moduleMech == null || moduleMech.IsDead) { CancelPlayOut(dragBeginPosition, dragBeginQuaternion); } else { bool validTarget = false; switch (CardInfo.TargetInfo.targetMechRange) { case TargetRange.None: validTarget = false; break; case TargetRange.Mechs: validTarget = true; break; case TargetRange.SelfMechs: if (moduleMech.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyMechs: if (moduleMech.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; case TargetRange.Heroes: if (!moduleMech.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.SelfHeroes: if (moduleMech.ClientPlayer == RoundManager.Instance.SelfClientPlayer && !moduleMech.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.EnemyHeroes: if (moduleMech.ClientPlayer == RoundManager.Instance.EnemyClientPlayer && !moduleMech.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.Soldiers: if (moduleMech.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.SelfSoldiers: if (moduleMech.ClientPlayer == RoundManager.Instance.SelfClientPlayer && moduleMech.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.EnemySoldiers: if (moduleMech.ClientPlayer == RoundManager.Instance.EnemyClientPlayer && moduleMech.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.AllLife: validTarget = true; break; case TargetRange.SelfLife: if (moduleMech.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyLife: if (moduleMech.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; } if (validTarget) { summonSpellRequestToMech(moduleMech); return; } else { AudioManager.Instance.SoundPlay("sfx/OnSelectMechFalse"); NoticeManager.Instance.ShowInfoPanelCenter(LanguageManager.Instance.GetText("CardSpell_SelectCorrectMech"), 0, 1f); } } } if (CardInfo.TargetInfo.HasTargetEquip) { //To Equip if (slots.Count == 0) { CancelPlayOut(dragBeginPosition, dragBeginQuaternion); } else { ModuleEquip equip = slots[0].Mech.MechEquipSystemComponent.GetEquipBySlotType(slots[0].MSlotTypes); if (equip == null || equip.M_ModuleMech.IsDead) { CancelPlayOut(dragBeginPosition, dragBeginQuaternion); } else { bool validTarget = false; switch (CardInfo.TargetInfo.targetEquipRange) { case TargetRange.None: validTarget = false; break; case TargetRange.Mechs: validTarget = true; break; case TargetRange.SelfMechs: if (equip.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyMechs: if (equip.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; case TargetRange.Heroes: if (!equip.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.SelfHeroes: if (equip.ClientPlayer == RoundManager.Instance.SelfClientPlayer && !equip.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.EnemyHeroes: if (equip.ClientPlayer == RoundManager.Instance.EnemyClientPlayer && !equip.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.Soldiers: if (equip.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.SelfSoldiers: if (equip.ClientPlayer == RoundManager.Instance.SelfClientPlayer && equip.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.EnemySoldiers: if (equip.ClientPlayer == RoundManager.Instance.EnemyClientPlayer && equip.CardInfo.MechInfo.IsSoldier) { validTarget = true; } break; case TargetRange.AllLife: validTarget = true; break; case TargetRange.SelfLife: if (equip.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyLife: if (equip.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; } if (validTarget) { summonSpellRequestToEquip(equip); return; } else { AudioManager.Instance.SoundPlay("sfx/OnSelectMechFalse"); NoticeManager.Instance.ShowInfoPanelCenter(LanguageManager.Instance.GetText("CardSpell_SelectCorrectEquip"), 0, 1f); } } } } if (CardInfo.TargetInfo.HasTargetShip) { // ToShip if (!ship) //带目标法术卡未指定目标,则收回 { CancelPlayOut(dragBeginPosition, dragBeginQuaternion); } else { bool validTarget = false; switch (CardInfo.TargetInfo.targetShipRange) { case TargetRange.Ships: validTarget = true; break; case TargetRange.SelfShip: if (ship.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyShip: if (ship.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; case TargetRange.Decks: validTarget = true; break; case TargetRange.SelfDeck: if (ship.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyDeck: if (ship.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; case TargetRange.AllLife: validTarget = true; break; case TargetRange.SelfLife: if (ship.ClientPlayer == RoundManager.Instance.SelfClientPlayer) { validTarget = true; } break; case TargetRange.EnemyLife: if (ship.ClientPlayer == RoundManager.Instance.EnemyClientPlayer) { validTarget = true; } break; } if (validTarget) { summonSpellRequestToShip(ship); return; } else { AudioManager.Instance.SoundPlay("sfx/OnSelectMechFalse"); NoticeManager.Instance.ShowInfoPanelCenter(LanguageManager.Instance.GetText("CardSpell_SelectCorrectShip"), 0, 1f); } } } } DragManager.Instance.DragOutDamage = 0; } transform.SetPositionAndRotation(dragBeginPosition, dragBeginQuaternion); //如果脱手地方还在手中,则收回 ClientPlayer.BattlePlayer.HandManager.RefreshCardsPlace(); }