Browse Source

Publish方法发现大部分都没有await, 所以还是改成两个,一个同步的一个异步的,异步使用PublishAsync

tanghai 4 years ago
parent
commit
80caa45d9b

+ 1 - 1
Robot/App/Program.cs

@@ -43,7 +43,7 @@ namespace ET
 				
                 Log.Info($"server start........................ {Game.Scene.Id}");
 
-                Game.EventSystem.Publish(new EventType.AppStart()).Coroutine();
+                Game.EventSystem.Publish(new EventType.AppStart());
 				
                 while (true)
                 {

+ 1 - 1
Server/App/Program.cs

@@ -40,7 +40,7 @@ namespace ET
 				
 				Log.Info($"server start........................ {Game.Scene.Id}");
 
-				Game.EventSystem.Publish(new EventType.AppStart()).Coroutine();
+				Game.EventSystem.Publish(new EventType.AppStart());
 				
 				while (true)
 				{

+ 2 - 2
Server/Hotfix/Demo/AOI/AOIEntitySystem.cs

@@ -134,7 +134,7 @@ namespace ET
                     enter.BeSeeUnits.Add(self.Id, self);
                 }
             }
-            Game.EventSystem.Publish(new EventType.UnitEnterSightRange() {A = self, B = enter}).Coroutine();
+            Game.EventSystem.Publish(new EventType.UnitEnterSightRange() {A = self, B = enter});
         }
 
         // leave离开self视野
@@ -162,7 +162,7 @@ namespace ET
                 leave.BeSeePlayers.Remove(self.Id);
             }
 
-            Game.EventSystem.Publish(new EventType.UnitLeaveSightRange {A = self, B = leave}).Coroutine();
+            Game.EventSystem.Publish(new EventType.UnitLeaveSightRange {A = self, B = leave});
         }
 
         /// <summary>

+ 2 - 2
Server/Model/Demo/Unit/Unit.cs

@@ -22,7 +22,7 @@ namespace ET
             set
             {
                 this.position = value;
-                Game.EventSystem.Publish(new EventType.ChangePosition() { Unit = this }).Coroutine();
+                Game.EventSystem.Publish(new EventType.ChangePosition() { Unit = this });
             }
         }
 
@@ -40,7 +40,7 @@ namespace ET
             set
             {
                 this.rotation = value;
-                Game.EventSystem.Publish(new EventType.ChangeRotation() {Unit = this}).Coroutine();
+                Game.EventSystem.Publish(new EventType.ChangeRotation() {Unit = this});
             }
         }
     }

+ 1 - 1
Unity/Codes/Hotfix/Demo/Login/EnterMapHelper.cs

@@ -14,7 +14,7 @@ namespace ET
                 UnitComponent unitComponent = zoneScene.GetComponent<UnitComponent>();
                 unitComponent.MyId = g2CEnterMap.MyId;
                 
-                Game.EventSystem.Publish(new EventType.EnterMapFinish() {ZoneScene = zoneScene}).Coroutine();
+                Game.EventSystem.Publish(new EventType.EnterMapFinish() {ZoneScene = zoneScene});
             }
             catch (Exception e)
             {

+ 1 - 1
Unity/Codes/Hotfix/Demo/Login/LoginHelper.cs

@@ -34,7 +34,7 @@ namespace ET
 
                 Log.Debug("登陆gate成功!");
 
-                await Game.EventSystem.Publish(new EventType.LoginFinish() {ZoneScene = zoneScene});
+                await Game.EventSystem.PublishAsync(new EventType.LoginFinish() {ZoneScene = zoneScene});
             }
             catch (Exception e)
             {

+ 2 - 2
Unity/Codes/Hotfix/Demo/Move/MoveComponentSystem.cs

@@ -96,7 +96,7 @@ namespace ET
             ETTask<bool> tcs = ETTask<bool>.Create(true);
             self.Callback = (ret) => { tcs.SetResult(ret); };
 
-            Game.EventSystem.Publish(new EventType.MoveStart(){Unit = self.GetParent<Unit>()}).Coroutine();
+            Game.EventSystem.Publish(new EventType.MoveStart(){Unit = self.GetParent<Unit>()});
             
             self.StartMove();
             
@@ -118,7 +118,7 @@ namespace ET
 
             if (moveRet)
             {
-                Game.EventSystem.Publish(new EventType.MoveStop(){Unit = self.GetParent<Unit>()}).Coroutine();
+                Game.EventSystem.Publish(new EventType.MoveStop(){Unit = self.GetParent<Unit>()});
             }
             return moveRet;
         }

+ 1 - 1
Unity/Codes/Hotfix/Demo/Scene/SceneFactory.cs

@@ -11,7 +11,7 @@ namespace ET
             zoneScene.AddComponent<AIComponent, int>(1);
             
             // UI层的初始化
-            await Game.EventSystem.Publish(new EventType.AfterCreateZoneScene() {ZoneScene = zoneScene});
+            await Game.EventSystem.PublishAsync(new EventType.AfterCreateZoneScene() {ZoneScene = zoneScene});
             
             return zoneScene;
         }

+ 1 - 1
Unity/Codes/Hotfix/Demo/Unit/UnitFactory.cs

@@ -41,7 +41,7 @@ namespace ET
 
 	        unit.AddComponent<XunLuoPathComponent>();
 	        
-	        Game.EventSystem.Publish(new EventType.AfterUnitCreate() {Unit = unit}).Coroutine();
+	        Game.EventSystem.Publish(new EventType.AfterUnitCreate() {Unit = unit});
             return unit;
         }
     }

+ 1 - 1
Unity/Codes/HotfixView/AppStart_Init.cs

@@ -26,7 +26,7 @@ namespace ET
             Game.Scene.AddComponent<AIDispatcherComponent>();
             await ResourcesComponent.Instance.LoadBundleAsync("unit.unity3d");
             Scene zoneScene = await SceneFactory.CreateZoneScene(1, "Game", Game.Scene);
-            await Game.EventSystem.Publish(new EventType.AppStartInitFinish() { ZoneScene = zoneScene });
+            await Game.EventSystem.PublishAsync(new EventType.AppStartInitFinish() { ZoneScene = zoneScene });
         }
     }
 }

+ 21 - 2
Unity/Codes/Model/Core/Object/EventSystem.cs

@@ -559,10 +559,10 @@ namespace ET
             ObjectHelper.Swap(ref this.lateUpdates, ref this.lateUpdates2);
         }
 
-        public async ETTask Publish<T>(T a) where T : struct
+        public async ETTask PublishAsync<T>(T a) where T : struct
         {
             List<object> iEvents;
-            if (!this.allEvents.TryGetValue(typeof (T), out iEvents))
+            if (!this.allEvents.TryGetValue(typeof(T), out iEvents))
             {
                 return;
             }
@@ -591,6 +591,25 @@ namespace ET
             }
         }
 
+        public void Publish<T>(T a) where T : struct
+        {
+            List<object> iEvents;
+            if (!this.allEvents.TryGetValue(typeof (T), out iEvents))
+            {
+                return;
+            }
+
+            foreach (object obj in iEvents)
+            {
+                if (!(obj is AEvent<T> aEvent))
+                {
+                    Log.Error($"event error: {obj.GetType().Name}");
+                    continue;
+                }
+                aEvent.Handle(a).Coroutine();
+            }
+        }
+
         public override string ToString()
         {
             StringBuilder sb = new StringBuilder();

+ 2 - 2
Unity/Codes/Model/Demo/Unit/Unit.cs

@@ -20,7 +20,7 @@ namespace ET
             {
                 Vector3 oldPos = this.position;
                 this.position = value;
-                Game.EventSystem.Publish(new EventType.ChangePosition() { Unit = this, OldPos = oldPos }).Coroutine();
+                Game.EventSystem.Publish(new EventType.ChangePosition() { Unit = this, OldPos = oldPos });
             }
         }
 
@@ -38,7 +38,7 @@ namespace ET
             set
             {
                 this.rotation = value;
-                Game.EventSystem.Publish(new EventType.ChangeRotation() {Unit = this}).Coroutine();
+                Game.EventSystem.Publish(new EventType.ChangeRotation() {Unit = this});
             }
         }
     }

+ 1 - 1
Unity/Codes/Model/Module/Numeric/NumericComponent.cs

@@ -127,7 +127,7 @@ namespace ET
 				NumericType = (NumericType) final,
 				Old = old,
 				New = result
-			}).Coroutine();
+			});
 		}
 	}
 }

+ 1 - 1
Unity/Codes/ModelView/Demo/Entry.cs

@@ -16,7 +16,7 @@ namespace ET
 				Game.EventSystem.Add(CodeLoader.Instance.GetTypes());
 
 				
-				Game.EventSystem.Publish(new EventType.AppStart()).Coroutine();
+				Game.EventSystem.Publish(new EventType.AppStart());
 			}
 			catch (Exception e)
 			{