Просмотр исходного кода

Update to allow multiple colors for partition

mbunch_kascope 2 лет назад
Родитель
Сommit
cbac800e5a

+ 5 - 3
Assets/CardEffect/BT16/Black/Shakkoumon_BT16_063.cs

@@ -10,9 +10,11 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Black));
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Yellow));
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>
+            {
+                new PartitionCondition(4, new List<CardColor> { CardColor.Black }),
+                new PartitionCondition(4, new List<CardColor> { CardColor.Yellow })
+            };
 
             #region Rule - Trait: Also has [Angel]
             if (timing == EffectTiming.None)

+ 5 - 3
Assets/CardEffect/BT16/Blue/Paildramon_BT16_025.cs

@@ -10,9 +10,11 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Blue));
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Green));
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>
+            {
+                new PartitionCondition(4, new List<CardColor> { CardColor.Blue }),
+                new PartitionCondition(4, new List<CardColor> { CardColor.Green })
+            };
 
             #region Partition - Inherited
             if (timing == EffectTiming.WhenRemoveField)

+ 5 - 3
Assets/CardEffect/BT16/Purple/Dinobeemon_BT16_077.cs

@@ -12,9 +12,11 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Purple));
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Red));
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>
+            {
+                new PartitionCondition(4, new List<CardColor> { CardColor.Purple }),
+                new PartitionCondition(4, new List<CardColor> { CardColor.Red })
+            };
 
             #region DNA Digivolution
             if (timing == EffectTiming.None)

+ 5 - 3
Assets/CardEffect/BT16/Red/Silphymon_BT16_012.cs

@@ -14,9 +14,11 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Red));
-            partitionConditions.Add(new PartitionCondition(4, CardColor.Yellow));
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>
+            {
+                new PartitionCondition(4, new List<CardColor> { CardColor.Red }),
+                new PartitionCondition(4, new List<CardColor> { CardColor.Yellow })
+            };
 
             #region Partition
             if (timing == EffectTiming.WhenRemoveField)

+ 5 - 3
Assets/CardEffect/BT16/Yellow/Chaosmon_BT16_036.cs

@@ -118,9 +118,11 @@ namespace DCGO.CardEffects.BT16
 
             if(timing == EffectTiming.WhenRemoveField)
             {
-                List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
-                partitionConditions.Add(new PartitionCondition(6, CardColor.Black));
-                partitionConditions.Add(new PartitionCondition(6, CardColor.Yellow));
+                List<PartitionCondition> partitionConditions = new List<PartitionCondition>
+            {
+                new PartitionCondition(6, new List<CardColor> { CardColor.Black }),
+                new PartitionCondition(6, new List<CardColor> { CardColor.Yellow })
+            };
 
                 cardEffects.Add(CardEffectFactory.PartitionSelfEffect
                     (isInheritedEffect: false, 

+ 16 - 4
Assets/Scripts/CardEffectFactory/KeyWordEffects/Partition.cs

@@ -7,14 +7,26 @@ using UnityEngine;
 public class PartitionCondition
 {
     public int Level;
-    public CardColor Color;
+    public List<CardColor> Color;
 
-    public PartitionCondition(int level, CardColor color)
+    public PartitionCondition(int level, List<CardColor> color)
     {
         Level = level;
         Color = color;
     }
+
+    public bool ContainsAll(List<CardColor> sourceColors)
+    {
+        foreach(CardColor cardColor in Color)
+        {
+            if(!sourceColors.Contains(cardColor))
+                return false;
+        }
+
+        return false;
+    }
 }
+
 public partial class CardEffectFactory
 {
     #region Trigger effect of [Partition] on oneself
@@ -46,13 +58,13 @@ public partial class CardEffectFactory
         List<CardSource> sourceOneCard = targetPermanent.cardSources
             .Clone()
             .Filter(source =>
-                source.CardColors.Contains(partitionConditions[0].Color)
+                partitionConditions[0].ContainsAll(source.CardColors)
                 && (source.HasLevel && source.Level == partitionConditions[0].Level));
 
         List<CardSource> sourceTwoCard = targetPermanent.cardSources
             .Clone()
             .Filter(source =>
-                source.CardColors.Contains(partitionConditions[1].Color)
+                partitionConditions[1].ContainsAll(source.CardColors)
                 && (source.HasLevel && source.Level == partitionConditions[1].Level));
 
         ActivateClass activateClass = new ActivateClass();