void OnLoad() { var eventTypes = loader.Engine.FindTypesCastableTo <EventAction> (); foreach (var type in eventTypes) { var action = Activator.CreateInstance(type) as EventAction; var actionMeta = type.GetCustomAttributes(typeof(EventActionAttribute), false)[0] as EventActionAttribute; action.Meta = actionMeta; List <EventAction> catList = null; var cats = actionsByCategory; if (action.Meta.IsInteraction) { cats = interactionsByCategory; } else { actions.Add(action); } if (!cats.TryGetValue(action.Meta.Category, out catList)) { catList = new List <EventAction>(); cats.Add(action.Meta.Category, catList); } catList.Add(action); } weights = new ActionWeight[actions.Count]; Loaded = true; }
void OnLoad() { var eventTypes = loader.Engine.FindTypesCastableTo <EventAction>(); foreach (var type in eventTypes) { var action = Activator.CreateInstance(type) as EventAction; var actionMeta = type.GetCustomAttributes(typeof(EventActionAttribute), false)[0] as EventActionAttribute; action.Meta = actionMeta; eventActionsByType.Add(type, action); List <EventAction> catList = null; var cats = eventsByCategory; if (action.Meta.IsInteraction) { cats = interactionsByCategory; } else if (action.Meta.IsAIAction) { cats = actionsByCategory; } actions.Add(action); var categories = type.GetInterfaces(); if (categories.Length > 1 && categories.First(x => x == typeof(DialogOption)) != null) { var cat = categories.First(x => x != typeof(DialogOption)); action.Meta.Category = cat.Name; cats = dialogsByCategory; Debug.Log("Add dialog"); } if (categories.Length == 1) { if (categories[0] == typeof(DialogOption)) { cats = dialogsByCategory; } action.Meta.Category = categories[0].Name; } else if (categories.Length == 0) { if (!cats.TryGetValue(typeof(EventAction), out catList)) { catList = new List <EventAction>(); cats.Add(typeof(EventAction), catList); } catList.Add(action); } foreach (var cat in categories) { if (!cats.TryGetValue(cat, out catList)) { catList = new List <EventAction>(); cats.Add(cat, catList); } catList.Add(action); } } weights = new ActionWeight[actions.Count]; Loaded = true; }