Esempio n. 1
0
        public void Main(string argument, UpdateType updateSource)
        {
            if (!initialized)
            {
                launchScheduler.Main();
                return;
            }

            if ((updateSource & UpdateType.Update100) != 0)
            {
                missiles.FetchMissiles();
                statusWriter.UpdateStatus();
                entityTrackingModule.TimeoutEntities(TimeSpan.FromSeconds(5));
            }

            entityTrackingModule?.Poll();

            statusWriter.Main();
            launchScheduler.Main();
            commsHandler.HandleMain(argument, (updateSource & UpdateType.Antenna) != 0);
        }
Esempio n. 2
0
        public void OnEntityDetected(HaE_Entity entity)
        {
            if (Vector3D.DistanceSquared(entity.entityInfo.Position, control.GetPosition()) > 1000 * 1000)
            {
                return;
            }

            if (IgnoreEventAfterOnce)
            {
                return;
            }

            if (control.GetShipSpeed() < maxActiveRotorGunVel)
            {
                gridCannonTargeting.NewTarget(entity.entityInfo);
            }
            else
            {
                foreach (var cannon in rotorTurretGroups)
                {
                    cannon.TargetDirection(ref Vector3D.Zero);
                }
            }

            statusWriter.UpdateStatus(StatusWriter.TargetingStatus.Targeting);

            missileCannonTargeting.NewTarget(entity.entityInfo);
            basicTargeting.UpdateValues(control.GetVelocityVector(), control.GetPosition(), maxGatlingBulletVel);
            var result = basicTargeting.CalculateTrajectory(entity.entityInfo);

            if (result.HasValue)
            {
                TargetSolvedGatling(result.Value);
            }

            IgnoreEventAfterOnce = true;
        }