Exemple #1
0
            public override void prepareRendering(Display display)
            {
                base.prepareRendering(display);

                RenderDataBattery    renderData = RenderData as RenderDataBattery;
                DataCollectorBattery dcBattery  = DataCollector as DataCollectorBattery;

                if (dcBattery == null)
                {
                    renderData.Batteries = new List <IMyBatteryBlock>();
                    return;
                }

                renderData.Batteries = dcBattery.Batteries;
                //renderData.renderSize = SizeType == ValueType.Relative ? Size * display.RenderArea.Size : Size;
                //renderData.renderPosition = PositionType == ValueType.Relative ? Position * display.RenderArea.Size : Position;

                // calculate rows and cols size
                Vector2 batterySize = batterySize_ + margin_;

                // full automatic
                if (rows_ <= 0 && cols_ <= 0)
                {
                    for (int curCols = renderData.Batteries.Count; curCols > 0; curCols--)
                    {
                        // padding == 2pixel
                        int     curRows  = (int)Math.Ceiling((double)renderData.Batteries.Count / curCols);
                        Vector2 curSize  = new Vector2(renderData.InnerSize.X / curCols, renderData.InnerSize.Y / curRows);
                        float   curScale = Math.Min(curSize.X / batterySize.X, curSize.Y / batterySize.Y);

                        if (curScale < renderData.Scale)
                        {
                            break;
                        }

                        renderData.Scale = curScale;
                        renderData.Size  = curSize;
                        renderData.Rows  = curRows;
                        renderData.Cols  = curCols;
                    }
                }
                else
                {
                    // calculate rows
                    if (rows_ <= 0)
                    {
                        renderData.Rows = (int)Math.Ceiling((double)renderData.Batteries.Count / cols_);
                    }
                    // calculate cols
                    else if (cols_ <= 0)
                    {
                        renderData.Cols = (int)Math.Ceiling((double)renderData.Batteries.Count / rows_);
                    }

                    renderData.Size  = new Vector2(renderData.InnerSize.X / renderData.Cols, renderData.InnerSize.Y / renderData.Rows);
                    renderData.Scale = Math.Min(renderData.Size.X / batterySize.X, renderData.Size.Y / batterySize.Y);
                }
            }
            IDataCollector createDataCollector(string name, Configuration.Options options, string connector)
            {
                IDataCollector dataCollector = null;

                switch (name)
                {
                case "hydrogen":
                    dataCollector = new DataCollectorGasTank("hydrogentank", "Hydrogen", options, connector);
                    break;

                case "oxygen":
                    dataCollector = new DataCollectorGasTank("oxygentank", "Oxygen", options, connector);
                    break;

                case "inventory":
                    dataCollector = new DataCollectorInventory(options, "", connector);
                    break;

                case "cargo":
                    dataCollector = new DataCollectorInventory(options, $"{Default.MyObjectBuilder}_CargoContainer", connector);
                    break;

                case "battery":
                    dataCollector = new DataCollectorBattery(options, connector);
                    break;

                case "solar":
                    dataCollector = new DataCollectorPowerProducer <IMySolarPanel>("solar", "", options, connector);
                    break;

                case "windturbine":
                    dataCollector = new DataCollectorPowerProducer <IMyPowerProducer>("windturbine", $"{Default.MyObjectBuilder}_WindTurbine", options, connector);
                    break;

                case "reactor":
                    dataCollector = new DataCollectorReactor(options, connector);
                    break;

                case "generator":
                    dataCollector = new DataCollectorGenerator(options, connector);
                    break;

                case "powerproducer":
                    dataCollector = new DataCollectorPowerProducer <IMyPowerProducer>("powerproducer", "", options, connector);
                    break;

                case "airvent":
                    dataCollector = new DataCollectorAirVent(options, connector);
                    break;

                case "jumpdrive":
                    dataCollector = new DataCollectorJumpDrive(options, connector);
                    break;

                case "landinggear":
                    dataCollector = new DataCollectorLandingGear(options, connector);
                    break;

                case "connector":
                    dataCollector = new DataCollectorConnector(options, connector);
                    break;

                case "shipcontroller":
                    dataCollector = new DataCollectorShipController(options, connector);
                    break;

                case "production":
                    dataCollector = new DataCollectorProduction <IMyProductionBlock>("production", "", Unit.None, options, connector);
                    break;

                case "refinery":
                    dataCollector = new DataCollectorProduction <IMyRefinery>("refinery", "", Unit.Gram, options, connector);
                    break;

                case "assembler":
                    dataCollector = new DataCollectorProduction <IMyAssembler>("assembler", "", Unit.None, options, connector);
                    break;

                case "piston":
                    dataCollector = new DataCollectorPiston(options, connector);
                    break;

                case "thruster":
                    dataCollector = new DataCollectorThruster(options, connector);
                    break;

                case "onoff":
                    dataCollector = new DataCollectorProperty("OnOff", "", options, connector);
                    break;

                case "property":
                    dataCollector = new DataCollectorProperty("property", "", options, connector);
                    break;
                }

                if (dataCollector != null)
                {
                    Created++;
                    Manager.JobManager.queueJob((dataCollector as VISObject).getConstructionJob());
                    dataCollectors_.Add(dataCollector);
                    return(dataCollector);
                }
                else
                {
                    log(Console.LogType.Error, $"Invalid data collector name {name}");
                }

                return(null);
            }
 public Charging(DataCollectorBattery dc_)
 {
     collector_ = dc_;
 }
 public InOut(DataCollectorBattery collector)
 {
     dc_ = collector;
 }
 public Capacity(DataCollectorBattery collector)
 {
     dc_ = collector;
 }