public void PoruszanieSamochodem() { if (trasa.Count > 0) { if (!czyCzekamNaPozwolenie) { Punkt <double> przesuniecie; if (trasa[0].TypWierzcholka == TypWierzcholkaSamochodow.Skrzyzowanie) { przesuniecie = ((WejscieNaSkrzyzowanie)trasa[0].ObiektDrogi).Przesuniecie(ObecnaPozycja.Pozycja, trasa[1].Pozycja); } else { przesuniecie = trasa[0].ObiektDrogi.Przesuniecie(ObecnaPozycja.Pozycja); } Geometria geometriaPieszyCel = new Geometria(new Punkt <double>(trasa[0].Pozycja.X * 80 + przesuniecie.X, trasa[0].Pozycja.Y * 80 + przesuniecie.Y), new Punkt <double>(ZwrocPozycje().X + obrazek.Width / 2, ZwrocPozycje().Y + obrazek.Height / 2)); if (geometriaPieszyCel.ObliczOdlegloscPomiedzy() >= 2) { UstawPozycje(new Punkt <double>(ZwrocPozycje().X + geometriaPieszyCel.ObliczWektorPrzesuniecia(2).X, ZwrocPozycje().Y + geometriaPieszyCel.ObliczWektorPrzesuniecia(2).Y)); obrazek.RenderTransform = new RotateTransform(geometriaPieszyCel.ObliczKatPomiedzy()); } else { ObecnaPozycja = trasa[0]; trasa.RemoveAt(0); czyCzekamNaPozwolenie = true; } } if (czyCzekamNaPozwolenie && trasa.Count > 0) { Cel = trasa.Count >= 2 ? trasa[1] : null; if (trasa[0].CzyMogeWejsc(this)) { ObecnaPozycja.Wyjdz(this); czyCzekamNaPozwolenie = false; trasa[0].Wejdz(this); } else if (ObecnaPozycja.TypWierzcholka == TypWierzcholkaSamochodow.Skrzyzowanie) { ((WejscieNaSkrzyzowanie)ObecnaPozycja.ObiektDrogi).ZmienPrzecinanieDrogi(this); } } } else { ObecnaPozycja.Wyjdz(this); Dispose(); } }
public void PoruszaniePostaci() { if (trasa.Count > 0) { if (!czyCzekamNaPozwolenie) { Geometria geometriaPieszyCel = new Geometria(new Punkt <double>(trasa[0].Pozycja.X * 40 + 20, trasa[0].Pozycja.Y * 40 + 20), new Punkt <double>(ZwrocPozycje().X + obrazek.Width / 2, ZwrocPozycje().Y + obrazek.Height / 2)); if (geometriaPieszyCel.ObliczOdlegloscPomiedzy() >= 2) { UstawPozycje(new Punkt <double>(ZwrocPozycje().X + geometriaPieszyCel.ObliczWektorPrzesuniecia(1.5).X, ZwrocPozycje().Y + geometriaPieszyCel.ObliczWektorPrzesuniecia(1.5).Y)); obrazek.RenderTransform = new RotateTransform(geometriaPieszyCel.ObliczKatPomiedzy()); } else { ObecnaPozycja = trasa[0]; trasa.RemoveAt(0); czyCzekamNaPozwolenie = true; } } if (czyCzekamNaPozwolenie && trasa.Count > 0) { if (trasa[0].CzyMogeWejsc(this)) { ObecnaPozycja.Wyjdz(this); czyCzekamNaPozwolenie = false; trasa[0].Wejdz(this); } } } else { Dispose(); } }