///<summary> ///constructor ///</summary> ///<param name="sceneObject"></param> ///<param name="lifetime"></param> protected TriggerLimitedLifetime( IEntitySceneObject sceneObject, int lifetime) : base(sceneObject) { Lifetime = lifetime; }
///<summary> ///constructor ///</summary> ///<param name="entitySceneObject"></param> ///<param name="target"></param> ///<param name="shooterId"></param> ///<param name="origin"></param> ///<param name="heading"></param> ///<param name="damage"></param> ///<param name="scale"></param> ///<param name="maxSpeed"></param> ///<param name="mass"></param> ///<param name="maxForce"></param> protected Projectile( IEntitySceneObject entitySceneObject, Vector2 target, //the target's position uint shooterId, //the Id of the bot that fired this shot Vector2 origin, //the start position of the projectile Vector2 heading, //the heading of the projectile int damage, //how much damage it inflicts float scale, float maxSpeed, float mass, float maxForce) : base(entitySceneObject, origin, scale, new Vector2(0, 0), maxSpeed, heading, mass, new Vector2(scale, scale), 0, //max turn rate irrelevant here, all shots go straight maxForce) { _target = target; _isDead = false; _hasImpacted = false; _damageInflicted = damage; _origin = origin; _shooterId = shooterId; _timeOfCreation = Time.TimeNow; Facing = Heading; //for projectiles, Facing == Heading }
///<summary> ///constructor ///</summary> ///<param name="sceneObject"></param> protected Trigger(IEntitySceneObject sceneObject) : base(sceneObject) { MarkForDelete = false; IsActive = true; NodeIndex = GraphNode.INVALID_NODE_INDEX; RegionOfInfluence = null; }
///<summary> ///constructor ///</summary> ///<param name="position"></param> ///<param name="facing"></param> ///<param name="lifetime"></param> ///<param name="entitySceneObject"></param> public GraveMarker( Vector2 position, Vector2 facing, float lifetime, IEntitySceneObject entitySceneObject) : base(entitySceneObject) { _lifeTime = lifetime; _timeCreated = Time.TimeNow; Position = position; Facing = facing; _markForDelete = false; }
///<summary> ///constructor ///</summary> ///<param name="shooter"></param> ///<param name="target"></param> ///<param name="entitySceneObject"></param> public ProjectileBolt( BotEntity shooter, Vector2 target, IEntitySceneObject entitySceneObject) : base(entitySceneObject, target, shooter.ObjectId, shooter.Position, Vector2.Normalize(target - shooter.Position), (int) GameManager.GameManager.Instance.Parameters.BoltDamage, GameManager.GameManager.Instance.Parameters.BotScale, GameManager.GameManager.Instance.Parameters.BoltMaxSpeed, GameManager.GameManager.Instance.Parameters.BoltMass, GameManager.GameManager.Instance.Parameters.BoltMaxForce) { _previousPosition = Position; }
///<summary> ///constructor ///</summary> ///<param name="shooter"></param> ///<param name="target"></param> ///<param name="entitySceneObject"></param> public ProjectileSlug( BotEntity shooter, Vector2 target, IEntitySceneObject entitySceneObject) : base(entitySceneObject, target, shooter.ObjectId, shooter.Position, Vector2.Normalize(target - shooter.Position), (int) GameManager.GameManager.Instance.Parameters.SlugDamage, GameManager.GameManager.Instance.Parameters.SlugScale, GameManager.GameManager.Instance.Parameters.SlugMaxSpeed, GameManager.GameManager.Instance.Parameters.SlugMass, GameManager.GameManager.Instance.Parameters.SlugMaxForce) { _previousPosition = Position; _timeShotIsVisible = GameManager.GameManager.Instance.Parameters.SlugPersistence; }
///<summary> ///constructor ///</summary> ///<param name="shooter"></param> ///<param name="target"></param> ///<param name="entitySceneObject"></param> public ProjectileRocket( BotEntity shooter, Vector2 target, IEntitySceneObject entitySceneObject) : base(entitySceneObject, target, shooter.ObjectId, shooter.Position, Vector2.Normalize(target - shooter.Position), (int) GameManager.GameManager.Instance.Parameters.RocketDamage, GameManager.GameManager.Instance.Parameters.RocketScale, GameManager.GameManager.Instance.Parameters.RocketMaxSpeed, GameManager.GameManager.Instance.Parameters.RocketMass, GameManager.GameManager.Instance.Parameters.RocketMaxForce) { _previousPosition = Position; _currentBlastRadius = 0.0f; _maxBlastRadius = GameManager.GameManager.Instance.Parameters.RocketBlastRadius; }
///<summary> ///constructor ///</summary> ///<param name="entitySceneObject"></param> ///<param name="position"></param> ///<param name="radius"></param> ///<param name="velocity"></param> ///<param name="maxSpeed"></param> ///<param name="heading"></param> ///<param name="mass"></param> ///<param name="scale"></param> ///<param name="maxTurnRate"></param> ///<param name="maxForce"></param> protected MovingEntity( IEntitySceneObject entitySceneObject, Vector2 position, float radius, Vector2 velocity, float maxSpeed, Vector2 heading, float mass, Vector2 scale, float maxTurnRate, float maxForce) : base(entitySceneObject) { _heading = heading; _side = Vector2Util.Perp(heading); Velocity = velocity; Mass = mass; _maxSpeed = maxSpeed; _maxTurnRate = maxTurnRate; _maxForce = maxForce; Position = position; BoundingRadius = radius; Scale = scale; }
///<summary> ///constructor ///</summary> ///<param name="entitySceneObject"></param> ///<param name="pos"></param> public BotEntity(IEntitySceneObject entitySceneObject, Vector2 pos) : base(entitySceneObject, pos, GameManager.GameManager.Instance.Parameters.BotScale, Vector2.Zero, GameManager.GameManager.Instance.Parameters.BotMaxSpeed, Vector2.One, // initial heading GameManager.GameManager.Instance.Parameters.BotMass, Vector2.Normalize(Vector2.One)* GameManager.GameManager.Instance.Parameters.BotScale, GameManager.GameManager.Instance.Parameters.BotMaxHeadTurnRate, GameManager.GameManager.Instance.Parameters.BotMaxForce) { _maxHealth = GameManager.GameManager.Instance.Parameters.BotMaxHealth; CurrentHealth = 10; _pathPlanner = null; _steering = null; _brain = null; NumUpdatesHitPersistent = (int) GameManager.GameManager.Instance.Parameters.HitFlashTime; Hit = false; Score = 0; _status = Statuses.Spawning; IsPossessed = false; _fieldOfView = MathHelper.ToRadians(GameManager.GameManager.Instance.Parameters.BotFOV); _maxNormalSpeed = GameManager.GameManager.Instance.Parameters.BotMaxSpeed; _maxSwimmingSpeed = GameManager.GameManager.Instance.Parameters.BotMaxSwimmingSpeed; _maxCrawlingSpeed = GameManager.GameManager.Instance.Parameters.BotMaxCrawlingSpeed; EntityType = EntityTypes.Bot; //a bot starts off facing in the direction it is heading Facing = Heading; //create the navigation module _pathPlanner = new PathPlanner(this); //create the steering behavior class _steering = new Steering.Steering(this); //create the regulators _weaponSelectionRegulator = new Regulator( GameManager.GameManager.Instance.Parameters.BotWeaponSelectionFrequency); _goalArbitrationRegulator = new Regulator( GameManager.GameManager.Instance.Parameters.BotGoalAppraisalUpdateFreq); _targetSelectionRegulator = new Regulator( GameManager.GameManager.Instance.Parameters.BotTargetingUpdateFreq); _triggerTestRegulator = new Regulator( GameManager.GameManager.Instance.Parameters.BotTriggerUpdateFreq); _visionUpdateRegulator = new Regulator( GameManager.GameManager.Instance.Parameters.BotVisionUpdateFreq); //create the goal queue _brain = new Think(this); //create the targeting system _targetingSystem = new TargetingSystem(this); _weaponSystem = new WeaponSystem(this, GameManager.GameManager.Instance.Parameters.BotReactionTime, GameManager.GameManager.Instance.Parameters.BotAimAccuracy, GameManager.GameManager.Instance.Parameters.BotAimPersistence); _sensoryMemory = new SensoryMemory( this, GameManager.GameManager.Instance.Parameters.BotMemorySpan); _navigationalMemory = new NavigationalMemory(this, GameManager.GameManager.Instance.Parameters.NavigationMemorySpan); //temp debbugging code _navigationalMemory.DumpFrequency = 10000; // 10 seconds FoundTriggers = new FoundTriggerList(Team); _logPrefixText = String.Format("[{0,-8}] [{1,17}.", Name, "BotEntity"); }
///<summary> ///Constructor for the base of a respawning trigger ///</summary> ///<param name="sceneObject"></param> protected TriggerRespawning(IEntitySceneObject sceneObject) : base(sceneObject) { _timeBetweenRespawns = 0; _timeUntilRespawn = 0; }