public LifeEventWatcher(BotConstruction_Containers containers) { List <ContainerTracker> standardContainers = new List <ContainerTracker>(); //TODO: Add more if (containers.PlasmaGroup != null) { standardContainers.Add(new ContainerTracker(containers.PlasmaGroup, null, LifeEventType.LostPlasma)); } _standardContainers = standardContainers.ToArray(); _cargoBay = containers.CargoBayGroup; if (_cargoBay != null) { _prevCargo = _cargoBay.CargoVolume.Item1; } }
public static PartBase InstantiateUnknownPart_Standard(ShipPartDNA dna, ShipCoreArgs core, ShipExtraArgs extra, BotConstruction_Containers containers, object[] botObjects) { ItemOptionsArco itemOptions = (ItemOptionsArco)extra.ItemOptions; var constructProps = botObjects?.FirstOrDefault(o => o is ArcBot2_ConstructionProps) as ArcBot2_ConstructionProps; if (constructProps == null) { throw new ApplicationException("ArcBot2_ConstructionProps needs to be given to the bot constructor in the botObjects param"); } double botRadius = itemOptions.RadiusAtLevel[constructProps.Level]; switch (dna.PartType) { case MotionController2.PARTTYPE: //if (MotionController.Count > 0) //{ // throw new ApplicationException("There can be only one plate writer in a bot"); //} AIMousePlate mousePlate = new AIMousePlate(constructProps.DragPlane); mousePlate.MaxXY = botRadius * 20; mousePlate.Scale = 1; return(new MotionController2(extra.Options, itemOptions, dna, mousePlate)); case SensorVision.PARTTYPE: if (dna is SensorVisionDNA sensorVisionDNA) { return(new SensorVision(extra.Options, itemOptions, (SensorVisionDNA)dna, core.Map)); } else { throw new ApplicationException($"SensorVision requires SensorVisionDNA: {dna.GetType()}"); } default: throw new ApplicationException($"Unknown PartType: {dna.PartType}"); } }
public LifeEventWatcher(BotConstruction_Containers containers) { List<ContainerTracker> standardContainers = new List<ContainerTracker>(); //TODO: Add more if (containers.PlasmaGroup != null) { standardContainers.Add(new ContainerTracker(containers.PlasmaGroup, null, LifeEventType.LostPlasma)); } _standardContainers = standardContainers.ToArray(); _cargoBay = containers.CargoBayGroup; if (_cargoBay != null) { _prevCargo = _cargoBay.CargoVolume.Item1; } }