コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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}");
            }
        }
コード例 #3
0
        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;
            }
        }