瀏覽代碼

技能释放引导

Arsene 4 年之前
父節點
當前提交
d2eee72889

+ 13 - 2
Assets/FrameWorkDesign/FrameWork/Architecture/Architecture.cs

@@ -30,6 +30,17 @@ namespace FrameWorkDesign
         public static Action<T> OnRegisterPatch = architecture => { };
 
         private static T mArchitecture;
+
+        public static IArchitecture Instance
+        {
+            get
+            {
+                if (mArchitecture == null)
+                    MakeSureArchitecture();
+                return mArchitecture;
+            }          
+        }
+
         static void MakeSureArchitecture()
         {
             if (mArchitecture == null)
@@ -75,7 +86,7 @@ namespace FrameWorkDesign
 
         public void RegisterModel<T>(T model) where T:IModel
         {
-            model.Architecture= this;
+            model.SetArchitecture(this);
             mContainer.Register<T>(model);
 
             if (!mInited)
@@ -105,7 +116,7 @@ namespace FrameWorkDesign
 
         public void RegisterSystem<T>(T system) where T : ISystem
         {
-            system.Architecture = this;
+            system.SetArchitecture(this);
             mContainer.Register<T>(system);
 
             if (!mInited)

+ 2 - 1
Assets/FrameWorkDesign/FrameWork/Architecture/IBelongToArchitecture.cs

@@ -2,7 +2,8 @@
 {
     public interface IBelongToArchitecture
     {
-        IArchitecture Architecture { get; set; }
+        /*IArchitecture Architecture { get; set; }*/
+        IArchitecture GetArchitecture();
     }
 }
 

+ 7 - 0
Assets/FrameWorkDesign/FrameWork/Architecture/ICanSetArchitecture.cs

@@ -0,0 +1,7 @@
+namespace FrameWorkDesign
+{
+   public  interface ICanSetArchitecture
+    {
+        void SetArchitecture(IArchitecture architecture);
+    }
+}

+ 11 - 0
Assets/FrameWorkDesign/FrameWork/Architecture/ICanSetArchitecture.cs.meta

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

+ 8 - 0
Assets/FrameWorkDesign/FrameWork/Architecture/IController.cs

@@ -0,0 +1,8 @@
+namespace FrameWorkDesign
+{
+    public interface IController : IBelongToArchitecture
+    {
+       
+    }
+
+}

+ 11 - 0
Assets/FrameWorkDesign/FrameWork/Architecture/IController.cs.meta

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

+ 22 - 1
Assets/FrameWorkDesign/FrameWork/Architecture/IModel.cs

@@ -1,8 +1,29 @@
 namespace FrameWorkDesign
 {
-    public interface IModel : IBelongToArchitecture
+    public interface IModel : IBelongToArchitecture, ICanSetArchitecture
     {
         void Init();
     }
+    public abstract class AbstractModel : IModel
+    {
+        private IArchitecture mArchitecture;
+
+        public IArchitecture GetArchitecture()
+        {
+            return mArchitecture;
+        }
+
+        public void SetArchitecture(IArchitecture architecture)
+        {
+            mArchitecture = architecture;
+        }
+
+        void IModel.Init()
+        {
+            OnInit();
+        }
+
+        protected abstract void OnInit();
+    }
 }
 

+ 23 - 1
Assets/FrameWorkDesign/FrameWork/Architecture/ISystem.cs

@@ -4,9 +4,31 @@ using UnityEngine;
 
 namespace FrameWorkDesign
 {
-    public interface ISystem : IBelongToArchitecture
+    public interface ISystem : IBelongToArchitecture, ICanSetArchitecture
     {
         void Init();
     }
+
+    public abstract class AbstractSystem : ISystem
+    {
+        private IArchitecture mArchitecture;
+
+        public IArchitecture GetArchitecture()
+        {
+            return mArchitecture;
+        }
+
+        public void SetArchitecture(IArchitecture architecture)
+        {
+            mArchitecture = architecture;
+        }
+
+        void ISystem.Init()
+        {
+            OnInit();
+        }
+
+        protected abstract void OnInit();
+    }
 }