Frameworki kodowe
Jak Fabled uruchamia Twój kod
Prześledź projekt od kodu źródłowego do gry: co działa i kiedy, jak działa ledger i co dowodzi scenariusz.
Od kodu źródłowego do gry
Twój projekt przechodzi pięć kroków. Tylko ostatni to gra. Wcześniejsze kroki nigdy nie zmieniają żywej postaci.
- Napisz
Edytujesz pliki źródłowe w edytorze źródeł. Nic jeszcze nie działa.
- Sprawdź
Sprawdź i wyświetl kompiluje Twoje bieżące zmiany i uruchamia każdy scenariusz, zapisane lub nie. Problemy pojawiają się w panelu Problemy. Nic nie jest publikowane.
- Zapisz
Zapisz projekt zachowuje kod źródłowy jako nową wersję Twojej gry. Przygotowanie działa tylko na zapisanej wersji, więc zapisz przed przygotowaniem.
- Przygotuj
Przygotuj moją grę buduje prywatne frameworki, ramki i treści z zapisanej wersji. Serwer sprawdza projekt jeszcze raz i jego werdykt jest ostateczny.
- Graj
Gracz tworzy postać z Twojego frameworka. Konstruktor ją buduje, a akcje ją zmieniają.
Co działa kiedy
| Część | Kiedy działa | Co robi |
|---|---|---|
| Konstruktor | Raz, gdy element jest tworzony z frameworka. | Zamienia dane wejściowe na wartości początkowe. Nigdy nie zapisuje. |
| Funkcja ledgera | Gdy element jest budowany, w kolejności, w jakiej schemat deklaruje funkcje, i ponownie po każdej akcji. | Wylicza wartość z zapisanych wartości. Akcja nie może jej zapisać. |
| Akcja | Gdy gracz użyje przycisku, który ją wywołuje. | Zapisuje do ledgera przez ledger.set i ledger.add. |
| Ramka | Za każdym razem, gdy karta jest pokazana. | Czyta zapisane wartości i je rysuje. Jej przyciski wywołują akcje. |
| Scenariusz | W Sprawdź i wyświetl, nigdy w grze. | Buduje element, uruchamia akcje i porównuje każdą wartość i zapis. |
Ledger
Wartości elementu nigdy nie są zmieniane w miejscu. Każda zmiana to zapis w jego ledgerze. ledger.set zastępuje wartość, a ledger.add ją zwiększa. Scenariusze wymieniają te zapisy, więc widzisz dokładnie, co robi reguła.
Wartość pochodna pochodzi z funkcji ledgera, więc akcja nie może jej zapisać. Sprawdzenie ją odrzuca:
which is a non-writable state fieldKonstruktor nadal zwraca pole, które wylicza funkcja ledgera, z wartością zastępczą, na przykład 0. Funkcja ledgera zastępuje ją, gdy element jest budowany. Scenariusz porównuje swoje expectedValues z wartościami po uruchomieniu funkcji ledgera, więc wpisz tam wartość pochodną, a nie zastępczą.
Funkcje ledgera działają w kolejności, w jakiej schemat je deklaruje, a każda widzi wyniki wcześniejszych. Zadeklaruj funkcję po funkcjach, których pola czyta. Tutaj total czyta base, ale jest zadeklarowana pierwsza, więc czyta wartość zastępczą:
{
"ledgerFunctions": [
{
"id": "total",
"name": "Total",
"field": "total",
"source": "rules/total.ts"
},
{
"id": "base",
"name": "Base",
"field": "base",
"source": "rules/base.ts"
}
]
}expectedValues.total: expected 11, constructor returned 1Użyj funkcji ledgera dla wartości, która ma podążać za innymi polami i której żadna akcja nie zapisuje. Użyj wartości z konstruktora dla liczby, którą postać posiada i którą zmieniają akcje, na przykład hp. Konstruktor liczy ją raz, więc późniejsza zmiana pól, z których powstała, jej nie przesuwa.
Co dowodzi scenariusz
- Konstruktor zwraca wartości, których oczekujesz.
- Każda akcja wykonuje dokładnie te zapisy, które wymienisz.
- Wartości pochodne wychodzą poprawnie, także po akcji.
- Każdy plik jest użyty i cały projekt się kompiluje.
Scenariusz nie dowodzi, jak wygląda karta ani jak reguła sprawdza się w grze. Wypróbuj do tego przygotowaną grę.

