/// <summary> /// Suoritetaan jokaisella pelin framella. /// </summary> public override void Update(Time time) { PhysicsObject p = Peli.pelaaja; //Jos pelaaja on tuhoutunut -> palataan. if (p.IsDestroyed) { return; } //Jos pelaaja on liian kaukana spawnaus paikasta -> palataan if (Vector.Distance(spawnPaikka, p.Position) >= 800) { return; } else { spawnPaikka = p.Position; } //Jos vihollinen on piilossa ja ajastin on menty läpi, etsitään sopivaa paikkaa spawnata pelaajan läheisyyteen. //Jos sopivaa paikkaa ei löydy -> ei spawnata, yritetään uudestaan seuraavalla framella. if (nakyva == false && ajastin.Times == 0) { //Haetaan satunnainen paikka pelaajan lähettyviltä: Vector newPosition = RandomGen.NextVector(LegendOfPallo.TILE_SIZE * 2, LegendOfPallo.TILE_SIZE * 6); newPosition += p.Position; //Jos satunnainen paikka on pelialueen ulkopuolella -> ei kelpaa joten palataan. if (newPosition.X < Peli.Level.Left || newPosition.X > Peli.Level.Right || newPosition.Y < Peli.Level.Bottom || newPosition.Y > Peli.Level.Top) { return; } //Jos satunnaisesti valittu paikka on tyhjä, spawnataan olio siihen paikkaan ja muutetaan näkyväksi. //Jostain syystä tämän pitää olla <= 1 eikä == 0, tai muuten ei toimi fullscreenissa tai suurella resoluutiolla if (Peli.GetObjectsAt(newPosition, LegendOfPallo.TILE_SIZE).Count <= 1) { nakyva = true; IsVisible = true; Position = newPosition; ase.AsetaKanuuna(2, 2, 1); ajastin.Start(1); } } base.Update(time); }