view API/EventListeningWarFoundryLoader.cs @ 96:3c2c108a2f08

Re #253: Allow multiple data files in a single zip * Fix unit tests by unsubscribing at end of test no-open-ticket
author IBBoard <dev@ibboard.co.uk>
date Sat, 05 Mar 2011 19:53:25 +0000
parents 5d19fee8e9dc
children 0f144576e5eb
line wrap: on
line source

using System;
using IBBoard.WarFoundry.API.Factories;
using System.Collections.Generic;
using IBBoard.WarFoundry.API.Objects;

namespace IBBoard.WarFoundry.API
{
	public class EventListeningWarFoundryLoader : AbstractWarFoundryLoader
	{
		private IDictionary<string, GameSystem> gameSystems;
		private IDictionary<string, Race> races;
		private IDictionary<string, Army> armies;

		public EventListeningWarFoundryLoader()
		{
			gameSystems = new Dictionary<string, GameSystem>();
			races = new Dictionary<string, Race>();
			armies = new Dictionary<string, Army>();
		}
		
		public override void RegisterFactory (INativeWarFoundryFactory factory)
		{
			base.RegisterFactory (factory);
			factory.GameSystemLoaded+= DoStoreGameSystem;
			factory.RaceLoaded+= DoStoreRace;
		}
		
		public override void UnregisterFactory (INativeWarFoundryFactory factory)
		{
			base.UnregisterFactory(factory);
			factory.GameSystemLoaded-= DoStoreGameSystem;
			factory.RaceLoaded-= DoStoreRace;
		}
		
		protected override GameSystem GetExistingSystemForSystem (GameSystem system)
		{
			throw new System.NotImplementedException();
		}
		
		
		protected override void DoStoreGameSystem (GameSystem system)
		{
			gameSystems.Add(system.ID, system);
		}
		
		
		protected override void DoStoreRace (Race race)
		{
			races.Add(race.GameSystem.ID + race.ID, race);
		}
		
		
		public override GameSystem[] GetGameSystems ()
		{
			throw new System.NotImplementedException();
		}
		
		
		public override GameSystem GetGameSystem (string systemID)
		{
			return DictionaryUtils.GetValue(gameSystems, systemID);
		}
		
		
		protected override void RemoveGameSystem (GameSystem system)
		{
			throw new System.NotImplementedException();
		}
		
		
		public override Race[] GetRaces (GameSystem system)
		{
			throw new System.NotImplementedException();
		}
		
		
		public override Race GetRace (GameSystem system, string raceID)
		{
			return GetRace(system, raceID, "");
		}
		
		
		public override Race GetRace (GameSystem system, string raceID, string raceSubID)
		{
			return DictionaryUtils.GetValue(races, raceID);
		}
		
		
		protected override void RemoveRace (Race race)
		{
			throw new System.NotImplementedException();
		}
	}
}