public void LoadIcons(GraphicsDevice graphics, String bullet_icon, String enemy_icon, ContentManager content, Visualisation vis) { for (int i = 0; i < m_bullet_count; i++) { Graphics.Entity.Sprite new_bullet = new Graphics.Entity.Sprite(); new_bullet.Init(content.Load <Texture2D>(bullet_icon)); new_bullet.Visible = false; new_bullet.destination = new Rectangle( (int)((((float)graphics.Viewport.Width / 1366.0f) * 175.0f) + (((float)graphics.Viewport.Width / 1366.0f) * 15.0f * i)), (int)(((float)graphics.Viewport.Height / 768.0f) * 714.0f), (int)(((float)graphics.Viewport.Width / 1366.0f) * 15.0f), (int)(((float)graphics.Viewport.Height / 768.0f) * 47.0f)); m_bullets.Add(new_bullet); vis.AddEntity(new_bullet); } m_enemy_count = Enemy_Container.enemies().Count; for (int i = 0; i < m_enemy_count; i++) { Graphics.Entity.Sprite new_enemy = new Graphics.Entity.Sprite(); new_enemy.Init(content.Load <Texture2D>(enemy_icon)); new_enemy.Visible = false; new_enemy.destination = new Rectangle( (int)((((float)graphics.Viewport.Width / 1366.0f) * 171.0f) + (((float)graphics.Viewport.Width / 1366.0f) * 31.0f * i)), (int)(((float)graphics.Viewport.Height / 768.0f) * 664.0f), (int)(((float)graphics.Viewport.Width / 1366.0f) * 31.0f), (int)(((float)graphics.Viewport.Height / 768.0f) * 34.0f)); m_enemy.Add(new_enemy); vis.AddEntity(new_enemy); } }
public void reset() { m_has_won = false; m_lost = false; m_enemy_count = GamePlay.enemy_count; m_bullet_count = 13; m_last_shot = 0.0f; Enemy_Container.reset(); }
public void show_hud(bool show) { m_sprite.Visible = show; if (GamePlay.difficulty != GameDifficulty.easy) { m_bullet_count = GamePlay.difficulty == GameDifficulty.hard ? 7 : 10; } for (int i = 0; i < m_bullet_count; i++) { m_bullets[i].Visible = show; } for (int i = 0; i < Enemy_Container.enemies().Count; i++) { m_enemy[i].Visible = show; } }
public override void update(Visualisation vis, GameTime time, GraphicsDevice graphics, GameState gamestate) { if (!m_lost) { switch (gamestate) { case GameState.game: #if DEBUG if (Input.Down) { Camera.Move(new Vector3(0, 0, -4)); } if (Input.Up) { Camera.Move(new Vector3(0, 0, 4)); } if (Input.Left) { Camera.Move(new Vector3(-4, 0, 0)); } if (Input.Right) { Camera.Move(new Vector3(4, 0, 0)); } #endif float offset = ((float)Math.Sin(time.TotalGameTime.TotalMilliseconds * 0.001f) * (0.0001f * (GamePlay.difficulty.GetHashCode() * 3))); #if DEBUG offset = 0.0f; #endif Camera.Turn(new Vector3((Input.Y * 0.01f) + offset, Input.X * 0.01f, 0.0f)); if (!m_has_won) { Camera.fov = Camera.fov + (Input.Zoom * -0.017f); } else { Camera.fov = (float)Math.PI / 3.0f; } m_debug_text.text = "Camera Position : " + Camera.position.ToString() + "\nCamera Rotation : " + Camera.rotation.ToString(); bool shot_fired = false; if (Input.Fire && m_bullet_count > 0 && (float)time.TotalGameTime.TotalMilliseconds - m_last_shot > 2000.0f) { m_bullets[m_bullet_count - 1].Visible = false; m_bullet_count--; shot_fired = true; m_last_shot = (float)time.TotalGameTime.TotalMilliseconds; m_gun_fire.Play(); } List <Entity_Enemy> list = Enemy_Container.enemies(); for (int i = 0; i < list.Count; i++) { float?shot_ray = Camera.CastBulletRay(list[i], graphics); if (shot_ray != null) { if (shot_fired && m_bullet_count > 0) { list[i].Kill(); m_enemy[m_enemy_count - 1].Visible = false; m_enemy_count--; } m_debug_text.text += "\nEnemy Id : " + i + "\nPosition : " + list[i].position + "\nRotation : " + list[i].rotation; } } if (m_enemy_count == 0) { m_has_won = true; } break; case GameState.menu: offset = ((float)Math.Sin(time.TotalGameTime.TotalMilliseconds * 0.0005f) * 0.1f); Camera.rotation = new Vector3(-0.49f + offset, 0.34f, 0.0f); break; } } }
protected override void LoadContent() { m_song = Content.Load <Song>("FightForFreedoms"); DebugHelp.Draw_BoundingBox.Init(Content.Load <Effect>("lines"), GraphicsDevice); m_vis.Init(GraphicsDevice); Enemy_Container.Init(m_world, Content); Graphics.Entity.Text debug_text = new Graphics.Entity.Text(); debug_text.Init(Content.Load <SpriteFont>("default_font")); Graphics.Entity.Sprite hud = new Graphics.Entity.Sprite(); hud.Init(Content.Load <Texture2D>("scope-hd"), GraphicsDevice.Viewport.Bounds); hud.Visible = false; m_player = new Player(hud, debug_text, Content.Load <SoundEffect>("Fire")); m_world.AddEntity(m_player); m_player.LoadIcons(GraphicsDevice, "Bullet-Icon", "Enemy-Icon", Content, m_vis); List <Entity_Explosion> explosions_list = new List <Entity_Explosion>(); for (int i = 0; i < 4; i++) { Graphics.Entity.Billboard explosion_model = new Graphics.Entity.Billboard(); explosion_model.Init(Content.Load <Model>("Explosion"), Content.Load <Effect>("EffectBillboard"), Content.Load <Texture2D>("explosion_texture")); Entity_Explosion explosion = new Entity_Explosion(explosion_model); m_world.AddEntity(explosion); explosions_list.Add(explosion); } List <SoundEffect> explosion_sound = new List <SoundEffect>(); for (int i = 0; i < 3; i++) { SoundEffect new_explosion_sound = Content.Load <SoundEffect>("explode_" + (i + 1)); explosion_sound.Add(new_explosion_sound); } BasicEffect city_effect = new BasicEffect(GraphicsDevice); city_effect.FogEnabled = true; city_effect.FogColor = new Vector3(0.6f, 0.6f, 0.6f); city_effect.FogStart = 0.0f; city_effect.FogEnd = 2000.0f; city_effect.SpecularPower = 10000000.0f; Graphics.Entity.Model city = new Graphics.Entity.Model(); city.Init(Content.Load <Model>("city/city")); city.basiceffect = city_effect; m_city = new Entity_City(city, explosions_list, explosion_sound); m_world.AddEntity(m_city); Graphics.Entity.SkyBox skybox = new Graphics.Entity.SkyBox(); skybox.Init(Content.Load <Model>("skybox/skysphere"), Content.Load <Effect>("skybox/skybox_fx"), Content.Load <TextureCube>("skybox/skytexture")); m_skybox = new Entity_SkyBox(skybox); m_world.AddEntity(m_skybox); //Menu m_menu.Init(Content, m_vis, m_world, GraphicsDevice); //Fonts m_ingame_text = new Graphics.Entity.Text(); m_ingame_text.Init(Content.Load <SpriteFont>("InGameFont")); m_ingame_text.text = "Shoot All The Terrorists Before They Set The Bombs Off..."; m_ingame_text.Visible = false; m_ingame_text.position = new Vector2((GraphicsDevice.Viewport.Width * 0.5f) - m_ingame_text.font.MeasureString(m_ingame_text.text).X * 0.5f, 0.0f); m_vis.AddEntity(m_ingame_text); m_clock_text = new Graphics.Entity.Text(); m_clock_text.Init(Content.Load <SpriteFont>("InGameFont"), "00:00:60"); m_clock_text.Visible = false; m_clock_text.position = new Vector2( (((float)GraphicsDevice.Viewport.Width / 1366.0f) * 1024.0f), (((float)GraphicsDevice.Viewport.Height / 768.0f) * 690.0f)); m_vis.AddEntity(m_clock_text); m_clock_tick = Content.Load <SoundEffect>("clockTick"); m_black_screen = new Graphics.Entity.Sprite(); m_black_screen.Init(Content.Load <Texture2D>("blackPixel"), new Rectangle(0, 0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height)); m_black_screen.Visible = false; m_vis.AddEntity(m_black_screen); //play audio MediaPlayer.Volume = 0.5f; MediaPlayer.Play(m_song); MediaPlayer.IsRepeating = true; #if DEBUG m_vis.AddEntity(debug_text); #endif }