73 lines
3.1 KiB
C#
Raw Normal View History

2025-11-18 19:22:47 +08:00
// using System;
// using System.Collections.Generic;
// using UnityEngine;
//
// public class EventSvcHandler
// {
// private bool GetNeedDebugLog() => CombatScenarioEventOS.Instance.GetNeedDebugLog();
// private readonly Dictionary<EVENT_ENUM, Delegate> actionBroadcast = new(); // 广播事件地址
//
// // ================================
// // 1. 定义事件类型
// // ================================
// private readonly Dictionary<EVENT_ENUM, Type> actionBindMap = new() // 事件类型类型绑定
// {
// // ========== 系统事件 ==========
// { EVENT_ENUM.EVENT_LET_OS_DEAL_CARD, typeof(EVENT_STRUCT.STRUCT_EVENT_OS_DEAL_CARD) }, // 系统发牌事件
//
// // ========== 卡牌事件 ==========
// { EVENT_ENUM.EVENT_LET_CARD_DRAW_CARD, typeof(EVENT_STRUCT.STRUCT_EVENT_CARD_DRAW_CARD) } // 卡牌抽牌事件
// };
//
// private bool GET_DEFINE_EVENT(EVENT_ENUM eventName, Type t, string msg)
// {
// if (!actionBindMap.TryGetValue(eventName, out var value))
// {
// Debug.LogError($"{msg}: 未绑定的数据类型[{eventName}]");
// return false;
// }
//
// if (value == t) return true;
// Debug.LogError($"{msg}: 未响应的数据类型[{eventName}]");
// return false;
// }
//
// // ================================
// // 2. 注册回调,强类型检查
// // ================================
// public void EVENT_REGISTER<T>(EVENT_ENUM eventName, Action<T> callback)
// {
// if (!GET_DEFINE_EVENT(eventName, typeof(T), "注册事件失败")) return;
// actionBroadcast.TryAdd(eventName, null);
// actionBroadcast[eventName] = (Action<T>)actionBroadcast[eventName] + callback;
// if (GetNeedDebugLog()) Debug.Log($"注册事件成功: [{eventName}]");
// }
//
// // ================================
// // 3. 注销回调
// // ================================
// public void EVENT_UNREGISTER<T>(EVENT_ENUM eventName, Action<T> callback)
// {
// if (!GET_DEFINE_EVENT(eventName, typeof(T), "注销事件失败")) return;
// actionBroadcast[eventName] = (Action<T>)actionBroadcast[eventName] - callback;
// if (actionBroadcast[eventName] == null) actionBroadcast.Remove(eventName);
// if (GetNeedDebugLog()) Debug.Log($"注销事件成功: [{eventName}]");
// }
//
// // ================================
// // 4. 触发事件, 强类型检查
// // ================================
// public void EVENT_DISPATCH<T>(EVENT_ENUM eventName, T param)
// {
// if (!GET_DEFINE_EVENT(eventName, typeof(T), "触发事件失败")) return;
// if (actionBroadcast.TryGetValue(eventName, out var action))
// {
// (action as Action<T>)?.Invoke(param);
// if (GetNeedDebugLog()) Debug.Log($"触发广播事件: [{eventName}]");
// }
// else
// {
// Debug.LogWarning($"触发广播事件错误: 未找到事件[{eventName}]");
// }
// }
// }