Exemple #1
0
            internal Refinery(IMyRefinery imr, RefineryType type)
            {
                refinery = imr;
                refinery.UseConveyorSystem = false;
                this.type = type;

                switch (type)
                {
                case RefineryType.NORMAL:
                    validOres.Add("iron");
                    validOres.Add("nickel");
                    validOres.Add("silicon");
                    validOres.Add("cobalt");
                    validOres.Add("silver");
                    validOres.Add("gold");
                    validOres.Add("uranium");
                    validOres.Add("platinum");
                    validOres.Add("magnesium");
                    validOres.Add("stone");
                    validOres.Add("scrap");
                    break;

                case RefineryType.BASIC:
                    validOres.Add("iron");
                    validOres.Add("nickel");
                    validOres.Add("silicon");
                    validOres.Add("cobalt");
                    validOres.Add("stone");
                    validOres.Add("scrap");
                    break;

                case RefineryType.BLAST:
                    validOres.Add("iron");
                    validOres.Add("nickel");
                    validOres.Add("silicon");
                    validOres.Add("cobalt");
                    validOres.Add("scrap");
                    break;

                case RefineryType.STONE:
                    validOres.Add("stone");
                    break;

                case RefineryType.URANIUM:
                    validOres.Add("uranium");
                    break;

                case RefineryType.PLATINUM:
                    validOres.Add("platinum");
                    break;
                }
            }
 protected override void Awake()
 {
     if (singleton)
     {
         Debug.LogError("Multiple of this type");
     }
     singleton       = this;
     resourceTypeIn  = new ResourceTypes[] { ResourceTypes.Power, ResourceTypes.People };
     resourceTypeOut = new ResourceTypes[] {  };
     name            = "Refinery";
     base.Awake();
     resourceInTypeMaxes[(int)resourceTypeIn[0]] = 200;
     resourceInTypeMaxes[(int)resourceTypeIn[1]] = 90;
     resourceTypeMaxesIncreasePerLevel[(int)resourceTypeIn[0]] = 30;
     resourceTypeMaxesIncreasePerLevel[(int)resourceTypeIn[1]] = 15;
 }
Exemple #3
0
        public Program()
        {
            Runtime.UpdateFrequency = UpdateFrequency.Update10;
            GridTerminalSystem.GetBlocksOfType <IMyCargoContainer>(cargo, b => b.CubeGrid == Me.CubeGrid || isSharedGrid(b.CubeGrid.DisplayName));
            cargo.Sort(cargoBoxSortOrder);
            GridTerminalSystem.GetBlocksOfType <IMyGasGenerator>(oxyGenerators, b => (b.CubeGrid == Me.CubeGrid || isSharedGrid(b.CubeGrid.DisplayName)) && (b.BlockDefinition.SubtypeName.Length == 0 || b.BlockDefinition.SubtypeName.ToLowerInvariant().Contains("oxygen")));
            GridTerminalSystem.GetBlocksOfType <IMyAssembler>(assemblers, b => b.CubeGrid == Me.CubeGrid || isSharedGrid(b.CubeGrid.DisplayName));
            GridTerminalSystem.GetBlocksOfType <IMyTextPanel>(displays, b => (b.CubeGrid == Me.CubeGrid || isSharedGrid(b.CubeGrid.DisplayName)) && b.CustomName.Contains(DISPLAY_TAG));
            GridTerminalSystem.GetBlocksOfType <IMyReactor>(reactors, b => (b.CubeGrid == Me.CubeGrid || isSharedGrid(b.CubeGrid.DisplayName)) && b.BlockDefinition.SubtypeName.ToLowerInvariant().Contains("reactor"));
            GridTerminalSystem.GetBlocksOfType <IMyShipConnector>(connectors, b => b.CubeGrid == Me.CubeGrid || isSharedGrid(b.CubeGrid.DisplayName));

            IMyBlockGroup grp = GridTerminalSystem.GetBlockGroupWithName(EJECTION_GROUP);

            if (grp != null)
            {
                grp.GetBlocksOfType <IMyShipConnector>(ejectors);
                foreach (IMyShipConnector conn in ejectors)
                {
                    conn.CollectAll = false;
                    //conn.ThrowOut = true;
                    //conn.SetUseConveyorSystem(false);
                }
            }

            for (int i = 0; i < NO_PROCESS.Length; i++)
            {
                NO_PROCESS[i] = NO_PROCESS[i].ToLowerInvariant();
            }

            List <IMyRefinery> li = new List <IMyRefinery>();

            GridTerminalSystem.GetBlocksOfType <IMyRefinery>(li, b => b.CubeGrid == Me.CubeGrid && isActualProcessingRefinery(b.BlockDefinition.SubtypeName.ToLowerInvariant()));
            foreach (IMyRefinery b in li)
            {
                string       id   = b.BlockDefinition.SubtypeName.ToLowerInvariant().Replace(" ", "");
                RefineryType type = RefineryType.NORMAL;
                if (id.Contains("uranium"))
                {
                    type = RefineryType.URANIUM;
                }
                else if (id.Contains("stone") /* && id.Contains("crusher")*/)
                {
                    type = RefineryType.STONE;
                }
                else if ((id.Contains("blast") && id.Contains("furnace")) || id.Contains("arcfurnace"))
                {
                    type = RefineryType.BLAST;
                }
                else if (id.Contains("platinum"))
                {
                    type = RefineryType.PLATINUM;
                }
                else if (id.Contains("basic"))
                {
                    type = RefineryType.BASIC;
                }
                Echo("Registered refinery " + b.CustomName + " as " + type + " from " + id);
                registerRefinery(new Refinery(b, type));
            }

            foreach (string s in EJECT_OVERFULL_ITEMS)
            {
                ejectionWatchers.Add(new ItemProfile(s));
            }

            for (int i = 0; i < ORE_PRIORITY.Length; i++)
            {
                string      s     = ORE_PRIORITY[i];
                string[]    parts = s.Split('/');
                ItemProfile ingot = new ItemProfile("Ingot", parts[0]);
                ItemProfile ore   = new ItemProfile("Ore", parts[0]);
                int         amt   = Int32.Parse(parts[1]);
                orePriorityValues[ore.itemSubType] = new OrePriorityCheck(i, ore, ingot, amt);
            }
        }