-
Notifications
You must be signed in to change notification settings - Fork 0
chore: register view to model #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
mainStage is coming as a constructor parameter and it is entry stage provided by JavaFX. We do not change, and we do not want to change this reference anywhere.
We do not intent to instantiate abstract InteractiveGameObject type. Only more specific types should be instantiated.
This aims to extract the object creation logic from LocationView class
03ce151 to
6614408
Compare
This aims to extract the creation logic to separate class to make object
injection possible. (Object injection is needed as we need register view
to model)
| */ | ||
| public static GameObject fromConfig(GameObjectConfig config) { | ||
| // TODO: add case for Player type here! | ||
| switch (GameObject.Type.valueOf(config.getTypeString())) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
program się tu mi wywala, ale można szybko poprawić. wartości enumów są pisane wielkimi literami, a w plikach konfiguracyjnych jest małymi. valueOf zwraca wartości enumów na podstawie ich nazwy, musi się zgadzać dokładnie. jeśli w zamyśle było zwracanie na podstawie atrybutu asString, to trzeba napisać metodę w GameObject.Type do tego. oprócz tego w configu location-1 pojawia się typ 'interactive', trzeba zamienić raczej na 'dialog' i dodać wartości assetPath do wszystkich obiektów (bo zakładam, że obiekty są specyfikowane w plikach location, a katalogi objects są do wyrzucenia?)
| switch (GameObject.Type.valueOf(config.getTypeString())) { | |
| switch (GameObject.Type.valueOf(config.getTypeString().toUpperCase())) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nie, katalogi objects maja zostać: będzie możliwość specyfikowania obiektów zarówno w konfiguracji lokacji jak i w katalogu obejcts -- zacząłem to robić ale wypadło. Dokończę to możliwie szybko.
Description
Generalnie dodałem rejestrowanie obiektów
GameObjectViewdoGameObject. Teraz gdy kontroler zmodyfikuje obiekt ten może powiadomić swoją reprezentację o zaistniałych zmianach.Można to ewentualnie uprościć i w
GameObjectdodać pole z referencją do swojej reprezentacji, ale wydaje mi się, że obecne rozwiązanie jest bardziej elastyczne.How
Wyciągnąłem logikę tworzenia
GameObjectiGameObjectViewdo osobnych klas (factory methods), a dlaLocationModelzrobiłem buildera (jak teraz na niego patrzę to jest całkowicie zbędny, ale jak już go napisałem to nie kasowałem... :D), to pozwoliło na dodanie metody doInitializer, która rejestruje widoki do modelu.Nie testowałem tego jeszcze.
Checklist