Skip to content

Conversation

@ksiek127
Copy link
Collaborator

Description

Checklist

  • Included code to test these changes
  • Updated Jira

kkafar and others added 30 commits April 11, 2022 20:15
Unit tests require these methods -> they must stay being visible inside
a package
isOkValueNull, isErrorValueNull
# Conflicts:
#	src/main/java/io/rpg/Initializer.java
#	src/main/java/io/rpg/controller/Controller.java
#	src/main/java/io/rpg/model/location/LocationModel.java
#	src/main/java/io/rpg/view/GameObjectView.java
#	src/main/java/io/rpg/view/LocationView.java
#	src/main/java/io/rpg/viewmodel/LocationViewModel.java
@ksiek127 ksiek127 requested a review from kkafar April 21, 2022 16:10
Copy link
Collaborator

@kkafar kkafar left a comment

Choose a reason for hiding this comment

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

IMO generalnie git, zostawiłem kilka uwag. Możliwe, że będzie warto poczekać na mojego PRa bo planowałem tam zrobić kilka rzeczy o których napisałem w review -- chyba, że bym się ociągał (bo nie wiem na kiedy zrobię) to wtedy nie ma sensu czekać :D

Na pewno będzie trzeba wmergować tutaj mastera, bo zrobiłeś brancha odbijając się od mojej gałęzi, na której ja potem wiele plików usunąłem i kilka rzeczy zmieniłem -- a tych zmian już tutaj nie ma. Najłatwiej zrobić to wchodząc na swoją gałąź i mergując (wcześniej jeszcze warto pobrać aktualnego mastera):

git switch master
git pull
git switch @ksiek127/RPG-84-display-objects-on-screen
git merge master

Jak coś to mogę z tym pomóc.

Comment on lines 99 to 100
GameObject gameObject = GameObject.fromConfig(goconfig);
gameObjects.add(gameObject);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
GameObject gameObject = GameObject.fromConfig(goconfig);
gameObjects.add(gameObject);
gameObjects.add(GameObject.fromConfig(goconfig));

Comment on lines 1 to 4
package io.rpg.view;

public class IGameObjectModelStateChangeObserver {
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ten interfejs był ostatecznie wywalony. Zanim zmergujemy tego brancha będzie trzeba go wyczyścić z rzeczy, których już nie ma.

Comment on lines 1 to 5
package io.rpg.view;

public interface ILocationModelStateChangeObserver {

}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Podobnie tutaj.

Comment on lines 1 to 7
package io.rpg.view;

public interface IObservable<T> {
void addListener(final T listener);

void removeListener(final T listener);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Tak samo

Comment on lines 1 to 5
package io.rpg.view;

public interface IOnClickedObserver {
void onClick(GameObjectView source);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Tak samo

view.getViewModel().setBackground(new Image(config.getBackgroundPath()));
// todo: na podstawie configu ustawić pola korzystając z view modelu
List<GameObjectConfig> objectConfigs = config.getObjects();
for(GameObjectConfig objectConfig: objectConfigs){
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
for(GameObjectConfig objectConfig: objectConfigs){
for(GameObjectConfig objectConfig : objectConfigs) {

Comment on lines 73 to 77
List<GameObjectConfig> objectConfigs = config.getObjects();
for(GameObjectConfig objectConfig: objectConfigs){
GameObjectView goview = new GameObjectView(Path.of(objectConfig.getAssetPath()), objectConfig.getPosition());
viewModel.addChild(goview);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Jest spoko, ale można przemyśleć tworzenie obiektów GameObjectView już w Initializer. Wyciągnięcie tego tam i tak będzie potrzebne, zdaje się, bo będzie trzeba zarejestrować view do modelu (czyli każdy GameObjectView dodać jako observera do odpowiadającego mu GameObject). Prawdopodobnie zrobię w tym PR, ale jeszcze nie wiem na kiedy to będzie gotowe.

Comment on lines 1 to 37
package io.rpg.viewmodel;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;

import java.net.URL;
import java.util.ResourceBundle;

public class GameObjectViewModel implements Initializable {
@FXML
private Pane imgPane;

@FXML
private ImageView gameObjectView;
@FXML
private HBox parent;

public GameObjectViewModel() {
}

public void setImage(Image image){
this.gameObjectView.imageProperty().setValue(image);
}

@Override
public void initialize(URL location, ResourceBundle resources) {
gameObjectView.imageProperty().addListener((property, oldImg, newImg) -> {
imgPane.setPrefWidth(newImg.getWidth());
imgPane.setPrefHeight(newImg.getHeight());
});
}
}
Copy link
Collaborator

@kkafar kkafar Apr 21, 2022

Choose a reason for hiding this comment

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

Wydaje mi się, że te klasa nie będzie potrzebna, bo wszystko co potrzebujemy żeby narysować GameObjectView to ImageView, który jest jego superklasą -> chyba nie trzeba nic dodatkowego.

Edit: ViewModel był zrobiony dla klas LocationView i popupów bo one są ładowane z FMXL'a i JavaFX chce mieć takie coś (ona nazywa to kontrolerem (zresztą chyba słusznie, zależy jak patrzeć), ale my dostosowaliśmy nazewnictwo, żeby nie kolidowało z naszym kontrolerem). GameObjectView nie jest ładowane z FXML'a.

Comment on lines 51 to 53
public void addChild(ImageView child){
parent.getChildren().add(child);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
public void addChild(ImageView child){
parent.getChildren().add(child);
}
public void addChild(ImageView child) {
parent.getChildren().add(child);
}

Dokładnie o to chodziło, gicik.

<HBox fx:id="parent" alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="640.0" prefWidth="640.0" style="-fx-background-color: #cb2f2f;" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="io.rpg.viewmodel.LocationViewModel">
<children>
<Pane fx:id="contentPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="640.0" prefWidth="640.0">
<Pane fx:id="contentPane" viewOrder="1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="640.0" prefWidth="640.0">
Copy link
Collaborator

Choose a reason for hiding this comment

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

Z czystej ciekawośCi: co robi ten viewOrder="1"?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

to jest taki jakby z-index, tzn kolejnosc, w ktorej sa wyswietlane rzeczy (np jesli sa dwa obiekty w tym samym miejscu to ten z wiekszym viewOrder zasloni ten z mniejszym)
teraz w sumie juz niepotrzebny, wyrzuce, to zostalo po tym, jak zrobilem fxml dla kazego gameobjectu i chcialem zeby byly rysowane na tle, a nie na odwrot

}

public void addChild(ImageView child){
parent.getChildren().add(child);
Copy link
Collaborator

Choose a reason for hiding this comment

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

tak jak jest obecnie obrazki są rysowane obok tła, zamiast na nim. zmiana parent na contentPane chyba załatwia sprawę

Suggested change
parent.getChildren().add(child);
contentPane.getChildren().add(child);

// todo: na podstawie configu ustawić pola korzystając z view modelu
List<GameObjectConfig> objectConfigs = config.getObjects();
for(GameObjectConfig objectConfig: objectConfigs){
GameObjectView goview = new GameObjectView(Path.of(objectConfig.getAssetPath()), objectConfig.getPosition());
Copy link
Collaborator

Choose a reason for hiding this comment

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

pozycję w postaci numeru wiersza i kolumny trzeba jeszcze przeskalować przez rozmiar kwadratu siatki. raczej nie w tym miejscu, ale gdzieś trzeba

@kkafar kkafar changed the base branch from master to development April 24, 2022 12:25
@kkafar kkafar merged commit 10f3f70 into development Apr 24, 2022
@mhawryluk mhawryluk deleted the @ksiek127/RPG-84-display-objects-on-screen 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.

4 participants