public Verden(Game game) : base(game) { _juvelListe = new List <Juvel>(); _fiendeListe = new List <Fiende>(); _juvelListe2 = new List <Juvel>(); _spilleren = InitGame.Spilleren; KollisjonsKart = InitGame.KollisjonsKart; SoundEffect juvelLyd = InitGame.JuvelLyd; _juvelLydInstance = juvelLyd.CreateInstance(); _juvelLydInstance.Pitch = 0; _oppsamledeJuvelerLevel1 = 0; _oppsamledeJuvelerLevel2 = 0; _oppsamledeJuvelerLevel3 = 0; _juvelerILevel1 = 0; _juvelerILevel2 = 0; _juvelerILevel3 = 0; _spriteBatch = new SpriteBatch(game.GraphicsDevice); PlaceEnemies(KollisjonsKart); //Plasserer fiender PlaceJewels(KollisjonsKart); //Plasserer juveler CountJewels(_juvelListe); //Teller antall juveler, bruker metode fordi når brukeren restarter spillet brukes den samme metoden men med en annen (backup) liste }
/// <summary> /// Skyter på spilleren /// </summary> /// <param name="gameTime"></param> /// <param name="spiller"></param> private void ShootLaserBeam(GameTime gameTime, Spiller spiller) { if (_bossLaserList.Count <= 0 || _bossLaserList.Equals(null)) { return; } for (int i = 0; i < _bossLaserList.Count; i++) { _bossLaserList[i].GammelPosisjon = _bossLaserList[i].Posisjon; _bossLaserList[i].Posisjon += _bossLaserList[i].Retning * _bossLaserList[i].Hastighet; //Holde styr på hvor lenge den har "levd" sånn at vi kan fjerne den når den overgår en viss grense _bossLaserList[i].TotalLivsTid += gameTime.ElapsedGameTime.Milliseconds; if (_bossLaserList[i].Posisjon.Y <= 5) //Fjerne når den går for høyt { _bossLaserList.RemoveAt(i); break; } //Avstand mellom spiller og laserstråle var laserBeamToPlayerDistance = _bossLaserList[i].Posisjon - spiller.Posisjon; //Fjerner partikkel om den overskrider livstiden sin if (_bossLaserList[i].TotalLivsTid > _bossLaserList[i].LivsTid) { _bossLaserList.RemoveAt(i); } //Gjør skade om den treffer, og fjerner particle if (laserBeamToPlayerDistance.LengthSquared() < 900) { spiller.Farge = Color.Red; // bytter farge spiller.Helse -= 10; _bossLaserList.RemoveAt(i); //fjerner partikkel } try //try/catch tilfelle out of bound. { //samme kollisjonsmetode som brukes for spiller var index = (int)_bossLaserList[i].Posisjon.Y * Verden.KollisjonsKart.Width + (int)_bossLaserList[i].Posisjon.X; if (Verden.KollisjonsKartData[index] == Color.Black) // Svartfarge indikerer bakke og kollisjon { _bossLaserList.RemoveAt(i); //fjerne partikkel } } catch { //out of bound exception } } }
public Fiende(Vector2 posisjon) { _skyteTimer = 0; _laserBeamList = new List <TurretLaser>(); _rotasjonGun = 0f; _gunPosisjon = posisjon + new Vector2(0, -2); Posisjon = posisjon; IsShooting = false; _texture2D = InitGame.FiendeGunTexture2D; //Texture fra InitGame _texture2DLaser = InitGame.FiendeLaserTexture2D; //Texture fra InitGame _spiller = InitGame.Spilleren; _boss = InitGame.TheBoss; }
protected override void Initialize() { // Sette skjermstørrelse //Monogame er fremdeles litt buggy og vi har ikke tilgang på Windows.Forms //Fullscreen og position kan bl.a. ikke settes. _graphics.PreferredBackBufferHeight = 820; _graphics.PreferredBackBufferWidth = 1260; _graphics.ApplyChanges(); _spriteBatch = new SpriteBatch(GraphicsDevice); _fontScale = 1.0f; CurrentLevel = Level.One; var spillerPos = new Vector2(1700, 800); Spilleren = new Spiller(spillerPos); base.Initialize(); }