예제 #1
0
    /// <summary>
    /// 从目标卡选取n张进行操作
    /// </summary>
    /// <param name="targetcard"></param>
    /// <param name="num"></param>
    /// <param name="gameEvent"></param>
    public void SelectCard(TargetCard targetcard, int num, int gameEvent)
    {
        List <DuelCard> targetlist = duel.GetTargetCard(targetcard);

        if (precheck)
        {
            if (targetlist.Count == 0)
            {
                activatable = false;
            }
            if (gameEvent == GameEvent.specialsummon)
            {
                if (!duel.SpecialSummonCheck())
                {
                    activatable = false;
                }
            }
            return;
        }
        EventData eData = new EventData
        {
            oplayer   = duelData.opWho,
            gameEvent = GameEvent.selectcard,
            data      = new Dictionary <string, object>
            {
                { "targetlist", targetlist },
                { "num", num },
                { "gameEvent", gameEvent },
            }
        };

        duelData.eventDate.Add(eData);
    }
예제 #2
0
 static int SetPosition(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         TargetCard obj  = (TargetCard)ToLua.CheckObject <TargetCard>(L, 1);
         int        arg0 = (int)LuaDLL.luaL_checknumber(L, 2);
         obj.SetPosition(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
예제 #3
0
    static int get_side(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TargetCard obj = (TargetCard)o;
            int        ret = obj.side;
            LuaDLL.lua_pushinteger(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index side on a nil value"));
        }
    }
예제 #4
0
    static int set_target(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TargetCard obj = (TargetCard)o;
            System.Collections.Generic.Dictionary <int, System.Collections.Generic.List <object> > arg0 = (System.Collections.Generic.Dictionary <int, System.Collections.Generic.List <object> >)ToLua.CheckObject(L, 2, typeof(System.Collections.Generic.Dictionary <int, System.Collections.Generic.List <object> >));
            obj.target = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index target on a nil value"));
        }
    }
예제 #5
0
    static int set_side(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TargetCard obj  = (TargetCard)o;
            int        arg0 = (int)LuaDLL.luaL_checknumber(L, 2);
            obj.side = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index side on a nil value"));
        }
    }
예제 #6
0
    static int get_target(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TargetCard obj = (TargetCard)o;
            System.Collections.Generic.Dictionary <int, System.Collections.Generic.List <object> > ret = obj.target;
            ToLua.PushSealed(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index target on a nil value"));
        }
    }
예제 #7
0
 static int SelectCard(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 4);
         DuelEvent  obj  = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
         TargetCard arg0 = (TargetCard)ToLua.CheckObject <TargetCard>(L, 2);
         int        arg1 = (int)LuaDLL.luaL_checknumber(L, 3);
         int        arg2 = (int)LuaDLL.luaL_checknumber(L, 4);
         obj.SelectCard(arg0, arg1, arg2);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
예제 #8
0
    static int _CreateTargetCard(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 0)
            {
                TargetCard obj = new TargetCard();
                ToLua.PushObject(L, obj);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to ctor method: TargetCard.New"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #9
0
 public override bool choose(Outcome value1, Cards value2, TargetCard value3, Game value4)
 {
     Debug.Log("Player - choose");
     return(false);
 }
예제 #10
0
 public override bool chooseTarget(Outcome value1, Cards value2, TargetCard value3, Ability value4, Game value5)
 {
     Debug.Log("Player - chooseTarget");
     return(false);
 }
예제 #11
0
        public void ProcessEffect(ActiveGame game)
        {
            switch (EffectType)
            {
            case EffectTypes.CombineHandAndGraveyardToLibrary:
                if (TargetPlayer != null)
                {
                    TargetPlayer.CombineToLibrary(true, true);
                }
                break;

            case EffectTypes.CombineGraveyardToLibrary:
                if (TargetPlayer != null)
                {
                    TargetPlayer.CombineToLibrary(false, true);
                }
                break;

            case EffectTypes.CombineHandToLibrary:
                if (TargetPlayer != null)
                {
                    TargetPlayer.CombineToLibrary(true, false);
                }
                break;

            case EffectTypes.Damage:
                if (TargetPlayer != null)
                {
                    TargetPlayer.AddDamage(game, Value, OriginCard);
                }
                else if (TargetCard != null)
                {
                    TargetCard.AddDamage(game, Value, OriginCard);
                }
                break;

            case EffectTypes.Destroy:
                if (TargetCard != null)
                {
                    Player player = game.Players.First(o => o.Id == TargetCard.ControllerId);
                    player.Battlefield.Remove(TargetCard, TargetZone.Graveyard);
                }
                break;

            case EffectTypes.DiscardCard:
                if (TargetPlayer != null && TargetCard != null)
                {
                    TargetPlayer.Hand.Remove(TargetCard, TargetZone.Graveyard);
                }
                break;

            case EffectTypes.DrawCard:
                if (TargetPlayer != null)
                {
                    TargetPlayer.Library.Draw(Value);
                }
                break;

            case EffectTypes.PlaceCardInLibrary_Bottom:
                if (TargetPlayer != null && TargetCard != null)
                {
                    TargetPlayer.Library.Insert(TargetCard, InsertLocation.Bottom);
                }
                break;

            case EffectTypes.PlaceCardInLibrary_Top:
                if (TargetPlayer != null && TargetCard != null)
                {
                    TargetPlayer.Library.Insert(TargetCard, InsertLocation.Top);
                }
                break;

            case EffectTypes.ShuffleLibrary:
                if (TargetPlayer != null)
                {
                    TargetPlayer.Library.Shuffle();
                }
                break;

            case EffectTypes.TopCardOfLibraryFaceUp:
                if (TargetPlayer != null)
                {
                    TargetPlayer.Library.ShowTopCard = Boolean;
                }
                break;

            case EffectTypes.RemoveFromGame:

                if (TargetCard != null)
                {
                    Player player = game.Players.First(o => o.Id == TargetCard.ControllerId);
                    player.Battlefield.Remove(TargetCard, TargetZone.None);
                    player.Graveyard.Remove(TargetCard, TargetZone.None);
                    player.Hand.Remove(TargetCard, TargetZone.None);
                }
                break;

            case EffectTypes.Exile:
                if (TargetCard != null)
                {
                    Player player = game.Players.First(o => o.Id == TargetCard.ControllerId);
                    player.Battlefield.Remove(TargetCard, TargetZone.None);
                    game.Stack.Remove(TargetCard, TargetZone.None);
                }
                break;
            }
            throw new NotImplementedException("Effect.ProcessEffect");
        }