Пример #1
0
        public override void OnActivate(GameTime gameTime, ArmorPotionFramework.EntityClasses.Player activatedBy)
        {
            _currentWaitTime -= gameTime.ElapsedGameTime.Milliseconds;
            if (_currentWaitTime < 0)
            {
                _currentWaitTime = _maxWaitTime;

                ConeProjectile projectile = new ConeProjectile(activatedBy.World, this, ProjectileTarget.Enemy, EventType.FireEvent, false, 75, CenterEntity(activatedBy), MathHelper.ToRadians((int)activatedBy.CurrentSprite.CurrentAnimation * 90), Math.PI / 4);
                projectile.AnimatedSprites.Add("Normal", AnimatedSprite);

                activatedBy.World.Projectiles.Add(projectile);
            }
        }
Пример #2
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            if (!_thrown)
            {
                double distance = GameMath.Distance(_startingPosition, _position);
                _position += Velocity;
                if (distance > _throwDistance)
                    _thrown = true;
            }
            else
            {
                if (_eventType == EventType.FireEvent || _eventType == EventType.IceEvent)
                {
                    if (_angle < _beginningAngle + _angleCycle)
                    {
                        double newAngle = _angle += _deltaAngle;

                        if (_eventType == EventType.IceEvent)
                            newAngle = RandomGenerator.Random.NextDouble() * Math.PI * 2;

                        ConeProjectile projectile = new ConeProjectile(World, null, this._target, _eventType, _triggerSecondaryProjectileEvents, _projectileDistance, _position, newAngle, _projectileSpread);
                        projectile.DamageAmount = this.DamageAmount;

                        projectile.AnimatedSprites.Add("Normal", AnimatedSprites["Projectile"].Clone());

                        World.ProjectilesToAdd.Add(projectile);
                    }
                    else
                    {
                        this._isAlive = false;
                    }
                }
                else if (_eventType == EventType.LightningEvent)
                {
                    AreaOfEffectProjectile projectile = new AreaOfEffectProjectile(
                        World,
                        null,
                        this._target,
                        _eventType,
                        _triggerSecondaryProjectileEvents,
                        new Vector2(_position.X - AnimatedSprites["Projectile"].Width / 2, _position.Y - AnimatedSprites["Projectile"].Height / 2),
                        _aoeLife);

                    projectile.AnimatedSprites.Add("Normal", AnimatedSprites["Projectile"].Clone());

                    World.ProjectilesToAdd.Add(projectile);

                    this._isAlive = false;
                }
            }
        }