예제 #1
0
 public bool HasTouchedPlayer(EnemyLib enemylib)
 {
     if (new System.Drawing.Rectangle((int)position.X, (int)position.Y, Texture.Width, Texture.Height).IntersectsWith(Player.CurrentPlayer.PlayerLib.Bounds))
     {
         enemylib.MakeDamage(Player.CurrentPlayer.PlayerLib);
         Player.CurrentPlayer.PlayerInfo.Life -= 10;
         return(true);
     }
     return(false);
 }
예제 #2
0
 public NPCNarrator(Texture2D texture, Vector2 position, SpriteBatch spriteBatch)
     : base(texture, position, spriteBatch)
 {
     ReferenceLib = new EnemyLib(new System.Numerics.Vector2(position.X, position.Y), texture.Width - 620, texture.Height, 100);
     _animation   = new Animation();
     _animation.Initialize(texture, position, 60, 58, 0, 0, 10, 100, Color.White, 1, true, true);
     _spritebatch = spriteBatch;
     _player      = Player.CurrentPlayer;
     Lib          = new NPCDialogLib();
 }
예제 #3
0
 public NPCMarchand(Texture2D texture, Vector2 position, SpriteBatch spriteBatch)
     : base(texture, position, spriteBatch)
 {
     _lib       = new EnemyLib(new System.Numerics.Vector2(position.X, position.Y), texture.Width - 50, texture.Height, 100);
     _animation = new Animation();
     _animation.Initialize(texture, position, 40, 34, 0, 0, 2, 150, Color.White, 1, true, true);
     _spritebatch = spriteBatch;
     _player      = Player.CurrentPlayer;
     _button      = new Icon(IconType.PotionRed, Anchor.Auto);
     _button2     = new Icon(IconType.Apple, Anchor.Auto);
 }
예제 #4
0
 public Weapon(Texture2D weaponTexture, Texture2D bulletTexture, DungeonPlanetGame ctx, Vector2 position, SpriteBatch spritebatch, EnemyLib enemyLib)
     : base(weaponTexture, position, spritebatch)
 {
     _enemyLib      = enemyLib;
     _origin        = new Vector2(-2, 7);
     WeaponLib      = new WeaponLib();
     Bullets        = new List <Bullet>();
     BulletsEnemy   = new List <Bullet>();
     _time          = 0;
     _ctx           = ctx;
     _bulletTexture = bulletTexture;
 }
예제 #5
0
 public NPCWeapon(Texture2D texture, Vector2 position, SpriteBatch spriteBatch)
     : base(texture, position, spriteBatch)
 {
     _lib         = new EnemyLib(new System.Numerics.Vector2(position.X, position.Y), texture.Width, texture.Height, 100);
     _spritebatch = spriteBatch;
     _animation   = new Animation();
     _animation.Initialize(texture, position, 33, 60, 0, 0, 2, 300, Color.White, 1, true, true);
     _player      = Player.CurrentPlayer;
     _redBullet   = new Icon(IconType.OrbRed, Anchor.Auto);
     _blueBullet  = new Icon(IconType.OrbBlue, Anchor.Auto);
     _greenBullet = new Icon(IconType.OrbGreen, Anchor.Auto);
     _alreadyBuy  = false;
 }
예제 #6
0
 public Enemy(Texture2D texture, Vector2 position, SpriteBatch spritebatch, string type, Texture2D fireTexture, int frameWidth, int frameHeight, int numberLin, int frameCount, int frameTime, DungeonPlanetGame ctx)
     : base(texture, position, spritebatch)
 {
     EnemyLib     = new EnemyLib(new System.Numerics.Vector2(position.X, position.Y), 40, 55, 30);
     _player      = Player.CurrentPlayer;
     PlayerLib    = Player.CurrentPlayer.PlayerLib;
     _count       = 0;
     _ctx         = ctx;
     _type        = type;
     _spritebatch = spritebatch;
     Fire         = new Sprite(fireTexture, new Vector2(EnemyLib.Position.X, EnemyLib.Position.Y), _spritebatch);
     _animation   = new Animation();
     _animation.Initialize(texture, position, frameWidth, frameHeight, 0, numberLin, frameCount, frameTime, Color.White, 1, true, true);
 }
예제 #7
0
 public NPCWeaponSeller(Texture2D texture, Texture2D shotgun, Texture2D launcher, Vector2 position, SpriteBatch spriteBatch)
     : base(texture, position, spriteBatch)
 {
     _lib         = new EnemyLib(new System.Numerics.Vector2(position.X, position.Y), 55, 64, 100);
     _spritebatch = spriteBatch;
     _animation   = new Animation();
     _animation.Initialize(texture, position, 55, 64, 0, 0, 5, 150, Color.White, 0.9f, true, true);
     _player     = Player.CurrentPlayer;
     _shotgun    = new Image(shotgun, new Vector2(100, 50));
     _launcher   = new Image(launcher, new Vector2(100, 50));
     _alreadyBuy = false;
     _redText    = new Paragraph("Transforme votre arme en un puissant Lance Roquette");
     _blueText   = new Paragraph("transforme votre arme en Shotgun");
 }
예제 #8
0
        private void CheckKeyboardAndUpdateMovement(GameTime gameTime)
        {
            if (EnemyLib.Movement.X < -1)
            {
                _animation.Effect = SpriteEffects.None;
            }
            else if (EnemyLib.Movement.X > 1)
            {
                _animation.Effect = SpriteEffects.FlipHorizontally;
            }

            if (EnemyLib.Vision.IntersectsWith(PlayerLib.Bounds))
            {
                if (_type == "CQC")
                {
                    if (EnemyLib.Bounds.IntersectsWith(PlayerLib.Bounds))
                    {
                        if (EnemyLib.State != 2)
                        {
                            _player.PlayerInfo.Life -= 10;
                            EnemyLib.MakeDamage(PlayerLib);
                        }
                        else
                        {
                            _player.PlayerInfo.Life -= 10;
                            EnemyLib.MakeDamageWithSlim(PlayerLib);
                        }
                    }
                    if (EnemyLib.GetDistanceTo(PlayerLib.Position).X < 0.1 && EnemyLib.State != 2)
                    {
                        EnemyLib.Left();
                    }
                    else
                    {
                        EnemyLib.LeftSlim();
                    }
                    if (EnemyLib.GetDistanceTo(PlayerLib.Position).X > 0.1 && EnemyLib.State != 2)
                    {
                        EnemyLib.Right();
                    }
                    else
                    {
                        EnemyLib.RightSlim();
                    }
                }
                else if (_type == "DIST")
                {
                    EnemyLib.IsShooting = true;
                    if (EnemyLib.Bounds.IntersectsWith(PlayerLib.Bounds))
                    {
                        _player.PlayerInfo.Life -= 1;
                        EnemyLib.MakeDamage(PlayerLib);
                    }
                }
            }
            else
            {
                EnemyLib.IsShooting = false;
                if (_count <= 100)
                {
                    if (EnemyLib.State != 2)
                    {
                        EnemyLib.Left();
                        _count++;
                    }
                    else
                    {
                        EnemyLib.LeftSlim();
                        _count++;
                    }
                }
                else if (_count <= 200 && _count > 100)
                {
                    if (EnemyLib.State != 2)
                    {
                        EnemyLib.Right();
                        _count++;
                    }
                    else
                    {
                        EnemyLib.RightSlim();
                        _count++;
                    }
                }
                else
                {
                    _count = 0;
                    if (EnemyLib.State == 1)
                    {
                        EnemyLib.Life -= 15;
                    }
                }
            }
        }
예제 #9
0
    public IEnumerator Execute(string boss, int phase, EnemyShoot enemy, EnemyMovement enemyMove)
    {
        endOfPhase = false;
        EnemyLib lib = GameController.gameControl.enemyLib;

        patterns.Clear();

        p1 = null;
        p2 = null;
        p3 = null;
        p4 = null;
        p5 = null;

        mp1 = null;
        mp2 = null;
        mp3 = null;
        mp4 = null;
        mp5 = null;
        GameController.gameControl.ui.UpdateTopPlayer("Boss" + enemy.wave.bossIndex + "_" + (phase));

//		Debug.Log ("executing phase " + phase);
        switch (boss)
        {
        case "Boss0.5":
            switch (phase)
            {
            case 0:
                enemy.NextBossPhase();
                break;

            case 1:
                GameController.gameControl.ui.UpdateTopPlayer(1f);

                enemy.enemyLife.SetInvulnerable(true);
                p1 = new Pattern(lib.spiral);
                p1.Customize(new BulletMovementPattern(true, "WaitAndExplode", 5f, p1, 0, 14));
                p1.Customize("LoopCircles", 1440);
                p1.Customize("BulletCount", 100);
                p1.SetSprite("Circle", "Glow", "Green");

                p2 = new Pattern(lib.maelStrom);
                p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14));
                p2.Customize("RotationDirection", 1);
                p2.SetSprite("Circle", "Glow", "Green");

                p3 = new Pattern(lib.maelStrom);
                p3.SetSprite("Circle", "Glow", "Yellow");
                p3.Customize(new BulletMovementPattern(true, "Explode", 6f, p3, 0, 14));
                p3.Customize("RotationDirection", -1);

                mp1 = new EnemyMovementPattern(lib.centerHor);
                mp1.Customize("Speed", 7f);

                enemyMove.SetUpPatternAndMove(mp1);
                for (int i = 0; i < 5; i++)
                {
                    yield return(new WaitForSeconds(2f));

                    enemy.BossShoot(p2);
                    enemy.BossShoot(p3);
                    yield return(new WaitForSeconds(2.2f));

                    p2.stop = true;
                    p3.stop = true;
                }

                mp1 = new EnemyMovementPattern("Leaving", new Vector3(lib.centerX, 13, 0), false, 0);
                enemyMove.SetUpPatternAndMove(mp1);
                yield return(new WaitForSeconds(2f));

                enemy.enemyLife.Die();


                p2.stop = true;
                p3.stop = true;


                break;
            }
            break;

        //BOSS 1 - FOREST GUARDIAN
        case "Boss1":
            switch (phase)
            {
            case 0:
                p1 = new Pattern(lib.spiral);
                p1.Customize(new BulletMovementPattern(true, "WaitAndExplode", 5f, p1, 0, 14));
                p1.Customize("LoopCircles", 1440);
                p1.Customize("BulletCount", 100);
                p1.SetSprite("Circle", "Glow", "Green");

                p2 = new Pattern(lib.maelStrom);
                p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14));
                p2.Customize("RotationDirection", 1);
                p2.SetSprite("Circle", "Glow", "Green");

                p3 = new Pattern(lib.maelStrom);
                p3.SetSprite("Circle", "Glow", "Yellow");
                p3.Customize(new BulletMovementPattern(true, "Explode", 6f, p3, 0, 14));
                p3.Customize("RotationDirection", -1);

                mp1 = new EnemyMovementPattern(lib.centerHor);
                mp1.Customize("Speed", 7f);
                mp2 = new EnemyMovementPattern(lib.rocking);
                mp2.Customize("Speed", 7f);

                while (!endOfPhase)
                {
                    enemyMove.SetUpPatternAndMove(mp1);
                    yield return(new WaitForSeconds(2f));

                    enemy.BossShoot(p2);
                    enemy.BossShoot(p3);
                    yield return(new WaitForSeconds(2.2f));

                    p2.stop = true;
                    p3.stop = true;
                    if (endOfPhase)
                    {
                        break;
                    }
                    enemyMove.SetUpPatternAndMove(new EnemyMovementPattern(lib.rocking));
                    yield return(new WaitForSeconds(1f));

                    enemy.BossShoot(p1);
                    yield return(new WaitForSeconds(2.2f));

                    enemy.BossShoot(p1);
                    yield return(new WaitForSeconds(3f));
                }
                p2.stop = true;
                p3.stop = true;
                break;

            case 1:
                GameController.gameControl.sound.PlaySpellSound("Enemy");
                GameController.gameControl.ui.ShowActivatedPhase("Boss", "Justice Seal: Ninetailed Spear");

                p1 = new Pattern(lib.curtain);
                p1.Customize("BulletCount", 9);
                p1.SetSprite("Circle", "Bevel", "Lilac");
                p1.Customize(new BulletMovementPattern(false, "TurnToSpears", 6f, p1, 0, 14));

                p2 = new Pattern(lib.maelStrom);
                p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14));
                p2.Customize("RotationDirection", 1);
                p2.SetSprite("Circle", "Glow", "Green");

                p3 = new Pattern(lib.maelStrom);
                p3.SetSprite("Circle", "Glow", "Yellow");
                p3.Customize(new BulletMovementPattern(true, "Explode", 4f, p3, 0, 14));
                p3.Customize("RotationDirection", -1);

                mp1 = new EnemyMovementPattern("", new Vector3(-15, 6f, 0f), false, 0);
                mp1.Customize("Speed", 7f);

                mp2 = new EnemyMovementPattern("", new Vector3(1, 6, 0), false, 0);
                mp2.Customize("Speed", 7f);



                enemyMove.SetUpPatternAndMove(mp1);
                yield return(new WaitForSeconds(2.2f));

                while (!endOfPhase)
                {
                    yield return(new WaitUntil(() => mp1.CheckIfReachedDestination(enemyMove) == true));

                    enemyMove.SetUpPatternAndMove(mp2);
                    enemy.BossShoot(p1);
                    yield return(new WaitUntil(() => mp1.CheckIfReachedDestination(enemyMove) == true));

                    yield return(new WaitForSeconds(1f));

                    enemy.BossShoot(p2);
                    enemy.BossShoot(p3);
                    yield return(new WaitForSeconds(2.2f));

                    p2.stop = true;
                    p3.stop = true;
                    yield return(new WaitForSeconds(1f));

                    enemyMove.SetUpPatternAndMove(mp1);
                    enemy.BossShoot(p1);
                    yield return(new WaitUntil(() => mp1.CheckIfReachedDestination(enemyMove) == true));

                    yield return(new WaitForSeconds(1f));

                    enemy.BossShoot(p2);
                    enemy.BossShoot(p3);
                    yield return(new WaitForSeconds(2.2f));

                    p2.stop = true;
                    p3.stop = true;
                    yield return(new WaitForSeconds(1f));
                }

                break;

            case 2:
                mp1 = new EnemyMovementPattern("", new Vector3(lib.centerX + 4f, enemy.transform.position.y, 0), false, 0);
                mp1.Customize("Teleport", 1);
                mp2 = new EnemyMovementPattern("", new Vector3(lib.centerX - 4f, enemy.transform.position.y, 0), false, 0);
                mp2.Customize("Teleport", 1);

                while (!endOfPhase)
                {
                    enemyMove.SetUpPatternAndMove(mp1);
                    yield return(new WaitForSeconds(5f));

                    enemyMove.SetUpPatternAndMove(mp2);
                    yield return(new WaitForSeconds(5f));
                }
                break;

            case 3:
                /*p2 = new Pattern (lib.maelStrom);
                 * p2.Customize (new BulletMovementPattern (true, "Explode", 6f, p2, 0, 14));
                 * p2.Customize ("RotationDirection", 1);
                 * p2.SetSprite ("Circle", "Glow", "Green");
                 *
                 * p3 = new Pattern (lib.maelStrom);
                 * p3.SetSprite ("Circle", "Glow", "Yellow");
                 * p3.Customize (new BulletMovementPattern (true, "Explode", 6f, p3, 0, 14));
                 * p3.Customize ("RotationDirection", -1);*/
                GameController.gameControl.ui.ShowActivatedPhase("Boss", "Guardian Seal: Fox Fires");

                p1 = new Pattern("Cluster", true, 150, 0, 0.01f, 0, 1f);
                p1.SetSprite("Fireball", "Glow", "Orange");

                p2 = new Pattern(lib.maelStrom);
                p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14));
                p2.Customize("RotationDirection", 1);
                p2.SetSprite("Circle", "Big", "Red");
                p2.Customize("BulletCount", 6);
                p2.Customize("CoolDown", .5f);

                mp1 = new EnemyMovementPattern("Swing", new Vector3(-13, enemy.transform.position.y, 0), false, 0);
                mp1.Customize("Speed", 5f);
                mp1.Customize("Direction", 1);

                mp2 = new EnemyMovementPattern("", new Vector3(lib.centerX, lib.centerY, 0), false, 0);

                while (!endOfPhase)
                {
                    enemyMove.SetUpPatternAndMove(mp1);
                    yield return(new WaitForSeconds(2f));

                    enemy.BossShoot(p1);
                    yield return(new WaitForSeconds(4f));

                    mp1.Customize("Speed", 7f);

                    enemyMove.SetUpPatternAndMove(mp2);
                    yield return(new WaitForSeconds(1f));

                    enemy.BossShoot(p2);

                    yield return(new WaitForSeconds(4f));

                    p2.stop = true;
                }
                //mp1.Customize ("Speed", 1f);
                break;
            }
            break;


        //BOSS 2 - SPIDER BOSS
        case "Boss2":
            switch (phase)
            {
            case 0:
                p1 = lib.singleHoming;
                p1.Customize(new BulletMovementPattern(true, null, 0.5f, p1, 0, 14));
                p1.SetSprite("Circle", "Big", "Red");

                p2 = lib.maelStrom;
                p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14));
                p2.SetSprite("Diamond", "Glow", "Red");

                enemy.BossShoot(p2);
                while (!endOfPhase)
                {
                    if (endOfPhase)
                    {
                        break;
                    }

                    enemy.BossShoot(p1);
                    yield return(new WaitForSeconds(1f));
                }
                break;

            case 1:
                enemyMove.SetUpPatternAndMove(GameController.gameControl.enemyLib.centerHor);
                GameController.gameControl.ui.ShowActivatedPhase("Boss", "Dark Core: Web of Lies");

                p1 = new Pattern(lib.giantWeb);
                p2 = lib.maelStrom;
                p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14));
                p2.SetSprite("Diamond", "Glow", "Red");

                enemy.BossShoot(p2);
                while (!endOfPhase)
                {
                    enemy.BossShoot(p1);
                    yield return(new WaitForSeconds(10));
                }
                endOfPhase = true;
                break;

            case 2:

                yield return(new WaitForSeconds(2f));


                p1 = new Pattern(lib.spiral);
                p1.Customize(new BulletMovementPattern(true, "WaitAndExplode", 6f, p1, 0, 14));
                p1.SetSprite("Diamond", "Glow", "Red");
                p2 = lib.spiderWeb;
                p2.Customize(new BulletMovementPattern(false, "DownAndExplode", 0.5f, p2, 0, 14));
                p2.SetSprite("Circle", "Glow", "Red");
                while (!endOfPhase)
                {
                    for (int i = 0; i < 2; i++)
                    {
                        enemy.BossShoot(p1);
                        p1.SetSprite("Circle", "Glow", "Yellow");
                        yield return(new WaitForSeconds(2f));

                        enemy.BossShoot(p1);
                        p1.SetSprite("Circle", "Glow", "Green");
                    }
                    yield return(new WaitForSeconds(2f));

                    enemyMove.SetUpPatternAndMove(new EnemyMovementPattern(GameController.gameControl.enemyLib.rocking));
                    for (int i = 0; i < 4; i++)
                    {
                        enemy.BossShoot(p2);
                        yield return(new WaitForSeconds(1f));

                        enemy.BossShoot(p1);
                        yield return(new WaitForSeconds(1f));
                    }
                }
                break;

            case 3:
                enemyMove.SetUpPatternAndMove(new EnemyMovementPattern(GameController.gameControl.enemyLib.centerHor));
                yield return(new WaitForSeconds(2f));

                GameController.gameControl.ui.ShowActivatedPhase("Boss", "Dark Core: Weave Misfortune");

                p1 = lib.laser;
                p1.Customize("BulletCount", 6);
                p1.SetSprite("Circle", "Glow", "White");
                p2 = lib.giantWeb;

                while (!endOfPhase)
                {
                    for (int i = 0; i < 12; i++)
                    {
                        enemy.BossShoot(p1);
                        yield return(new WaitForSeconds(1f));
                    }
                    enemy.BossShoot(p2);
                    yield return(new WaitForSeconds(2f));
                }
                break;
            }
            break;
        }
    }
    public IEnumerator Execute(EnemyMovement _m)
    {
        m = _m;
        Vector3 vector = new Vector3(targetPos.x, targetPos.y, 0f);

        centerPoint = m.transform.position;
        lib         = GameController.gameControl.enemyLib;

        m.floating    = false;
        m.teleporting = false;

        if (teleport)
        {
            m.teleporting = true;
            m.GetComponent <SpriteRenderer> ().enabled = false;
        }

        if (name == "CenterHor")
        {
            vector.y = _m.transform.position.y;
        }
        else if (name == "CenterVer")
        {
            vector.x = _m.transform.position.x;
        }

        UpdateDirection(vector.x, vector.y);

        if (teleport)
        {
            yield return(new WaitUntil(() => CheckIfReachedDestination(m) == true));

            m.GetComponent <SpriteRenderer> ().enabled = true;
            m.teleporting = false;
        }



        switch (name)
        {
        case "ZigZag":          //Repeatable
            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            UpdateDirection(-14f, 6f);
            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            UpdateDirection(10f, 2f);
            break;

        case "SnakeRightToLeft":         //Repeatable
            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            if (leaveDir == "Right")
            {
                UpdateDirection(2f, 6f);
            }
            else
            {
                UpdateDirection(-12f, 6f);
            }

            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            if (leaveDir == "Right")
            {
                UpdateDirection(lib.farRight, 6f);
            }
            else
            {
                UpdateDirection(lib.farLeft, 6f);
            }
            break;

        case "EnterLeave":
            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            //_m.Animate ("Float");
            if (stayTime > 0)
            {
                yield return(new WaitForSeconds(stayTime));

                //if (leaveDir == "Left")
                UpdateDirection(-20f, 6f);
                //else if (leaveDir == "Right")
                //	UpdateDirection (10f, 6f);
                //else if (leaveDir == "Up")
                //	UpdateDirection (lib.centerX, 13f);
            }
            break;

        case "Rocking":
            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            UpdateDirection(-11f, 8f);
            yield return(new WaitUntil(() => CheckIfReachedDestination(_m) == true));

            break;

        case "Swing":
            centerPoint = new Vector3(-6, 13, 0);
            yield return(new WaitForSeconds(1f));

            rotation = m.transform.rotation;
            _RotateOnAxis(50f * speed);
            yield return(new WaitForSeconds(4f));

            rotateOnAxis = false;
            m.moving     = false;
            break;

        case "SwipeLeftToRight":
            yield return(new WaitForSeconds(2f));

            while (!_m.GetComponent <Phase> ().endOfPhase)
            {
                UpdateDirection(1f, 6f);
                yield return(new WaitForSeconds(5f));

                UpdateDirection(vector.x, vector.y);
                yield return(new WaitForSeconds(5f));
            }
            break;

        case "Leaving":
            yield return(new WaitForSeconds(4f));

            //GameObject.Destroy (_m.gameObject);
            break;

        default:
            break;
        }
    }