Files
tcg-client/Assets/TcgEngine/Scripts/Effects/EffectSendPile.cs
2025-08-25 15:04:33 +08:00

83 lines
2.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TcgEngine.Gameplay;
namespace TcgEngine
{
//Sends the target card to a pile of your choice (deck/discard/hand)
//Dont use to send to board since it needs a slot, use EffectPlay instead to send to board
//Also dont send to discard from the board because it wont trigger OnKill effects, use EffectDestroy instead
[CreateAssetMenu(fileName = "effect", menuName = "TcgEngine/Effect/SendPile", order = 10)]
public class EffectSendPile : EffectData
{
public PileType pile;
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
{
Game data = logic.GetGameData();
Player player = data.GetPlayer(target.player_id);
if (pile == PileType.Deck)
{
player.RemoveCardFromAllGroups(target);
player.cards_deck.Add(target);
target.Clear();
}
if (pile == PileType.Hand) // 卡牌回到手牌
{
player.RemoveCardFromAllGroups(target);
player.cards_hand.Add(target);
target.Clear(); // 清除卡牌状态
}
if (pile == PileType.Hand_keep) // 卡牌回到手牌 但是不清除卡牌状态
{
player.RemoveCardFromAllGroups(target);
player.cards_hand.Add(target);
if (target.player_id == caster.player_id)
{
Debug.Log("这是我的卡牌" + target.player_id + " " + caster.player_id);
target.Clear(); // 清除卡牌状态
}
else
{
Debug.Log("这是敌方的卡牌" + target.player_id + " " + caster.player_id);
// 这是敌方的卡牌
}
}
if (pile == PileType.Discard)
{
player.RemoveCardFromAllGroups(target);
player.cards_discard.Add(target);
target.Clear();
}
if (pile == PileType.Temp)
{
player.RemoveCardFromAllGroups(target);
player.cards_temp.Add(target);
target.Clear();
}
}
}
public enum PileType
{
None = 0,
Board = 10,
Hand = 20,
Hand_keep = 25,
Deck = 30,
Discard = 40,
Secret = 50,
Equipped = 60,
Temp = 90,
}
}