public static void Update(double delta) { if (IsMoving) { } else { if (!IsFireing) { Weapon.Position = new Vector2(320, 480); Weapon.Position.Y -= 40; Weapon.Position.Y -= Weapon.Height; } } Weapon.Position.X = 320 - Weapon.Texture.Width / 2; if (IsFireing && fireDelay <= 0 && Ammo > 0) { if (!Weapon.textureName.Contains("fire")) { Ammo--; HitScanRay.Fire(RayCaster.Position, GameUtils.GetRotation(Vector2.Zero, new Vector2((float)RayCaster.dirX, (float)RayCaster.dirY))); Weapon.textureName += "fire"; if (Weapon.textureName.Contains("pistol")) { fireSpriteDelay = 0.17; fireDelay = 0.50; ContentManager.GetSound("pistol").Play(); } if (Weapon.textureName.Contains("machine")) { fireSpriteDelay = 0.1; fireDelay = 0.2; ContentManager.GetSound("machine").Play(); } if (Weapon.textureName.Contains("mini")) { fireSpriteDelay = 0.05; fireDelay = 0.1; ContentManager.GetSound("mini").Play(); } Weapon.Position.Y = 480 - 80 - Weapon.Height; } } if (fireSpriteDelay > 0) { fireSpriteDelay -= delta; if (fireSpriteDelay <= 0) { Weapon.textureName = Weapon.textureName.Replace("fire", string.Empty); } } if (fireDelay > 0) { fireDelay -= delta; } if (Weapon.Position.Y < 480 - 40 - Weapon.Height) { Weapon.Position.Y += 250f * (float)delta; } }
public override void Update(double delta) { if (fireDelay > 0) { fireDelay -= delta; } if (!isShooting && fireDelay <= 0 && HitScanRay.CanSeePlayer(Position)) { isShooting = true; Random rand = new Random(); fireDelay = 0.25; fireState = 0.25; } if (hasSeenPlayer) { if (isShooting) { if (fireState > 0.2) { if (Sprite.textureName != "enemy21") { Sprite.textureName = "enemy21"; } } else { if (fireState > 0.1) { if (Sprite.textureName != "enemy22") { Sprite.textureName = "enemy22"; Random rand = new Random(); if (rand.Next(0, 100) < 77) { int damage = (int)(12.5 - (GameUtils.GetDistance(RayCaster.Position, Position))); if (damage > 0) { Player.Health -= damage; } } ContentManager.GetSound("machine").Play(); } } else { if (fireState > 0) { if (Sprite.textureName != "enemy21") { Sprite.textureName = "enemy21"; } } } } if (fireState > 0) { fireState -= delta; } else { isShooting = false; } } else { if (Sprite.textureName != "enemy2") { Sprite.textureName = "enemy2"; } } if (health <= 0) { Sprite = new Sprite("enemy13", Vector2.Zero); RayCaster.ActorList.Add(new Clip(Position)); Dead = true; Solid = false; ContentManager.GetSound("die").Play(); } if (!isShooting && GameUtils.GetDistance(Position, RayCaster.Position) > 1.5) { Vector2 collisionPos = GameUtils.MoveTowards(Position, RayCaster.Position, 0.25f); Vector2 nextPos = GameUtils.MoveTowards(Position, RayCaster.Position, 0.025f); if (RayCaster.WorldMap[(int)collisionPos.X, (int)collisionPos.Y] == ' ') { Position = nextPos; } else { if (RayCaster.WorldMap[(int)collisionPos.X, (int)Position.Y] == ' ') { Position.X = nextPos.X; } else { if (RayCaster.WorldMap[(int)Position.X, (int)collisionPos.Y] == ' ') { Position.Y = nextPos.Y; } } } } } else { hasSeenPlayer = HitScanRay.CanSeePlayer(Position); } }
public override void Update(double delta) { if (fireDelay > 0) { fireDelay -= delta; } if (!isShooting && fireDelay <= 0 && HitScanRay.CanSeePlayer(Position)) { isShooting = true; Random rand = new Random(); fireDelay = 1 + rand.NextDouble() * 1.75; fireState = 1.0; } if (hasSeenPlayer) { if (isShooting) { if (fireState > 0.8) { if (Sprite.textureName != "enemy11") { Sprite.textureName = "enemy11"; } } else { if (fireState > 0.7) { if (Sprite.textureName != "enemy12") { Sprite.textureName = "enemy12"; Random rand = new Random(); if (rand.Next(0, 100) < 77) { int damage = (int)(20 - (GameUtils.GetDistance(RayCaster.Position, Position))); if (damage > 0) { Player.Health -= damage; } } ContentManager.GetSound("pistol").Play(); } } else { if (fireState > 0.4) { if (Sprite.textureName != "enemy11") { Sprite.textureName = "enemy11"; } } else { if (Sprite.textureName != "enemy1") { Sprite.textureName = "enemy1"; } } } } if (fireState > 0) { fireState -= delta; } else { isShooting = false; } } if (health <= 0) { Sprite = new Sprite("enemy13", Vector2.Zero); RayCaster.ActorList.Add(new Clip(Position)); Dead = true; Solid = false; ContentManager.GetSound("die").Play(); } if (GameUtils.GetDistance(Position, RayCaster.Position) > 1.5) { Vector2 collisionPos = GameUtils.MoveTowards(Position, RayCaster.Position, 0.25f); Vector2 nextPos = GameUtils.MoveTowards(Position, RayCaster.Position, 0.025f); if (RayCaster.WorldMap[(int)collisionPos.X, (int)collisionPos.Y] == ' ') { bool col = false; foreach (Actor a in RayCaster.ActorList) { if (a.Solid && GameUtils.GetDistance(new Vector2((int)collisionPos.X, (int)collisionPos.Y), a.Position) < 0.5) { col = true; break; } } if (!col) { Position = nextPos; } } else { if (RayCaster.WorldMap[(int)collisionPos.X, (int)Position.Y] == ' ') { bool col = false; foreach (Actor a in RayCaster.ActorList) { if (a.Solid && GameUtils.GetDistance(new Vector2((int)collisionPos.X, (int)Position.Y), a.Position) < 0.5) { col = true; break; } } if (!col) { Position.X = nextPos.X; } } else { if (RayCaster.WorldMap[(int)Position.X, (int)collisionPos.Y] == ' ') { bool col = false; foreach (Actor a in RayCaster.ActorList) { if (a.Solid && GameUtils.GetDistance(new Vector2((int)Position.X, (int)collisionPos.Y), a.Position) < 0.5) { col = true; break; } } if (!col) { Position.Y = nextPos.Y; } } } } } } else { hasSeenPlayer = HitScanRay.CanSeePlayer(Position); } }