Exemplo n.º 1
0
        /// <summary>
        /// Animates each enemy and allow them to kill the player.
        /// </summary>
        public void PlayerAndEnemy(LevelPlayer player, Character enemy, GameTime gameTime)
        {
            if (player.oneFrame.Intersects(enemy.BoundingRectangle))
            {
                //Enemy will stop walking, if their bounding box intersect with player and they are not doing some speical animation
                if (enemy.SpecialAnimationDone || enemy == Statics.Level.Boss)
                {
                    if (enemy.MoveState != Enums.MoveState.Fall && enemy.MoveState != Enums.MoveState.FireFall && enemy.MoveState != Enums.MoveState.FireReaction)
                    {
                        enemy.movement = 0;
                    }
                }

                // Resolve the collision along the X axis between player and enemy, player is not allow to go through the enemy.
                Vector2 depth = RectangleExtensions.GetIntersectionDepth(player.BoundingRectangle, enemy.BoundingRectangle);
                player.Position = new Vector2(player.Position.X + depth.X, player.Position.Y);

                if (player.MoveState == Enums.MoveState.SpecialCombo)
                {
                    if (enemy == Statics.Level.Boss)
                    {
                        enemy.MoveState = Enums.MoveState.Fall;
                    }
                    else
                    {
                        enemy.MoveState = Enums.MoveState.FireFall;
                    }

                    enemy.SpecialAnimationDone = false;
                    if (!player.AttackOnce)
                    {
                        enemy.Health     -= player.AttackStrength;
                        player.Health    -= 3;
                        player.AttackOnce = true;
                    }
                    player.movement = 0;
                }

                if (PerPixel.Collision(player.oneFrame, player.ColorData, enemy.oneFrame, enemy.ColorData))
                {
                    //Placing this test outside of the Intersects test ensures the player will be capable of damage from every enemy punch
                    //This resolves the problem of only once damage per time the player entered the bounding Rectangle of the enemy.

                    if (!player.AttackOnce &&
                        enemy.MoveState != Enums.MoveState.FinalCombo2 &&
                        (player.ComboCount > 0 ||
                         player.Health <= 0.2 * player.fullHealth))
                    {
                        switch (player.MoveState)
                        {
                        case Enums.MoveState.Punch:
                            enemy.MoveState = Enums.MoveState.Reaction;
                            enemy.Health   -= player.AttackStrength;
                            enemy.hurtCount++;
                            player.CountActions += 6;
                            player.punchHurtCount++;
                            break;

                        case Enums.MoveState.PunchUp:
                            enemy.MoveState      = Enums.MoveState.Fall;
                            enemy.Health        -= player.AttackStrength;
                            enemy.hurtCount     += 2;
                            player.CountActions += 6;
                            break;

                        case Enums.MoveState.Kick:
                            enemy.MoveState = Enums.MoveState.Reaction;
                            enemy.Health   -= player.AttackStrength;
                            enemy.hurtCount++;
                            player.kickHurtCount++;
                            player.CountActions += 10;
                            break;

                        case Enums.MoveState.ComboKick:
                            enemy.MoveState      = Enums.MoveState.Fall;
                            enemy.Health        -= 2 * player.AttackStrength;
                            enemy.hurtCount     += 2;
                            player.CountActions += 20;
                            break;

                        case Enums.MoveState.FirePunch1:
                            enemy.MoveState      = Enums.MoveState.FireReaction;
                            enemy.Health        -= 2 * player.AttackStrength;
                            player.CountActions += 15;
                            break;

                        case Enums.MoveState.FirePunch2:
                            enemy.MoveState      = Enums.MoveState.FireReaction;
                            enemy.Health        -= 2 * player.AttackStrength;
                            player.CountActions += 15;
                            break;

                        case Enums.MoveState.FirePunch3:
                            enemy.MoveState      = Enums.MoveState.FireFall;
                            enemy.Health        -= 2 * player.AttackStrength;
                            player.CountActions += 15;
                            break;

                        case Enums.MoveState.FinalCombo2:
                            enemy.MoveState = Enums.MoveState.FireFall;
                            enemy.Health   -= 4 * player.AttackStrength;
                            player.ComboCount--;
                            break;
                        }

                        enemy.hurtSound.Play();
                        player.AttackOnce          = true;
                        enemy.SpecialAnimationDone = false;
                        HitTime = gameTime.TotalRealTime;
                    }

                    if (!enemy.AttackOnce && player.SpecialAnimationDone)
                    {
                        if (enemy == Statics.Level.Boss)
                        {
                            switch (enemy.MoveState)
                            {
                            case Enums.MoveState.Punch:
                                player.MoveState = Enums.MoveState.Fall;
                                player.Health   -= enemy.AttackStrength;
                                enemy.hitCount++;
                                break;

                            case Enums.MoveState.FinalCombo2:
                                player.MoveState = Enums.MoveState.Fall;
                                player.Health   -= 2 * enemy.AttackStrength;
                                break;
                            }
                        }
                        else
                        {
                            switch (enemy.MoveState)
                            {
                            case Enums.MoveState.FinalCombo1:
                                player.MoveState = Enums.MoveState.Reaction;
                                player.Health   -= enemy.AttackStrength;
                                enemy.hitCount++;
                                break;

                            case Enums.MoveState.FinalCombo2:
                                player.MoveState = Enums.MoveState.Fall;
                                player.Health   -= 2 * enemy.AttackStrength;
                                break;
                            }
                        }

                        player.SpecialAnimationDone = false;
                        enemy.hurtSound.Play();
                        enemy.AttackOnce = true;
                    }
                }
            }
            //If no intersection between player rectangle and enemy rectangle frame
            //Add enemy movement towards player here...
            else
            {
                if (enemy.SpecialAnimationDone)
                {
                    if (enemy == Statics.Level.Boss)
                    {
                        enemy.movement = 200;
                    }
                    else
                    {
                        enemy.movement = 65f;
                    }
                    enemy.MoveState = Enums.MoveState.Walk;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Updates the player's move based on input.
        /// </summary>
        public void UpdatePlayerMove(GameTime gameTime, LevelPlayer player)
        {
            if (player.Health > 0)
            {
                ApplyPhysics(gameTime, player);

                switch (player.MoveState)
                {
                case Enums.MoveState.Run:
                    if (Math.Abs(player.Velocity.X) - 0.02f > 0 && player.IsOnGround)
                    {
                        player.sprite.PlayAnimation(player.runAnimation);
                    }
                    break;

                case Enums.MoveState.Punch:
                    player.movement = 0;
                    player.sprite.PlayAnimation(player.punchAnimation);
                    if (!soundPlayed)
                    {
                        player.HitSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.PunchUp:
                    player.sprite.PlayAnimation(player.punchUpAnimation);
                    player.movement = 0.1f;
                    if (!soundPlayed)
                    {
                        player.HitSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.Kick:
                    player.sprite.PlayAnimation(player.kickAnimation);
                    player.movement = 0;
                    if (!soundPlayed)
                    {
                        player.HitSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.ComboKick:
                    player.sprite.PlayAnimation(player.comboKickAnimation);
                    player.movement = 0.1f;
                    if (!soundPlayed)
                    {
                        player.HitSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.FirePunch1:
                    player.sprite.PlayAnimation(player.firePunch1Animation);
                    player.movement       = 0.1f;
                    player.firePunchCount = 1;
                    if (!soundPlayed)
                    {
                        player.firePunchSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.FirePunch2:
                    player.sprite.PlayAnimation(player.firePunch2Animation);
                    player.movement       = 0.2f;
                    player.firePunchCount = 2;
                    if (!soundPlayed)
                    {
                        player.firePunchSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.FirePunch3:
                    player.sprite.PlayAnimation(player.firePunch3Animation);
                    player.movement       = 0.2f;
                    player.firePunchCount = 0;
                    player.chainMoves.Clear();
                    if (!soundPlayed)
                    {
                        player.firePunchSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.SpecialCombo:
                    player.sprite.PlayAnimation(player.specialAnimation);
                    if (!soundPlayed)
                    {
                        player.HitSound.Play();
                        soundPlayed = true;
                    }
                    break;

                case Enums.MoveState.FinalCombo2:
                    if (player.ComboCount > 0 ||
                        player.Health <= 0.2 * player.fullHealth)
                    {
                        player.sprite.PlayAnimation(player.finalCombo2Animation);
                        player.movement = 0.2f;
                        if (!soundPlayed)
                        {
                            player.finalComboSound.Play();
                            soundPlayed = true;
                        }
                    }
                    break;

                case Enums.MoveState.Reaction:
                    player.sprite.PlayAnimation(player.reactionAnimation);
                    player.movement = -0.1f;
                    break;

                case Enums.MoveState.Fall:
                    player.sprite.PlayAnimation(player.fallAnimation);
                    player.movement = -0.4f;
                    break;

                case Enums.MoveState.Upgrade:
                    player.movement = 0;
                    player.sprite.PlayAnimation(player.upgradeAnimation);
                    break;

                case Enums.MoveState.Idle:
                    if (player.IsOnGround)
                    {
                        player.movement = 0;
                        player.sprite.PlayAnimation(player.idleAnimation);
                    }
                    break;
                }

                // Clear input.
                if ((player.sprite.FrameIndex == player.sprite.animation.FrameCount - 1) &&
                    player.SpecialAnimationDone == false)
                {
                    soundPlayed = false;
                    player.SpecialAnimationDone = true;
                }

                if (player.SpecialAnimationDone)
                {
                    player.movement  = 0.0f;
                    player.MoveState = Enums.MoveState.Idle;

                    if (player.punchHurtCount == 2 || player.kickHurtCount == 2)
                    {
                        if (player.punchHurtCount == 2)
                        {
                            player.MoveState      = Enums.MoveState.PunchUp;
                            player.punchHurtCount = 0;
                        }

                        if (player.kickHurtCount == 2)
                        {
                            player.MoveState     = Enums.MoveState.ComboKick;
                            player.kickHurtCount = 0;
                        }

                        player.movement             = 10f;
                        player.SpecialAnimationDone = false;
                        player.AttackOnce           = false;
                    }
                }

                player.isJumping = false;
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Called when this gem has been collected by a player and removed from the level.
 /// </summary>
 /// <param name="collectedBy">
 /// The player who collected this gem. Although currently not used, this parameter would be
 /// useful for creating special powerup gems. For example, a gem could make the player invincible.
 /// </param>
 public void OnCollected(LevelPlayer collectedBy)
 {
     hitSound.Play();
 }
Exemplo n.º 4
0
        /// <summary>
        /// Updates the player's move based on input.
        /// </summary>
        public void UpdatePlayerMove(GameTime gameTime, LevelPlayer player)
        {
            if (player.Health > 0)
            {
                ApplyPhysics(gameTime, player);

                switch (player.MoveState)
                {
                    case Enums.MoveState.Run:
                        if (Math.Abs(player.Velocity.X) - 0.02f > 0 && player.IsOnGround)
                            player.sprite.PlayAnimation(player.runAnimation);
                        break;
                    case Enums.MoveState.Punch:
                        player.movement = 0;
                        player.sprite.PlayAnimation(player.punchAnimation);
                        if (!soundPlayed)
                        {
                            player.HitSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.PunchUp:
                        player.sprite.PlayAnimation(player.punchUpAnimation);
                        player.movement = 0.1f;
                        if (!soundPlayed)
                        {
                            player.HitSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.Kick:
                        player.sprite.PlayAnimation(player.kickAnimation);
                        player.movement = 0;
                        if (!soundPlayed)
                        {
                            player.HitSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.ComboKick:
                        player.sprite.PlayAnimation(player.comboKickAnimation);
                        player.movement = 0.1f;
                        if (!soundPlayed)
                        {
                            player.HitSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.FirePunch1:
                        player.sprite.PlayAnimation(player.firePunch1Animation);
                        player.movement = 0.1f;
                        player.firePunchCount = 1;
                        if (!soundPlayed)
                        {
                            player.firePunchSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.FirePunch2:
                        player.sprite.PlayAnimation(player.firePunch2Animation);
                        player.movement = 0.2f;
                        player.firePunchCount = 2;
                        if (!soundPlayed)
                        {
                            player.firePunchSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.FirePunch3:
                        player.sprite.PlayAnimation(player.firePunch3Animation);
                        player.movement = 0.2f;
                        player.firePunchCount = 0;
                        player.chainMoves.Clear();
                        if (!soundPlayed)
                        {
                            player.firePunchSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.SpecialCombo:
                        player.sprite.PlayAnimation(player.specialAnimation);
                        if (!soundPlayed)
                        {
                            player.HitSound.Play();
                            soundPlayed = true;
                        }
                        break;
                    case Enums.MoveState.FinalCombo2:
                        if (player.ComboCount > 0 ||
                            player.Health <= 0.2 * player.fullHealth)
                         {
                             player.sprite.PlayAnimation(player.finalCombo2Animation);
                             player.movement = 0.2f;
                             if (!soundPlayed)
                             {
                                 player.finalComboSound.Play();
                                 soundPlayed = true;
                             }
                        }
                        break;
                    case Enums.MoveState.Reaction:
                        player.sprite.PlayAnimation(player.reactionAnimation);
                        player.movement = -0.1f;
                        break;
                    case Enums.MoveState.Fall:
                        player.sprite.PlayAnimation(player.fallAnimation);
                        player.movement = -0.4f ;
                        break;
                    case Enums.MoveState.Upgrade:
                        player.movement = 0;
                        player.sprite.PlayAnimation(player.upgradeAnimation);
                        break;
                    case Enums.MoveState.Idle:
                        if (player.IsOnGround)
                        {
                            player.movement = 0;
                            player.sprite.PlayAnimation(player.idleAnimation);
                        }
                        break;
                }

                // Clear input.
                if ((player.sprite.FrameIndex == player.sprite.animation.FrameCount - 1) &&
                    player.SpecialAnimationDone == false)
                {
                    soundPlayed = false;
                    player.SpecialAnimationDone = true;
                }

                if (player.SpecialAnimationDone)
                {
                    player.movement = 0.0f;
                    player.MoveState = Enums.MoveState.Idle;

                    if (player.punchHurtCount == 2 || player.kickHurtCount == 2)
                    {
                        if (player.punchHurtCount == 2)
                        {
                            player.MoveState = Enums.MoveState.PunchUp;
                            player.punchHurtCount = 0;
                        }

                        if (player.kickHurtCount == 2)
                        {
                            player.MoveState = Enums.MoveState.ComboKick;
                            player.kickHurtCount = 0;
                        }

                        player.movement = 10f;
                        player.SpecialAnimationDone = false;
                        player.AttackOnce = false;
                    }
                }

                player.isJumping = false;
            }
        }
Exemplo n.º 5
0
        public FactoryIF getFactory(int level)
        {
            if (level.Equals(1))
            {
                return(new LevelOneFactory());
            }
            else if (level.Equals(2))
            {
                return(new LevelTwoFactory());
            }
            else if (level.Equals(3))
            {
                return(new LevelThreeFactory());
            }
            else if (level.Equals(4))
            {
                return(new LevelFourFactory());
            }
            else if (level.Equals(5))
            {
                return(new LevelFiveFactory());
            }
            else
            {
                try
                {
                    LevelPlayer player = LevelPlayer.getInstance();
                    string      dlevel = player.getFile();
                    String      code;
                    String      line;
                    //Pass the file path and file name to the StreamReader constructor

                    StreamReader sr = new StreamReader(dlevel);

                    //Read the first line of text
                    line = sr.ReadLine();
                    code = line;
                    //Continue to read until you reach end of file
                    while (line != null)
                    {
                        //Read the next line
                        line = sr.ReadLine();
                        code = code + "\n" + line;
                    }

                    //close the file
                    sr.Close();

                    Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
                    ICodeCompiler compiler = provider.CreateCompiler();
                    System.CodeDom.Compiler.CompilerParameters compilerparams = new CompilerParameters();
                    compilerparams.GenerateExecutable = false;
                    compilerparams.GenerateInMemory   = true;
                    compilerparams.ReferencedAssemblies.Add("System.dll");
                    compilerparams.ReferencedAssemblies.Add("System.Core.dll");
                    compilerparams.ReferencedAssemblies.Add(typeof(Program).Assembly.Location);
                    CompilerResults results  = compiler.CompileAssemblyFromSource(compilerparams, code);
                    Assembly        compiled = null;
                    if (results.Errors.HasErrors)
                    {
                        StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
                        foreach (CompilerError error in results.Errors)
                        {
                            errors.AppendFormat("Line {0},{1}\t: {2}\n",
                                                error.Line, error.Column, error.ErrorText);
                        }
                        throw new Exception(errors.ToString());
                    }
                    else
                    {
                        compiled = results.CompiledAssembly;
                    }
                    int last = dlevel.LastIndexOf('\\');
                    last += 1;
                    Type      type   = compiled.GetType("WordBlaster.AbstractFactory." + dlevel.Substring(last, (dlevel.Count() - last - 4)));
                    FactoryIF dynlvl = (FactoryIF)Activator.CreateInstance(type);
                    return(dynlvl);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Could not load file, starting normally...");
                    return(new LevelOneFactory()); //if we could not load it in just start normally
                }
            }
        }
Exemplo n.º 6
0
 public LevelPlayer(LevelPlayer original)
 {
     this.initialize(original.source);
     this.copyFrom(original);
 }