view API/EventListeningWarFoundryLoader.cs @ 192:f25cb069f700

Re #350: Add requirement to allow N of unit for specific other units * Add unit tests for having requirements on more than one unit type
author IBBoard <dev@ibboard.co.uk>
date Sat, 03 Dec 2011 16:41:54 +0000
parents 0f144576e5eb
children
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;

		public EventListeningWarFoundryLoader()
		{
			gameSystems = new Dictionary<string, GameSystem>();
			races = new Dictionary<string, Race>();
		}
		
		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();
		}
	}
}