예제 #1
0
파일: Combat.cs 프로젝트: DJ-Games/DJ-Games
        public void HandleButtons(Player player)
        {
            if (SingleMouseClick())
            {
                switch (combatState)
                {
                case CombatState.ENEMYHEALTHROLL:

                    if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672)
                    {
                        monsterHealth = player.DungeonArea + player.playerDice.RollDice();
                        combatState   = CombatState.ROLLDIE;
                    }

                    break;

                case CombatState.ROLLDIE:

                    if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672)
                    {
                        combatState = CombatState.ROLLANIMATION;
                    }

                    break;

                case CombatState.RESOLVEDIE:

                    if (CombatDice["Combat Die 1"].Active)
                    {
                        if (XPos > 550 && XPos < 650 && YPos > 300 && YPos < 400 && (!CombatDice["Combat Die 1"].FeatUsed || CombatDice["Combat Die 1"].CritRollAvailable))
                        {
                            if (!CombatDice["Combat Die 1"].CritRollAvailable)
                            {
                                CombatDice["Combat Die 1"].FeatUsed  = true;
                                CombatDice["Combat Die 1"].NeedsRoll = true;
                            }
                            InUseDie    = 1;
                            combatState = CombatState.USEFEAT;
                        }
                    }
                    if (CombatDice["Combat Die 2"].Active)
                    {
                        if (XPos > 735 && XPos < 835 && YPos > 300 && YPos < 400 && (!CombatDice["Combat Die 2"].FeatUsed || CombatDice["Combat Die 2"].CritRollAvailable))
                        {
                            if (!CombatDice["Combat Die 2"].CritRollAvailable)
                            {
                                CombatDice["Combat Die 2"].FeatUsed  = true;
                                CombatDice["Combat Die 2"].NeedsRoll = true;
                            }
                            InUseDie    = 2;
                            combatState = CombatState.USEFEAT;
                        }
                    }
                    if (CombatDice["Combat Die 3"].Active)
                    {
                        if (XPos > 920 && XPos < 1020 && YPos > 300 && YPos < 400 && !CombatDice["Combat Die 3"].FeatUsed)
                        {
                            if (!CombatDice["Combat Die 3"].CritRollAvailable)
                            {
                                CombatDice["Combat Die 3"].FeatUsed  = true;
                                CombatDice["Combat Die 3"].NeedsRoll = true;
                            }
                            InUseDie    = 3;
                            combatState = CombatState.USEFEAT;
                        }
                    }
                    if (CombatDice["Combat Die 4"].Active)
                    {
                        if (XPos > 1105 && XPos < 1205 && YPos > 300 && YPos < 400 && !CombatDice["Combat Die 4"].FeatUsed)
                        {
                            if (!CombatDice["Combat Die 4"].CritRollAvailable)
                            {
                                CombatDice["Combat Die 4"].FeatUsed  = true;
                                CombatDice["Combat Die 4"].NeedsRoll = true;
                            }
                            InUseDie    = 4;
                            combatState = CombatState.USEFEAT;
                        }
                    }
                    if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672)
                    {
                        for (int i = 0; i < 3; i++)
                        {
                            CombatDice["Combat Die " + (i + 1)].FeatUsed = false;
                        }
                        combatState = CombatState.DEALDAMAGE;
                    }

                    break;

                case CombatState.USEFEAT:

                    AnimationCounter = 0;

                    if (CombatDice["Combat Die 1"].Active)
                    {
                        if (XPos > 550 && XPos < 650 && YPos > 300 && YPos < 400 && InUseDie == 1)
                        {
                            CombatDice["Combat Die 1"].FeatUsed  = false;
                            CombatDice["Combat Die 1"].NeedsRoll = false;
                            InUseDie    = 0;
                            combatState = CombatState.RESOLVEDIE;
                        }
                    }

                    if (CombatDice["Combat Die 2"].Active)
                    {
                        if (XPos > 735 && XPos < 835 && YPos > 300 && YPos < 400 && InUseDie == 2)
                        {
                            CombatDice["Combat Die 2"].FeatUsed  = false;
                            CombatDice["Combat Die 2"].NeedsRoll = false;
                            InUseDie    = 0;
                            combatState = CombatState.RESOLVEDIE;
                        }
                    }

                    if (CombatDice["Combat Die 3"].Active)
                    {
                        if (XPos > 920 && XPos < 1020 && YPos > 300 && YPos < 400 && InUseDie == 3)
                        {
                            CombatDice["Combat Die 3"].FeatUsed  = false;
                            CombatDice["Combat Die 3"].NeedsRoll = false;
                            InUseDie    = 0;
                            combatState = CombatState.RESOLVEDIE;
                        }
                    }

                    if (CombatDice["Combat Die 4"].Active)
                    {
                        if (XPos > 1105 && XPos < 1205 && YPos > 300 && YPos < 400 && InUseDie == 4)
                        {
                            CombatDice["Combat Die 4"].FeatUsed  = false;
                            CombatDice["Combat Die 4"].NeedsRoll = false;
                            InUseDie    = 0;
                            combatState = CombatState.RESOLVEDIE;
                        }
                    }

                    if (InUseDie != 0)
                    {
                        if (HealthFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable)
                        {
                            if (XPos > 600 && XPos < 848 && YPos > 600 && YPos < 672)
                            {
                                player.Health -= 2;
                                combatState    = CombatState.ROLLANIMATION;
                            }
                        }

                        if (ExperienceFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable)
                        {
                            if (XPos > 900 && XPos < 1148 && YPos > 600 && YPos < 672)
                            {
                                player.Experience--;
                                combatState = CombatState.ROLLANIMATION;
                            }
                        }

                        if (CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable)
                        {
                            if (XPos > 750 && XPos < 998 && YPos > 500 && YPos < 572)
                            {
                                combatState = CombatState.ROLLANIMATION;
                            }
                        }
                    }

                    break;

                case CombatState.DEALDAMAGE:

                    break;

                case CombatState.USESPELL:

                    if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672)
                    {
                        combatState = CombatState.DAMAGEPLAYER;
                    }

                    if (player.Spells.Count >= 1 && SpellUsedThisRound == false)
                    {
                        if (XPos > 1130 && XPos < 1175 && YPos > 20 && YPos < 65)
                        {
                            CastSpell(player.Spells[0].Name, player);
                            player.RemoveSpell(0);
                            if (MonsterHealth <= 0)
                            {
                                player.Experience += ExpReward;
                                player.Gold       += GoldReward;
                                combatState        = CombatState.RESULTS;
                            }
                        }
                    }


                    if (player.Spells.Count == 2 && SpellUsedThisRound == false)
                    {
                        if (XPos > 1180 && XPos < 1225 && YPos > 20 && YPos < 65)
                        {
                            CastSpell(player.Spells[1].Name, player);
                            player.RemoveSpell(1);
                            if (MonsterHealth <= 0)
                            {
                                player.Experience += ExpReward;
                                player.Gold       += GoldReward;
                                combatState        = CombatState.RESULTS;
                            }
                        }
                    }



                    break;

                case CombatState.DAMAGEPLAYER:

                    break;

                case CombatState.RESULTS:

                    if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672)
                    {
                        combatState = CombatState.COMPLETE;
                    }
                    break;


                default:
                    break;
                }
            }
        }
예제 #2
0
파일: Combat.cs 프로젝트: DJ-Games/DJ-Games
        public void DrawCombat(SpriteBatch sBatch, SpriteFont dungeonFont)
        {
            if (combatState != CombatState.ENEMYHEALTHROLL)
            {
                sBatch.DrawString(dungeonFont, "Monster Health: " + monsterHealth, new Vector2(715, 100), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
            }

            switch (combatState)
            {
            case CombatState.ENEMYHEALTHROLL:

                sBatch.Draw(CombatButtons["Roll Die"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                sBatch.DrawString(dungeonFont, "Roll For Monster Health", new Vector2(665, 150), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);

                break;

            case CombatState.ROLLDIE:

                sBatch.Draw(CombatButtons["Roll Die"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                sBatch.DrawString(dungeonFont, "Roll Combat Dice", new Vector2(720, 150), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);

                break;

            case CombatState.ROLLANIMATION:

                if (CombatDice["Combat Die 1"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(550, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 2"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(735, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 3"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(920, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 4"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(1105, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                CombatDice["Combat Die 1"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 2"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 3"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 4"].DrawCombatDie(sBatch);

                break;

            case CombatState.RESOLVEDIE:

                if (CombatDice["Combat Die 1"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(550, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 2"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(735, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 3"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(920, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 4"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(1105, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                CombatDice["Combat Die 1"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 2"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 3"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 4"].DrawCombatDie(sBatch);

                if (CombatDice["Combat Die 1"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 1"].Roll.ToString(), new Vector2(585, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 2"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 2"].Roll.ToString(), new Vector2(770, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 3"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 3"].Roll.ToString(), new Vector2(955, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 4"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 4"].Roll.ToString(), new Vector2(1140, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                sBatch.Draw(CombatButtons["Accept Button"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);

                break;

            case CombatState.USEFEAT:

                if (CombatDice["Combat Die 1"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(550, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 2"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(735, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 3"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(920, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 4"].FeatUsed)
                {
                    sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(1105, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                CombatDice["Combat Die 1"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 2"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 3"].DrawCombatDie(sBatch);
                CombatDice["Combat Die 4"].DrawCombatDie(sBatch);

                if (CombatDice["Combat Die 1"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 1"].Roll.ToString(), new Vector2(585, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 2"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 2"].Roll.ToString(), new Vector2(770, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 3"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 3"].Roll.ToString(), new Vector2(955, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (CombatDice["Combat Die 4"].Active)
                {
                    sBatch.DrawString(dungeonFont, CombatDice["Combat Die 4"].Roll.ToString(), new Vector2(1140, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                }

                if (InUseDie != 0)
                {
                    if (HealthFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable)
                    {
                        sBatch.Draw(CombatButtons["Spend 2 HP Button"].ButtonTexture, new Vector2(600, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                    }

                    if (ExperienceFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable)
                    {
                        sBatch.Draw(CombatButtons["Spend 1 XP Button"].ButtonTexture, new Vector2(900, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                    }

                    if (CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable)
                    {
                        sBatch.Draw(CombatButtons["Crit Roll Button"].ButtonTexture, new Vector2(750, 500), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                    }
                }

                break;

            case CombatState.DEALDAMAGE:

                break;

            case CombatState.USESPELL:

                sBatch.DrawString(dungeonFont, "Click on a spell icon to use.", new Vector2(650, 250), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                sBatch.Draw(CombatButtons["Accept Button"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);

                break;

            case CombatState.DAMAGEPLAYER:

                break;

            case CombatState.RESULTS:

                sBatch.DrawString(dungeonFont, "You killed the monster", new Vector2(680, 250), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                sBatch.DrawString(dungeonFont, "You gained " + ExpReward + " EXP!", new Vector2(700, 300), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                sBatch.Draw(CombatButtons["Accept Button"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1);
                break;

            default:
                break;
            }
        }