Browse Source

added function to simplify appfusion effect writing

dp101428 11 months ago
parent
commit
6a13537258

+ 95 - 0
Assets/Scripts/CardEffectFactory/AddAppfusionMethod.cs

@@ -0,0 +1,95 @@
+using System.Collections;
+using System.Collections.Generic;
+using System;
+using System.Linq;
+using UnityEngine;
+
+public partial class CardEffectFactory
+{
+    #region Static effect that gives the ability to appfuse by name
+    AddAppFusionConditionClass AddAppfuseMethodByName(List<string> cardNames, CardSource card, int cost = 0, string effectName = null)
+    {
+        return AddAppfuseMethodByCondition(cardNames.Select<string, Func<CardSource, bool>>(name => card => card.EqualsCardName(name)).ToList(), card, cost, effectName);
+    }
+    #endregion
+
+    #region Static effect that gives the ability to appfuse by condition
+    AddAppFusionConditionClass AddAppfuseMethodByCondition(List<Func<CardSource, bool>> cardConditions, CardSource card, int cost = 0, string effectName = null)
+    {
+        AddAppFusionConditionClass addAppFusionConditionClass = new AddAppFusionConditionClass();
+        addAppFusionConditionClass.SetUpICardEffect($"App Fusion", (hashtable) => true, card);
+        addAppFusionConditionClass.SetUpAddAppFusionConditionClass(getAppFusionCondition: GetAppFusion);
+        addAppFusionConditionClass.SetNotShowUI(true);
+        return addAppFusionConditionClass;
+
+        AppFusionCondition GetAppFusion(CardSource cardSource)
+        {
+            bool linkCondition(Permanent permanent, CardSource source)
+            {
+                if (source != null)
+                {
+                    if (source != card)
+                    {
+                        for(int i = 0; i < cardConditions.Count; i++)
+                        {
+                            if (cardConditions[i](source)) 
+                            {
+                                for (int j = 0; j <= cardConditions.Count; j++)
+                                {
+                                    if(i != j)
+                                    {
+                                        if (cardConditions[j](permanent.TopCard))
+                                        {
+                                            return true;
+                                        }
+                                    }
+                                }
+                            }
+                            
+                        }
+                    }
+                }
+
+                return false;
+            }
+            bool digimonCondition(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
+                {
+                    for (int i = 0; i < cardConditions.Count; i++)
+                    {
+                        if (cardConditions[i](permanent.TopCard))
+                        {
+                            for (int j = 0; j <= cardConditions.Count; j++)
+                            {
+                                if (i != j)
+                                {
+                                    if (permanent.LinkedCards.Find(x => cardConditions[j](x)))
+                                    {
+                                        return true;
+                                    }
+                                }
+                            }
+                        }
+
+                    }
+                }
+
+                return false;
+            }
+
+            if (cardSource == card)
+            {
+                AppFusionCondition AppFusionCondition = new AppFusionCondition(
+                    linkedCondition: linkCondition,
+                    digimonCondition: digimonCondition,
+                    cost: cost);
+
+                return AppFusionCondition;
+            }
+
+            return null;
+        }
+    }
+    #endregion
+}

+ 11 - 0
Assets/Scripts/CardEffectFactory/AddAppfusionMethod.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7e8c2f7d273061b47bc283d7224213ee
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: