[XNA 4.0] SilverGUI for XNA


Download: SilverGUI v.0.0.1 - Chomikuj | SilverGUI v.0.0.1 - Speedy Share
Download 2: SilverGUIv0.0.1 + Content.rar

Poniżej przedstawię opis korzystania z biblioteki.

Aby korzystać z biblioteki należy dodać ją do naszych referencji w projekcie XNA a następnie dodać ją do naszego kodu klasy definiującej układ kontrolek używając instrukcji:

using SilverGUI;

Potem należy dodać jeszcze do "Content" naszej aplikacji folder z 1 białym kwadratem i 3 czcionki(całość można pobrać z 2 downloadu):



Działanie mojej biblioteki opiera się na 2 klasach:

Window: jest to klasa biblioteki, zarządza ona kontrolkami i nie mamy na nią większego wpływu
"Layout": może w przyszłości zrobię tutaj interfejs, nie mniej jest to klasa którą tworzymy my i która dziedziczy z klasy Window.
Są także klasy poszczególnych kontrolek ale o nich później.

Oto przykładowa konstrukcja klasy "Layout`owej":



Jak widzimy mamy tutaj zaznaczone na czerwono użycie nazw SilverGUI. Następnie dziedziczenie naszej klasy "Layout`owej" z klasy Window. Potem odpowiedni konstruktor i na końcu 2 podstawowe funkcję naszego layoutu: odświeżanie i rysowanie.
Są także klasy poszczególnych kontrolek. Aby je dodać musimy najpierw utworzyć ich zmienne w naszym Layoucie, potem je inicjujemy według naszych potrzeb a w razie potrzeby wykonujemy na nich dodatkowe operacje(oczywiście można to robić także później w trakcie wykonywania się naszego programu) a na końcu dodajemy je do klasy Window by mogła na nich wykonywać działania.

W klasie naszej gry kod naszej klasy Layoutowej powinnien wyglądać tak:
INFO: menuL to nazwa obiektu klasy "MenuLayout" utworzonego przez nas powyżej
Poniżej przykład zastosowania przycisków w naszej aplikacji:
Przed wczytaniem właściwości kontrolek należy odświeżyć stan naszego Layouta poprzez metodę Update().
Potem możemy już korzystać z właściwości konkretnie interesującego nas przycisku i wykonywać przy tym odpowiednie akcje. Myślę że jest to dosyć intuicyjne.

Na razie istnieją 2 klasy komponentów: Button i InputButton:
Button - służy jako zwykły przycisk, można wyróżnić w nim takie stany jak:
- Visable: określa czy przycisk jest widoczny a zarazem aktywny.
- najechany: określa czy znajduje się na nim kursor myszy.
- wciśnięty: określa czy przycisk myszy jest wciśnięty na tym przycisku
- wciśniętyPoRazPierwszy: określa czy został naciśnięty po raz pierwszy(wywołanie nastąpi tylko raz przy każdym kliknięciu)
Dodatkowo metoda SetTextColor(Color kolorTXT) określa jakiego koloru ma być tekst wypisany na przycisku.
Metoda GetText() pobiera tekst z przycisku, a metoda DeflautText(String tekstDomyślny) ustawia tekst jaki ma być wyświetlony.
Jego konstruktor natomiast przyjmuje Rectangle jego położenia i wymiarów tak jak w XNA.

InputButton - służy do wpisywania tekstu. Posiada takie stany jak:
- Visable: określa czy przycisk jest widoczny a zarazem aktywny.
- najechany: określa czy znajduje się na nim kursor myszy.
- wciśnięty: określa czy przycisk myszy jest wciśnięty na tym przycisku
- wciśniętyPoRazPierwszy: określa czy został naciśnięty po raz pierwszy(wywołanie nastąpi tylko raz przy każdym kliknięciu)

- AKTYWNE: Określa czy przyjmuje komunikaty z klawiatury(czy można wpisywać tekst).
Metoda GetText() pobiera tekst z przycisku, a metoda DeflautText(String tekstDomyślny) ustawia tekst jaki ma być wyświetlany domyślnie.
Jego konstruktor natomiast przyjmuje Rectangle jego położenia i wymiarów tak jak w XNA.

Nie zalecam zmieniania stanów naszych kontrolek, powinny one służyć jedynie do odczytu. Prócz stanu Visable. Do ustawiania wszelkiego typu rzeczy powinny służyć metody.
Być może niedługo dodam kontrolkę do listy rozsuwanej albo rozwijanej i pasek postępu.