private void CycleReticleState()
    {
        switch (ShowReticles)
        {
        case ReticleState.NONE:
            ShowReticles = ReticleState.ALL;
            _tags        = new List <string>();
            _tags.AddRange(MainTags);
            _tags.AddRange(SecondaryTags);
            _detector = new ChildTagTargetDetector
            {
                Tags = _tags
            };
            break;

        case ReticleState.ALL:
            ShowReticles = ReticleState.MAIN;
            _tags        = MainTags;
            _detector    = new ChildTagTargetDetector
            {
                Tags = _tags
            };
            break;

        case ReticleState.MAIN:
            ShowReticles = ReticleState.NONE;
            break;
        }
        Debug.Log(ShowReticles);
    }
Example #2
0
        private void CycleReticleState()
        {
            switch (ShowReticles)
            {
            case ReticleState.NONE:
                ShowReticles = ReticleState.ALL;
                _detector    = new ChildTagTargetDetector
                {
                    Tags = Tags
                };
                break;

            case ReticleState.ALL:
                ShowReticles = ReticleState.MAIN;
                _detector    = new ChildTagTargetDetector
                {
                    Tags = Tags
                };
                break;

            case ReticleState.MAIN:
                ShowReticles = ReticleState.NONE;
                break;
            }
            Debug.Log(ShowReticles);
        }
Example #3
0
 public SpaceshipRunner(ITargetDetector detector, ITargetPicker picker, IPilot pilot, IKnowsCurrentTarget knower)
 {
     _detector = detector;
     _picker   = picker;
     _pilot    = pilot;
     _knower   = knower;
 }
 public TurretRunner(ITargetDetector targetDetector, ITargetPicker targetPicker, ITurretTurner turretTurner, IFireControl fireControl, IKnowsCurrentTarget knower)
 {
     _targetDetector = targetDetector;
     _targetPicker   = targetPicker;
     _turretTurner   = turretTurner;
     _fireControl    = fireControl;
     _knower         = knower;
 }
Example #5
0
 public RocketRunner(ITargetDetector targetDetector, ITargetPicker targetPicker, IPilot engineControl, IDetonator detonator, IKnowsCurrentTarget knower)
 {
     _targetDetector = targetDetector;
     _targetPicker   = targetPicker;
     _pilot          = engineControl;
     _detonator      = detonator;
     _knower         = knower;
 }
Example #6
0
 void Start()
 {
     _detector = new ChildTagTargetDetector
     {
         Tags = Tags
     };
     _shipCam = GetComponent <ShipCam>();
 }
    // Use this for initialization
    void Start()
    {
        var rigidbody    = GetComponent <Rigidbody>();
        var emitterCount = EmitterParent.childCount;

        _emitters = new List <Transform>();
        for (int i = 0; i < emitterCount; i++)
        {
            _emitters.Add(EmitterParent.GetChild(i));
        }

        _reload = LoadTime;

        _detector = new MultiTagTargetDetector()
        {
            ProjectileSpeed = ProjectileSpeed,
            EnemyTags       = EnemyTags
        };

        var pickers = new List <ITargetPicker>
        {
            new AboveTurnTableTargetPicker(rigidbody),
            new ProximityTargetPicker(rigidbody)
            {
                DistanceMultiplier = PickerDistanceMultiplier,
                InRangeBonus       = PickerInRangeBonus,
                Range = PickerRange
            },
            new LookingAtTargetPicker(ElevationHub)
            {
                ProjectileSpeed = ProjectileSpeed,
                Multiplier      = PickerAimedAtMultiplier
            },
            new ApproachingTargetPicker(rigidbody, PickerApproachWeighting)
        };

        if (PickerMinimumMass > 0 || PickerMasMultiplier != 0)
        {
            pickers.Add(new MassTargetPicker
            {
                MinMass          = PickerMinimumMass,
                MassMultiplier   = PickerMasMultiplier,
                OverMinMassBonus = PickerOverMinMassBonus
            });
        }

        _targetPicker = new CombinedTargetPicker(pickers);

        _turner = new UnityTurretTurner(rigidbody, TurnTable, ElevationHub, RestTarget, ProjectileSpeed);

        _fireControl = new UnityFireControl(this, ElevationHub.transform, ShootAngle);

        _runner = new TurretRunner(_detector, _targetPicker, _turner, _fireControl, this)
        {
            name = transform.name
        };
    }
    // Use this for initialization
    void Start()
    {
        _rigidbody = GetComponent("Rigidbody") as Rigidbody;
        _detector  = new ChildTagTargetDetector
        {
            Tags = _tags
        };

        _tagPicker = new HasTagTargetPicker(null);
        _currentlyFollowingPicker = new PreviousTargetPicker(this)
        {
            AdditionalScore = AdditionalScoreForSameTagOrCurrentlyFllowed
        };

        var watchPickers = new List <ITargetPicker>
        {
            _tagPicker,
            _currentlyFollowingPicker,
            new ProximityTargetPicker(transform)
        };

        if (_rigidbody != null)
        {
            watchPickers.Add(new LookingAtTargetPicker(_rigidbody));
        }

        if (MinimumMass > 0)
        {
            watchPickers.Add(new MassTargetPicker {
                MinMass = MinimumMass
            });
        }

        _watchPicker = new CombinedTargetPicker(watchPickers);

        var followPickers = new List <ITargetPicker>
        {
            new ProximityTargetPicker(transform)
        };

        if (_rigidbody != null)
        {
            followPickers.Add(new ApproachingTargetPicker(_rigidbody, ApproachTargetPickerWeighting));
        }

        if (MinimumMass > 0)
        {
            followPickers.Add(new MassTargetPicker
            {
                MinMass = MinimumMass
            });
        }
        _followPicker = new CombinedTargetPicker(followPickers);
    }
    // Use this for initialization
    void Start()
    {
        _reload = (int)(UnityEngine.Random.value * RandomStartTime) + MinStartTime;
        Emitter = Emitter ?? transform;

        if (OnlyWithTargets)
        {
            _detector = new MultiTagTargetDetector()
            {
                EnemyTags = EnemyTags
            };
        }

        _spawner = GetComponent("Rigidbody") as Rigidbody;
    }
 private static void Logic()
 {
     for (int i = 0; i < entities.Count; i++)
     {
         //entities[i].LogicUpdate();
         ITargetDetector targetDetector = entities[i].GetComponent <ITargetDetector>();
         if (targetDetector != null)
         {
             if (targetDetector.Target == Object.NoId)
             {
                 targetDetector.GetTarget();
             }
         }
     }
 }
        private static void Physics()
        {
            for (int i = 0; i < entities.Count; i++)
            {
                //entities[i].PhysicsUpdate();
                IMoveComponent mover = entities[i].GetComponent <IMoveComponent>();
                if (mover != null)
                {
                    ITargetDetector targetDetector = entities[i].GetComponent <ITargetDetector>();
                    if (targetDetector.Target == Object.NoId)
                    {
                        continue;
                    }

                    IEntity target = (IEntity)Object.GetById(targetDetector.Target);
                    mover.MoveTowards(target.PositionX, target.PositionY);
                }
            }

            // TODO: Resolve physics.
        }
Example #12
0
 // Use this for initialization
 void Start()
 {
     if (TargetPicker == null)
     {
         Debug.LogError(name + " Has no target picker");
         _active = false;
         return;
     }
     if (Detector == null)
     {
         EnemyTagKnower = EnemyTagKnower ?? GetComponentInParent <IKnowsEnemyTags>();
         if (EnemyTagKnower == null)
         {
             Debug.LogWarning(name + " Could not find enemy tag source for target picker while configuring the detector.");
         }
         else
         {
             Detector = new RepositoryTargetDetector(EnemyTagKnower);
         }
     }
     FilteredTargets = new List <Target>();//ensure that this isn't null.
 }
        private static void Combat()
        {
            List <AttackCommand> attacks = new List <AttackCommand>();

            for (int i = 0; i < entities.Count; i++)
            {
                //entities[i].CombatUpdate();
                ITargetDetector targetDetector = entities[i].GetComponent <ITargetDetector>();
                if (targetDetector != null)
                {
                    if (targetDetector.IsInRange())
                    {
                        var hits = entities[i].GetComponent <IAttackComponent>().Attack();
                        if (hits != null)
                        {
                            attacks.AddRange(hits);
                        }
                    }
                }
            }

            // TODO: Resolve combat.
            foreach (var attack in attacks)
            {
                attack.Execute();
            }

            foreach (var entity in entities)
            {
                IHealth health = entity.GetComponent <IHealth>();
                if (health.Health <= 0)
                {
                    entity.Destroy();
                }
            }
        }
Example #14
0
 public AverageTargetLocationDestinationChooser(ITargetDetector detector, ITargetPicker picker, Rigidbody destination)
 {
     _detector    = detector;
     _destination = destination;
     _picker      = picker;
 }
Example #15
0
    // Use this for initialization
    void Start()
    {
        _rigidbody = GetComponent <Rigidbody>();

        _detector = new MultiTagTargetDetector()
        {
            EnemyTags = EnemyTags
        };

        var pickers = new List <ITargetPicker>
        {
            new ProximityTargetPicker(_rigidbody)
            {
                DistanceMultiplier = PickerDistanceMultiplier,
                InRangeBonus       = PickerInRangeBonus,
                Range = PickerRange
            },
            new LookingAtTargetPicker(_rigidbody)
            {
                Multiplier = PickerAimedAtMultiplier
            },
            new ApproachingTargetPicker(_rigidbody, PickerApproachWeighting)
        };

        if (MinimumMass > 0 || PickerMasMultiplier != 0)
        {
            pickers.Add(new MassTargetPicker
            {
                MinMass          = MinimumMass,
                MassMultiplier   = PickerMasMultiplier,
                OverMinMassBonus = PickerOverMinMassBonus
            });
        }

        _targetPicker = new CombinedTargetPicker(pickers);

        var initialAngularDrag = _rigidbody.angularDrag;
        var torqueApplier      = new MultiTorquerTorqueAplier(_rigidbody, TorqueMultiplier, initialAngularDrag);

        _pilot = new RocketPilot(torqueApplier, _rigidbody, Engines, ShootAngle, StartDelay)
        {
            LocationAimWeighting = LocationAimWeighting,
            TurningStartDelay    = TurningStartDelay,
            VectorArrow          = VectorArrow
        };

        var exploder = new ShrapnelAndDamageExploder(_rigidbody, Shrapnel, ExplosionEffect, ShrapnelCount)
        {
            ExplosionForce        = ExplosionForce,
            EnemyTags             = EnemyTags,
            TagShrapnel           = TagShrapnel,
            SetEnemyTagOnShrapnel = SetEnemyTagOnShrapnel,
            ExplosionBaseDamage   = ExplosionDamage,
            ShrapnelSpeed         = ShrapnelSpeed,
            ExplosionRadius       = ExplosionRadius
        };

        _detonator = new ProximityApproachDetonator(exploder, _rigidbody, TimeToTargetForDetonation, ShrapnelSpeed);

        _runner = new RocketRunner(_detector, _targetPicker, _pilot, _detonator, this)
        {
            name = transform.name
        };

        //Debug.Log("starting");
    }
    // Use this for initialization
    void Start()
    {
        var rigidbody    = GetComponent <Rigidbody>();
        var emitterCount = BeamsParent.childCount;

        _beams = new List <Beam>();
        for (int i = 0; i < emitterCount; i++)
        {
            var beam = BeamsParent.GetChild(i);
            beam.localScale = Vector3.zero;
            beam.SetColor(BeamColour);
            _beams.Add(new Beam(beam, ShootTime, LoadTime)
            {
                BeamForce     = BeamForce,
                HitEffect     = HitEffect,
                BeamDamage    = BeamDamage,
                FriendlyTag   = tag,
                InitialRadius = InitialRadius,
                Divergence    = Divergence
            });
        }

        _detector = new MultiTagTargetDetector()
        {
            ProjectileSpeed = 0,
            EnemyTags       = EnemyTags
        };

        var pickers = new List <ITargetPicker>
        {
            new AboveTurnTableTargetPicker(rigidbody),
            new ProximityTargetPicker(rigidbody)
            {
                DistanceMultiplier = PickerDistanceMultiplier,
                InRangeBonus       = PickerInRangeBonus,
                Range = PickerRange
            },
            new LookingAtTargetPicker(ElevationHub)
            {
                Multiplier = PickerAimedAtMultiplier
            },
            new ApproachingTargetPicker(rigidbody, PickerApproachWeighting)
        };

        if (PickerMinimumMass > 0 || PickerMasMultiplier != 0)
        {
            pickers.Add(new MassTargetPicker
            {
                MinMass          = PickerMinimumMass,
                MassMultiplier   = PickerMasMultiplier,
                OverMinMassBonus = PickerOverMinMassBonus
            });
        }

        _targetPicker = new CombinedTargetPicker(pickers);

        _turner = new UnityTurretTurner(rigidbody, TurnTable, ElevationHub, RestTarget, null);

        _fireControl = new UnityFireControl(this, ElevationHub.transform, ShootAngle);

        _runner = new TurretRunner(_detector, _targetPicker, _turner, _fireControl, this)
        {
            name = transform.name
        };
    }