Fixed garbage code

This commit is contained in:
lieght
2025-11-28 13:59:11 +01:00
parent 0ab071693f
commit 1ec1c0d13d
8 changed files with 170 additions and 215 deletions

View File

@@ -4,6 +4,8 @@ import javafx.geometry.Pos;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import org.toop.app.widget.Primitive; import org.toop.app.widget.Primitive;
import org.toop.app.widget.WidgetContainer;
import org.toop.app.widget.complex.PopupWidget;
import org.toop.app.widget.complex.ViewWidget; import org.toop.app.widget.complex.ViewWidget;
import javafx.scene.control.Button; import javafx.scene.control.Button;
@@ -11,50 +13,50 @@ import org.toop.local.AppContext;
import java.io.File; import java.io.File;
public class BaseTutorialWidget extends ViewWidget { public class BaseTutorialWidget extends PopupWidget {
private TState state;
private Text tutorialText; private Text tutorialText;
private Button previousButton; private Button previousButton;
private Button nextButton; private Button nextButton;
private Button noButton;
private Button yesButton;
private Button neverButton;
private ImageView imagery; private ImageView imagery;
private int currentTextIndex = 0;
public BaseTutorialWidget(String key, Runnable onNo, Runnable onYes, Runnable onNever) { public BaseTutorialWidget(String key) {
System.out.println("Trying to initialize..."); System.out.println("Trying to initialize...");
this.tutorialText = Primitive.text(key); this.tutorialText = Primitive.text(key);
this.yesButton = Primitive.button("ok", () -> onYes.run()); WidgetContainer.add(Pos.CENTER, this);
this.noButton = Primitive.button("no", () -> onNo.run());
this.neverButton = Primitive.button("never", () -> onNever.run());
var a = Primitive.hbox(yesButton, noButton, neverButton);
add(Pos.CENTER, Primitive.vbox(tutorialText, a));
} }
public BaseTutorialWidget(TState state, String key, Runnable onPrevious, Runnable onNext) { private void setOnPrevious(Runnable onPrevious) {
this.state = state; this.previousButton = Primitive.button("<", onPrevious);
this.tutorialText = Primitive.text(key);
this.previousButton = Primitive.button("<", () -> onPrevious.run());
this.nextButton = Primitive.button(">", () -> onNext.run());
var w = Primitive.hbox(previousButton, nextButton);
add(Pos.CENTER, Primitive.vbox(tutorialText, w));
} }
public BaseTutorialWidget(TState state, String key, File image, Runnable onPrevious, Runnable onNext) { private void setOnNext(Runnable onNext) {
this.state = state; this.nextButton = Primitive.button(">", onNext);
}
public void setTutorial(File image, Runnable onPrevious, Runnable onNext) {
setOnPrevious(onPrevious);
setOnNext(onNext);
this.imagery = Primitive.image(image); this.imagery = Primitive.image(image);
this.tutorialText = Primitive.text(key);
this.previousButton = Primitive.button("<", () -> onPrevious.run());
this.nextButton = Primitive.button(">", () -> onNext.run());
var w = Primitive.hbox(previousButton, nextButton); var w = Primitive.hbox(previousButton, nextButton);
var x = Primitive.vbox(imagery, tutorialText); var x = Primitive.vbox(imagery, tutorialText);
add(Pos.CENTER, Primitive.vbox(x, w)); add(Pos.CENTER, Primitive.vbox(x, w));
} }
public void update(String key, File image) { public void update(boolean next, String[] locKeys, File[] imgs) {
currentTextIndex = next ? currentTextIndex + 1 : currentTextIndex - 1;
if (currentTextIndex >= locKeys.length) {
currentTextIndex--;
return;
} else if (currentTextIndex < 0) {
currentTextIndex++;
return;
}
tutorialText.textProperty().unbind(); tutorialText.textProperty().unbind();
tutorialText.setText(AppContext.getString(key)); tutorialText.setText(AppContext.getString(locKeys[currentTextIndex]));
imagery.setImage(Primitive.image(image).getImage()); imagery.setImage(Primitive.image(imgs[currentTextIndex]).getImage());
} }
} }

View File

@@ -5,35 +5,35 @@ import org.toop.app.widget.complex.ViewWidget;
import java.io.File; import java.io.File;
public class Connect4TutorialWidget extends ViewWidget { public class Connect4TutorialWidget extends BaseTutorialWidget {
private TState state; private final String[] keys;
private String[] keys = {"connect4.1", "connect4.2"};
private File[] images = {new File("app/src/main/resources/assets/images/connect41.png"), new File("app/src/main/resources/assets/images/connect42.png")}; private final File[] images = {
private BaseTutorialWidget tutorialWidget; new File("app/src/main/resources/assets/images/connect41.png"),
new File("app/src/main/resources/assets/images/connect42.png")
};
public Connect4TutorialWidget() { public Connect4TutorialWidget() {
this.state = new TState(keys.length); String[] newKeys = {
tutorialWidget = new BaseTutorialWidget( "connect4.1", "connect4.2"
state, };
keys[state.getCurrent()],
images[state.getCurrent()], super(newKeys[0]);
() -> {
if (state.hasPrevious()) { keys = newKeys;
state.previous();
update(); setTutorial(
} images[0],
}, () -> update(false, keys, images),
() -> { () -> update(true, keys, images)
if (state.hasNext()) {
state.next();
update();
}
}
); );
add(Pos.CENTER, tutorialWidget);
} }
private void update() { public String[] getKeys() {
tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]); return keys;
}
public File[] getImages() {
return images;
} }
} }

View File

@@ -5,35 +5,29 @@ import org.toop.app.widget.complex.ViewWidget;
import java.io.File; import java.io.File;
public class ReversiTutorialWidget extends ViewWidget { public class ReversiTutorialWidget extends BaseTutorialWidget {
private TState state; private final String[] keys;
private String[] keys = {"reversi1", "reversi2", "reversi3", "reversi4"}; private final File[] images = {new File("app/src/main/resources/assets/images/reversi1.png"), new File("app/src/main/resources/assets/images/reversi2.png"), new File("app/src/main/resources/assets/images/cat.jpg"), new File("app/src/main/resources/assets/images/cat.jpg")};
private File[] images = {new File("app/src/main/resources/assets/images/reversi1.png"), new File("app/src/main/resources/assets/images/reversi2.png"), new File("app/src/main/resources/assets/images/cat.jpg"), new File("app/src/main/resources/assets/images/cat.jpg")};
private BaseTutorialWidget tutorialWidget;
public ReversiTutorialWidget() { public ReversiTutorialWidget() {
this.state = new TState(keys.length); String[] newKeys = {"reversi1", "reversi2", "reversi3", "reversi4"};
tutorialWidget = new BaseTutorialWidget(
state, super(newKeys[0]);
keys[state.getCurrent()],
images[state.getCurrent()], keys = newKeys;
() -> {
if (state.hasPrevious()) { setTutorial(
state.previous(); images[0],
update(); () -> update(false, keys, images),
} () -> update(true, keys, images)
},
() -> {
if (state.hasNext()) {
state.next();
update();
}
}
); );
add(Pos.CENTER, tutorialWidget);
} }
private void update() { public String[] getKeys() {
tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]); return keys;
}
public File[] getImages() {
return images;
} }
} }

View File

@@ -0,0 +1,28 @@
package org.toop.app.widget.tutorial;
import javafx.geometry.Pos;
import org.toop.app.widget.Primitive;
import org.toop.app.widget.WidgetContainer;
import org.toop.app.widget.complex.PopupWidget;
public class ShowEnableTutorialWidget extends PopupWidget {
// private final Button yesButton;
// private final Button noButton;
// private final Button neverButton;
public ShowEnableTutorialWidget(String words, Runnable onYes, Runnable onNo, Runnable onNever) {
// this.yesButton = Primitive.button("ok", onYes);
// this.noButton = Primitive.button("no", onNo);
// this.neverButton = Primitive.button("never", onNever);
var a = Primitive.hbox(
Primitive.button("ok", onYes),
Primitive.button("no", onNo),
Primitive.button("never", onNever)
);
var txt = Primitive.text(words);
add(Pos.CENTER, Primitive.vbox(txt, a));
WidgetContainer.add(Pos.CENTER, this);
}
}

View File

@@ -1,44 +0,0 @@
package org.toop.app.widget.tutorial;
public class TState {
private int current;
private int total;
public TState(int total) {
this.total = total;
this.current = 0;
}
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
this.current = current;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public void next() {
current = current + 1;
}
public void previous() {
current = current - 1;
}
public boolean hasNext() {
return current < total - 1;
}
public boolean hasPrevious() {
return current > 0;
}
}

View File

@@ -4,39 +4,33 @@ import javafx.geometry.Pos;
import org.toop.app.widget.complex.ViewWidget; import org.toop.app.widget.complex.ViewWidget;
import java.io.File; import java.io.File;
public class TicTacToeTutorialWidget extends ViewWidget { public class TicTacToeTutorialWidget extends BaseTutorialWidget {
private TState state; private final String[] keys;
private String[] keys = {"tictactoe1", "tictactoe2"}; private final File[] images = {
private File[] images = {
new File("app/src/main/resources/assets/images/tictactoe1.png"), new File("app/src/main/resources/assets/images/tictactoe1.png"),
new File("app/src/main/resources/assets/images/tictactoe2.png") new File("app/src/main/resources/assets/images/tictactoe2.png")
}; };
private BaseTutorialWidget tutorialWidget;
public TicTacToeTutorialWidget() { public TicTacToeTutorialWidget() {
this.state = new TState(keys.length); String[] newKeys = {"tictactoe1", "tictactoe2"};
tutorialWidget = new BaseTutorialWidget(
state, super(newKeys[0]);
keys[state.getCurrent()],
images[state.getCurrent()], keys = newKeys;
() -> {
if (state.hasPrevious()) { setTutorial(
state.previous(); images[0],
update(); () -> update(false, keys, images),
} () -> update(true, keys, images)
},
() -> {
if (state.hasNext()) {
state.next();
update();
}
}
); );
add(Pos.CENTER, tutorialWidget);
} }
private void update() { public String[] getKeys() {
tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]); return keys;
}
public File[] getImages() {
return images;
} }
} }

View File

@@ -53,23 +53,13 @@ public final class GameView extends ViewWidget {
switch(gameType) { switch(gameType) {
case "TicTacToe": case "TicTacToe":
this.tutorialButton = Primitive.button("tutorialstring", () -> { this.tutorialButton = Primitive.button("tutorialstring", TicTacToeTutorialWidget::new); break;
transitionNext(new TicTacToeTutorialWidget());
});
break;
case "Reversi": case "Reversi":
this.tutorialButton = Primitive.button("tutorialstring", () -> { this.tutorialButton = Primitive.button("tutorialstring", ReversiTutorialWidget::new); break;
transitionNext(new ReversiTutorialWidget());
});
break;
case "Connect4": case "Connect4":
this.tutorialButton = Primitive.button("tutorialstring", () -> { this.tutorialButton = Primitive.button("tutorialstring", Connect4TutorialWidget::new); break;
transitionNext(new Connect4TutorialWidget());
});
break;
default: default:
this.tutorialButton = null; this.tutorialButton = null; break;
break;
} }
setupLayout(); setupLayout();

View File

@@ -10,10 +10,7 @@ import org.toop.app.widget.WidgetContainer;
import org.toop.app.widget.complex.PlayerInfoWidget; import org.toop.app.widget.complex.PlayerInfoWidget;
import org.toop.app.widget.complex.ViewWidget; import org.toop.app.widget.complex.ViewWidget;
import org.toop.app.widget.popup.ErrorPopup; import org.toop.app.widget.popup.ErrorPopup;
import org.toop.app.widget.tutorial.BaseTutorialWidget; import org.toop.app.widget.tutorial.*;
import org.toop.app.widget.tutorial.Connect4TutorialWidget;
import org.toop.app.widget.tutorial.ReversiTutorialWidget;
import org.toop.app.widget.tutorial.TicTacToeTutorialWidget;
import org.toop.local.AppContext; import org.toop.local.AppContext;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@@ -40,84 +37,78 @@ public class LocalMultiplayerView extends ViewWidget {
switch (information.type) { switch (information.type) {
case TICTACTOE: case TICTACTOE:
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstTTT()) { if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstTTT()) {
BaseTutorialWidget a = new BaseTutorialWidget( new ShowEnableTutorialWidget(
"tutorial", "tutorial",
() -> {
AppSettings.getSettings().setFirstTTT(false);
new TicTacToeTutorialWidget();
},
() -> { () -> {
AppSettings.getSettings().setFirstTTT(false); AppSettings.getSettings().setFirstTTT(false);
Platform.runLater(() -> { Platform.runLater(() -> {
new TicTacToeGameThread(information); new TicTacToeGameThread(information);
}); });
}, },
() -> {
ViewWidget c = new TicTacToeTutorialWidget();
transitionNext(c);
WidgetContainer.setCurrentView(c);
AppSettings.getSettings().setFirstTTT(false);
},
() -> { () -> {
AppSettings.getSettings().setTutorialFlag(false); AppSettings.getSettings().setTutorialFlag(false);
Platform.runLater(() -> { Platform.runLater(() -> {
new TicTacToeGameThread(information); new TicTacToeGameThread(information);
}); });
} }
); );
transitionNext(a);
break; break;
} }
new TicTacToeGameThread(information); new TicTacToeGameThread(information);
break; break;
case REVERSI: case REVERSI:
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) { if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) {
BaseTutorialWidget a = new BaseTutorialWidget( new ShowEnableTutorialWidget(
"tutorial", "tutorial",
() -> { Platform.runLater(() -> { () -> {
AppSettings.getSettings().setFirstReversi(false); AppSettings.getSettings().setFirstTTT(false);
new ReversiTutorialWidget();
},
() -> {
AppSettings.getSettings().setFirstTTT(false);
Platform.runLater(() -> {
new ReversiGame(information); new ReversiGame(information);
}); });
}, },
() -> { () -> {
Platform.runLater(() -> {
ViewWidget c = new ReversiTutorialWidget();
transitionNext(c);
WidgetContainer.setCurrentView(c);
AppSettings.getSettings().setFirstReversi(false);
});
},
() -> {
Platform.runLater(() -> {
AppSettings.getSettings().setTutorialFlag(false); AppSettings.getSettings().setTutorialFlag(false);
Platform.runLater(() -> {
new ReversiGame(information); new ReversiGame(information);
}); });
}); }
transitionNext(a);
);
break; break;
} }
new ReversiGame(information); new ReversiGame(information);
break; break;
case CONNECT4: case CONNECT4:
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstConnect4()) { if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstConnect4()) {
BaseTutorialWidget a = new BaseTutorialWidget( new ShowEnableTutorialWidget(
"tutorial", "tutorial",
() -> { Platform.runLater(() -> { () -> {
AppSettings.getSettings().setFirstConnect4(false); AppSettings.getSettings().setFirstTTT(false);
new Connect4TutorialWidget();
},
() -> {
AppSettings.getSettings().setFirstTTT(false);
Platform.runLater(() -> {
new Connect4Game(information); new Connect4Game(information);
}); });
}, },
() -> { () -> {
Platform.runLater(() -> {
ViewWidget c = new Connect4TutorialWidget();
transitionNext(c);
WidgetContainer.setCurrentView(c);
AppSettings.getSettings().setFirstConnect4(false);
});
},
() -> {
Platform.runLater(() -> {
AppSettings.getSettings().setTutorialFlag(false); AppSettings.getSettings().setTutorialFlag(false);
Platform.runLater(() -> {
new Connect4Game(information); new Connect4Game(information);
}); });
}); }
transitionNext(a);
);
break; break;
} }
new Connect4Game(information); new Connect4Game(information);