WP XNA 3: Wartości początkowe (Defaults)

Ten wpis jest częścią cyklu o moich przygodach w tworzeniu gier XNA dla Windows Phone.

W grach często mamy sytuację gdzie gracz wielokrotnie rozpoczyna nową grę lub wczytuje jakąś planszę. Wówczas przydaje się miejsce, w którym przechowujemy wartości początkowe (np. bazowa ilość żyć, podstawowa prędkość itd.).

Ja stosują statyczną klasę, którą nazywam Default lub Defaults (nazwa dowolna, jak komu pasuje), gdzie umieszczam statyczne pola z wartościami.

Przykład takiej klasy w poniższym kawałku kodu:

public static class Default
{
	public static readonly float AnimationSpeed = 0.75f;
	public static readonly bool SoundEnabled = true;
	public static readonly bool MusicEnabled = true;
	public static readonly float MusicVolume = 0.60f;
	public static readonly bool ToolTipsEnabled = true;
	public static readonly bool VibrationEnabled = true;
}

Wartości początkowe, bazowe itd. są zebrane w jednym centralnym miejscu. Jeśli będzie ich więcej, można się pokusić o rozbijanie tej klasy na mniejsze, grupować je w różnych przestrzeniach nazw lub zagnieżdżać klasy.

Do tej pory w moich aplikacjach taki mechanizm się sprawdzał. Możliwe, że bardziej rozbudowane gry będą potrzebowały czegoś innego.

Używanie wartości początkowych jest teraz banalnie proste:

public Game()
{
	Player = new Player();
	Sound = Default.SoundEnabled;
	MusicVolume = Default.MusicVolume;
	// ...
}

Do głowy przychodzi też inne podejście, a mianowicie trzymanie takich ustawień, wartości defaultowych w plikach XML.

Za plikami przemawia łatwość edycji z zewnątrz projektu, bez konieczności kompilowania projektu, ale trochę mniej wygodniej w kodzie.

Z kolei za silnie typowanymi klasami, polami przemawia łatwość użycia w kodzie, ale każda zmiana wymusza rekompilację projektu. Przy czym w grach na Windows Phone nie mamy możliwości zdalnej zmiany ustawień i plików naszej aplikacji więc każda zmiana to nowy submit do Marketplace.

Zachęcam do komentowania. Wszelkie uwagi, pytania, wasze rozwiązania czy znalezione u mnie błędy bardzo mile widziane 🙂

Reklamy

4 thoughts on “WP XNA 3: Wartości początkowe (Defaults)

  1. Pingback: WP XNA 0: Wstęp | Wojciech Poniatowski [PL]

  2. Pingback: dotnetomaniak.pl

  3. Witam,

    A może tak klasę statyczną która zawiera publiczne property gdzie odczytujesz wartości z pliku konfiguracyjnego/rejestru/bazy danych.

    Pozdrawiam,

    mr-owl

    • Też ciekawe 🙂 Properties w klasie Defaults były by pomostami do konfiguracji w pliku/bazie itd. Z jednej strony mamy silnie typowane klasy, z drugiej elastyczność podmiany wartości bez rekompilacji.

Możliwość komentowania jest wyłączona.