Пример #1
0
 public void InitialArray()
 {
     deck          = new List <DuelCard> [playerNum];
     extra         = new List <DuelCard> [playerNum];
     grave         = new List <DuelCard> [playerNum];
     except        = new List <DuelCard> [playerNum];
     handcard      = new List <DuelCard> [playerNum];
     monster       = new DuelCard[playerNum][];
     magictrap     = new DuelCard[playerNum][];
     normalsummon  = new int[playerNum];
     activatelimit = new List <ActivateLimit> [playerNum];
     for (int i = 0; i < playerNum; i++)
     {
         deck[i]          = new List <DuelCard>();
         extra[i]         = new List <DuelCard>();
         grave[i]         = new List <DuelCard>();
         except[i]        = new List <DuelCard>();
         handcard[i]      = new List <DuelCard>();
         monster[i]       = new DuelCard[areaNum];
         magictrap[i]     = new DuelCard[areaNum];
         activatelimit[i] = new List <ActivateLimit>();
     }
     LP         = new int[2];
     fieldcard  = new DuelCard[2];
     setmonster = new bool[2];
     for (int i = 0; i < 2; i++)
     {
         LP[i]         = 0;
         setmonster[i] = true;
     }
 }
Пример #2
0
    public void AddHandCard(DuelCard duelcard)
    {
        GameObject handcard = Instantiate(card, handcardlist);

        handcard.GetComponent <Image>().sprite = Duel.spriteManager.GetCardSprite(duelcard.id, false);
        StartCoroutine(ChangeHandCardPosition(false));
    }
Пример #3
0
    public int Remove(ref DuelCard card)
    {
        int removeIndex = PlayerHand.IndexOf(card);

        PlayerHand.Remove(card);
        return(removeIndex);
    }
Пример #4
0
    /// <summary>
    /// 把这张卡特殊召唤
    /// </summary>
    /// <param name="duelcard"></param>
    public void SpecialSummon(DuelCard duelcard)
    {
        if (precheck)
        {
            if (!duel.SpecialSummonCheck())
            {
                activatable = false;
            }
            if (duelcard.position == CardPosition.handcard && duelcard.Equals(thiscard) && thiseffect.effectType == EffectType.cantrigger)
            {
                thiseffect.SetLimit(-1, LimitType.specialsummonself, 1);
                if (!duel.LimitCheck(thiscard, thiseffect.effect, LimitType.specialsummonself))
                {
                    activatable = false;
                }
            }
            return;
        }
        EventData eData = new EventData
        {
            oplayer   = duelData.opWho,
            gameEvent = GameEvent.specialsummon,
            data      = new Dictionary <string, object>
            {
                { "monstercard", duelcard },
            }
        };

        duelData.eventDate.Add(eData);
    }
Пример #5
0
 public IEnumerator MagicTrapShow(DuelCard duelcard, bool activateCover)
 {
     if (activateCover)
     {
         if (duel.IsPlayerOwn(duelcard.controller))
         {
             yield return(magictrapOwn.ShowCoverCard(duelcard));
         }
         else
         {
             yield return(magictrapOps.ShowCoverCard(duelcard));
         }
     }
     else
     {
         if (duel.IsPlayerOwn(duelcard.controller))
         {
             yield return(magictrapOwn.ShowMagicTrapCard(duelcard));
         }
         else
         {
             yield return(magictrapOps.ShowMagicTrapCard(duelcard));
         }
     }
 }
Пример #6
0
    public IEnumerator ShowMagicTrapCard(DuelCard duelcard)
    {
        Transform mgttrans = GetChildCard(duelcard.index);
        Sprite    sprite   = Duel.spriteManager.GetCardSprite(duelcard.id, false);

        if (duelcard.mean == CardMean.faceupmgt)
        {//表侧表示
            mgttrans.localPosition = new Vector3(0, 0.53f, -0.43f);
            mgttrans.rotation      = Quaternion.Euler(0, 0, 180);
        }
        if (duelcard.mean == CardMean.facedownmgt)
        {//里侧表示
            mgttrans.rotation = Quaternion.Euler(90, 180, 0);
        }
        if (sprite == null)
        {
            mgttrans.GetComponent <Renderer>().material.mainTexture = null;
        }
        else
        {
            mgttrans.GetComponent <Renderer>().material.mainTexture = sprite.texture;
        }
        mgttrans.gameObject.SetActive(true);
        yield return(null);
    }
Пример #7
0
    static int ChangeMean(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2)
            {
                DuelEvent obj  = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
                DuelCard  arg0 = (DuelCard)ToLua.CheckObject <DuelCard>(L, 2);
                obj.ChangeMean(arg0);
                return(0);
            }
            else if (count == 3)
            {
                DuelEvent obj  = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
                DuelCard  arg0 = (DuelCard)ToLua.CheckObject <DuelCard>(L, 2);
                int       arg1 = (int)LuaDLL.luaL_checknumber(L, 3);
                obj.ChangeMean(arg0, arg1);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: DuelEvent.ChangeMean"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #8
0
    static int SpecialSummon(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes <DuelCard>(L, 2))
            {
                DuelEvent obj  = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
                DuelCard  arg0 = (DuelCard)ToLua.ToObject(L, 2);
                obj.SpecialSummon(arg0);
                return(0);
            }
            else if (count == 2 && TypeChecker.CheckTypes <System.Collections.Generic.List <DuelCard> >(L, 2))
            {
                DuelEvent obj = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
                System.Collections.Generic.List <DuelCard> arg0 = (System.Collections.Generic.List <DuelCard>)ToLua.ToObject(L, 2);
                obj.SpecialSummon(arg0);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: DuelEvent.SpecialSummon"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #9
0
    public DuelCard GetClickCard(Transform cardtrans, int position, int side)
    {
        DuelCard duelcard = null;

        if (position == CardPosition.magictrap)
        {
            if (side == PlayerSide.own)
            {
                int index = magictrapOwn.GetChildIndex(cardtrans);
                duelcard = duelData.magictrap[0][index];
            }
            if (side == PlayerSide.ops)
            {
                int index = magictrapOps.GetChildIndex(cardtrans);
                duelcard = duelData.magictrap[1][index];
            }
        }
        if (position == CardPosition.monster)
        {
            if (side == PlayerSide.own)
            {
                int index = monserOwn.GetChildIndex(cardtrans);
                duelcard = duelData.monster[0][index];
            }
            if (side == PlayerSide.ops)
            {
                int index = monserOps.GetChildIndex(cardtrans);
                duelcard = duelData.monster[1][index];
            }
        }
        return(duelcard);
    }
Пример #10
0
    public void ShowMonsterCard(DuelCard duelcard)
    {
        Transform montrans = GetChildCard(duelcard.index);
        Sprite    sprite   = Duel.spriteManager.GetCardSprite(duelcard.id, false);

        if (duelcard.mean == CardMean.faceupatk)
        {//表侧攻击表示
            montrans.rotation = Quaternion.Euler(270, 180, 0);
        }
        if (duelcard.mean == CardMean.faceupdef)
        {//表侧守备表示
            montrans.rotation = Quaternion.Euler(270, 90, 0);
        }
        if (duelcard.mean == CardMean.facedowndef)
        {//里侧守备表示
            montrans.rotation = Quaternion.Euler(90, 270, 0);
        }
        if (sprite == null)
        {
            montrans.GetComponent <Renderer>().material.mainTexture = null;
        }
        else
        {
            montrans.GetComponent <Renderer>().material.mainTexture = sprite.texture;
        }
        montrans.gameObject.SetActive(true);
    }
Пример #11
0
    override public void OnMouseUpAsButton()
    {
        //TODO: extra logic for non-minions based cards and field movement

        //unoccupied
        if (null == currentCard)
        {
            DragDropManager.Callback(this);
            if (this.Target != null)
            {
                //access the game object that would be dropped
                currentCard = this.Target.gameObject;
                currentCard.transform.SetParent(this.transform);

                //load and summons the minion
                DuelCard duelCard = currentCard.GetComponent <DuelCard>();
                if (null != duelCard)
                {
                    //TODO: Event for OnSummon
                    //summon the monster
                    duelCard.Summon();
                    duelCard.gameObject.transform.position = this.transform.position;

                    //TODO: Event for AfterSummon
                }
                DragDropManager.CompleteCallback();
            }
        }
    }
Пример #12
0
    public int AddCard(ref DuelCard card)
    {
        //TODO: add restrictive functionality for max hand size
        int addIndex = PlayerHand.Count;

        PlayerHand.Add(card);
        return(addIndex);
    }
Пример #13
0
    public void AddCard(DuelCard duelcard)
    {
        if (duelcard == null)
        {
            return;
        }
        CardLocation cardlocal = new CardLocation();

        cardlocal.SetLocation(duelcard);
        card.Add(cardlocal);
    }
Пример #14
0
 public void MonsterShow(DuelCard duelcard)
 {
     if (duel.IsPlayerOwn(duelcard.controller))
     {
         monserOwn.ShowMonsterCard(duelcard);
     }
     else
     {
         monserOps.ShowMonsterCard(duelcard);
     }
 }
Пример #15
0
 public void MagicTrapRemove(DuelCard duelcard)
 {
     if (duel.IsPlayerOwn(duelcard.controller))
     {
         magictrapOwn.HideMagicTrapCard(duelcard.index);
     }
     else
     {
         magictrapOps.HideMagicTrapCard(duelcard.index);
     }
     duelData.magictrap[duelcard.controller][duelcard.index] = null;
 }
Пример #16
0
 public void MonsterRemove(DuelCard duelcard)
 {
     if (duel.IsPlayerOwn(duelcard.controller))
     {
         monserOwn.HideMonsterCard(duelcard.index);
     }
     else
     {
         monserOps.HideMonsterCard(duelcard.index);
     }
     duelData.monster[duelcard.controller][duelcard.index] = null;
 }
Пример #17
0
 public IEnumerator WaitMeanChoose(DuelCard duelcard, bool secSet)
 {
     if (secSet)
     {
         yield return(duelTip.ShowMeanTip(Duel.spriteManager.GetCardSprite(duelcard.id, false),
                                          Duel.spriteManager.GetTextureSprite("cover")));
     }
     else
     {
         yield return(duelTip.ShowMeanTip(Duel.spriteManager.GetCardSprite(duelcard.id, false)));
     }
     duelData.meanChoose = duelTip.choice;
 }
Пример #18
0
 public void GraveRemove(int player, DuelCard duelcard)
 {
     duelData.grave[player].Remove(duelcard);
     duelData.SortCard(duelData.grave[player]);
     if (duel.IsPlayerOwn(player))
     {
         graveOwn.GraveUpdate(player);
     }
     else
     {
         graveOps.GraveUpdate(player);
     }
 }
Пример #19
0
 public void DeckRemove(int player, DuelCard duelcard)
 {
     duelData.deck[player].Remove(duelcard);
     duelData.SortCard(duelData.deck[player]);
     if (duel.IsPlayerOwn(player))
     {
         deckOwn.DeckUpdate(player);
     }
     else
     {
         deckOps.DeckUpdate(player);
     }
 }
Пример #20
0
 public void HandCardRemove(int player, DuelCard duelcard)
 {
     duelData.handcard[player].Remove(duelcard);
     duelData.SortCard(duelData.handcard[player]);
     if (duel.IsPlayerOwn(player))
     {
         handOwn.RemoveHandCard(duelcard.index);
     }
     else
     {
         handOps.RemoveHandCard(duelcard.index);
     }
 }
Пример #21
0
 public void SetCardInfo(DuelCard card)
 {
     duelcard         = card;
     cardImage.sprite = Duel.spriteManager.GetCardSprite(duelcard.id, false);
     cardName.text    = duelcard.name + " " + duelcard.id + " " + duelcard.series;
     cardAtt.text     = duelcard.type;
     if (duelcard.type.Contains(CardType.monster))
     {
         cardAtt.text += " " + duelcard.race + " " + duelcard.attribute + " 星" + duelcard.level + " " + duelcard.atk + "/" + duelcard.def;
     }
     cardDes.text = duelcard.describe;
     ClearCardButton();
     showcard = true;
 }
Пример #22
0
 public void HandCardAdd(int player, DuelCard duelcard)
 {
     duelcard.position = CardPosition.handcard;
     duelcard.index    = duelData.handcard[player].Count;
     duelData.handcard[player].Add(duelcard);
     if (duel.IsPlayerOwn(player))
     {
         handOwn.AddHandCard(duelcard);
     }
     else
     {
         handOps.AddHandCard(duelcard);
     }
 }
Пример #23
0
 static int ActivateInvalid(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         DuelEvent obj = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
         DuelCard  o   = obj.ActivateInvalid();
         ToLua.PushObject(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #24
0
 static int SetThisCard(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         DuelEvent obj  = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
         DuelCard  arg0 = (DuelCard)ToLua.CheckObject <DuelCard>(L, 2);
         obj.SetThisCard(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #25
0
 public void GraveInsert(int player, int where, DuelCard duelcard)
 {
     duelcard.position = CardPosition.grave;
     duelcard.index    = where;
     duelData.grave[player].Insert(where, duelcard);
     duelData.SortCard(duelData.grave[player]);
     if (duel.IsPlayerOwn(player))
     {
         graveOwn.GraveUpdate(player);
     }
     else
     {
         graveOps.GraveUpdate(player);
     }
 }
Пример #26
0
 static int ResetCard(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         DuelCard obj  = (DuelCard)ToLua.CheckObject <DuelCard>(L, 1);
         Card     arg0 = (Card)ToLua.CheckObject <Card>(L, 2);
         obj.ResetCard(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #27
0
 static int GetAntiMonster(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         DuelEvent obj = (DuelEvent)ToLua.CheckObject <DuelEvent>(L, 1);
         DuelCard  o   = obj.GetAntiMonster();
         ToLua.PushObject(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #28
0
 static int Clone(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         DuelCard obj = (DuelCard)ToLua.CheckObject <DuelCard>(L, 1);
         DuelCard o   = obj.Clone();
         ToLua.PushObject(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #29
0
    static int set_duelcard(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            CardEffect obj  = (CardEffect)o;
            DuelCard   arg0 = (DuelCard)ToLua.CheckObject <DuelCard>(L, 2);
            obj.duelcard = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index duelcard on a nil value"));
        }
    }
Пример #30
0
    static int get_duelcard(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            CardEffect obj = (CardEffect)o;
            DuelCard   ret = obj.duelcard;
            ToLua.PushObject(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index duelcard on a nil value"));
        }
    }