Tworzenie gry strategicznej typu Dune 2.


Poprzedni wpis (2) | Następny wpis (4)

Wpis 3 (24.09.2016)

Temat: System poleceń oraz wydarzenia automatyczne

Wykorzystajmy ideę Wydarzeń, aby stworzyć system wydawania Poleceń. Polecenie to wydarzenie polegające na świadomym wyborze źródła wydarzenia. Wykonanie polecenia to akcja. Przykładowo rozkaz budowy elektrowni wydany placowi budowy jest poleceniem. Plac budowy dostaje wówczas polecenie rozpoczęcia budowy. Plac budowy przyjmuje rozkaz i zwraca, czy może być on wykonany. Jeśli np. nie starczy środków, powiadamia nas, że budynek nie może być wzniesiony.

Z kolei zakończenie budowy budynku jest również wydarzeniem i Plac Budowy informuje o jego zajściu źródło polecenia. Jednakże tego typu wydarzenie nie jest poleceniem. Ze względu na charakter tego wydarzenia nazwałem go "automatycznym", ponieważ tego typu wydarzenia zachodzą automatycznie.

Rozszerzmy strukturę Wydarzenie, by obsłużyć Polecenia:

struct Wydarzenie
{
    UBYTE typ; /* Typ wydarzenia */
    UBYTE polecenie; /* Typ polecenia */
    UWORD szczegoly; /* Szczegóły polecenia */
    APTR dane; /* Dane dodatkowe (np. typ budynku do wzniesienia) */
};

enum
{
    WYDARZENIE_CZASOWE, POLECENIE, WYDARZENIE_AUTOMATYCZNE
};
Typy poleceń:
enum
{
    BUDOWA, REPERACJA, MODERNIZACJA
};
Szczegóły poleceń:
enum
{
    ROZPOCZNIJ, WSTRZYMAJ, KONTYNUUJ, ANULUJ
};
Strukturę Budynek oczywiście należy rozszerzyć o wytrzymałość oraz postęp budowy i modernizacji. Mając te wszystkie elementy (Wydarzenia, Polecenia) można zrealizować pracę  wielu budynków, np. Fabryk, bądź Placu Budowy.

Polecenie, tak jak przy wydarzeniach czasowych musi być zainicjowane (przez funkcję wydającą polecenie), a następnie zrealizowane (przez funkcję wykonującą polecenie).

Wydarzenia typu "Budowa elektrowni została zakończona" nie muszą być inicjowane, one po prostu zachodzą we właściwych momentach (w tym przypadku, gdy elektrownia zostanie zbudowana).

Mając system Poleceń można już pokusić się o zrobienie interfejsu użytkownika i uczynienie gry grywalną. Najpierw jednak chciałbym podsumować informacje z 3 dokumentów, uzupełnić niektóre struktury i napisać brakujące funkcje.

Przykładowo Elektrownia będzie produkować energię i należy gdzieś przetrzymywać informację o ilości produkowanej energii. Również wszystkie budynki będą mieć punkty wytrzymałości. Te wszystkie informacje należy wpisać do struktury Budynek.

Następny temat będzie uzupełniający i podsumowujący 3 dokumenty. Następnie rozpocznę dość obszerny temat Jednostek w grze RTS. Będę robił też interfejs użytkownika.

Robert Szacki e-mail: robert.szacki(małpa)gmail.com