Advertisement
bAb1k

SystemWynikow

Nov 28th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.20 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine.UI;
  5.  
  6. public class SystemWynikow : MonoBehaviour
  7. {
  8.     public List<Wynik> wyniki = new List<Wynik>();
  9.     public int maxIloscWynikow = 10;
  10.     public Vector2 pozycjaStartowa = new Vector2(0, 270);
  11.     public Text nazwa, wartosc;
  12.     public Scrollbar scrollBar;
  13.     public GameObject prefabWynik;
  14.     public Transform panelParent;
  15.  
  16.  
  17.     void Start()
  18.     {
  19.         WczytajWyniki();
  20.     }
  21.  
  22.  
  23.     public void DodajWynik()
  24.     {
  25.         if(string.IsNullOrEmpty(nazwa.text) || string.IsNullOrEmpty(wartosc.text))
  26.             return;
  27.  
  28.         Wynik nowyWynik = new Wynik();
  29.         nowyWynik.nazwa = nazwa.text;
  30.         nowyWynik.wartosc = int.Parse(wartosc.text);
  31.  
  32.         wyniki.Add(nowyWynik);
  33.         Debug.Log("Dodano nowy Wynik");
  34.         ZapiszWyniki();
  35.         WczytajWyniki();
  36.     }
  37.  
  38.     public void UsunWyniki()
  39.     {
  40.         foreach(GameObject w in GameObject.FindGameObjectsWithTag("Wynik"))
  41.         {
  42.             Destroy(w);
  43.         }
  44.        
  45.         wyniki.Clear();
  46.         PlayerPrefs.SetString("Wyniki", "");
  47.     }
  48.  
  49.     void ZapiszWyniki()
  50.     {
  51.         string zapiszWyniki = "";
  52.  
  53.         for(int i = 0; i < wyniki.Count; i++)
  54.         {
  55.             if(i != 0 && i != wyniki.Count)
  56.                 zapiszWyniki += ":";
  57.  
  58.             zapiszWyniki += wyniki[i].nazwa + ":" + wyniki[i].wartosc;
  59.         }
  60.  
  61.         PlayerPrefs.SetString("Wyniki", zapiszWyniki);
  62.         Debug.Log("Zapisano wyniki");
  63.     }
  64.  
  65.     void WczytajWyniki()
  66.     {
  67.         wyniki.Clear();
  68.         string splitWynikow = PlayerPrefs.GetString("Wyniki");
  69.        
  70.         if(string.IsNullOrEmpty(splitWynikow))
  71.         {
  72.             Debug.Log("Lista wynikow jest pusta");
  73.             return;
  74.         }
  75.        
  76.         foreach(GameObject go in GameObject.FindGameObjectsWithTag("Wynik"))
  77.         {
  78.             Destroy(go);
  79.         }
  80.        
  81.         string[] splitWynik = splitWynikow.Split(':');
  82.        
  83.         Wynik nowyWynik = new Wynik();
  84.        
  85.         for(int i = 0; i < splitWynik.Length; i++)
  86.         {
  87.             if(i % 2 == 0 && !string.IsNullOrEmpty(splitWynik[i]))
  88.             {
  89.                 nowyWynik = new Wynik();
  90.                 nowyWynik.nazwa = splitWynik[i];
  91.                 nowyWynik.wartosc = int.Parse(splitWynik[i + 1]);
  92.                 wyniki.Add(nowyWynik);
  93.             }
  94.         }
  95.        
  96.         SortowanieWynikow();
  97.        
  98.         Debug.Log("Wczytano wyniki. Ilosc: " + wyniki.Count);
  99.  
  100.         WyswietlWyniki();
  101.  
  102.     }
  103.  
  104.     void WyswietlWyniki()
  105.     {
  106.         foreach(GameObject go in GameObject.FindGameObjectsWithTag("Wynik"))
  107.         {
  108.             Destroy(go);
  109.         }
  110.  
  111.         scrollBar.value = 1;
  112.  
  113.         for(int i = 0; i < wyniki.Count; i++)
  114.         {
  115.             GameObject nowyWynik = Instantiate(prefabWynik) as GameObject;
  116.             nowyWynik.transform.parent = GameObject.Find("Canvas").transform;
  117.             nowyWynik.GetComponent<RectTransform>().localPosition = new Vector3(pozycjaStartowa.x, pozycjaStartowa.y - (i * 60), 0);
  118.             nowyWynik.transform.parent = panelParent;
  119.             nowyWynik.name = wyniki[i].nazwa + "_" + wyniki[i].wartosc;
  120.             nowyWynik.transform.GetChild(0).GetComponent<Text>().text = wyniki[i].nazwa;
  121.             nowyWynik.transform.GetChild(1).GetComponent<Text>().text = wyniki[i].wartosc.ToString();
  122.         }
  123.     }
  124.  
  125.     void SortowanieWynikow()
  126.     {
  127.         wyniki.Sort(delegate(Wynik x, Wynik y) {return y.wartosc.CompareTo(x.wartosc);});
  128.        
  129.         if(wyniki.Count > maxIloscWynikow)
  130.         {
  131.             Debug.Log("Usunieto: " + wyniki[wyniki.Count -1].nazwa);
  132.             wyniki.RemoveAt(wyniki.Count -1);
  133.         }
  134.  
  135.     }
  136. }
  137.  
  138. [System.Serializable]
  139. public class Wynik
  140. {
  141.     public string nazwa;
  142.     public int wartosc;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement