开始开发大厅烹饪功能
This commit is contained in:
		
							
								
								
									
										53
									
								
								Content/Lua/Utils/Emitter.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Content/Lua/Utils/Emitter.lua
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| local Emitter = { | ||||
|     EventHandlers = {} | ||||
| } | ||||
|  | ||||
| -- 注册事件监听 | ||||
| function Emitter.OnEvent(eventName, handler) | ||||
|     if not eventName or type(handler) ~= "function" then | ||||
|         print("[EventSystem] Invalid event registration") | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     if not Emitter.EventHandlers[eventName] then | ||||
|         Emitter.EventHandlers[eventName] = {} | ||||
|     end | ||||
|  | ||||
|     table.insert(Emitter.EventHandlers[eventName], handler) | ||||
|     return handler -- 返回handler用于注销 | ||||
| end | ||||
|  | ||||
| -- 触发事件 | ||||
| function Emitter.EmitEvent(eventName, ...) | ||||
|     local handlers = Emitter.EventHandlers[eventName] | ||||
|     if not handlers then return end | ||||
|  | ||||
|     print("[EventSystem] Emitting event: " .. eventName) | ||||
|     for i = #handlers, 1, -1 do -- 倒序遍历允许在回调中移除事件 | ||||
|         local success, err = pcall(handlers[i], ...) | ||||
|         if not success then | ||||
|             print("[EventSystem] Error in handler: " .. tostring(err)) | ||||
|         end | ||||
|     end | ||||
| end | ||||
|  | ||||
| -- 注销事件 | ||||
| function Emitter.OffEvent(eventName, handler) | ||||
|     local handlers = Emitter.EventHandlers[eventName] | ||||
|     if not handlers then return end | ||||
|  | ||||
|     for i = #handlers, 1, -1 do | ||||
|         if handlers[i] == handler then | ||||
|             table.remove(handlers, i) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     if #handlers == 0 then | ||||
|         Emitter.EventHandlers[eventName] = nil | ||||
|     end | ||||
| end | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| return Emitter | ||||
		Reference in New Issue
	
	Block a user