123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System;
- using CommonLang;
- using CommonAIClient.Unity.Utils;
- namespace CommonAIClient.Unity.Battle
- {
- public partial class ComAICell
- {
- private HashMap<Type, Action<CommonAI.Zone.ObjectEvent>> mObjectEvens = new HashMap<Type, Action<CommonAI.Zone.ObjectEvent>>();
- public void DoObjectEvent(CommonAI.Zone.ObjectEvent ev)
- {
- Action<CommonAI.Zone.ObjectEvent> action = null;
- if (mObjectEvens.TryGetValue(ev.GetType(), out action))
- {
- action(ev);
- }
- }
- protected virtual void RegistAllObjectEvent()
- {
- RegistObjectEvent<CommonAI.Zone.UnitEffectEvent>(ObjectEvent_UnitEffectEvent);
- }
- protected void RegistObjectEvent<T>(Action<T> action) where T : CommonAI.Zone.ObjectEvent
- {
- Type type = typeof(T);
- Action<CommonAI.Zone.ObjectEvent> outVal = null;
- if (!mObjectEvens.TryGetValue(type, out outVal))
- {
- mObjectEvens.Add(type, (e) =>
- {
- action((T)e);
- });
- }
- }
- protected virtual void ObjectEvent_UnitEffectEvent(CommonAI.Zone.UnitEffectEvent ev)
- {
- PlayEffect(ev.effect, EffectRoot.Position(), EffectRoot.Rotation());
- }
- }
- }
|