public ModuleRecord(IModuleTypeKnower moduleTypeKnower, int?moduleNumber = null) : this(moduleNumber) { if (moduleTypeKnower != null) { _baseName = moduleTypeKnower.Name; if (moduleTypeKnower.ModuleTypes != null && moduleTypeKnower.ModuleTypes.Contains(ModuleType.Hub)) { _childModules = new List <ModuleRecord>(); } } }
/// <summary> /// Register that a module (of any type) has been added /// </summary> /// <param name="types">List of types that this module should be treated as.</param> /// <returns>boolean indicating if any more can be added</returns> public bool ConfigureAddedModule(IModuleTypeKnower knower, Vector3 usedLocation, int?moduleNumber) { if (knower != null) { foreach (var type in knower.ModuleTypes.Distinct()) { if (ModuleTypeCounts.ContainsKey(type)) { ModuleTypeCounts[type]++; } else { ModuleTypeCounts[type] = 1; } } ModulesAdded++; Cost += knower.ModuleCost; UsedLocations.Add(usedLocation); var nextMR = new ModuleRecord(knower, moduleNumber); _currentModuleRecord.AddModule(nextMR); _previousModuleRecords.Push(_currentModuleRecord); _currentModuleRecord = nextMR; //must be before module is configured, so the cost is updated before more modules are added. Jump(); knower.Configure(this); ModuleFinished(); JumpBack(); } else { NoModuleAddedHere(); } return(CanSpawn()); }
public void AddModule(IModuleTypeKnower module, int?moduleNumber = null) { AddModule(new ModuleRecord(module, moduleNumber)); }