Skip to content

Conversation

@kkafar
Copy link
Collaborator

@kkafar kkafar commented Apr 19, 2022

Description

Generalnie dodałem rejestrowanie obiektów GameObjectView do GameObject. Teraz gdy kontroler zmodyfikuje obiekt ten może powiadomić swoją reprezentację o zaistniałych zmianach.
Można to ewentualnie uprościć i w GameObject dodać pole z referencją do swojej reprezentacji, ale wydaje mi się, że obecne rozwiązanie jest bardziej elastyczne.

How

Wyciągnąłem logikę tworzenia GameObject i GameObjectView do osobnych klas (factory methods), a dla LocationModel zrobił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 do Initializer, która rejestruje widoki do modelu.

Nie testowałem tego jeszcze.

Checklist

  • Included code to test these changes
  • Updated Jira

@kkafar kkafar changed the title @kkafar/register view to model chore: register view to model Apr 21, 2022
kkafar added 4 commits April 23, 2022 09:37
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
@kkafar kkafar force-pushed the @kkafar/register-view-to-model branch from 03ce151 to 6614408 Compare April 23, 2022 08:26
kkafar added 4 commits April 23, 2022 10:47
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)
@kkafar kkafar marked this pull request as ready for review April 23, 2022 09:10
@kkafar kkafar requested review from co012, ksiek127 and mhawryluk April 23, 2022 09:15
*/
public static GameObject fromConfig(GameObjectConfig config) {
// TODO: add case for Player type here!
switch (GameObject.Type.valueOf(config.getTypeString())) {
Copy link
Collaborator

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?)

Suggested change
switch (GameObject.Type.valueOf(config.getTypeString())) {
switch (GameObject.Type.valueOf(config.getTypeString().toUpperCase())) {

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

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.

@kkafar kkafar changed the base branch from master to development April 24, 2022 12:25
@kkafar kkafar merged commit 1bdcd63 into development Apr 24, 2022
@mhawryluk mhawryluk deleted the @kkafar/register-view-to-model branch April 30, 2022 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants