コード例 #1
0
        public void UruchomAplikacje(string Nazwa, bool poSkonczeniuObecnej = false, bool zapetlic = false)
        {
            Animacja a = null;

            foreach (Animacja x in Animacje)
            {
                if (string.Equals(Nazwa, x.Nazwa))
                {
                    a = x;
                    break;
                }
            }
            if (a == null)
            {
                return;                                 //jak nie znalazlem takiej animacji to nic nie rob
            }
            if (poSkonczeniuObecnej && wykonujAnimcaje) //Czekam na skonczenie obecnej animacji (dodanie do kolejki)
            {
                NastepnaAnimacja       = a;
                zapetlNastepnaAnimacje = zapetlic;
            }
            else //jesli mam natychmiast rozpoczac ta animacje lub i tak nic innego nie animuje
            {
                AnulujAnimacje();
                ObecnaAnimacja       = a;
                zapetlObecnaAnimacje = zapetlic;
                czasOstatnijKlatki   = DateTime.Now;
                nrObecnejKlatki      = 0;
                wykonujAnimcaje      = true;
            }
        }
コード例 #2
0
 public override void Start()
 {
     if (Animacje.Count > 0 && wykonujAnimcaje == false)
     {
         ObecnaAnimacja  = Animacje.First(); // Zwraca pierwszy element z Listy Animacje
         nrObecnejKlatki = 0;
     }
 }
コード例 #3
0
 public void AnulujAnimacje()
 {
     if (wykonujAnimcaje)
     {
         nrObecnejKlatki = (ObecnaAnimacja.KonczNaPierwszejKlatca ? 0 : ObecnaAnimacja.IleKlatek - 1);
     }
     wykonujAnimcaje  = false;
     NastepnaAnimacja = null;
 }
コード例 #4
0
        /******************** Metody ******************/


        public override void Aktualizuj(float dt)
        {
            if (!wykonujAnimcaje)
            {
                return;                    //Wyjdź jak nie ma być animacji
            }
            if ((DateTime.Now - czasOstatnijKlatki).TotalSeconds < ObecnaAnimacja.CzasNaKlatke)
            {
                return;                                         //wyjdź jeżeli czas, który upłynął jest mniejszy niż czas wykonywania klatki
            }
            if (nrObecnejKlatki < ObecnaAnimacja.IleKlatek - 1) //Dajemy -1, z tego powodu, że jak jest 10 klatek i jesteśmy na 8, wchodzimy do petli i DAJEMY 9 klatke, czyli przedostatnią. Na ostatnią kaltke jest inny if
            {
                nrObecnejKlatki++;                              //przejdź do nastepnej klatki
                czasOstatnijKlatki = DateTime.Now;              //ustaw czas wykonywania klatki
            }
            else
            {
                ZakonczonoAnimacje?.Invoke(this, ObecnaAnimacja); //Wywołaj event o zakonczeniu animacji (przechodzi ostatnia klatka)
                if (NastepnaAnimacja == null)                     //Jeżeli po obecnej animacji nie mamy następnej
                {
                    if (zapetlObecnaAnimacje)                     //Opcja 1: Zapetlamy obecna animacje
                    {
                        nrObecnejKlatki    = 0;
                        czasOstatnijKlatki = DateTime.Now;
                    }
                    else  //Wychodzimy
                    {
                        if (ObecnaAnimacja.KonczNaPierwszejKlatca)
                        {
                            nrObecnejKlatki = 0;                                        //mozemy na koniec wyswietlic pierwsza klatke
                        }
                        wykonujAnimcaje = false;
                    }
                }
                else
                {//Przerzucanie nastęnej klatki na obecną
                    ObecnaAnimacja       = NastepnaAnimacja;
                    nrObecnejKlatki      = 0;
                    zapetlObecnaAnimacje = zapetlNastepnaAnimacje;
                    NastepnaAnimacja     = null;
                    czasOstatnijKlatki   = DateTime.Now;
                }
            }
        }