public void CopyDesign(clsDroidDesign DroidTypeToCopy) { TemplateDroidType = DroidTypeToCopy.TemplateDroidType; Body = DroidTypeToCopy.Body; Propulsion = DroidTypeToCopy.Propulsion; TurretCount = DroidTypeToCopy.TurretCount; Turret1 = DroidTypeToCopy.Turret1; Turret2 = DroidTypeToCopy.Turret2; Turret3 = DroidTypeToCopy.Turret3; }
private clsResult Read_FMap_Objects(StreamReader File) { clsResult ReturnResult = new clsResult("Reading objects"); int A = 0; IniReader ObjectsINI = new IniReader(); ReturnResult.Take(ObjectsINI.ReadFile(File)); FMapIniObjects INIObjects = new FMapIniObjects(ObjectsINI.Sections.Count); ReturnResult.Take(ObjectsINI.Translate(INIObjects)); int DroidComponentUnknownCount = 0; int ObjectTypeMissingCount = 0; int ObjectPlayerNumInvalidCount = 0; int ObjectPosInvalidCount = 0; int DesignTypeUnspecifiedCount = 0; int UnknownUnitTypeCount = 0; int MaxUnknownUnitTypeWarningCount = 16; clsDroidDesign DroidDesign = default(clsDroidDesign); clsUnit NewObject = default(clsUnit); clsUnitAdd UnitAdd = new clsUnitAdd(); clsUnitType UnitType = default(clsUnitType); bool IsDesign = default(bool); clsUnitGroup UnitGroup = default(clsUnitGroup); sXY_int ZeroPos = new sXY_int(0, 0); UInt32 AvailableID = 0; UnitAdd.Map = this; AvailableID = 1U; for ( A = 0; A <= INIObjects.ObjectCount - 1; A++ ) { if ( INIObjects.Objects[A].ID >= AvailableID ) { AvailableID = INIObjects.Objects[A].ID + 1U; } } for ( A = 0; A <= INIObjects.ObjectCount - 1; A++ ) { if ( INIObjects.Objects[A].Pos == null ) { ObjectPosInvalidCount++; } else if ( !App.PosIsWithinTileArea(INIObjects.Objects[A].Pos.XY, ZeroPos, Terrain.TileSize) ) { ObjectPosInvalidCount++; } else { UnitType = null; if ( INIObjects.Objects[A].Type != clsUnitType.enumType.Unspecified ) { IsDesign = false; if ( INIObjects.Objects[A].Type == clsUnitType.enumType.PlayerDroid ) { if ( !INIObjects.Objects[A].IsTemplate ) { IsDesign = true; } } if ( IsDesign ) { DroidDesign = new clsDroidDesign(); DroidDesign.TemplateDroidType = INIObjects.Objects[A].TemplateDroidType; if ( DroidDesign.TemplateDroidType == null ) { DroidDesign.TemplateDroidType = App.TemplateDroidType_Droid; DesignTypeUnspecifiedCount++; } if ( INIObjects.Objects[A].BodyCode != "" ) { DroidDesign.Body = App.ObjectData.FindOrCreateBody(Convert.ToString(INIObjects.Objects[A].BodyCode)); if ( DroidDesign.Body.IsUnknown ) { DroidComponentUnknownCount++; } } if ( INIObjects.Objects[A].PropulsionCode != "" ) { DroidDesign.Propulsion = App.ObjectData.FindOrCreatePropulsion(INIObjects.Objects[A].PropulsionCode); if ( DroidDesign.Propulsion.IsUnknown ) { DroidComponentUnknownCount++; } } DroidDesign.TurretCount = (byte)(INIObjects.Objects[A].TurretCount); if ( INIObjects.Objects[A].TurretCodes[0] != "" ) { DroidDesign.Turret1 = App.ObjectData.FindOrCreateTurret(INIObjects.Objects[A].TurretTypes[0], Convert.ToString(INIObjects.Objects[A].TurretCodes[0])); if ( DroidDesign.Turret1.IsUnknown ) { DroidComponentUnknownCount++; } } if ( INIObjects.Objects[A].TurretCodes[1] != "" ) { DroidDesign.Turret2 = App.ObjectData.FindOrCreateTurret(INIObjects.Objects[A].TurretTypes[1], Convert.ToString(INIObjects.Objects[A].TurretCodes[1])); if ( DroidDesign.Turret2.IsUnknown ) { DroidComponentUnknownCount++; } } if ( INIObjects.Objects[A].TurretCodes[2] != "" ) { DroidDesign.Turret3 = App.ObjectData.FindOrCreateTurret(INIObjects.Objects[A].TurretTypes[2], Convert.ToString(INIObjects.Objects[A].TurretCodes[2])); if ( DroidDesign.Turret3.IsUnknown ) { DroidComponentUnknownCount++; } } DroidDesign.UpdateAttachments(); UnitType = DroidDesign; } else { UnitType = App.ObjectData.FindOrCreateUnitType(INIObjects.Objects[A].Code, INIObjects.Objects[A].Type, INIObjects.Objects[A].WallType); if ( UnitType.IsUnknown ) { if ( UnknownUnitTypeCount < MaxUnknownUnitTypeWarningCount ) { ReturnResult.WarningAdd(ControlChars.Quote + INIObjects.Objects[A].Code + Convert.ToString(ControlChars.Quote) + " is not a loaded object."); } UnknownUnitTypeCount++; } } } if ( UnitType == null ) { ObjectTypeMissingCount++; } else { NewObject = new clsUnit(); NewObject.Type = UnitType; NewObject.Pos.Horizontal.X = INIObjects.Objects[A].Pos.X; NewObject.Pos.Horizontal.Y = INIObjects.Objects[A].Pos.Y; NewObject.Health = INIObjects.Objects[A].Health; NewObject.SavePriority = INIObjects.Objects[A].Priority; NewObject.Rotation = (int)(INIObjects.Objects[A].Heading); if ( NewObject.Rotation >= 360 ) { NewObject.Rotation -= 360; } if ( INIObjects.Objects[A].UnitGroup == null || INIObjects.Objects[A].UnitGroup == "" ) { if ( INIObjects.Objects[A].Type != clsUnitType.enumType.Feature ) { ObjectPlayerNumInvalidCount++; } NewObject.UnitGroup = ScavengerUnitGroup; } else { if ( INIObjects.Objects[A].UnitGroup.ToLower() == "scavenger" ) { NewObject.UnitGroup = ScavengerUnitGroup; } else { UInt32 PlayerNum = 0; try { if ( !IOUtil.InvariantParse(INIObjects.Objects[A].UnitGroup, PlayerNum) ) { throw (new Exception()); } if ( PlayerNum < Constants.PlayerCountMax ) { UnitGroup = UnitGroups[Convert.ToInt32(PlayerNum)]; } else { UnitGroup = ScavengerUnitGroup; ObjectPlayerNumInvalidCount++; } } catch ( Exception ) { ObjectPlayerNumInvalidCount++; UnitGroup = ScavengerUnitGroup; } NewObject.UnitGroup = UnitGroup; } } if ( INIObjects.Objects[A].ID == 0U ) { INIObjects.Objects[A].ID = AvailableID; App.ZeroIDWarning(NewObject, INIObjects.Objects[A].ID, ReturnResult); } UnitAdd.NewUnit = NewObject; UnitAdd.ID = INIObjects.Objects[A].ID; UnitAdd.Label = INIObjects.Objects[A].Label; UnitAdd.Perform(); App.ErrorIDChange(INIObjects.Objects[A].ID, NewObject, "Read_FMap_Objects"); if ( AvailableID == INIObjects.Objects[A].ID ) { AvailableID = NewObject.ID + 1U; } } } } if ( UnknownUnitTypeCount > MaxUnknownUnitTypeWarningCount ) { ReturnResult.WarningAdd(UnknownUnitTypeCount + " objects were not in the loaded object data."); } if ( ObjectTypeMissingCount > 0 ) { ReturnResult.WarningAdd(ObjectTypeMissingCount + " objects did not specify a type and were ignored."); } if ( DroidComponentUnknownCount > 0 ) { ReturnResult.WarningAdd(DroidComponentUnknownCount + " components used by droids were loaded as unknowns."); } if ( ObjectPlayerNumInvalidCount > 0 ) { ReturnResult.WarningAdd(ObjectPlayerNumInvalidCount + " objects had an invalid player number and were set to player 0."); } if ( ObjectPosInvalidCount > 0 ) { ReturnResult.WarningAdd(ObjectPosInvalidCount + " objects had a position that was off-map and were ignored."); } if ( DesignTypeUnspecifiedCount > 0 ) { ReturnResult.WarningAdd(DesignTypeUnspecifiedCount + " designed droids did not specify a template droid type and were set to droid."); } return ReturnResult; }
public clsResult CreateWZObjects(sCreateWZObjectsArgs Args) { clsResult ReturnResult = new clsResult("Creating objects"); clsUnit NewUnit = default(clsUnit); UInt32 AvailableID = 0; SimpleClassList<clsWZBJOUnit> BJOUnits = Args.BJOUnits; IniStructures INIStructures = Args.INIStructures; IniDroids INIDroids = Args.INIDroids; IniFeatures INIFeatures = Args.INIFeatures; clsUnitAdd UnitAdd = new clsUnitAdd(); int A = 0; int B = 0; clsWZBJOUnit BJOUnit = default(clsWZBJOUnit); UnitAdd.Map = this; AvailableID = 1U; foreach ( clsWZBJOUnit tempLoopVar_BJOUnit in BJOUnits ) { BJOUnit = tempLoopVar_BJOUnit; if ( BJOUnit.ID >= AvailableID ) { AvailableID = BJOUnit.ID + 1U; } } if ( INIStructures != null ) { for ( A = 0; A <= INIStructures.StructureCount - 1; A++ ) { if ( INIStructures.Structures[A].ID >= AvailableID ) { AvailableID = INIStructures.Structures[A].ID + 1U; } } } if ( INIFeatures != null ) { for ( A = 0; A <= INIFeatures.FeatureCount - 1; A++ ) { if ( INIFeatures.Features[A].ID >= AvailableID ) { AvailableID = INIFeatures.Features[A].ID + 1U; } } } if ( INIDroids != null ) { for ( A = 0; A <= INIDroids.DroidCount - 1; A++ ) { if ( INIDroids.Droids[A].ID >= AvailableID ) { AvailableID = INIDroids.Droids[A].ID + 1U; } } } foreach ( clsWZBJOUnit tempLoopVar_BJOUnit in BJOUnits ) { BJOUnit = tempLoopVar_BJOUnit; NewUnit = new clsUnit(); NewUnit.ID = BJOUnit.ID; NewUnit.Type = App.ObjectData.FindOrCreateUnitType(BJOUnit.Code, BJOUnit.ObjectType, -1); if ( NewUnit.Type == null ) { ReturnResult.ProblemAdd("Unable to create object type."); return ReturnResult; } if ( BJOUnit.Player >= Constants.PlayerCountMax ) { NewUnit.UnitGroup = ScavengerUnitGroup; } else { NewUnit.UnitGroup = UnitGroups[Convert.ToInt32(BJOUnit.Player)]; } NewUnit.Pos = BJOUnit.Pos; NewUnit.Rotation = (int)(Math.Min(BJOUnit.Rotation, 359U)); if ( BJOUnit.ID == 0U ) { BJOUnit.ID = AvailableID; App.ZeroIDWarning(NewUnit, BJOUnit.ID, ReturnResult); } UnitAdd.NewUnit = NewUnit; UnitAdd.ID = BJOUnit.ID; UnitAdd.Perform(); App.ErrorIDChange(BJOUnit.ID, NewUnit, "CreateWZObjects"); if ( AvailableID == BJOUnit.ID ) { AvailableID = NewUnit.ID + 1U; } } clsStructureType StructureType = default(clsStructureType); clsDroidDesign DroidType = default(clsDroidDesign); clsFeatureType FeatureType = default(clsFeatureType); clsDroidDesign.sLoadPartsArgs LoadPartsArgs = new clsDroidDesign.sLoadPartsArgs(); clsUnitType UnitType = null; int ErrorCount = 0; int UnknownDroidComponentCount = 0; int UnknownDroidTypeCount = 0; int DroidBadPositionCount = 0; int StructureBadPositionCount = 0; int StructureBadModulesCount = 0; int FeatureBadPositionCount = 0; int ModuleLimit = 0; sXY_int ZeroPos = new sXY_int(0, 0); clsStructureType ModuleType = default(clsStructureType); clsUnit NewModule = default(clsUnit); clsStructureType FactoryModule = App.ObjectData.FindFirstStructureType(clsStructureType.enumStructureType.FactoryModule); clsStructureType ResearchModule = App.ObjectData.FindFirstStructureType(clsStructureType.enumStructureType.ResearchModule); clsStructureType PowerModule = App.ObjectData.FindFirstStructureType(clsStructureType.enumStructureType.PowerModule); if ( FactoryModule == null ) { ReturnResult.WarningAdd("No factory module loaded."); } if ( ResearchModule == null ) { ReturnResult.WarningAdd("No research module loaded."); } if ( PowerModule == null ) { ReturnResult.WarningAdd("No power module loaded."); } if ( INIStructures != null ) { for ( A = 0; A <= INIStructures.StructureCount - 1; A++ ) { if ( INIStructures.Structures[A].Pos == null ) { StructureBadPositionCount++; } else if ( !App.PosIsWithinTileArea(INIStructures.Structures[A].Pos.WorldPos.Horizontal, ZeroPos, Terrain.TileSize) ) { StructureBadPositionCount++; } else { UnitType = App.ObjectData.FindOrCreateUnitType(Convert.ToString(INIStructures.Structures[A].Code), clsUnitType.enumType.PlayerStructure, INIStructures.Structures[A].WallType); if ( UnitType.Type == clsUnitType.enumType.PlayerStructure ) { StructureType = (clsStructureType)UnitType; } else { StructureType = null; } if ( StructureType == null ) { ErrorCount++; } else { NewUnit = new clsUnit(); NewUnit.Type = StructureType; if ( INIStructures.Structures[A].UnitGroup == null ) { NewUnit.UnitGroup = ScavengerUnitGroup; } else { NewUnit.UnitGroup = INIStructures.Structures[A].UnitGroup; } NewUnit.Pos = INIStructures.Structures[A].Pos.WorldPos; NewUnit.Rotation = Convert.ToInt32(INIStructures.Structures[A].Rotation.Direction * 360.0D / App.INIRotationMax); if ( NewUnit.Rotation == 360 ) { NewUnit.Rotation = 0; } if ( INIStructures.Structures[A].HealthPercent >= 0 ) { NewUnit.Health = MathUtil.Clamp_dbl(INIStructures.Structures[A].HealthPercent / 100.0D, 0.01D, 1.0D); } if ( INIStructures.Structures[A].ID == 0U ) { INIStructures.Structures[A].ID = AvailableID; App.ZeroIDWarning(NewUnit, INIStructures.Structures[A].ID, ReturnResult); } UnitAdd.NewUnit = NewUnit; UnitAdd.ID = INIStructures.Structures[A].ID; UnitAdd.Perform(); App.ErrorIDChange(INIStructures.Structures[A].ID, NewUnit, "Load_WZ->INIStructures"); if ( AvailableID == INIStructures.Structures[A].ID ) { AvailableID = NewUnit.ID + 1U; } //create modules switch ( StructureType.StructureType ) { case clsStructureType.enumStructureType.Factory: ModuleLimit = 2; ModuleType = FactoryModule; break; case clsStructureType.enumStructureType.VTOLFactory: ModuleLimit = 2; ModuleType = FactoryModule; break; case clsStructureType.enumStructureType.PowerGenerator: ModuleLimit = 1; ModuleType = PowerModule; break; case clsStructureType.enumStructureType.Research: ModuleLimit = 1; ModuleType = ResearchModule; break; default: ModuleLimit = 0; ModuleType = null; break; } if ( INIStructures.Structures[A].ModuleCount > ModuleLimit ) { INIStructures.Structures[A].ModuleCount = ModuleLimit; StructureBadModulesCount++; } else if ( INIStructures.Structures[A].ModuleCount < 0 ) { INIStructures.Structures[A].ModuleCount = 0; StructureBadModulesCount++; } if ( ModuleType != null ) { for ( B = 0; B <= INIStructures.Structures[A].ModuleCount - 1; B++ ) { NewModule = new clsUnit(); NewModule.Type = ModuleType; NewModule.UnitGroup = NewUnit.UnitGroup; NewModule.Pos = NewUnit.Pos; NewModule.Rotation = NewUnit.Rotation; UnitAdd.NewUnit = NewModule; UnitAdd.ID = AvailableID; UnitAdd.Perform(); AvailableID = NewModule.ID + 1U; } } } } } if ( StructureBadPositionCount > 0 ) { ReturnResult.WarningAdd(StructureBadPositionCount + " structures had an invalid position and were removed."); } if ( StructureBadModulesCount > 0 ) { ReturnResult.WarningAdd(StructureBadModulesCount + " structures had an invalid number of modules."); } } if ( INIFeatures != null ) { for ( A = 0; A <= INIFeatures.FeatureCount - 1; A++ ) { if ( INIFeatures.Features[A].Pos == null ) { FeatureBadPositionCount++; } else if ( !App.PosIsWithinTileArea(INIFeatures.Features[A].Pos.WorldPos.Horizontal, ZeroPos, Terrain.TileSize) ) { FeatureBadPositionCount++; } else { UnitType = App.ObjectData.FindOrCreateUnitType(Convert.ToString(INIFeatures.Features[A].Code), clsUnitType.enumType.Feature, -1); if ( UnitType.Type == clsUnitType.enumType.Feature ) { FeatureType = (clsFeatureType)UnitType; } else { FeatureType = null; } if ( FeatureType == null ) { ErrorCount++; } else { NewUnit = new clsUnit(); NewUnit.Type = FeatureType; NewUnit.UnitGroup = ScavengerUnitGroup; NewUnit.Pos = INIFeatures.Features[A].Pos.WorldPos; NewUnit.Rotation = Convert.ToInt32(INIFeatures.Features[A].Rotation.Direction * 360.0D / App.INIRotationMax); if ( NewUnit.Rotation == 360 ) { NewUnit.Rotation = 0; } if ( INIFeatures.Features[A].HealthPercent >= 0 ) { NewUnit.Health = MathUtil.Clamp_dbl(INIFeatures.Features[A].HealthPercent / 100.0D, 0.01D, 1.0D); } if ( INIFeatures.Features[A].ID == 0U ) { INIFeatures.Features[A].ID = AvailableID; App.ZeroIDWarning(NewUnit, INIFeatures.Features[A].ID, ReturnResult); } UnitAdd.NewUnit = NewUnit; UnitAdd.ID = INIFeatures.Features[A].ID; UnitAdd.Perform(); App.ErrorIDChange(INIFeatures.Features[A].ID, NewUnit, "Load_WZ->INIFeatures"); if ( AvailableID == INIFeatures.Features[A].ID ) { AvailableID = NewUnit.ID + 1U; } } } } if ( FeatureBadPositionCount > 0 ) { ReturnResult.WarningAdd(FeatureBadPositionCount + " features had an invalid position and were removed."); } } if ( INIDroids != null ) { for ( A = 0; A <= INIDroids.DroidCount - 1; A++ ) { if ( INIDroids.Droids[A].Pos == null ) { DroidBadPositionCount++; } else if ( !App.PosIsWithinTileArea(INIDroids.Droids[A].Pos.WorldPos.Horizontal, ZeroPos, Terrain.TileSize) ) { DroidBadPositionCount++; } else { if ( INIDroids.Droids[A].Template == null || INIDroids.Droids[A].Template == "" ) { DroidType = new clsDroidDesign(); if ( !DroidType.SetDroidType((App.enumDroidType)(INIDroids.Droids[A].DroidType)) ) { UnknownDroidTypeCount++; } LoadPartsArgs.Body = App.ObjectData.FindOrCreateBody(INIDroids.Droids[A].Body); if ( LoadPartsArgs.Body == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Body.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Propulsion = App.ObjectData.FindOrCreatePropulsion(Convert.ToString(INIDroids.Droids[A].Propulsion)); if ( LoadPartsArgs.Propulsion == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Propulsion.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Construct = App.ObjectData.FindOrCreateConstruct(Convert.ToString(INIDroids.Droids[A].Construct)); if ( LoadPartsArgs.Construct == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Construct.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Repair = App.ObjectData.FindOrCreateRepair(INIDroids.Droids[A].Repair); if ( LoadPartsArgs.Repair == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Repair.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Sensor = App.ObjectData.FindOrCreateSensor(INIDroids.Droids[A].Sensor); if ( LoadPartsArgs.Sensor == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Sensor.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Brain = App.ObjectData.FindOrCreateBrain(INIDroids.Droids[A].Brain); if ( LoadPartsArgs.Brain == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Brain.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.ECM = App.ObjectData.FindOrCreateECM(Convert.ToString(INIDroids.Droids[A].ECM)); if ( LoadPartsArgs.ECM == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.ECM.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Weapon1 = App.ObjectData.FindOrCreateWeapon(Convert.ToString(INIDroids.Droids[A].Weapons[0])); if ( LoadPartsArgs.Weapon1 == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Weapon1.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Weapon2 = App.ObjectData.FindOrCreateWeapon(Convert.ToString(INIDroids.Droids[A].Weapons[1])); if ( LoadPartsArgs.Weapon2 == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Weapon2.IsUnknown ) { UnknownDroidComponentCount++; } } LoadPartsArgs.Weapon3 = App.ObjectData.FindOrCreateWeapon(Convert.ToString(INIDroids.Droids[A].Weapons[2])); if ( LoadPartsArgs.Weapon3 == null ) { UnknownDroidComponentCount++; } else { if ( LoadPartsArgs.Weapon3.IsUnknown ) { UnknownDroidComponentCount++; } } DroidType.LoadParts(LoadPartsArgs); } else { UnitType = App.ObjectData.FindOrCreateUnitType(INIDroids.Droids[A].Template, clsUnitType.enumType.PlayerDroid, -1); if ( UnitType == null ) { DroidType = null; } else { if ( UnitType.Type == clsUnitType.enumType.PlayerDroid ) { DroidType = (clsDroidDesign)UnitType; } else { DroidType = null; } } } if ( DroidType == null ) { ErrorCount++; } else { NewUnit = new clsUnit(); NewUnit.Type = DroidType; if ( INIDroids.Droids[A].UnitGroup == null ) { NewUnit.UnitGroup = ScavengerUnitGroup; } else { NewUnit.UnitGroup = INIDroids.Droids[A].UnitGroup; } NewUnit.Pos = INIDroids.Droids[A].Pos.WorldPos; NewUnit.Rotation = Convert.ToInt32(INIDroids.Droids[A].Rotation.Direction * 360.0D / App.INIRotationMax); if ( NewUnit.Rotation == 360 ) { NewUnit.Rotation = 0; } if ( INIDroids.Droids[A].HealthPercent >= 0 ) { NewUnit.Health = MathUtil.Clamp_dbl(INIDroids.Droids[A].HealthPercent / 100.0D, 0.01D, 1.0D); } if ( INIDroids.Droids[A].ID == 0U ) { INIDroids.Droids[A].ID = AvailableID; App.ZeroIDWarning(NewUnit, INIDroids.Droids[A].ID, ReturnResult); } UnitAdd.NewUnit = NewUnit; UnitAdd.ID = INIDroids.Droids[A].ID; UnitAdd.Perform(); App.ErrorIDChange(INIDroids.Droids[A].ID, NewUnit, "Load_WZ->INIDroids"); if ( AvailableID == INIDroids.Droids[A].ID ) { AvailableID = NewUnit.ID + 1U; } } } } if ( DroidBadPositionCount > 0 ) { ReturnResult.WarningAdd(DroidBadPositionCount + " droids had an invalid position and were removed."); } if ( UnknownDroidTypeCount > 0 ) { ReturnResult.WarningAdd(UnknownDroidTypeCount + " droid designs had an unrecognised droidType and were removed."); } if ( UnknownDroidComponentCount > 0 ) { ReturnResult.WarningAdd(UnknownDroidComponentCount + " droid designs had components that are not loaded."); } } if ( ErrorCount > 0 ) { ReturnResult.WarningAdd("Object Create Error."); } return ReturnResult; }