Exemplo n.º 1
0
    public static CardInfo_Base GetRandomCardInfoByLevelNum(int levelNum, HashSet <int> exceptCardIDs = null)
    {
        if (exceptCardIDs == null)
        {
            exceptCardIDs = new HashSet <int>();
        }

        CardInfo_Base res = null;

        if (CardLevelDict.ContainsKey(levelNum))
        {
            List <CardInfo_Base> levelCards       = CloneVariantUtils.List(CardLevelDict[levelNum]);
            List <CardInfo_Base> removeLevelCards = new List <CardInfo_Base>();
            foreach (CardInfo_Base cb in levelCards)
            {
                if (exceptCardIDs.Contains(cb.CardID))
                {
                    removeLevelCards.Add(cb);
                }
            }

            foreach (CardInfo_Base cb in removeLevelCards)
            {
                levelCards.Remove(cb);
            }

            if (levelCards.Count >= 1)
            {
                res = Utils.GetRandomFromList(levelCards, 1)[0];
            }
        }

        return(res == null ? res : res.Clone());
    }
Exemplo n.º 2
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            player.GameManager.SideEffect_ShipAction(
                delegate(BattlePlayer sp)
            {
                CardInfo_Base ci = sp.CardDeckManager.CardDeck.GetFirstCardInfo();
                if (ci != null)
                {
                    sp.HandManager.DrawCards(1);
                    for (int i = 0; i < M_SideEffectParam.GetParam_MultipliedInt("CardCount"); i++)
                    {
                        sp.HandManager.GetACardByID(ci.CardID);
                    }
                }
            },
                player,
                ChoiceCount,
                TargetRange,
                TargetSelect,
                executorInfo.TargetClientIds);
            return(true);
        }
Exemplo n.º 3
0
    private static void addCard(CardInfo_Base cardInfo)
    {
        if (!CardDict.ContainsKey(cardInfo.CardID))
        {
            CardDict.Add(cardInfo.CardID, cardInfo);
        }
        else
        {
            CardDict[cardInfo.CardID] = cardInfo;
        }

        if (cardInfo.UpgradeInfo.CardLevel <= 1) //按照不同星级的同一张卡片不存储两次
        {
            if (!cardInfo.BaseInfo.IsHide && !cardInfo.BaseInfo.IsTemp)
            {
                if (!CardLevelDict.ContainsKey(cardInfo.BaseInfo.CardRareLevel))
                {
                    CardLevelDict.Add(cardInfo.BaseInfo.CardRareLevel, new List <CardInfo_Base> {
                        cardInfo
                    });
                }
                else
                {
                    CardLevelDict[cardInfo.BaseInfo.CardRareLevel].Add(cardInfo);
                }
            }
        }
    }
Exemplo n.º 4
0
 public override void Initiate(CardInfo_Base cardInfo, ClientPlayer clientPlayer)
 {
     base.Initiate(cardInfo, clientPlayer);
     M_WeaponType      = cardInfo.WeaponInfo.WeaponType;
     M_WeaponAttack    = cardInfo.WeaponInfo.Attack;
     M_WeaponEnergyMax = cardInfo.WeaponInfo.EnergyMax;
     M_WeaponEnergy    = cardInfo.WeaponInfo.Energy;
 }
Exemplo n.º 5
0
    public static List <CardInfo_Base> GetCardSeries(CardInfo_Base cardInfo)
    {
        List <CardInfo_Base> res        = new List <CardInfo_Base>();
        CardInfo_Base        basic_card = cardInfo;
        CardInfo_Base        de         = cardInfo;

        while ((de = GetDegradeCardInfo(basic_card)) != null)
        {
            if (de.CardID == cardInfo.CardID)
            {
                break;
            }

            basic_card = de;
        }

        res.Add(basic_card);

        CardInfo_Base last_up = basic_card;
        CardInfo_Base up      = basic_card;

        while ((up = GetUpgradeCardInfo(last_up)) != null)
        {
            //Cycle
            if (up.CardID == basic_card.CardID)
            {
                //Break the link
                up.UpgradeInfo.DegradeCardID = -1;
                up.UpgradeInfo.UpgradeCardID = -1;
                foreach (CardInfo_Base cb in res)
                {
                    cb.UpgradeInfo.UpgradeCardID = -1;
                    cb.UpgradeInfo.DegradeCardID = -1;
                }

                NeedReload = true;

                List <int> cycleCardIDs = new List <int>();
                foreach (CardInfo_Base cb in res)
                {
                    cycleCardIDs.Add(cb.CardID);
                }

                cycleCardIDs.Add(basic_card.CardID);
                string cycleStr = string.Join("->", cycleCardIDs);
                Utils.NoticeCenterMsg?.Invoke(string.Format(LanguageManager_Common.GetText("CardEditorPanel_InvalidCycleAutoBreak"), cycleStr));
                break;
            }

            res.Add(up);
            last_up = up;
        }

        return(res);
    }
Exemplo n.º 6
0
    public static int GetCardBaseCardID(int cardID)
    {
        CardInfo_Base de     = CardDict[cardID];
        int           baseID = de.CardID;

        while ((de = GetDegradeCardInfo(de)) != null)
        {
            baseID = de.CardID;
        }

        return(baseID);
    }
Exemplo n.º 7
0
    public static bool IsASeries(CardInfo_Base card1, CardInfo_Base card2)
    {
        foreach (CardInfo_Base ci in GetCardSeries(card1))
        {
            if (card2.CardID == ci.CardID)
            {
                return(true);
            }
        }

        return(false);
    }
Exemplo n.º 8
0
    public void EquipMA(EquipMARequest r, CardInfo_Base cardInfo)
    {
        ModuleMA       ma          = new ModuleMA();
        CardInfo_Equip cardInfo_MA = (CardInfo_Equip)cardInfo;
        ModuleMech     mech        = GetMech(r.mechID);

        ma.M_ModuleMech = mech;
        ma.M_EquipID    = BattlePlayer.GameManager.GenerateNewEquipId();
        ma.Initiate(cardInfo_MA, BattlePlayer);
        ma.OriginCardInstanceId = r.handCardInstanceId;
        mech.M_MA = ma;
        BattlePlayer.CardDeckManager.CardDeck.AddCardInstanceId(cardInfo.CardID, r.handCardInstanceId);
    }
Exemplo n.º 9
0
    public void EquipPack(EquipPackRequest r, CardInfo_Base cardInfo)
    {
        ModulePack     pack          = new ModulePack();
        CardInfo_Equip cardInfo_Pack = (CardInfo_Equip)cardInfo;
        ModuleMech     mech          = GetMech(r.mechID);

        pack.M_ModuleMech = mech;
        pack.M_EquipID    = BattlePlayer.GameManager.GenerateNewEquipId();
        pack.Initiate(cardInfo_Pack, BattlePlayer);
        pack.OriginCardInstanceId = r.handCardInstanceId;
        mech.M_Pack = pack;
        BattlePlayer.CardDeckManager.CardDeck.AddCardInstanceId(cardInfo.CardID, r.handCardInstanceId);
    }
Exemplo n.º 10
0
    public void EquipShield(EquipShieldRequest r, CardInfo_Base cardInfo)
    {
        ModuleShield   shield          = new ModuleShield();
        CardInfo_Equip cardInfo_Shield = (CardInfo_Equip)cardInfo;
        ModuleMech     mech            = GetMech(r.mechID);

        shield.M_ModuleMech = mech;
        shield.M_EquipID    = BattlePlayer.GameManager.GenerateNewEquipId();
        shield.Initiate(cardInfo_Shield, BattlePlayer);
        shield.OriginCardInstanceId = r.handCardInstanceId;
        mech.M_Shield = shield;
        BattlePlayer.CardDeckManager.CardDeck.AddCardInstanceId(cardInfo.CardID, r.handCardInstanceId);
    }