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()); }
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); }
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); } } } }
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; }
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); }
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); }
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); }
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); }
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); }
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); }