public ScenarioUnitFactory()
        {
            ScenarioUnits = new List<ScenarioUnit>();

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

            ScenarioUnit scenarioUnit = null;
            foreach (var d in data)
            {
                scenarioUnit = new ScenarioUnit();
                scenarioUnit.ScenarioUnitId = (Int32)d.Element("ScenarioUnitId");
                scenarioUnit.ScenarioId = (Int32)d.Element("ScenarioId");
                scenarioUnit.StartingScenarioTileId = (Int32)d.Element("StartingScenarioTileId");
                scenarioUnit.EquipmentId = (Int32)d.Element("EquipmentId");
                scenarioUnit.TransportId = (Int32)d.Element("TransportId");
                scenarioUnit.SideId = (Int32)d.Element("SideId");
                scenarioUnit.NationId = (Int32)d.Element("FlagId");
                scenarioUnit.Strength = (Int32)d.Element("Strength");
                scenarioUnit.Experience = (Int32)d.Element("Experience");
                scenarioUnit.Entrenchment = (Int32)d.Element("Entrenchment");
                scenarioUnit.CordInd = !(Boolean)d.Element("AuxiliaryInd");
                ScenarioUnits.Add(scenarioUnit);
            }
        }
        public AirCombatUnit CreateAirCombatUnit(int unitId, ScenarioUnit scenarioUnit)
        {
            AirCombatUnit unit = new AirCombatUnit();
            unit.UnitId = unitId;
            unit.Equipment = EquipmentFactory.GetEquipment(scenarioUnit.EquipmentId);
            unit.UnitName = String.Format("{0} {1}", unitId, unit.Equipment.EquipmentDescription);
            unit.CoreIndicator = scenarioUnit.CordInd;
            unit.CurrentExperience = scenarioUnit.Experience;
            unit.CurrentStrength = scenarioUnit.Strength;
            unit.CurrentAttackPoints = scenarioUnit.Strength;
            unit.Nation = Game.NationFactory.GetNation(scenarioUnit.NationId);
            unit.CoreIndicator = scenarioUnit.CordInd;
            unit.CurrentAmmo = unit.Equipment.MaxAmmo;
            unit.CurrentFuel = unit.Equipment.MaxFuel;
            unit.CanMove = true;
            unit.CanAttack = true;
            unit.CurrentTileId = scenarioUnit.StartingScenarioTileId;

            return unit;
        }
 public IUnit CreateUnit(int unitId, ScenarioUnit scenarioUnit)
 {
     Equipment equipment = EquipmentFactory.GetEquipment(scenarioUnit.EquipmentId);
     switch(equipment.EquipmentGroupEnum)
     {
         case EquipmentGroupEnum.Land:
             if (equipment.MovementType.IsMotorized)
             {
                 MotorizedLandCombatUnit motorizedLandCombatUnit = CreateMotorizedLandCombatUnit(unitId, scenarioUnit);
                 if (scenarioUnit.TransportId != 0)
                 {
                     LandTransportUnit landTransportUnit = CreateLandTransport(unitId, scenarioUnit.TransportId, motorizedLandCombatUnit.Nation, motorizedLandCombatUnit.CoreIndicator,scenarioUnit.StartingScenarioTileId);
                     landTransportUnit.LandCombatUnit = motorizedLandCombatUnit;
                     motorizedLandCombatUnit.TransportUnit = landTransportUnit;
                 }
                 return motorizedLandCombatUnit;
             }
             else
             {
                 LandCombatUnit landCombatUnit = CreateLandCombatUnit(unitId, scenarioUnit);
                 if (scenarioUnit.TransportId != 0)
                 {
                     LandTransportUnit landTransportUnit = CreateLandTransport(unitId, scenarioUnit.TransportId, landCombatUnit.Nation, landCombatUnit.CoreIndicator, scenarioUnit.StartingScenarioTileId);
                     landTransportUnit.LandCombatUnit = landCombatUnit;
                     landCombatUnit.TransportUnit = landTransportUnit;
                 }
                 return landCombatUnit;
             }
         case EquipmentGroupEnum.Air:
             return CreateAirCombatUnit(unitId, scenarioUnit);
         case EquipmentGroupEnum.Sea:
             return CreateSeaCombatUnit(unitId, scenarioUnit);
     }
     return null;
 }
 public IUnit CreateDefaultUnit(int unitId, Int32 equipmentId, Int32 transportEquipmentId, Int32 nationId)
 {
     ScenarioUnit scenarioUnit = new ScenarioUnit();
     scenarioUnit.EquipmentId = equipmentId;
     scenarioUnit.TransportId = transportEquipmentId;
     scenarioUnit.NationId = nationId;
     scenarioUnit.Strength = 10;
     return CreateUnit(unitId, scenarioUnit);
 }