public override void Rysuj(ref SpriteBatch SB) { if (!Zniszczony) { SilnikDym.Rysuj(ref SB); SB.Draw(Obrazek, Pozycja, null, Color.White, Obrot, Srodek, Vector2.One, SpriteEffects.None, 0); SilnikPlomien.Rysuj(ref SB); } else { Wybuch.Rysuj(ref SB); Grafika.Eksplozja1.Rysuj((int)Pozycja.X, (int)Pozycja.Y, SekwencjaWybuchu / 2, 0, ref SB); } }
public override void Pracuj() { if (!Zniszczony) { Random rand; rand = new Random(); Vector2 srodek = Pozycja + rozmiary / 2; Obrot += (float)(rand.Next(0, 100)) / 100f * Niestabilnosc; float Sin = (float)Math.Sin(Obrot); float Cos = (float)Math.Cos(Obrot); Pozycja.X += Sin * V; Pozycja.Y -= Cos * V; //pozycja silnikow float pozx = X; float pozy = (Y + rozmiary.Y / 2); pozx = pozx - X; pozy = pozy - Y; float tx = pozx, ty = pozy; pozx = tx * Cos - ty * Sin; pozy = tx * Sin + ty * Cos; pozx += X; pozy += Y; SilnikDym.X = (int)pozx; SilnikDym.Y = (int)pozy; SilnikDym.Obrot = Obrot; SilnikPlomien.X = (int)pozx; SilnikPlomien.Y = (int)pozy; SilnikPlomien.Obrot = Obrot; SilnikDym.Pracuj(true); SilnikPlomien.Pracuj(true); T++; if (T == KT) { T = 0; Niestabilnosc = -Niestabilnosc; } if (Kolizja(GlobalAcc.StatekGracza)) { float test1 = OdlegloscDo(GlobalAcc.StatekGracza); Vector2 dif = Pozycja - GlobalAcc.StatekGracza.Pozycja; float obrot_wybuchu = MathHelper.PiOver2 + (float)Math.Atan2(dif.Y, dif.X); Color koncowy = new Color(255, 0, 0, 30); Wybuch = new ParticleCirle((int)Pozycja.X, (int)Pozycja.Y, 2, 4, 2, 4, Color.Yellow, Color.Orange, koncowy, koncowy, 0f, 0f, 54f, 55f, obrot_wybuchu - MathHelper.PiOver2, obrot_wybuchu + MathHelper.PiOver2, 13, 15, 1, Rodzaj_Ruchu.RuchPrzyspieszony, 100); Zniszczony = true; GlobalAcc.StatekGracza.ReakcjaKolizja(Sila, Pozycja); } } else { Wybuch.Pracuj(true); if (SekwencjaWybuchu < Grafika.Eksplozja1.IloscX * 2 - 1) { SekwencjaWybuchu++; } } }
public override void Czysc() { SilnikDym.Czysc(); SilnikPlomien.Czysc(); }
public Rakieta Kopia(Vector2 pozycja, float v, float obrot) { Rakieta ret = new Rakieta(pozycja, ref Obrazek, obrot, Sila, SilnikPlomien.Kopia(), SilnikDym.Kopia(), v, KT, Niestabilnosc); return(ret); }