public static StationMonitorCore GetInstance(MyGridProgram program)
 {
     if (_instance == null)
     {
         _instance = new StationMonitorCore(program);
     }
     return(_instance);
 }
            public static void Load(StationMonitorCore sm)
            {
                MonitorBlockBuilder mbb = sm.MBBuilder;

                mbb["AirVent"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyAirVent>(parser)
                    {
                        InfoMaker = (IMyAirVent block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Factory"
                                  } },
                                { "vent", new VentInfo(block) }
                            };
                        }
                    });
                };

                mbb["Door"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyDoor>(parser)
                    {
                        InfoMaker = (IMyDoor block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Factory"
                                  } },
                                { "door", new DoorInfo(block) }
                            };
                        }
                    });
                };

                mbb["Connector"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyShipConnector>(parser)
                    {
                        InfoMaker = (IMyShipConnector block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Factory"
                                  } },
                                { "connector", new ConnectorInfo(block) }
                            };
                        }
                    });
                };
            }
            public static void Load(StationMonitorCore sm)
            {
                MonitorBlockBuilder mbb = sm.MBBuilder;

                mbb["Reactor"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyReactor>(parser)
                    {
                        InfoMaker = (IMyReactor block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") },
                                { "eff", new Efficiency(block, "Efficiency") },
                                { "sto", new Store(block, MyItemType.MakeIngot("Uranium"), "Stored Uranium") }
                            };
                        }
                    });
                };

                mbb["SolarPanel"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMySolarPanel>(parser)
                    {
                        InfoMaker = (IMySolarPanel block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") },
                                { "eff", new Efficiency(block, "Efficiency") }
                            };
                        }
                    });
                };

                mbb["Battery"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyBatteryBlock>(parser)
                    {
                        InfoMaker = (IMyBatteryBlock block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") },
                                { "eff", new Efficiency(block, "Efficiency") },
                                { "in", new Input(block, "Input") },
                                { "cha", new Charge(block, "Charge") }
                            };
                        }
                    });
                };

                mbb["HydrogenEngine"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyPowerProducer>(parser)
                    {
                        SubFilter = (IMyTerminalBlock block) =>
                        {
                            if (!block.BlockDefinition.SubtypeId.Contains("HydrogenEngine"))
                            {
                                return false;
                            }
                            return true;
                        },

                        InfoMaker = (IMyPowerProducer block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") },
                                { "eff", new Efficiency(block, "Efficiency") },
                                { "sto", new Store(block, "Stored Hydrogen") }
                            };
                        }
                    });
                };

                mbb["WindTurbine"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyPowerProducer>(parser)
                    {
                        SubFilter = (IMyTerminalBlock block) =>
                        {
                            if (!block.BlockDefinition.SubtypeId.Contains("WindTurbine"))
                            {
                                return false;
                            }
                            return true;
                        },

                        InfoMaker = (IMyPowerProducer block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") },
                                { "eff", new Efficiency(block, "Efficiency") }
                            };
                        }
                    });
                };

                mbb["PowerProducer"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyPowerProducer>(parser)
                    {
                        InfoMaker = (IMyPowerProducer block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") }
                            };
                        }
                    });
                };

                mbb["PowerGenerator"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyPowerProducer>(parser)
                    {
                        SubFilter = (IMyTerminalBlock block) =>
                        {
                            if (block.BlockDefinition.SubtypeId.Contains("Battery"))
                            {
                                return false;
                            }
                            return true;
                        },

                        InfoMaker = (IMyPowerProducer block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "PowerGen"
                                  } },
                                { "out", new Output(block, "Output") }
                            };
                        }
                    });
                };
            }
            public static void Load(StationMonitorCore sm)
            {
                MonitorBlockBuilder mbb = sm.MBBuilder;

                mbb["Container"] = (MonitorBlockParser parser) => {
                    MonitorOption option;
                    string        targetIngot = null;
                    string        targetOre   = null;
                    string        desc        = "";
                    string        name;

                    if (parser.Options.TryGetValue("ore", out option))
                    {
                        targetOre = option.StrValue;
                        if (OreNameTable.TryGetValue(targetOre, out name))
                        {
                            desc = $"Stored {name}";
                        }
                    }

                    if (parser.Options.TryGetValue("ingot", out option))
                    {
                        targetIngot = option.StrValue;
                        if (IngotNameTable.TryGetValue(targetIngot, out name))
                        {
                            desc = $"Stored {name}";
                        }
                    }

                    return(new MonitorBlock <IMyCargoContainer>(parser)
                    {
                        InfoMaker = (IMyCargoContainer block, int index) =>
                        {
                            Store store = new Store();
                            if ((targetOre == null) && (targetIngot == null))
                            {
                                store = new Store(block, desc);
                            }
                            else if (targetOre != null)
                            {
                                store = new Store(block, MyItemType.MakeOre(targetOre), desc);
                            }
                            else if (targetIngot != null)
                            {
                                store = new Store(block, MyItemType.MakeIngot(targetIngot), desc);
                            }

                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Container"
                                  } },
                                { "sto", store }
                            };
                        }
                    });
                };

                mbb["Inventory"] = (MonitorBlockParser parser) => {
                    MonitorOption option;
                    string        targetIngot = null;
                    string        targetOre   = null;
                    string        desc        = "";
                    string        name;

                    if (parser.Options.TryGetValue("ore", out option))
                    {
                        targetOre = option.StrValue;
                        if (OreNameTable.TryGetValue(targetOre, out name))
                        {
                            desc = $"Stored {name}";
                        }
                    }

                    if (parser.Options.TryGetValue("ingot", out option))
                    {
                        targetIngot = option.StrValue;
                        if (IngotNameTable.TryGetValue(targetIngot, out name))
                        {
                            desc = $"Stored {name}";
                        }
                    }

                    return(new MonitorBlock <IMyTerminalBlock>(parser)
                    {
                        SubFilter = (IMyTerminalBlock block) =>
                        {
                            if (block.InventoryCount == 0)
                            {
                                return false;
                            }
                            return true;
                        },

                        InfoMaker = (IMyTerminalBlock block, int index) =>
                        {
                            Store store = new Store();
                            if ((targetOre == null) && (targetIngot == null))
                            {
                                store = new Store(block, desc);
                            }
                            else if (targetOre != null)
                            {
                                store = new Store(block, MyItemType.MakeOre(targetOre), desc);
                            }
                            else if (targetIngot != null)
                            {
                                store = new Store(block, MyItemType.MakeIngot(targetIngot), desc);
                            }

                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Container"
                                  } },
                                { "sto", store }
                            };
                        }
                    });
                };

                mbb["Refinery"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyRefinery>(parser)
                    {
                        InfoMaker = (IMyRefinery block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Factory"
                                  } },
                                { "instore", new Store(block.InputInventory) },
                                { "outstore", new Store(block.OutputInventory) },
                                { "product", new Production(block) }
                            };
                        }
                    });
                };

                mbb["Assembler"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyAssembler>(parser)
                    {
                        InfoMaker = (IMyAssembler block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "Factory"
                                  } },
                                { "instore", new Store(block.InputInventory) },
                                { "outstore", new Store(block.OutputInventory) },
                                { "product", new Production(block) },
                                { "assemble", new Assembler(block) }
                            };
                        }
                    });
                };
            }
Exemple #5
0
            public static void Load(StationMonitorCore sm)
            {
                MonitorBlockBuilder mbb = sm.MBBuilder;

                mbb["GasGenerator"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyGasGenerator>(parser)
                    {
                        InfoMaker = (IMyGasGenerator block, int index) => {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "GasTank"
                                  } },
                                { "sto", new Store(block, MyItemType.MakeOre("Ice"), "Stored Ice") }
                            };
                        }
                    });
                };

                mbb["OxygenFarm"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyOxygenFarm>(parser)
                    {
                        InfoMaker = (IMyOxygenFarm block, int index) => {
                            var store = new Store("Oxygen Output");
                            // CubeBlocks.sbc <SubtypeId>LargeBlockOxygenFarm</SubtypeId> <MaxOutputPerSecond>0.03</MaxOutputPerSecond>
                            store.Max = 0.03f;  // unit is "L"
                            store.Current = store.Max * block.GetOutput();
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "GasTank"
                                  } },
                                { "sto", store }
                            };
                        }
                    });
                };

                mbb["OxygenTank"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyGasTank>(parser)
                    {
                        SubFilter = (IMyTerminalBlock block) => {
                            if (block.BlockDefinition.SubtypeId.Contains("Hydrogen"))
                            {
                                return false;
                            }
                            return true;
                        },

                        InfoMaker = (IMyGasTank block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "O2Tank"
                                  } },
                                { "sto", new Store(block, "Stored Oxygen") }
                            };
                        }
                    });
                };

                mbb["HydrogenTank"] = (MonitorBlockParser parser) => {
                    return(new MonitorBlock <IMyGasTank>(parser)
                    {
                        SubFilter = (IMyTerminalBlock block) =>
                        {
                            if (!block.BlockDefinition.SubtypeId.Contains("Hydrogen"))
                            {
                                return false;
                            }
                            return true;
                        },

                        InfoMaker = (IMyGasTank block, int index) =>
                        {
                            return new MonitorInfo
                            {
                                { "block", new CommonInfo(block, index)
                                  {
                                      Icon = "H2Tank"
                                  } },
                                { "sto", new Store(block, "Stored Hydrogen") }
                            };
                        }
                    });
                };
            }