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>();
         }
     }
 }
Пример #2
0
        /// <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));
 }