public MovementCostFactory()
        {
            MovementCosts = new List<MovementCost>();
            MovementTypeFactory = new MovementTypeFactory();
            TerrainConditionFactory = new TerrainConditionFactory();
            TerrainTypeFactory = new TerrainTypeFactory();

            Uri uri = new Uri(Constants.MovementCostDataPath, UriKind.Relative);
            XElement applicationXml;
            StreamResourceInfo xmlStream = Application.GetResourceStream(uri);
            applicationXml = XElement.Load(xmlStream.Stream);
            var data = from t in applicationXml.Descendants("MovementCost")
                       select t;

            MovementCost movementCost = null;
            foreach (var d in data)
            {
                movementCost = new MovementCost();
                movementCost.MovementCostId = (Int32)d.Element("MovementCostId");
                movementCost.MovementType = MovementTypeFactory.GetMovementType((Int32)d.Element("MovementTypeId"));
                movementCost.TerrainCondition = TerrainConditionFactory.GetTerrainCondition((Int32)d.Element("TerrainConditionId"));
                movementCost.TerrainType = TerrainTypeFactory.GetTerrainType((Int32)d.Element("TerrainTypeId"));
                movementCost.MovementPoints = (Int32)d.Element("MovementPoints");
                MovementCosts.Add(movementCost);
            }
        }
        public EquipmentFactory()
        {
            Equipments = new List<Equipment>();
            MovementTypeFactory = new MovementTypeFactory();
            EquipmentSubClassFactory = new EquipmentSubClassFactory();
            TargetTypeFactory = new TargetTypeFactory();

            Uri uri = new Uri(Constants.EquipmentDataPath, UriKind.Relative);
            XElement applicationXml;
            StreamResourceInfo xmlStream = Application.GetResourceStream(uri);
            applicationXml = XElement.Load(xmlStream.Stream);
            var data = from e in applicationXml.Descendants("Equipment")
                       select e;

            Equipment equipment = null;
            foreach (var d in data)
            {
                equipment = new Equipment();
                equipment.EquipmentId = (Int32)d.Element("EquipmentId");
                equipment.EquipmentDescription = (String)d.Element("EquipmentDescription");
                equipment.EquipmentSubClass = EquipmentSubClassFactory.GetEquipmentSubClass((Int32)d.Element("EquipmentSubClassId"));
                equipment.ImageXCoordinate = (Int32)d.Element("ImageXCoordinate");
                equipment.ImageYCoordinate = (Int32)d.Element("ImageYCoordinate");
                equipment.StackedImageXCoordinate = (Int32)d.Element("StackedImageXCoordinate");
                equipment.StackedImageYCoordinate = (Int32)d.Element("StackedImageYCoordinate");
                equipment.StartService = new DateTime((Int32)d.Element("Year") + 1900, (Int32)d.Element("Month"), 1);
                equipment.EndService = new DateTime((Int32)d.Element("LastYear") + 1900, (Int32)d.Element("Month"), 1);
                equipment.Nation = Game.NationFactory.GetNation((Int32)d.Element("NationId"));
                equipment.MovementType = this.MovementTypeFactory.GetMovementType((Int32)d.Element("MovementTypeId"));
                equipment.BaseMovement = (Int32)d.Element("Movement");
                equipment.BaseStrength = 10;
                equipment.Initative = (Int32)d.Element("Initiative");
                equipment.UnitCost = (Int32)d.Element("Cost");
                equipment.Spotting = (Int32)d.Element("Spotting");
                equipment.IconId = (Int32)d.Element("Icon");
                equipment.StackedIconId = (Int32)d.Element("StackedIcon");
                equipment.TargetType = this.TargetTypeFactory.GetTargetType((Int32)d.Element("TargetTypeId"));
                equipment.SoftAttack = (Int32)d.Element("SoftAttack");
                equipment.HardAttack = (Int32)d.Element("HardAttack");
                equipment.AirAttack = (Int32)d.Element("AirAttack");
                equipment.NavalAttack = (Int32)d.Element("NavalAttack");
                equipment.GroundDefense = (Int32)d.Element("GroundDefense");
                equipment.AirDefense = (Int32)d.Element("AirDefense");
                equipment.CloseDefense = (Int32)d.Element("CloseDefense");
                equipment.MaxAmmo = (Int32)d.Element("MaxAmmo");
                equipment.MaxFuel = (Int32)d.Element("MaxFuel");
                equipment.Range = (Int32)d.Element("Range");
                equipment.CanBridgeRivers = (Boolean)d.Element("CanBridgeRivers");
                equipment.JetIndicator = (Boolean)d.Element("Jet");
                equipment.IgnoresEntrenchment = (Boolean)d.Element("IgnoresEntrenchment");
                equipment.CanParadrop = (Boolean)d.Element("CanParadrop");
                equipment.CanHaveAirTransport = (Boolean)d.Element("CanHaveAirTransport");
                equipment.CanHaveSeaTransport = (Boolean)d.Element("CanHaveSeaTransport");
                equipment.BomberSpecial = (Int32)d.Element("BomberSpecial");
                equipment.CanHaveOrganicTransport = (Boolean)d.Element("CanHaveOrganicTransport");

                Equipments.Add(equipment);
            }
        }