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"); }
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); }