Parcourir la source

Adding change level class

mbunch_kascope il y a 2 ans
Parent
commit
91fe5bcd43

+ 7 - 0
Assets/Scripts/CardEffectInterfaces.cs

@@ -235,6 +235,13 @@ public interface IChangePermanentLevelEffect
 }
 #endregion
 
+#region "Change target card's level" effect
+public interface IChangeCardLevelEffect
+{
+    int GetCardLevel(int level, CardSource cardSource);
+}
+#endregion
+
 #region "Target attacking permanent can attack to target defending permanent" effect
 public interface ICanAttackTargetDefendingPermanentEffect
 {

+ 28 - 0
Assets/Scripts/CardEffects/ChangeCardLevelClass .cs

@@ -0,0 +1,28 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Linq;
+using Photon;
+using System;
+
+public class ChangeCardLevelClass : ICardEffect, IChangeCardLevelEffect
+{
+    Func<CardSource, int, int> GetLevel { get; set; } = null;
+    public void SetUpChangeCardLevelClass(Func<CardSource, int, int> GetLevel)
+    {
+        this.GetLevel = GetLevel;
+    }
+
+    public int GetCardLevel(int level, CardSource card)
+    {
+        if (card != null)
+        {
+            if (GetLevel != null)
+            {
+                level = GetLevel(card, level);
+            }
+        }
+
+        return level;
+    }
+}

+ 11 - 0
Assets/Scripts/CardEffects/ChangeCardLevelClass .cs.meta

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

+ 31 - 0
Assets/Scripts/CardSource.cs

@@ -667,6 +667,37 @@ public class CardSource : MonoBehaviour
     public int Level => _cEntity_Base.Level;
     #endregion
 
+    #region Level
+    public int TreatedLevel
+    {
+        get
+        {
+            int treatedLevel = 0;
+
+            treatedLevel = Level;
+
+            if (!HasLevel)
+                treatedLevel = 1145140;
+
+            #region Check Card Change Level Effects
+
+            foreach (ICardEffect cardEffect in EffectList(EffectTiming.None))
+            {
+                if (cardEffect is IChangeCardLevelEffect)
+                {
+                    if (cardEffect.CanUse(null))
+                    {
+                        treatedLevel = ((IChangeCardLevelEffect)cardEffect).GetCardLevel(treatedLevel, this);
+                    }
+                }
+            }
+            #endregion
+
+            return treatedLevel;
+        }
+    }
+    #endregion
+
     #region effect list
     public List<ICardEffect> EffectList(EffectTiming timing)
     {