public bool TryGetValue <T>(out DataModuleEvent <T> returnValue) where T : DataModule <T> { object moduleEvent; if (internalDict.TryGetValue(typeof(T).TypeHandle, out moduleEvent)) { returnValue = (DataModuleEvent <T>)moduleEvent; return(true); } returnValue = null; return(false); }
//TODO: add proper load functionality to this, so it loads the module rather than re-initializing it. public T Load <T>(string module, CoreAI core, DataModuleEvent <T> mEvent = null, bool usePresetEvent = true, bool usePresetData = true) where T : DataModule <T>, new() { DataModule <T> .Preset preset; if (DataModule <T> .DataPreset.TryGetValue(module, out preset)) { T newInstance = (usePresetData) ? (T)preset.Data.MemberwiseClone() : new T(); if (usePresetEvent) { preset.OnLoad(core, newInstance); } if (mEvent != null) { mEvent(core, newInstance); } return(newInstance); } return(new T()); }