public DamageEffect(int damage, Game1 game, Vector2 position, Color color, string type)
 {
     this.type = type;
     this.position = position;
     this.color = color;
     damageString = "" + damage;
 }
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 static void Main(string[] args)
 {
     using (Game1 game = new Game1())
     {
         game.Run();
     }
 }
 public void AddParticleSystem(Game1 game)
 {
     for (int i = 0; i < particleSystem.Length; i++)
     {
         particleSystem[i] = new ParticleSystem(game);
     }
 }
 public Key(Rectangle position, string key, Texture2D texture, string mapName, Game1 game)
 {
     this.key = key;
     this.position = position;
     this.mapName = mapName;
     this.texture = texture;
     label = new ItemLabel(new Rectangle(position.X, position.Y - 25, 0, 25), this.key.Length, game);
 }
 public ItemLabel(Rectangle position, int characters, Game1 game)
 {
     texture = game.Content.Load<Texture2D>(@"Game\itemLabel");
     side = game.Content.Load<Texture2D>(@"Game\labelSide");
     side2 = game.Content.Load<Texture2D>(@"Game\labelSide2");
     this.position = position;
     this.position.Width = (characters * 10) + 2;
 }
 public void CheckMap(Game1 game)
 {
     if (sourceMap == (Game1.map.mapName.Remove(Game1.map.mapName.Length - 1)))
     {
         isOnMap = true;
     }
     else
         isOnMap = false;
 }
 public void Draw(SpriteBatch spriteBatch, Game1 game)
 {
     if (isOnMap)
     {
         spriteBatch.Draw(game.collisionTex, warpField, new Color(200, 50, 200, 200));
     }
     spriteBatch.Draw(game.screenTexture, game.screen, game.screenColor);
     lockedDialogue.Draw(spriteBatch);
 }
 public void Draw(SpriteBatch spriteBatch, Game1 game)
 {
     if (type != "regen")
     {
         spriteBatch.DrawString(game.spriteFont, damageString, position, color);
     }
     else
         spriteBatch.DrawString(game.spriteFont, "+" + damageString, position, color);
 }
 public void Draw(SpriteBatch spriteBatch, Game1 game)
 {
     for (int x = 0; x < width; x++)
     {
         for (int y = 0; y < height; y++)
         {
             inventorySlot[x, y].Draw(spriteBatch, game);
         }
     }
 }
 public void Draw(SpriteBatch spriteBatch, Game1 game)
 {
     if (Game1.character.showInventory)
     {
         spriteBatch.Draw(texture, position, Color.White);
         if (itemTexture != null)
         {
             spriteBatch.Draw(itemTexture, new Rectangle(position.Center.X - itemTexture.Width / 2, position.Center.Y - itemTexture.Height / 2, itemTexture.Width, itemTexture.Height), Color.White);
         }
     }
 }
        public cWarp(string sourceMap, int sourceX, int sourceY, int width, int height, string targetMap, int targetX, int targetY, string key, Game1 game)
        {
            this.sourceMap = sourceMap;
            this.targetMap = targetMap;
            this.key = key;

            fileTargetX = targetX;
            fileTargetY = targetY;

            warpField = new Rectangle(sourceX, sourceY, width, height);
            lockedDialogue = new cDialogue(null, game.textBox, game, game.spriteFont, "doorLocked", "Door");
        }
Esempio n. 12
0
        public Key(Rectangle position, string key, string mapName, Game1 game)
        {
            this.key = key;
            this.position = position;
            this.mapName = mapName;

            if (key == "key 0")
            {
                texture = game.Content.Load<Texture2D>(@"Game\blackness");
            }
            if (key == "key 1")
            {
                texture = game.Content.Load<Texture2D>(@"Game\blackness");
            }
            if (key == "key 2")
            {
                texture = game.Content.Load<Texture2D>(@"Game\blackness");
            }
        }
 public Inventory(Game1 game)
 {
     inventorySlot = new InventorySlot[width, height];
     spacing *= 8;
     size *= 16;
     for (int x = 0; x < width; x++)
     {
         for (int y = 0; y < height; y++)
         {
             inventorySlot[x, y] = new InventorySlot(game);
         }
     }
     for (int x = 0; x < width; x++)
     {
         for (int y = 0; y < height; y++)
         {
             inventorySlot[x, y].position = new Rectangle(10 + (x * (10 + spacing)), 10 + (y * (10 + spacing)), size, size);
         }
     }
 }
 public void Effect(Game1 game)
 {
     doneEffect = false;
     canWalk = false;
     if (addAlpha)
     {
         game.screenColor.A += 6;
     }
     if (game.screenColor.A >= 252)
     {
         addAlpha = false;
     }
     if (!addAlpha)
     {
         game.screenColor.A -= 18;
     }
     if (!addAlpha && game.screenColor.A == 0)
     {
         doneEffect = true;
     }
 }
        public Dialogue(Texture2D portrait, Texture2D textBox, Game1 game, SpriteFont font, string dialogueFileName, string name)
        {
            this.portrait = portrait;
            this.textBox = textBox;
            this.font = font;
            this.name = name;

            int screenWidth = game.graphics.PreferredBackBufferWidth;
            int screenHeight = game.graphics.PreferredBackBufferHeight;
            if (portrait != null)
            {
                if (name == "Sylian")
                {
                    portraitPos = new Rectangle(screenWidth - 600, screenHeight - 720, 600, 720);
                }
                else
                    portraitPos = new Rectangle(screenWidth - 450, screenHeight - 720, 450, 720);
            }

            textBoxPos = new Rectangle(screenWidth / 2 - textBox.Width / 2, screenHeight - screenHeight / 4 - 150, textBox.Width, textBox.Height);

            dialogueManager = new DialogueManager(@"Content\npc\dialogue\" + dialogueFileName + ".txt");
            GetLines(0);
        }
 public ParticleSystemEmitter(Game1 game)
 {
     texture = game.Content.Load<Texture2D>(@"particle");
     rand = new Random();
 }
 public InventorySlot(Game1 game)
 {
     texture = game.Content.Load<Texture2D>(@"Player\emptySlot");
 }
 public void DeathEffect(Game1 game)
 {
     if (game.screenColor.A < 255)
     {
         game.screenColor.A += 5;
     }
 }
        public void Update(cCharacter player, Game1 game)
        {
            if (lockedDialogue.isTalking)
            {
                lockedDialogue.Update();
                if (lockedDialogue.isTalking == false)
                {
                    game.currentGameState = Game1.GameState.PLAY;
                }
            }
            if (targetX != -1)
            {
                targetX = fileTargetX;
            }
            else
                this.targetX = player.position.X;

            if (targetY != -1)
            {
                targetY = fileTargetY;
            }
            else
                this.targetY = player.position.Y;

            if (player.attackRectangle.Intersects(warpField))
            {
                Console.WriteLine("intersecting");
                bool hasKey = false;
                for (int x = 0; x < player.inventory.width; x++)
                {
                    for (int y = 0; y < player.inventory.height; y++)
                    {
                        if (player.inventory.inventorySlot[x, y].item == key || key == ".")
                        {
                            hasKey = true;
                            Effect(game);
                            if (doneEffect)
                            {
                                if (player.position.X < warpField.X)
                                {
                                    if (targetX != -1)
                                    {
                                        targetX += 2;
                                    }
                                }
                                Game1.map = game.Content.Load<H_Map.TileMap>(@"Map\" + targetMap);
                                Game1.map.tileset = game.Content.Load<Texture2D>(@"Game\tileset");
                                if (targetX != -1)
                                {
                                    player.position.X = targetX;
                                }
                                if (targetY != -1)
                                {
                                    player.position.Y = targetY;
                                }
                                addAlpha = true;
                                canWalk = true;
                            }
                        }
                    }
                }
                if (!hasKey && !hasShowedLockedMessage)
                {
                    game.currentGameState = Game1.GameState.INTERACT;
                    lockedDialogue.isTalking = true;
                    hasShowedLockedMessage = true;
                }
            }
            else
            {
                hasShowedLockedMessage = false;
            }
        }
 public void DrawDeath(SpriteBatch spriteBatch, Game1 game)
 {
     spriteBatch.Draw(game.screenTexture, game.screen, game.screenColor);
 }
 public void DrawHealthBar(SpriteBatch spriteBatch, Game1 game)
 {
     if (healthTexture != null)
     {
         spriteBatch.Draw(healthTexture, new Rectangle(healthPos.X, healthPos.Y, healthPos.Width - 2, healthPos.Height), Color.White);
         spriteBatch.Draw(healthBar, new Rectangle(healthPos.X - 7, healthPos.Y - 15, 64, 30), Color.White);
         for (int i = 0; i < damageEffectList.Count; i++)
         {
             damageEffectList[i].Draw(spriteBatch, game);
         }
     }
 }
 public void GetSword(Game.Items.Sword sword, Game1 game)
 {
     this.sword = new Game.Items.Sword(sword.swordName, sword.minDamage, sword.maxDamage);
     this.sword.SetSprite(sword.swordName, game);
 }
        public void Update(Game1 game, H_Map.TileMap tiles, GameTime gameTime, KeyboardState oldState, GraphicsDevice graphicsDevice)
        {
            #region Things to update every frame, positions and stuff
            healthPct = (health / maxHealth);
            healthBarWidth = (float)healthTexture.Width * healthPct;
            float elapsed = (float)gameTime.ElapsedGameTime.TotalMilliseconds;
            positionRectangle.X = (int)position.X;
            positionRectangle.Y = (int)position.Y;
            if (showInventory)
            {
                animation.PauseAnimation();
            }

            if (Game1.testBoss.attackPlayer)
            {
                if (!Game1.testBoss.enraged)
                {
                    if (positionRectangle.X + (positionRectangle.Width / 2) - 16 > bossTarget.X)
                    {
                        bossTarget.X += targetSpeed / 1.2f;
                    }
                    if (positionRectangle.X + (positionRectangle.Width / 2) - 16 < bossTarget.X)
                    {
                        bossTarget.X -= targetSpeed / 1.2f;
                    }
                    if (positionRectangle.Y + (positionRectangle.Width / 2) - 16 > bossTarget.Y)
                    {
                        bossTarget.Y += targetSpeed / 1.2f;
                    }
                    if (positionRectangle.Y + (positionRectangle.Width / 2) - 16 < bossTarget.Y)
                    {
                        bossTarget.Y -= targetSpeed / 1.2f;
                    }
                }
                else
                {
                    if (positionRectangle.X + (positionRectangle.Width / 2) - 16 > bossTarget.X)
                    {
                        bossTarget.X += targetSpeed / 1.15f;
                    }
                    if (positionRectangle.X + (positionRectangle.Width / 2) - 16 < bossTarget.X)
                    {
                        bossTarget.X -= targetSpeed / 1.15f;
                    }
                    if (positionRectangle.Y + (positionRectangle.Width / 2) - 16 > bossTarget.Y)
                    {
                        bossTarget.Y += targetSpeed / 1.15f;
                    }
                    if (positionRectangle.Y + (positionRectangle.Width / 2) - 16 < bossTarget.Y)
                    {
                        bossTarget.Y -= targetSpeed / 1.15f;
                    }
                }
            }

            if (isHit)
            {
                Bleed();
                bleedTimer -= elapsed;
            }
            if (bleedTimer <= 0)
            {
                isHit = false;
                bleedTimer = BLEEDTIMER;
            }

            if (health <= 0)
            {
                dead = true;
                DeathEffect(game);
            }

            if (inCombat)
            {
                regenTimer = REGENTIMER;
            }
            else
                regenTimer -= elapsed;

            if (regenTimer <= 0)
            {
                if (health < maxHealth && !inCombat && !dead)
                {
                    regenAmount = rand.Next(3, 7);

                    if (maxHealth - health < regenAmount)
                        regenAmount = maxHealth - health;

                    health += regenAmount;
                    damageEffectList.Add(new DamageEffect((int)regenAmount, game, new Vector2(positionRectangle.X, positionRectangle.Y - 16), new Color(0, 255, 0, 255), "regen"));
                    Regen((int)regenAmount);
                    regenTimer = REGENTIMER;
                }
            }
            tile = tiles;

            if (left)
            {
                attackRectangle.Width = positionRectangle.Width * 2;
                attackRectangle.Height = 54;
                attackRectangle.X = positionRectangle.X - (attackRectangle.Width / 2) + 12;
                attackRectangle.Y = positionRectangle.Y + 5;

                warpRectangle.Width = positionRectangle.Width / 2;
                warpRectangle.Height = 5;
                warpRectangle.X = positionRectangle.X - warpRectangle.Width;
                warpRectangle.Y = positionRectangle.Y + (positionRectangle.Height / 2) + 2;
            }
            if (right)
            {
                attackRectangle.Width = positionRectangle.Width * 2;
                attackRectangle.Height = 54;
                attackRectangle.X = positionRectangle.X;
                attackRectangle.Y = positionRectangle.Y + 5;

                warpRectangle.Width = positionRectangle.Width / 2;
                warpRectangle.Height = 5;
                warpRectangle.X = positionRectangle.X + positionRectangle.Width;
                warpRectangle.Y = positionRectangle.Y + (positionRectangle.Height / 2) + 2;
            }
            if (up)
            {
                attackRectangle.Width = 54;
                attackRectangle.Height = positionRectangle.Height * 2;
                attackRectangle.X = positionRectangle.X;
                attackRectangle.Y = positionRectangle.Y - (positionRectangle.Height / 2);

                warpRectangle.Width = 5;
                warpRectangle.Height = positionRectangle.Height / 2;
                warpRectangle.X = positionRectangle.X + (positionRectangle.Width / 2) + 2;
                warpRectangle.Y = positionRectangle.Y - warpRectangle.Height;
            }
            if (down)
            {
                attackRectangle.Width = 54;
                attackRectangle.Height = positionRectangle.Height * 2;
                attackRectangle.X = positionRectangle.X;
                attackRectangle.Y = positionRectangle.Y;

                warpRectangle.Width = 5;
                warpRectangle.Height = positionRectangle.Height / 2;
                warpRectangle.X = positionRectangle.X + (positionRectangle.Width / 2);
                warpRectangle.Y = positionRectangle.Y + positionRectangle.Height;
            }

            animation.UpdateAnimation(gameTime);
            #endregion

            if (disabled)
            {
                disabledTimer -= elapsed;
                if (disabledTimer <= 0)
                {
                    disabled = false;
                    disabledTimer = DISABLEDTIMER;
                }
            }
            #region walk
            if (!attacking && !showInventory && !dead)// && cWarp.canWalk
            {
                walking = false;
                if (!disabled)
                {
                    if (game.keyState.IsKeyDown(Keys.Up))
                    {
                        //effects
                        if (Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 4
                            || Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 8)
                        {
                            Splash(gameTime);
                        }
                        else
                            Walk();

                        up = true;
                        down = false;
                        left = false;
                        right = false;

                        ApplyForce(new Vector2(0, -2));

                        animation.MaxFrameCount = 3;
                        if (!animation.IsAnimationPlaying(WALK_UP))
                        {
                            animation.LoopAnimation(WALK_UP);
                        }
                        walking = true;
                    }

                    else if (game.keyState.IsKeyDown(Keys.Down))
                    {
                        //effects
                        if (Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 4
                            || Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 8)
                        {
                            Splash(gameTime);
                        }
                        else
                            Walk();

                        down = true;
                        up = false;
                        right = false;
                        left = false;

                        ApplyForce(new Vector2(0, 2));
                        animation.MaxFrameCount = 3;
                        if (!animation.IsAnimationPlaying(WALK_DOWN))
                        {
                            animation.LoopAnimation(WALK_DOWN);
                        }
                        walking = true;
                    }

                    if (game.keyState.IsKeyDown(Keys.Right))
                    {
                        //effects
                        if (Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 4
                            || Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 8)
                        {
                            Splash(gameTime);
                        }
                        else
                            Walk();

                        right = true;
                        left = false;
                        up = false;
                        down = false;

                        ApplyForce(new Vector2(2, 0));
                        animation.MaxFrameCount = 3;
                        if (!animation.IsAnimationPlaying(WALK_RIGHT))
                        {
                            animation.LoopAnimation(WALK_RIGHT);
                        }
                        walking = true;
                    }

                    else if (game.keyState.IsKeyDown(Keys.Left))
                    {
                        //effects
                        if (Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 4
                            || Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 8)
                        {
                            Splash(gameTime);
                        }
                        else
                            Walk();

                        left = true;
                        right = false;
                        up = false;
                        down = false;

                        ApplyForce(new Vector2(-2, 0));
                        animation.MaxFrameCount = 3;
                        if (!animation.IsAnimationPlaying(WALK_LEFT))
                        {
                            animation.LoopAnimation(WALK_LEFT);
                        }
                        walking = true;
                    }
                }

                if (Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 4
                            || Game1.map.backgroundLayer[positionRectangle.X / Game1.map.tileWidth, positionRectangle.Y / Game1.map.tileHeight].tileID == 8)
                {
                    CalculateFriction(0.7f);
                }
                else
                    CalculateFriction(0.2f);

                SetPosition();

                if (leftSide.Intersects(tile.GetTileRectangleFromPosition(leftSide.X, leftSide.Y)) && !tile.CheckCellPositionPassable(new Vector2(leftSide.X, leftSide.Y)))
                {
                    position.X = tile.GetTileRectangleFromPosition(leftSide.X, leftSide.Y).Right;
                    velocity.X = 0;
                }
                if (rightSide.Intersects(tile.GetTileRectangleFromPosition(rightSide.X, rightSide.Y)) && !tile.CheckCellPositionPassable(new Vector2(rightSide.X, rightSide.Y)))
                {
                    position.X = tile.GetTileRectangleFromPosition(rightSide.X, rightSide.Y).Left - positionRectangle.Width;
                    velocity.X = 0;
                }
                if (upSide.Intersects(tile.GetTileRectangleFromPosition(upSide.X, upSide.Y)) && !tile.CheckCellPositionPassable(new Vector2(upSide.X, upSide.Y)))
                {
                    position.Y = tile.GetTileRectangleFromPosition(upSide.X, upSide.Y).Bottom;
                    velocity.Y = 0;
                }
                if (downSide.Intersects(tile.GetTileRectangleFromPosition(downSide.X, downSide.Y)) && !tile.CheckCellPositionPassable(new Vector2(downSide.X, downSide.Y)))
                {
                    position.Y = tile.GetTileRectangleFromPosition(downSide.X, downSide.Y).Top - positionRectangle.Height;
                    velocity.Y = 0;
                }

                //Second side so yo say...
                if (leftSide.Intersects(tile.GetTileRectangleFromPosition(leftSide.X, leftSide.Bottom)) && !tile.CheckCellPositionPassable(new Vector2(leftSide.X, leftSide.Bottom)))
                {
                    position.X = tile.GetTileRectangleFromPosition(leftSide.X, leftSide.Bottom).Right;
                    velocity.X = 0;
                }
                if (rightSide.Intersects(tile.GetTileRectangleFromPosition(rightSide.X, rightSide.Bottom)) && !tile.CheckCellPositionPassable(new Vector2(rightSide.X, rightSide.Bottom)))
                {
                    position.X = tile.GetTileRectangleFromPosition(rightSide.X, rightSide.Bottom).Left - positionRectangle.Width;
                    velocity.X = 0;
                }
                if (upSide.Intersects(tile.GetTileRectangleFromPosition(upSide.Right, upSide.Y)) && !tile.CheckCellPositionPassable(new Vector2(upSide.Right, upSide.Y)))
                {
                    position.Y = tile.GetTileRectangleFromPosition(upSide.Right, upSide.Y).Bottom;
                    velocity.Y = 0;
                }
                if (downSide.Intersects(tile.GetTileRectangleFromPosition(downSide.Right, downSide.Y)) && !tile.CheckCellPositionPassable(new Vector2(downSide.Right, downSide.Y)))
                {
                    position.Y = tile.GetTileRectangleFromPosition(downSide.Right, downSide.Y).Top - positionRectangle.Height;
                    velocity.Y = 0;
                }
            }

            #endregion

            if (game.keyState.IsKeyDown(Keys.Tab) && oldState.IsKeyUp(Keys.Tab) && !dead)
            {
                if (showInventory)
                {
                    showInventory = false;
                }
                else
                    showInventory = true;
            }

            if (!animation.IsAnimationPlaying(ATTACK_UP) && !animation.IsAnimationPlaying(ATTACK_DOWN) && !animation.IsAnimationPlaying(ATTACK_LEFT) && !animation.IsAnimationPlaying(ATTACK_RIGHT))
            {
                attacking = false;
            }
            #region Attack
            attackTimer -= elapsed;
            if (sword != null)
            {
                if (game.keyState.IsKeyDown(Keys.Z) && game.oldState.IsKeyUp(Keys.Z) && !dead && attackTimer <= 0)
                {
                    attackTimer = ATTACKTIMER;
                    attacking = true;
                    animation.MaxFrameCount = 1;
                    if (up)
                    {
                        animation.PlayAnimation(ATTACK_UP);
                    }
                    else if (down)
                    {
                        animation.PlayAnimation(ATTACK_DOWN);
                    }
                    else if (left)
                    {
                        animation.PlayAnimation(ATTACK_LEFT);
                    }
                    else if (right)
                    {
                        animation.PlayAnimation(ATTACK_RIGHT);
                    }

                    foreach (Npc.Npc npc in game.activeNpcs)
                    {
                        if (npc.position.Intersects(attackRectangle))
                        {
                            if (npc.health > 0 && npc.IsOnMap() && npc.vulnerable)
                            {
                                damage = game.damageObject.dealDamage(sword.minDamage, sword.maxDamage);
                                damageEffectList.Add(new DamageEffect(damage, game, new Vector2(npc.position.X, npc.position.Y - 16), new Color(255, 255, 255, 255), "player"));
                                npc.health -= damage;
                                npc.attackPlayer = true;
                                npc.attackTimer += 300;
                                Slash(npc.position);
                            }
                        }
                    }
                    if (positionRectangle.Intersects(Game1.testBoss.position))
                    {
                        if (Game1.testBoss.health > 0 && Game1.testBoss.IsOnMap())
                        {
                            damage = game.damageObject.dealDamage(sword.minDamage, sword.maxDamage) * 2;
                            damageEffectList.Add(new DamageEffect(damage, game, new Vector2(Game1.testBoss.position.X, Game1.testBoss.position.Y - 16), new Color(255, 255, 255, 255), "player"));
                            Game1.testBoss.health -= damage;
                            Game1.testBoss.currentPhase = Npc.Boss.phase.sleep;
                        }
                    }
                    for (int i = 0; i < Game1.testBoss.mobs.Count; i++)
                    {
                        if (positionRectangle.Intersects(Game1.testBoss.mobs[i].position))
                        {
                            if (Game1.testBoss.mobs[i].health > 0)
                            {
                                damage = game.damageObject.dealDamage(sword.minDamage, sword.maxDamage);
                                damageEffectList.Add(new DamageEffect(damage, game, new Vector2(Game1.testBoss.mobs[i].position.X, Game1.testBoss.mobs[i].position.Y - 16), new Color(255, 255, 255, 255), "player"));
                                Game1.testBoss.mobs[i].health -= damage;
                                if (Game1.testBoss.mobs[i].health <= 0)
                                {
                                    Game1.testBoss.health -= 1;
                                }
                            }
                        }
                    }
                    for (int i = 0; i < game.Mobs.Count; i++)
                    {
                        if (game.Mobs[i].position.Intersects(attackRectangle))
                        {
                            if (game.Mobs[i].health > 0 && game.Mobs[i].IsOnMap())
                            {
                                damage = game.damageObject.dealDamage(sword.minDamage, sword.maxDamage);
                                damageEffectList.Add(new DamageEffect(damage, game, new Vector2(game.Mobs[i].position.X, game.Mobs[i].position.Y - 16), new Color(255, 255, 255, 255), "player"));
                                game.Mobs[i].health -= damage;
                                game.Mobs[i].attackPlayer = true;
                            }
                        }
                    }
                }
            }

            for (int i = 0; i < damageEffectList.Count; i++)
            {
                damageEffectList[i].Effect();
            }

            inCombat = false;

            for (int i = 0; i < game.activeNpcs.Count; i++)
            {
                if (game.activeNpcs[i].health > 0)
                {
                    if (game.activeNpcs[i].attackPlayer)
                    {
                        inCombat = true;
                    }
                }
            }
            for (int i = 0; i < game.Mobs.Count; i++)
            {
                if (game.Mobs[i].health > 0)
                {
                    if (game.Mobs[i].attackPlayer)
                    {
                        inCombat = true;
                    }
                }
            }
            #endregion

            if (!walking && !attacking)
            {
                animation.MaxFrameCount = 1;
                if (up && !animation.IsAnimationPlaying(IDLE_UP))
                {
                    animation.LoopAnimation(IDLE_UP);
                }
                else if (down && !animation.IsAnimationPlaying(IDLE_DOWN))
                {
                    animation.LoopAnimation(IDLE_DOWN);
                }
                else if (left && !animation.IsAnimationPlaying(IDLE_LEFT))
                {
                    animation.LoopAnimation(IDLE_LEFT);
                }
                else if (right && !animation.IsAnimationPlaying(IDLE_RIGHT))
                {
                    animation.LoopAnimation(IDLE_RIGHT);
                }
            }
        }
        public cCharacter(Game1 game, string gender)
        {
            health = 100;
            speed = 4;
            maxHealth = health;
            healthBar = game.Content.Load<Texture2D>(@"Game\Hp bar");
            this.gender = gender;

            #region Textures
            debugTexture = game.Content.Load<Texture2D>(@"Game\blackness");
            if (gender == "male")
            {
                spriteSheet = game.Content.Load<Texture2D>("Player/Sprite/Male/male");
                animation = new AnimationComponent(4, 8, 53, 70, 150, Point.Zero);
            }
            if (gender == "female")
            {
                spriteSheet = game.Content.Load<Texture2D>("Player/Sprite/Female/female");
                animation = new AnimationComponent(4, 8, 41, 70, 150, Point.Zero);
            }

            shadowBlob = game.Content.Load<Texture2D>("player/shadowTex");
            healthTexture = game.Content.Load<Texture2D>(@"Game\health100");
            #endregion

            #region Rectangles and Vectors
            if (gender == "male")
            {
                positionRectangle = new Rectangle(640, 640, 59, 64);
            }
            if (gender == "female")
            {
                positionRectangle = new Rectangle(640, 640, 50, 64);
            }
            position.X = positionRectangle.X;
            position.Y = positionRectangle.Y;
            interactRect = new Rectangle(positionRectangle.X - (positionRectangle.Width / 2), positionRectangle.Y - (positionRectangle.Height / 2), positionRectangle.Width * 2, positionRectangle.Height * 2);

            attackRectangle = new Rectangle();
            warpRectangle = new Rectangle();
            healthPos = new Rectangle();
            #endregion

            hpColor = new Color(200, 200, 200, 255);

            inventory = new Inventory(game);

            emitter = new ParticleSystemEmitter(game);
            Game1.particleSystem.emitters.Add(emitter);
            bossTarget = new Vector2(-128, -128);
        }