public static List <Enemy> getEnemyLayout(ContentManager content, string filename) { TileLayer tLayer = TileLayer.FromFile(content, filename); List <Enemy> enemyList = new List <Enemy>(); int spawnMapWidth = tLayer.map.GetLength(1); int spawnMapHeight = tLayer.map.GetLength(0); for (int x = 0; x < spawnMapWidth; x++) { for (int y = 0; y < spawnMapHeight; y++) { int textIndex = tLayer.map[y, x]; if (textIndex == 0) { continue; } if (textIndex == 1) { Enemy e = new Enemy(tLayer.tileTextures[textIndex - 1], new Vector2(x * tLayer.TileWidth, y * tLayer.TileHeight), EnemyType.normal, content); enemyList.Add(e); } if (textIndex == 2) { Enemy e = new Enemy(tLayer.tileTextures[textIndex - 1], new Vector2(x * tLayer.TileWidth, y * tLayer.TileHeight), EnemyType.fast, content); enemyList.Add(e); } if (textIndex == 3) { Enemy e = new Enemy(tLayer.tileTextures[textIndex - 1], new Vector2(x * tLayer.TileWidth, y * tLayer.TileHeight), EnemyType.projectile, content); enemyList.Add(e); } if (textIndex == 4) { Enemy e = new Enemy(tLayer.tileTextures[textIndex - 1], new Vector2(x * tLayer.TileWidth, y * tLayer.TileHeight), EnemyType.boss, content); enemyList.Add(e); } } } return(enemyList); }
public void Update(Player player, List<TileObject> objList ,TileLayer tLayer) { KeyboardState kbs = Keyboard.GetState(); isMovingLeft = false; isMovingRight = false; isMovingDown = false; isMovingUp = false; prevPosition = position; //BORDER TOP if (player._playerRec.Y <= (200 + player._playerRec.Height) && kbs.IsKeyDown(Keys.W) && !player.collision(new Vector2(0, -3), objList)) { position.Y -= 3; if (position.Y < 0) { position.Y = 0; } else { isMovingUp = true; } } else { isMovingUp = false; } //BOREDER BOTTOM if (player._playerRec.Y >= (screenHeight - 200 - player._playerRec.Height) && kbs.IsKeyDown(Keys.S) && !player.collision(new Vector2(0, 3), objList)) { position.Y += 3; if (position.Y > tLayer.MapHeight - screenHeight) { position.Y = tLayer.MapHeight - screenHeight; } else { isMovingDown = true; } } else { isMovingDown = false; } //BORDER RIGHT if (player._playerRec.X <= (200 + player._playerRec.Width) && kbs.IsKeyDown(Keys.A) && !player.collision(new Vector2(-3, 0), objList)) { position.X -= 3; if (position.X < 0) { position.X = 0; } else { isMovingLeft = true; } } else { isMovingLeft = false; } //BORDER LEFT if (player._playerRec.X >= (screenWidth - 200 - player._playerRec.Width) && kbs.IsKeyDown(Keys.D) && !player.collision(new Vector2(3, 0), objList)) { position.X += 3; if (position.X > tLayer.MapWidth - screenWidth) { position.X = tLayer.MapWidth - screenWidth; } else { isMovingRight = true; } } else { isMovingRight = false; } if (position == prevPosition) { isMovingLeft = false; isMovingDown = false; isMovingRight = false; isMovingUp = false; hasMoved = false; } else { hasMoved = true; } }
public static TileLayer FromFile(ContentManager content, string file) { bool readingLayout = false; bool readingTextures = false; List<String> textureNames = new List<string>(); List<List<int>> tempLayout = new List<List<int>>(); using (StreamReader reader = new StreamReader(file)) { while (!reader.EndOfStream) { string line = reader.ReadLine().Trim(); if (line.Contains("[Textures]")) { readingTextures = true; readingLayout = false; } else if (line.Contains("[Layout]")) { readingTextures = false; readingLayout = true; } else if (readingLayout) { List<int> row = new List<int>(); string[] cells = line.Split(' '); foreach (string c in cells) { if (!string.IsNullOrEmpty(c)) row.Add(int.Parse(c)); } tempLayout.Add(row); } else if (readingTextures) { textureNames.Add(line); } } } int width = tempLayout[0].Count; int height = tempLayout.Count; TileLayer tileLayer = new TileLayer(width,height); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { tileLayer.setCellIndex(x,y, tempLayout[y][x]); } } tileLayer.loadTextures(content, textureNames.ToArray()); return tileLayer; }
public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen) { if (levelstart && !otherScreenHasFocus) { ScreenManager.AddScreen(new MessageBoxScreen("", mouseTexture), null); levelstart = false; } base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen); if (coveredByOtherScreen) pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1); else pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0); if (!otherScreenHasFocus) { Vector2 prevCamPos = cam.position; cam.Update(player, objList, backgroundLayer); if (!player.isAlive && player.pSprite.isFinished) { cam.position = new Vector2(0, 0); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelOneBackgroundLayer.txt"); player._playerPos = new Vector2(150, 150); } previousPlayerPos = player._playerPos; player.Update(gameTime, objList, cam); if (player._lives == 0) { ScreenManager.RemoveScreen(this); ScreenManager.AddScreen(new GameOverScreen(player, GameOverScreen.gameOverType.GAMEOVER), null); } // COLLISION List<TileObject> objRemoveList = new List<TileObject>(); List<TileObject> objCreateList = new List<TileObject>(); List<AnimatedSprite> animRemoveList = new List<AnimatedSprite>(); foreach (TileObject c in objList) { if (cam.position != prevCamPos) c.objPos = c.objPos - (cam.position - prevCamPos); c.Update(); if (player._playerRec.Intersects(c.objRec)) { if (c.objType == ObjectType.PICKUP) { if (player._health >= 50) player._health = 100; else player._health += 50; objRemoveList.Add(c); } } foreach (Bullet b in player.bulletList) { if (b.intersectsTarget(c.objRec)) { if (c.objType == ObjectType.DESTRUCTIBLE) { bulletDeleteList.Add(b); objRemoveList.Add(c); animList.Add(new AnimatedSprite(explosionTexture, AnimatedSprite.AnimType.PLAY_ONCE, 6, 6, 0.02f, new Vector2(c.objPos.X + c.objRec.Width / 2, c.objPos.Y + c.objRec.Width / 2), 1.5f)); sound.Play(); } if (c.objType == ObjectType.CRATE) { bulletDeleteList.Add(b); objRemoveList.Add(c); int test = 1; if (this.diff == GameDifficulty.HARD_MODE) test = rand.Next(0, 7); else test = rand.Next(0, 5); if (test == 0)objCreateList.Add(new TileObject(heart, ObjectType.PICKUP, new Vector2(c.objRec.X, c.objRec.Y))); } } } } foreach (AnimatedSprite a in animList) { if (cam.position != prevCamPos) a.pos = a.pos - (cam.position - prevCamPos); a.Update(gameTime); if (a.spriteRec.Intersects(player._playerRec) && !a.playerDamaged) { player._health -= 30; a.playerDamaged = true; } if (a.isFinished) animRemoveList.Add(a); } foreach (AnimatedSprite a in animRemoveList) { animList.Remove(a); } foreach (TileObject c in objCreateList) { objList.Add(c); } foreach (TileObject c in objRemoveList) { objList.Remove(c); } foreach (Enemy e in enemyList) { if (cam.position != prevCamPos) e._enemyPos = e._enemyPos - (cam.position - prevCamPos); e.Update(player._playerRec, gameTime); if (e.returnIntersect(player._playerRec)) { if (e.canDamage) player._health -= 5; } foreach (Bullet b in e.bulletList) { if (cam.position != prevCamPos) b._bulletPos = b._bulletPos - (cam.position - prevCamPos); if (b.intersectsTarget(player._playerRec)) { player._health -= 10; eBulletDeleteList.Add(b); } } foreach (Bullet b in eBulletDeleteList) { e.bulletList.Remove(b); } foreach (Bullet b in player.bulletList) { if (b.intersectsTarget(e.enemyRec)) { e.health -= 10; bulletDeleteList.Add(b); } } foreach (AnimatedSprite a in animList) { if (a.spriteRec.Intersects(e.enemyRec) && !a.damagedEnemies.Contains(e)) { e.health -= 100; a.damagedEnemies.Add(e); } } if (e.health <= 0) { enemyDeleteList.Add(e); if (e._type == EnemyType.normal) player.score += 10; if (e._type == EnemyType.fast) player.score += 20; if (e._type == EnemyType.hard) player.score += 50; if (e._type == EnemyType.projectile) player.score += 70; if (e._type == EnemyType.boss) player.score += 100; } } foreach (Bullet b in bulletDeleteList) { player.bulletList.Remove(b); } foreach (Enemy e in enemyDeleteList) { enemyList.Remove(e); } //LEVEL COMPLETE if (enemyList.Count == 0) { ScreenManager.Game.Components.Remove(particleComponent); isLevelComplete = true; } if (isLevelComplete) { ScreenManager.RemoveScreen(this); ScreenManager.AddScreen(new LevelCompleteScreen(player, this.diff, 50.0f), null); } } if (player.level == 3) { Emitter t2 = particleComponent.particleEmitterList[0]; t2.Position = new Vector2((float)random.NextDouble() * (ScreenManager.Game.GraphicsDevice.Viewport.Width), 0); if (t2.EmittedNewParticle) { float f = MathHelper.ToRadians(t2.LastEmittedParticle.Direction + 180); t2.LastEmittedParticle.Rotation = f; } } }
public override void LoadContent() { System.Threading.Thread.Sleep(10); levelstart = true; animList = new List<AnimatedSprite>(); if (content == null) content = new ContentManager(ScreenManager.Game.Services, "Content"); sound = content.Load<SoundEffect>("Sounds\\explode"); explosionTexture = content.Load<Texture2D>("sprites/explosion2"); playerTexture = content.Load<Texture2D>("manwalk"); mouseTexture = content.Load<Texture2D>("cursor"); playerSpawn = new Vector2(150,150); player = new Player(playerTexture, mouseTexture, playerSpawn, content); player.name = name; if (!isFirstLevel) { player.level = pLevel; player.score = pScore; player._health = pHealth; player._lives = pLives; } if (diff == GameDifficulty.HARD_MODE) player.MAX_SHOTS = 3; heart = content.Load<Texture2D>("1up"); isLevelComplete = false; enemyDeleteList = new List<Enemy>(); bulletDeleteList = new List<Bullet>(); eBulletDeleteList = new List<Bullet>(); cam = new Camera(new Vector2(0,0)); particleComponent = new ParticleComponent(ScreenManager.Game); ScreenManager.Game.Components.Add(particleComponent); if (player.level == 1) { objList = new List<TileObject>(); objList = TileHandler.getTileObjectLayout(content, "Content/Layers/LevelOneObjects.txt"); enemyList = new List<Enemy>(); if (diff == GameDifficulty.EASY_MODE ) enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelOneEnemyEasy.txt"); if (diff == GameDifficulty.HARD_MODE) enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelOneEnemyHard.txt"); spriteFont = content.Load<SpriteFont>("SpriteFont1"); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelOneBackgroundLayer.txt"); } if (player.level == 2) { objList = new List<TileObject>(); objList = TileHandler.getTileObjectLayout(content, "Content/Layers/LevelTwoObjects.txt"); enemyList = new List<Enemy>(); if (diff == GameDifficulty.EASY_MODE) enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelTwoEnemyEasy.txt"); if (diff == GameDifficulty.HARD_MODE) enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelTwoEnemyHard.txt"); spriteFont = content.Load<SpriteFont>("SpriteFont1"); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelOneBackgroundLayer.txt"); } if (player.level == 3) { objList = new List<TileObject>(); objList = TileHandler.getTileObjectLayout(content, "Content/Layers/LevelThreeObjects.txt"); enemyList = new List<Enemy>(); if (diff == GameDifficulty.EASY_MODE) enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelThreeEnemyEasy.txt"); if (diff == GameDifficulty.HARD_MODE) enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelThreeEnemyHard.txt"); spriteFont = content.Load<SpriteFont>("SpriteFont1"); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelTwoBackgroundLayer.txt"); Emitter testEmitter2 = new Emitter(); testEmitter2.Active = true; testEmitter2.TextureList.Add(content.Load<Texture2D>("raindrop")); testEmitter2.RandomEmissionInterval = new RandomMinMax(16.0d); testEmitter2.ParticleLifeTime = 1000; testEmitter2.ParticleDirection = new RandomMinMax(170); testEmitter2.ParticleSpeed = new RandomMinMax(10.0f); testEmitter2.ParticleRotation = new RandomMinMax(0); testEmitter2.RotationSpeed = new RandomMinMax(0f); testEmitter2.ParticleFader = new ParticleFader(false, true, 800); testEmitter2.ParticleScaler = new ParticleScaler(false, 1.0f); testEmitter2.Opacity = 255; particleComponent.particleEmitterList.Add(testEmitter2); } ScreenManager.AddScreen(new MessageBoxScreen("", mouseTexture), null); }
public static TileLayer FromFile(ContentManager content, string file) { bool readingLayout = false; bool readingTextures = false; List <String> textureNames = new List <string>(); List <List <int> > tempLayout = new List <List <int> >(); using (StreamReader reader = new StreamReader(file)) { while (!reader.EndOfStream) { string line = reader.ReadLine().Trim(); if (line.Contains("[Textures]")) { readingTextures = true; readingLayout = false; } else if (line.Contains("[Layout]")) { readingTextures = false; readingLayout = true; } else if (readingLayout) { List <int> row = new List <int>(); string[] cells = line.Split(' '); foreach (string c in cells) { if (!string.IsNullOrEmpty(c)) { row.Add(int.Parse(c)); } } tempLayout.Add(row); } else if (readingTextures) { textureNames.Add(line); } } } int width = tempLayout[0].Count; int height = tempLayout.Count; TileLayer tileLayer = new TileLayer(width, height); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { tileLayer.setCellIndex(x, y, tempLayout[y][x]); } } tileLayer.loadTextures(content, textureNames.ToArray()); return(tileLayer); }
public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen) { if (levelstart && !otherScreenHasFocus) { ScreenManager.AddScreen(new MessageBoxScreen("", mouseTexture), null); levelstart = false; } base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen); if (coveredByOtherScreen) { pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1); } else { pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0); } if (!otherScreenHasFocus) { Vector2 prevCamPos = cam.position; cam.Update(player, objList, backgroundLayer); if (!player.isAlive && player.pSprite.isFinished) { cam.position = new Vector2(0, 0); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelOneBackgroundLayer.txt"); player._playerPos = new Vector2(150, 150); } previousPlayerPos = player._playerPos; player.Update(gameTime, objList, cam); if (player._lives == 0) { ScreenManager.RemoveScreen(this); ScreenManager.AddScreen(new GameOverScreen(player, GameOverScreen.gameOverType.GAMEOVER), null); } // COLLISION List <TileObject> objRemoveList = new List <TileObject>(); List <TileObject> objCreateList = new List <TileObject>(); List <AnimatedSprite> animRemoveList = new List <AnimatedSprite>(); foreach (TileObject c in objList) { if (cam.position != prevCamPos) { c.objPos = c.objPos - (cam.position - prevCamPos); } c.Update(); if (player._playerRec.Intersects(c.objRec)) { if (c.objType == ObjectType.PICKUP) { if (player._health >= 50) { player._health = 100; } else { player._health += 50; } objRemoveList.Add(c); } } foreach (Bullet b in player.bulletList) { if (b.intersectsTarget(c.objRec)) { if (c.objType == ObjectType.DESTRUCTIBLE) { bulletDeleteList.Add(b); objRemoveList.Add(c); animList.Add(new AnimatedSprite(explosionTexture, AnimatedSprite.AnimType.PLAY_ONCE, 6, 6, 0.02f, new Vector2(c.objPos.X + c.objRec.Width / 2, c.objPos.Y + c.objRec.Width / 2), 1.5f)); sound.Play(); } if (c.objType == ObjectType.CRATE) { bulletDeleteList.Add(b); objRemoveList.Add(c); int test = 1; if (this.diff == GameDifficulty.HARD_MODE) { test = rand.Next(0, 7); } else { test = rand.Next(0, 5); } if (test == 0) { objCreateList.Add(new TileObject(heart, ObjectType.PICKUP, new Vector2(c.objRec.X, c.objRec.Y))); } } } } } foreach (AnimatedSprite a in animList) { if (cam.position != prevCamPos) { a.pos = a.pos - (cam.position - prevCamPos); } a.Update(gameTime); if (a.spriteRec.Intersects(player._playerRec) && !a.playerDamaged) { player._health -= 30; a.playerDamaged = true; } if (a.isFinished) { animRemoveList.Add(a); } } foreach (AnimatedSprite a in animRemoveList) { animList.Remove(a); } foreach (TileObject c in objCreateList) { objList.Add(c); } foreach (TileObject c in objRemoveList) { objList.Remove(c); } foreach (Enemy e in enemyList) { if (cam.position != prevCamPos) { e._enemyPos = e._enemyPos - (cam.position - prevCamPos); } e.Update(player._playerRec, gameTime); if (e.returnIntersect(player._playerRec)) { if (e.canDamage) { player._health -= 5; } } foreach (Bullet b in e.bulletList) { if (cam.position != prevCamPos) { b._bulletPos = b._bulletPos - (cam.position - prevCamPos); } if (b.intersectsTarget(player._playerRec)) { player._health -= 10; eBulletDeleteList.Add(b); } } foreach (Bullet b in eBulletDeleteList) { e.bulletList.Remove(b); } foreach (Bullet b in player.bulletList) { if (b.intersectsTarget(e.enemyRec)) { e.health -= 10; bulletDeleteList.Add(b); } } foreach (AnimatedSprite a in animList) { if (a.spriteRec.Intersects(e.enemyRec) && !a.damagedEnemies.Contains(e)) { e.health -= 100; a.damagedEnemies.Add(e); } } if (e.health <= 0) { enemyDeleteList.Add(e); if (e._type == EnemyType.normal) { player.score += 10; } if (e._type == EnemyType.fast) { player.score += 20; } if (e._type == EnemyType.hard) { player.score += 50; } if (e._type == EnemyType.projectile) { player.score += 70; } if (e._type == EnemyType.boss) { player.score += 100; } } } foreach (Bullet b in bulletDeleteList) { player.bulletList.Remove(b); } foreach (Enemy e in enemyDeleteList) { enemyList.Remove(e); } //LEVEL COMPLETE if (enemyList.Count == 0) { ScreenManager.Game.Components.Remove(particleComponent); isLevelComplete = true; } if (isLevelComplete) { ScreenManager.RemoveScreen(this); ScreenManager.AddScreen(new LevelCompleteScreen(player, this.diff, 50.0f), null); } } if (player.level == 3) { Emitter t2 = particleComponent.particleEmitterList[0]; t2.Position = new Vector2((float)random.NextDouble() * (ScreenManager.Game.GraphicsDevice.Viewport.Width), 0); if (t2.EmittedNewParticle) { float f = MathHelper.ToRadians(t2.LastEmittedParticle.Direction + 180); t2.LastEmittedParticle.Rotation = f; } } }
public override void LoadContent() { System.Threading.Thread.Sleep(10); levelstart = true; animList = new List <AnimatedSprite>(); if (content == null) { content = new ContentManager(ScreenManager.Game.Services, "Content"); } sound = content.Load <SoundEffect>("Sounds\\explode"); explosionTexture = content.Load <Texture2D>("sprites/explosion2"); playerTexture = content.Load <Texture2D>("manwalk"); mouseTexture = content.Load <Texture2D>("cursor"); playerSpawn = new Vector2(150, 150); player = new Player(playerTexture, mouseTexture, playerSpawn, content); player.name = name; if (!isFirstLevel) { player.level = pLevel; player.score = pScore; player._health = pHealth; player._lives = pLives; } if (diff == GameDifficulty.HARD_MODE) { player.MAX_SHOTS = 3; } heart = content.Load <Texture2D>("1up"); isLevelComplete = false; enemyDeleteList = new List <Enemy>(); bulletDeleteList = new List <Bullet>(); eBulletDeleteList = new List <Bullet>(); cam = new Camera(new Vector2(0, 0)); particleComponent = new ParticleComponent(ScreenManager.Game); ScreenManager.Game.Components.Add(particleComponent); if (player.level == 1) { objList = new List <TileObject>(); objList = TileHandler.getTileObjectLayout(content, "Content/Layers/LevelOneObjects.txt"); enemyList = new List <Enemy>(); if (diff == GameDifficulty.EASY_MODE) { enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelOneEnemyEasy.txt"); } if (diff == GameDifficulty.HARD_MODE) { enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelOneEnemyHard.txt"); } spriteFont = content.Load <SpriteFont>("SpriteFont1"); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelOneBackgroundLayer.txt"); } if (player.level == 2) { objList = new List <TileObject>(); objList = TileHandler.getTileObjectLayout(content, "Content/Layers/LevelTwoObjects.txt"); enemyList = new List <Enemy>(); if (diff == GameDifficulty.EASY_MODE) { enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelTwoEnemyEasy.txt"); } if (diff == GameDifficulty.HARD_MODE) { enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelTwoEnemyHard.txt"); } spriteFont = content.Load <SpriteFont>("SpriteFont1"); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelOneBackgroundLayer.txt"); } if (player.level == 3) { objList = new List <TileObject>(); objList = TileHandler.getTileObjectLayout(content, "Content/Layers/LevelThreeObjects.txt"); enemyList = new List <Enemy>(); if (diff == GameDifficulty.EASY_MODE) { enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelThreeEnemyEasy.txt"); } if (diff == GameDifficulty.HARD_MODE) { enemyList = TileHandler.getEnemyLayout(content, "Content/Layers/LevelThreeEnemyHard.txt"); } spriteFont = content.Load <SpriteFont>("SpriteFont1"); backgroundLayer = TileLayer.FromFile(content, "Content/Layers/LevelTwoBackgroundLayer.txt"); Emitter testEmitter2 = new Emitter(); testEmitter2.Active = true; testEmitter2.TextureList.Add(content.Load <Texture2D>("raindrop")); testEmitter2.RandomEmissionInterval = new RandomMinMax(16.0d); testEmitter2.ParticleLifeTime = 1000; testEmitter2.ParticleDirection = new RandomMinMax(170); testEmitter2.ParticleSpeed = new RandomMinMax(10.0f); testEmitter2.ParticleRotation = new RandomMinMax(0); testEmitter2.RotationSpeed = new RandomMinMax(0f); testEmitter2.ParticleFader = new ParticleFader(false, true, 800); testEmitter2.ParticleScaler = new ParticleScaler(false, 1.0f); testEmitter2.Opacity = 255; particleComponent.particleEmitterList.Add(testEmitter2); } ScreenManager.AddScreen(new MessageBoxScreen("", mouseTexture), null); }
public void Update(Player player, List <TileObject> objList, TileLayer tLayer) { KeyboardState kbs = Keyboard.GetState(); isMovingLeft = false; isMovingRight = false; isMovingDown = false; isMovingUp = false; prevPosition = position; //BORDER TOP if (player._playerRec.Y <= (200 + player._playerRec.Height) && kbs.IsKeyDown(Keys.W) && !player.collision(new Vector2(0, -3), objList)) { position.Y -= 3; if (position.Y < 0) { position.Y = 0; } else { isMovingUp = true; } } else { isMovingUp = false; } //BOREDER BOTTOM if (player._playerRec.Y >= (screenHeight - 200 - player._playerRec.Height) && kbs.IsKeyDown(Keys.S) && !player.collision(new Vector2(0, 3), objList)) { position.Y += 3; if (position.Y > tLayer.MapHeight - screenHeight) { position.Y = tLayer.MapHeight - screenHeight; } else { isMovingDown = true; } } else { isMovingDown = false; } //BORDER RIGHT if (player._playerRec.X <= (200 + player._playerRec.Width) && kbs.IsKeyDown(Keys.A) && !player.collision(new Vector2(-3, 0), objList)) { position.X -= 3; if (position.X < 0) { position.X = 0; } else { isMovingLeft = true; } } else { isMovingLeft = false; } //BORDER LEFT if (player._playerRec.X >= (screenWidth - 200 - player._playerRec.Width) && kbs.IsKeyDown(Keys.D) && !player.collision(new Vector2(3, 0), objList)) { position.X += 3; if (position.X > tLayer.MapWidth - screenWidth) { position.X = tLayer.MapWidth - screenWidth; } else { isMovingRight = true; } } else { isMovingRight = false; } if (position == prevPosition) { isMovingLeft = false; isMovingDown = false; isMovingRight = false; isMovingUp = false; hasMoved = false; } else { hasMoved = true; } }