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; }
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); } }