Mercurial > repos > IBDev-IBBoard.WarFoundry.API
diff api/WarFoundryLoader.cs @ 144:721891008b5c
Fixes #22: Add functionality to get failed file loads and reason
* Add event for file load start and end - end event has list of failures as parameter
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 21 Sep 2009 18:58:50 +0000 |
parents | 32b774f24017 |
children | c931684f9024 |
line wrap: on
line diff
--- a/api/WarFoundryLoader.cs Sat Sep 19 19:42:53 2009 +0000 +++ b/api/WarFoundryLoader.cs Mon Sep 21 18:58:50 2009 +0000 @@ -40,8 +40,11 @@ private Dictionary<string, GameSystem> systemsTable; private Dictionary<string, Dictionary<string, Dictionary<string, Race>>> racesTable; //Keys are: System, Race, SubRace private Dictionary<IWarFoundryFactory, SimpleSet<IWarFoundryObject>> loadedObjects; + public delegate void FileLoadingCompleteDelegate(List<FileLoadFailure> failures); + public event MethodInvoker FileLoadingStarted; + public event FileLoadingCompleteDelegate FileLoadingFinished; - protected WarFoundryLoader() + private WarFoundryLoader() { directories = new List<DirectoryInfo>(); factories = new List<INativeWarFoundryFactory>(); @@ -148,12 +151,18 @@ List<FileLoadFailure> failedLoads = FillLoadableFiles(loadableRaces, loadableGameSystems); failedLoads.AddRange(LoadGameSystems(loadableGameSystems)); failedLoads.AddRange(LoadRaces(loadableRaces)); - - LogNotifier.Debug(GetType(), failedLoads.Count + " failed file loads"); - + OnFileLoadingFinished(failedLoads); return failedLoads; } + private void OnFileLoadingFinished(List<FileLoadFailure> failures) + { + if (FileLoadingFinished!=null) + { + FileLoadingFinished(failures); + } + } + protected void PrepareForFileLoad() { //Just set up blank dictionaries for now - may try different and more complex handling in future