Example #1
0
        private void UpdateAnimation(GameTime gameTime)
        {
            car.Rotation  = angle;
            roof.Rotation = angle;

            if (angle < (float)Math.PI / 4 * 1)
            {
                car.SetFrame(0, 8);
                roof.SetFrame(0, 8);
            }
            else if (angle < (float)Math.PI / 4 * 3)
            {
                car.SetFrame(2, 8);
                roof.SetFrame(2, 8);
            }
            else if (angle < (float)Math.PI / 4 * 5)
            {
                car.SetFrame(4, 8);
                roof.SetFrame(4, 8);
            }
            else if (angle < (float)Math.PI / 4 * 7)
            {
                car.SetFrame(6, 8);
                roof.SetFrame(6, 8);
            }
        }
Example #2
0
 public StunnedDodongoState(IEnemy enemy)
 {
     Enemy  = enemy;
     Sprite = Enemy.CreateCorrectSprite();
     Sprite.SetFrame(GameData.Instance.EnemyMiscConstants.DodongoMaximumFrame);
     stunDuration                   = GameData.Instance.EnemyMiscConstants.DirectionChange;
     Enemy.CurrentState             = this;
     Enemy.Physics.MovementVelocity = Vector2.Zero;
 }
Example #3
0
        public void ShowDiceValue(int For1, int For2)
        {
            Sprite sprite1 = GetNode("DicePlayer/Dice") as Sprite;
            Sprite sprite2 = GetNode("DicePlayer/Dice2") as Sprite;


            sprite1.SetFrame(For1 - 1);
            sprite2.SetFrame(For2 - 1);
        }
Example #4
0
 public FollowFireSnakeState(IEnemy fireSnake)
 {
     Enemy  = fireSnake;
     Sprite = Enemy.CreateCorrectSprite();
     if (fireSnake is RedMoldormSegment)
     {
         Sprite.SetFrame(2);
     }
     else if (fireSnake is BlueMoldormSegment)
     {
         Sprite.SetFrame(3);
     }
 }
Example #5
0
    public void UpdateSpriteFrameForStatus(string status)
    {
        var spriteInfo = _spritesSpec.GetSpriteInfo(
            Model.Id,
            status);

        if (spriteInfo.IsAnimation)
        {
            Sprite.PlayAnimation(spriteInfo.FrameName);
        }
        else
        {
            Sprite.StopAnimation();
            Sprite.SetFrame(spriteInfo.FrameName);
        }
    }
Example #6
0
        public FatZombie()
        {
            m_physics       = new PhysicsComponent(Globals.TheGame, Transform);
            m_sprite        = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_phat", 1, 12), Transform);
            m_sprite.Origin = new Vector2(0.5f, 1);
            m_loot          = Loot.GenerateLoot(12);

            ObjectState.BeginAction   = delegate() { m_actionManager.StartNew(m_full); };
            ObjectState.StandbyAction = delegate() { m_actionManager.Stop(); m_sprite.SetFrame(0); };
            ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); };

            m_collider = new AABBCollider(this, new AABB(m_sprite));
            Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); });

            m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP);

            m_impactBox = new AABB(new Transform(Transform, true), new Vector2(72, 67));
            m_impactBox.Transform.Position = new Vector2(13, -70);
            m_shurikenReceiver             = new ShurikenReceiver(Transform, m_impactBox, 10);
            m_hitAnimation = new HitAnimation(World.baseEffect);
            m_measurer     = new AABBMeasurer(new AABB(new Transform(Transform, true), new Vector2(50, 50)));

            m_full        = new SpriteSheetAnimation(m_sprite, 0, 1, 0.7f, -1);
            m_noHead1     = new SpriteSheetAnimation(m_sprite, 2, 3, 0.7f, -1);
            m_noHead2     = new SpriteSheetAnimation(m_sprite, 4, 5, 0.7f, -1);
            m_noRightArm  = new SpriteSheetAnimation(m_sprite, 6, 7, 0.7f, -1);
            m_noLeftArm   = new SpriteSheetAnimation(m_sprite, 8, 9, 0.7f, -1);
            m_noShoulders = new SpriteSheetAnimation(m_sprite, 10, 11, 0.7f, -1);

            m_actionManager = new SingleActionManager();
            m_actionManager.StartNew(m_full);


            //_projections = new BodyPart[]
            //{
            //    null,
            //    new BodyPart(this, new Vector2(0, -55), "bp_fatshoulders"),
            //    new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-30, -100), "bp_fathead2"),
            //    new BodyPart(this, new Vector2(-30, -115), "bp_fathead1"),
            //};

            //_destroyProjections = new BodyPart[] {
            //    new BodyPart(this, new Vector2(0, -45), "bp_fatupperb"),
            //    new BodyPart(this, new Vector2(0, -10), "bp_fatlowerb"),
            //};
            m_bodyParts = new ParticleSystem(Globals.TheGame, 7);

            m_head1 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead1"), new Transform(Transform, true));
            m_head1.Transform.Position = new Vector2(-30, -110);
            m_bodyParts.AddParticle(m_head1);

            m_head2 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead2"), new Transform(Transform, true));
            m_head2.Transform.Position = new Vector2(-30, -100);
            m_bodyParts.AddParticle(m_head2);

            m_shoulders = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatshoulders"), new Transform(Transform, true));
            m_shoulders.Transform.Position = new Vector2(0, -80);
            m_bodyParts.AddParticle(m_shoulders);

            m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armL.Transform.Position = new Vector2(-15, -75);
            m_bodyParts.AddParticle(m_armL);

            m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armR.Transform.Position = new Vector2(-15, -75);
            m_bodyParts.AddParticle(m_armR);

            m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatupperb"), new Transform(Transform, true));
            m_upperB.Transform.Position = new Vector2(15, -65);
            m_bodyParts.AddParticle(m_upperB);

            m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatlowerb"), new Transform(Transform, true));
            m_lowerB.Transform.Position = new Vector2(15, -27);
            m_bodyParts.AddParticle(m_lowerB);

            ///
            ///Hit events
            ///
            m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit);
            m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit);

            ///
            /// Health events
            ///
            m_destructible.AddHealthEvent(7, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noHead1);
                m_head1.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(6, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noHead2);
                m_head2.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(5, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noRightArm);
                m_armR.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(4, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noLeftArm);
                m_armL.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(3, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noShoulders);
                m_shoulders.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(0, false, new MethodAction(delegate()
            {
                m_upperB.Pop(-1.1f, 500, true);
                m_lowerB.Pop(-1.1f, 500, true);
                ObjectState.Destroy();
            }));

            ObjectState.Begin();
        }
        //        public Tpl_PogoZombie()
        //    : base(typeof(PogoZombie), "e_pz")
        //{
        //    _hp = 3;
        //    _speed = 2.4f;
        //    _jumpForce = 25;
        //    _appearanceRate = 30;
        //}

        public PogoZombie() : base()
        {
            m_jumpForce = Globals.Random.Next(-JumpForceInterval, JumpForceInterval + 1) + JumpForce;

            m_sprite        = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_pogo", 1, 8), Transform);
            m_sprite.Origin = new Vector2(0.5f, 1.0f);
            m_physics       = new PhysicsComponent(Globals.TheGame, Transform);
            m_loot          = Loot.GenerateLoot(12);

            m_currentFrame = 0;

            ObjectState.BeginAction = delegate()
            {
                m_sprite.SetFrame(m_currentFrame);
            };
            ObjectState.StandbyAction = delegate()
            {
                m_sprite.SetFrame(m_currentFrame + 1);
            };
            ObjectState.DestroyAction = delegate()
            {
                m_destructible.ClearHitEvents();
                Backpacker.HitPlayerColliders.Remove(m_collider);
            };

            m_collider = new AABBCollider(this, new AABB(m_sprite));
            Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); });

            m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, 4);
            m_hitAnimation = new HitAnimation(World.baseEffect);
            m_impactBox    = new AABB(new Transform(Transform, true), new Vector2(20, 60));
            m_impactBox.Transform.Position = new Vector2(5, -54);
            m_shurikenReceiver             = new ShurikenReceiver(Transform, m_impactBox, 5);
            m_measurer = new AABBMeasurer(m_impactBox);

            //_projections = new BodyPart[] {
            //    null,
            //    new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"),
            //};

            //_destroyProjections = new BodyPart[]
            //{
            //    new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"),
            //    new BodyPart(this, new Vector2(10, -50), "bp_pogostick"),
            //    new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb")
            //};

            ///
            ///	Body parts
            ///

            m_bodyParts = new ParticleSystem(Globals.TheGame, 6);

            m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true));
            m_head.Transform.Position = new Vector2(7, -97);
            m_bodyParts.AddParticle(m_head);

            m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armR.Transform.Position = new Vector2(-20, -70);
            m_bodyParts.AddParticle(m_armR);

            m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true));
            m_lowerB.Transform.Position = new Vector2(0, -40);
            m_bodyParts.AddParticle(m_lowerB);

            m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true));
            m_upperB.Transform.Position = new Vector2(0, -65);
            m_bodyParts.AddParticle(m_upperB);

            m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armL.Transform.Position = new Vector2(-20, -70);
            m_bodyParts.AddParticle(m_armL);

            m_pogoStick = new BodyPart(TextureLibrary.GetSpriteSheet("bp_pogostick"), new Transform(Transform, true));
            m_pogoStick.Transform.Position = new Vector2(-6, -40);
            m_bodyParts.AddParticle(m_pogoStick);

            ///
            ///Hit events
            ///
            m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit);
            m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit);

            ///
            /// Health events
            ///
            m_destructible.AddHealthEvent(3, false, new MethodAction(delegate()
            {
                m_currentFrame = 2;
                m_sprite.SetFrame(m_currentFrame);
                m_head.Pop(-1.1f, 800, true);
            }));
            m_destructible.AddHealthEvent(2, false, new MethodAction(delegate()
            {
                m_currentFrame = 4;
                m_sprite.SetFrame(m_currentFrame);
                m_armL.Pop(-1.1f, 800, true);
            }));
            m_destructible.AddHealthEvent(1, false, new MethodAction(delegate()
            {
                m_currentFrame = 6;
                m_sprite.SetFrame(m_currentFrame);
                m_armR.Pop(-1.1f, 800, true);
            }));
            m_destructible.AddHealthEvent(0, false, new MethodAction(delegate()
            {
                m_upperB.Pop(-1.1f, 800, true);
                m_lowerB.Pop(-1.1f, 800, true);
                m_pogoStick.Pop(-1.1f, 200, true);
                ObjectState.Destroy();
            }));

            ObjectState.Begin();
        }
Example #8
0
        public BasicZombie()
            : base()
        {
            m_physics       = new PhysicsComponent(Globals.TheGame, Transform);
            m_sprite        = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_base", 1, 8), Transform);
            m_sprite.Origin = new Vector2(0.5f, 1.0f);
            m_loot          = Loot.GenerateLoot(4);

            ObjectState.BeginAction = delegate()
            {
                m_actionManager.StartNew(m_full);
            };
            ObjectState.StandbyAction = delegate()
            {
                m_actionManager.Stop();
                m_sprite.SetFrame(0);
            };
            ObjectState.DestroyAction = delegate()
            {
                m_destructible.ClearHitEvents();
                Backpacker.HitPlayerColliders.Remove(m_collider);
            };

            m_collider = new AABBCollider(this, new AABB(m_sprite));
            Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); });
            m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP);


            m_impactBox = new AABB(new Transform(Transform, true), new Vector2(22, 42));
            m_impactBox.Transform.Position = new Vector2(13, -44);
            m_measurer         = new AABBMeasurer(m_impactBox);
            m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 5);
            m_hitAnimation     = new HitAnimation(World.baseEffect);

            m_full       = new SpriteSheetAnimation(m_sprite, 0, 1, 0.5f, -1);
            m_noHead     = new SpriteSheetAnimation(m_sprite, 2, 3, 0.5f, -1);
            m_noLeftArm  = new SpriteSheetAnimation(m_sprite, 4, 5, 0.5f, -1);
            m_noRightArm = new SpriteSheetAnimation(m_sprite, 6, 7, 0.5f, -1);

            m_actionManager = new SingleActionManager();

            //Transform headTransform = new Transform(Transform, true
            //_projections = new BodyPart[] {
            //    null,
            //    new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"),
            // new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"),
            //   new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb")
            //};


            ///
            /// Body Parts
            ///
            m_bodyParts = new ParticleSystem(Globals.TheGame, 5);

            m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true));
            m_head.Transform.Position = new Vector2(5, -50);
            m_bodyParts.AddParticle(m_head);

            m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armL.Transform.Position = new Vector2(5, -30);
            m_bodyParts.AddParticle(m_armL);

            m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armR.Transform.Position = new Vector2(-5, -30);
            m_bodyParts.AddParticle(m_armR);

            m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true));
            m_upperB.Transform.Position = new Vector2(0, -30);
            m_bodyParts.AddParticle(m_upperB);

            m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true));
            m_lowerB.Transform.Position = new Vector2(0, -10);
            m_bodyParts.AddParticle(m_lowerB);

            ///
            ///Hit events
            ///
            m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit);
            m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit);

            ///
            /// Health events
            ///
            m_destructible.AddHealthEvent(3, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noHead);
                m_head.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(2, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noLeftArm);
                m_armL.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(1, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noRightArm);
                m_armR.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(0, false, new MethodAction(delegate()
            {
                m_upperB.Pop(-1.1f, 500, true);
                m_lowerB.Pop(-1.1f, 500, true);
                ObjectState.Destroy();
            }));

            ObjectState.Begin();
        }
Example #9
0
    public async Task SayLineAsync(string line, string actorStatus, CancellationToken cancellationToken)
    {
        var cameraPosition = Graphics.GetCameraPosition();
        var textPosition   = Sprite.Position.Offset(
            0,
            -Sprite.Size.Height - 20);
        //TODO GameObject.IsVisible ? -Sprite.Size.Height - 20 : 0);

        var marginLeft  = textPosition.X - cameraPosition.X;
        var marginRight = Graphics.Width - marginLeft;

        var wordWrapWidth = (int)Math.Min(marginLeft, marginRight) * 2;

        // TODO Must take into account real width of the text!

        // Move the textbox if we're to close to an edge of the screen.
        if (wordWrapWidth < MIN_WORD_WRAP_WIDTH)
        {
            wordWrapWidth = MIN_WORD_WRAP_WIDTH;

            if (marginLeft < marginRight)
            {
                textPosition = new Point(
                    wordWrapWidth / 2,
                    textPosition.Y);
            }
            else
            {
                textPosition = new Point(
                    Graphics.Width - (wordWrapWidth / 2) + cameraPosition.X,
                    textPosition.Y);
            }
        }

        var frameBeforeAnimation = Sprite.Frame;

        var animate = (actorStatus == WellKnownStatus.FaceCamera);

        if (animate)
        {
            Sprite.PlayAnimation(WellKnownAnimation.Talk);
        }

        using var text = Graphics.AddText(
                  line,
                  textPosition,
                  options =>
        {
            options.Depth         = Graphics.Height + 1; // Text must be top-most.
            options.FillColor     = Model.TextColor;
            options.Origin        = new Point(0.5, 0.5);
            options.ScrollFactor  = Model.ScrollFactor;
            options.WordWrapWidth = wordWrapWidth;
        });

        var delay = Math.Max(line.Length * DELAY_PER_CHAR, MIN_TEXT_DELAY);

        try
        {
            await Task.Delay(delay, cancellationToken);
        }
        catch (TaskCanceledException)
        {}

        if (animate)
        {
            Sprite.StopAnimation();
            Sprite.SetFrame(frameBeforeAnimation);
        }
    }
Example #10
0
    private void Setup()
    {
        _AddedToDelegates = false;
        _Pause = false;
        _Kill = false;
        _Time = Random.Range(0.0f,100.0f);
        _TimeToFire = 1.0f;

        switch(_Type)
        {
            case eAIType.AITYPE_ENEMY1:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("Enemy1F1.png");
                _Sprite.AddFrame("Enemy1F2.png");
                _Sprite.AddFrame("Enemy1F3.png");
                _Sprite.AddFrame("Enemy1F4.png");
                _Sprite.AddFrame("Enemy1F3.png");
                _Sprite.AddFrame("Enemy1F2.png");
                _Sprite._Width = 1.2f;
                _Sprite._Height = 1.2f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 10.0f + Random.Range(0.0f,3.0f);
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_BLOCK:
                _Sprite = Sprite.Spawn(1);

                switch(_Block)
                {
                    case 1:
                        _Sprite.AddFrame("Block1.png");
                        break;

                    case 2:
                        _Sprite.AddFrame("Block2.png");
                        break;

                    case 3:
                        _Sprite.AddFrame("Block3.png");
                        break;

                    case 4:
                        _Sprite.AddFrame("Block4.png");
                        break;

                    case 5:
                        _Sprite.AddFrame("Block5.png");
                        break;

                    case 6:
                        _Sprite.AddFrame("Block6.png");
                        break;

                    case 7:
                        _Sprite.AddFrame("Block7.png");
                        break;

                    case 8:
                        _Sprite.AddFrame("Block8.png");
                        break;

                }

                _Sprite._Width = 2.0f;
                _Sprite._Height = 2.0f;
                _Sprite._Animate = false;
                _Sprite._Y = 0.0f;
                _Radius = 0.8f;
                _Speed = 10.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_RDEFENDER:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("RDefenderF1.png");
                _Sprite.AddFrame("RDefenderF2.png");
                _Sprite.AddFrame("RDefenderF3.png");
                _Sprite.AddFrame("RDefenderF4.png");
                _Sprite.AddFrame("RDefenderF5.png");
                _Sprite.AddFrame("RDefenderF6.png");
                _Sprite.AddFrame("RDefenderF7.png");
                _Sprite.AddFrame("RDefenderF8.png");
                _Sprite.AddFrame("RDefenderF9.png");
                _Sprite.AddFrame("RDefenderF10.png");
                _Sprite.AddFrame("RDefenderF11.png");
                _Sprite.AddFrame("RDefenderF12.png");
                _Sprite._Width = 2.5f;
                _Sprite._Height = 2.5f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 1.0f;
                _Speed = 10.0f + Random.Range(0.0f,5.0f);
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(0.3f,1.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_UP_TURRET:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("TurretUpF1.png");
                _Sprite.AddFrame("TurretUpF2.png");
                _Sprite.AddFrame("TurretUpF3.png");
                _Sprite.AddFrame("TurretUpF4.png");
                _Sprite.AddFrame("TurretUpF5.png");
                _Sprite.AddFrame("TurretUpF6.png");
                _Sprite.AddFrame("TurretUpF7.png");
                _Sprite.AddFrame("TurretUpF8.png");
                _Sprite.AddFrame("TurretUpF9.png");
                _Sprite.AddFrame("TurretUpF10.png");
                _Sprite._Width = 1.5f;
                _Sprite._Height = 1.5f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Z -= 0.2f;
                _Radius = 1.0f;
                _Speed = 10.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(0.3f,1.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_DOWN_TURRET:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("TurretDownF1.png");
                _Sprite.AddFrame("TurretDownF2.png");
                _Sprite.AddFrame("TurretDownF3.png");
                _Sprite.AddFrame("TurretDownF4.png");
                _Sprite.AddFrame("TurretDownF5.png");
                _Sprite.AddFrame("TurretDownF6.png");
                _Sprite.AddFrame("TurretDownF7.png");
                _Sprite.AddFrame("TurretDownF8.png");
                _Sprite.AddFrame("TurretDownF9.png");
                _Sprite.AddFrame("TurretDownF10.png");
                _Sprite._Width = 1.5f;
                _Sprite._Height = 1.5f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Z += 0.2f;
                _Radius = 1.0f;
                _Speed = 10.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(0.3f,1.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_SKULL:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("MineF1.png");
                _Sprite.AddFrame("MineF2.png");
                _Sprite.AddFrame("MineF3.png");
                _Sprite.AddFrame("MineF4.png");
                _Sprite.AddFrame("MineF3.png");
                _Sprite.AddFrame("MineF2.png");
                _Sprite._Width = 1.8f;
                _Sprite._Height = 1.8f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.7f;
                _Speed = 15.0f + Random.Range(0.0f,5.0f);
                _SpeedBoost = 4.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_FLYER:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("FlyerF1.png");
                _Sprite.AddFrame("FlyerF2.png");
                _Sprite.AddFrame("FlyerF3.png");
                _Sprite.AddFrame("FlyerF4.png");
                _Sprite.AddFrame("FlyerF5.png");
                _Sprite.AddFrame("FlyerF6.png");
                _Sprite.AddFrame("FlyerF7.png");
                _Sprite.AddFrame("FlyerF8.png");
                _Sprite.AddFrame("FlyerF9.png");
                _Sprite.AddFrame("FlyerF10.png");
                _Sprite._Width = 1.5f;
                _Sprite._Height = 1.5f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 10.0f + Random.Range(0.0f,5.0f);
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(1.0f,2.0f);
                AddToDelegates();
                _RealZ = _Z;
                _SinRadius = Random.Range(3.0f,5.0f);
                _SinFrequency = _Speed * 0.1f;
                break;

            case eAIType.AITYPE_ROCK:
                _Sprite = Sprite.Spawn(1);

                int iRock = Random.Range(0,100);

                if(iRock > 75)
                {
                    _Sprite.AddFrame("Rock1F1.png");
                    _Sprite.AddFrame("Rock1F2.png");
                    _Sprite.AddFrame("Rock1F3.png");
                    _Sprite.AddFrame("Rock1F4.png");
                }
                else if(iRock > 50)
                {
                    _Sprite.AddFrame("Rock2F1.png");
                    _Sprite.AddFrame("Rock2F2.png");
                    _Sprite.AddFrame("Rock2F3.png");
                    _Sprite.AddFrame("Rock2F4.png");
                }
                else if(iRock > 25)
                {
                    _Sprite.AddFrame("Rock3F1.png");
                    _Sprite.AddFrame("Rock3F2.png");
                    _Sprite.AddFrame("Rock3F3.png");
                    _Sprite.AddFrame("Rock3F4.png");
                }
                else
                {
                    _Sprite.AddFrame("Rock4F1.png");
                    _Sprite.AddFrame("Rock4F2.png");
                    _Sprite.AddFrame("Rock4F3.png");
                    _Sprite.AddFrame("Rock4F4.png");
                }

                _Sprite._Width = 4.1f;
                _Sprite._Height = 4.1f;
                _Sprite._Animate = false;
                _Sprite._Y = 0.0f;
                _Sprite.SetFrame(0);
                _Radius = 1.1f;
                _Speed = 10.0f + Random.Range(0.0f,5.0f);
                _Value = 1;
                _Width = 3.0f * 0.5f;
                _Height = (3.0f * 0.5f) * Director._Instance._Aspect;
                _AABBCollision = true;
                _HitPoints = 4;
                _CurrentFrame = 0;
                _FrameAdvanceOnHit = true;
                AddToDelegates();
                break;

            case eAIType.AITYPE_BULLET:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("EnemyBullet.png");
                _Sprite._Width = 0.8f;
                _Sprite._Height = 0.8f;
                _Sprite._Animate = false;
                _Sprite._Y = 0.15f;
                _Radius = 0.1f;
                _Speed = 8.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                AddToDelegates();
                break;

            case eAIType.AITYPE_POWERUP:
                _Sprite = Sprite.Spawn(1);

                if(_PowerupType == 0)
                {
                    _Sprite.AddFrame("FasterShots.png");
                }
                else if(_PowerupType == 1)
                {
                    _Sprite.AddFrame("TriShot.png");
                }
                else if(_PowerupType == 2)
                {
                    _Sprite.AddFrame("Magnet.png");
                }
                else if(_PowerupType == 3)
                {
                    _Sprite.AddFrame("Shield.png");
                }

                _Sprite._Width = 1.5f;
                _Sprite._Height = 1.5f;
                _Sprite._Animate = false;
                _Sprite._Y = 0.15f;
                _Radius = 0.5f;
                _Speed = 8.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                AddToDelegates();
                break;

            case eAIType.AITYPE_DRONE:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("Enemy1F1.png");
                _Sprite.AddFrame("Enemy1F2.png");
                _Sprite.AddFrame("Enemy1F3.png");
                _Sprite.AddFrame("Enemy1F4.png");
                _Sprite.AddFrame("Enemy1F3.png");
                _Sprite.AddFrame("Enemy1F2.png");
                _Sprite._Width = 1.2f;
                _Sprite._Height = 1.2f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 8.0f + Random.Range(0.0f,3.0f);
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 300;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_BOSS1:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("Enemy1F1.png");
                _Sprite.AddFrame("Enemy1F2.png");
                _Sprite.AddFrame("Enemy1F3.png");
                _Sprite.AddFrame("Enemy1F4.png");
                _Sprite.AddFrame("Enemy1F3.png");
                _Sprite.AddFrame("Enemy1F2.png");
                _Sprite._Width = 1.2f;
                _Sprite._Height = 1.2f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 8.0f + Random.Range(0.0f,3.0f);
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 6;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                ++Director._Instance._SequencerSemaphore;

                // Create drones for the boss
                _Drones = new List<AI>();

                for(int i = 0; i < 8; ++i)
                {
                    AI pAI = Spawn(eAIType.AITYPE_DRONE,0.0f,0.0f);
                    _Drones.Add(pAI);
                }

                AI pDrone = _Drones[0];
                pDrone._DroneRadius = 9.0f;
                pDrone._DroneAngle = 0.0f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[1];
                pDrone._DroneRadius = 7.0f;
                pDrone._DroneAngle = 0.0f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[2];
                pDrone._DroneRadius = 5.0f;
                pDrone._DroneAngle = 0.0f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[3];
                pDrone._DroneRadius = 3.0f;
                pDrone._DroneAngle = 0.0f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[4];
                pDrone._DroneRadius = 3.0f;
                pDrone._DroneAngle = 3.14f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[5];
                pDrone._DroneRadius = 5.0f;
                pDrone._DroneAngle = 3.14f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[6];
                pDrone._DroneRadius = 7.0f;
                pDrone._DroneAngle = 3.14f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                pDrone = _Drones[7];
                pDrone._DroneRadius = 9.0f;
                pDrone._DroneAngle = 3.14f;
                pDrone._DroneSpinSpeed = 3.0f;
                pDrone.UpdateDronePosition(_X,_Z);

                break;

            case eAIType.AITYPE_GOLD_COIN:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("GoldF1.png");
                _Sprite.AddFrame("GoldF2.png");
                _Sprite.AddFrame("GoldF3.png");
                _Sprite.AddFrame("GoldF4.png");
                _Sprite.AddFrame("GoldF5.png");
                _Sprite.AddFrame("GoldF6.png");
                _Sprite.AddFrame("GoldF7.png");
                _Sprite.AddFrame("GoldF8.png");
                _Sprite._Width = 1.0f;
                _Sprite._Height = 1.0f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 10.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_SILVER_COIN:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("SilverF1.png");
                _Sprite.AddFrame("SilverF2.png");
                _Sprite.AddFrame("SilverF3.png");
                _Sprite.AddFrame("SilverF4.png");
                _Sprite.AddFrame("SilverF5.png");
                _Sprite.AddFrame("SilverF6.png");
                _Sprite.AddFrame("SilverF7.png");
                _Sprite.AddFrame("SilverF8.png");
                _Sprite._Width = 1.0f;
                _Sprite._Height = 1.0f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 10.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_BRONZE_COIN:
                _Sprite = Sprite.Spawn(1);
                _Sprite.AddFrame("BronzeF1.png");
                _Sprite.AddFrame("BronzeF2.png");
                _Sprite.AddFrame("BronzeF3.png");
                _Sprite.AddFrame("BronzeF4.png");
                _Sprite.AddFrame("BronzeF5.png");
                _Sprite.AddFrame("BronzeF6.png");
                _Sprite.AddFrame("BronzeF7.png");
                _Sprite.AddFrame("BronzeF8.png");
                _Sprite._Width = 1.0f;
                _Sprite._Height = 1.0f;
                _Sprite._Animate = true;
                _Sprite._Y = 0.1f;
                _Radius = 0.5f;
                _Speed = 10.0f;
                _Value = 1;
                _AABBCollision = false;
                _HitPoints = 1;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                _FrameAdvanceOnHit = false;
                _TimeToFire = Random.Range(2.0f,3.0f);
                AddToDelegates();
                break;

            case eAIType.AITYPE_FEEDBACK:
                _Sprite = Sprite.Spawn(1);

                if(_FeedbackType == 0)
                {
                    _Sprite.AddFrame("PlusOne.png");
                }
                else if(_FeedbackType == 1)
                {
                    _Sprite.AddFrame("PlusFive.png");
                }
                else if(_FeedbackType == 2)
                {
                    _Sprite.AddFrame("PlusTen.png");
                }
                else if(_FeedbackType == 3)
                {
                    _Sprite.AddFrame("MinusTen.png");
                }
                else if(_FeedbackType == 4)
                {
                    _Sprite.AddFrame("MinusTwenty.png");
                }

                _Sprite._Width = 3.0f;
                _Sprite._Height = 3.0f;
                _Sprite._Animate = false;
                _Sprite._Y = 0.1f;
                _Speed = 8.0f;
                _Width = 0.5f * 0.5f;
                _Height = (0.5f * 0.5f) * Director._Instance._Aspect;
                break;

        }

        _Sprite._AI = this;
        _Sprite._Bullet = null;

        _Kill = false;
    }
Example #11
0
    void Update()
    {
        if(_Sprite == null)
        {
            _Sprite = Sprite.Spawn(1);
            _Sprite._Width = _Width;
            _Sprite._Height = _Height;
            _Sprite._Animate = false;
            _Sprite.AddFrame(_UpImage);
            _Sprite.AddFrame(_DownImage);
            _Sprite.AddFrame(_OverImage);
            _Sprite.AddFrame(_LockUp);
            _Sprite.AddFrame(_LockDown);
            _Sprite._X = 10000.0f;
            _Sprite._Z = 10000.0f;
            _Sprite._Y = _Depth;

            if(_Locked)
            {
                _Sprite.SetFrame(2);
            }
        }

        switch(_Ease)
        {
            case eButtonEase.BUTTON_EASE_IN:

                _Time += _Speed * Time.deltaTime;

                if(_Time > 1.0f)
                {
                    _Time = 1.0f;
                    _C = _B;
                    _Ease = eButtonEase.BUTTON_EASE_NONE;

                    if(_Shake)
                    {
                        Director._Instance.ShakeCamera(_ShakeIntensity,_ShakeTime);
                    }
                }

                float fRealTime = 1.0f - _Time;
                _C = _B + (_A - _B) * (fRealTime * fRealTime);
                break;

            case eButtonEase.BUTTON_EASE_OUT:

                _Time -= _Speed  * Time.deltaTime;

                if(_Time < 0.0f)
                {
                    _Time = 0.0f;
                    _C = _A;
                    _Ease = eButtonEase.BUTTON_EASE_KILL;
                }

                _C = _A + (_B - _A) * (_Time * _Time);
                break;

            case eButtonEase.BUTTON_EASE_KILL:
                this.active = false;
                _Sprite._Alive = false;
                break;
        }

        this.transform.position = _C;
        _Sprite._X = _C.x;
        _Sprite._Z = _C.z;

        if(Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

           		if(Physics.Raycast(ray, out hit, 100))
            {
                if(hit.transform.gameObject.name == this.name)
                {
                    _IsButtonDown = true;

                    if(_Locked)
                    {
                        _Sprite.SetFrame(3);
                    }
                    else
                    {
                        _Sprite.SetFrame(1);
                    }
                }
            }
        }

        if(Input.GetMouseButtonUp(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

           		if(Physics.Raycast(ray, out hit, 100))
            {
                if(hit.transform.gameObject.name == this.name)
                {
                    if(_IsButtonDown && !_Locked)
                    {
                        Director._Instance.FireEvent(_Event);
                        Director._Instance.PlaySample("PRESS",1.0f);
                    }
                }
            }

            _IsButtonDown = false;

            if(_Locked)
            {
                _Sprite.SetFrame(2);
            }
            else
            {
                _Sprite.SetFrame(0);
            }
        }

        if(!_IsButtonDown)
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

           		if(Physics.Raycast(ray, out hit, 100))
            {
                if(hit.transform.gameObject.name == this.name)
                {
                    if(!_IsOver)
                    {
                        Director._Instance.PlaySample("CLICK",1.0f);
                    }

                    _IsOver = true;
                    _Sprite.SetFrame(2);

                }
                else
                {

                    _IsOver = false;
                    _Sprite.SetFrame(0);

                }
            }
        }
        else
        {
            _IsOver = false;
        }
    }