From fa96cd7c0736c1072a1a09f1a1fa1b101951a0d1 Mon Sep 17 00:00:00 2001
From: ramollia <@>
Date: Wed, 24 Sep 2025 15:02:11 +0200
Subject: [PATCH] refactored the file structure. nothing works :)
---
pom.xml | 10 +-
src/main/java/org/toop/Logging.java | 201 -----------------
src/main/java/org/toop/Main.java | 62 +-----
src/main/java/org/toop/app/GameBase.java | 57 +++++
src/main/java/org/toop/app/Player.java | 20 ++
.../UI => app/gui}/BackgroundPanel.java | 2 +-
.../UI => app/gui}/LocalGameSelector.form | 2 +-
.../UI => app/gui}/LocalGameSelector.java | 5 +-
.../UI => app/gui}/LocalServerSelector.form | 2 +-
.../UI => app/gui}/LocalServerSelector.java | 2 +-
.../UI => app/gui}/RemoteGameSelector.form | 2 +-
.../UI => app/gui}/RemoteGameSelector.java | 13 +-
.../tictactoe}/LocalTicTacToe.java | 18 +-
.../{game => app}/tictactoe/TicTacToe.java | 5 +-
.../org/toop/app/tictactoe/TicTacToeAI.java | 139 ++++++++++++
.../UI => app/tictactoe/gui}/UIGameBoard.form | 2 +-
.../UI => app/tictactoe/gui}/UIGameBoard.java | 8 +-
.../java/org/toop/eventbus/events/IEvent.java | 3 -
.../toop/eventbus/events/ServerEvents.java | 4 -
src/main/java/org/toop/framework/Logging.java | 202 ++++++++++++++++++
.../{ => framework}/eventbus/EventFlow.java | 6 +-
.../eventbus/GlobalEventBus.java | 6 +-
.../eventbus/events/EventWithUuid.java | 2 +-
.../eventbus/events/Events.java | 4 +-
.../framework/eventbus/events/IEvent.java | 3 +
.../eventbus/events/NetworkEvents.java | 4 +-
.../eventbus/events/ServerEvents.java | 4 +
.../networking/NetworkingClient.java | 2 +-
.../networking/NetworkingClientManager.java | 5 +-
.../NetworkingGameClientHandler.java | 2 +-
.../NetworkingTicTacToeClientHandler.java | 0
.../java/org/toop/frontend/UI/Services.form | 12 --
.../java/org/toop/frontend/UI/Services.java | 5 -
.../org/toop/game/tictactoe/GameBase.java | 56 -----
.../java/org/toop/game/tictactoe/Player.java | 20 --
.../game/tictactoe/ai/MinMaxTicTacToe.java | 140 ------------
src/test/java/org/toop/LoggingTest.java | 1 +
.../eventbus/EventPublisherSpeedTest.java | 3 +-
.../eventbus/EventPublisherStressTest.java | 4 +-
.../org/toop/eventbus/EventPublisherTest.java | 2 +-
.../org/toop/game/tictactoe/GameBaseTest.java | 2 +
.../org/toop/game/tictactoe/PlayerTest.java | 1 +
.../tictactoe/ai/MinMaxTicTacToeTest.java | 4 +-
43 files changed, 489 insertions(+), 558 deletions(-)
delete mode 100644 src/main/java/org/toop/Logging.java
create mode 100644 src/main/java/org/toop/app/GameBase.java
create mode 100644 src/main/java/org/toop/app/Player.java
rename src/main/java/org/toop/{frontend/UI => app/gui}/BackgroundPanel.java (94%)
rename src/main/java/org/toop/{frontend/UI => app/gui}/LocalGameSelector.form (96%)
rename src/main/java/org/toop/{frontend/UI => app/gui}/LocalGameSelector.java (96%)
rename src/main/java/org/toop/{frontend/UI => app/gui}/LocalServerSelector.form (96%)
rename src/main/java/org/toop/{frontend/UI => app/gui}/LocalServerSelector.java (96%)
rename src/main/java/org/toop/{frontend/UI => app/gui}/RemoteGameSelector.form (99%)
rename src/main/java/org/toop/{frontend/UI => app/gui}/RemoteGameSelector.java (95%)
rename src/main/java/org/toop/{frontend/games => app/tictactoe}/LocalTicTacToe.java (95%)
rename src/main/java/org/toop/{game => app}/tictactoe/TicTacToe.java (98%)
create mode 100644 src/main/java/org/toop/app/tictactoe/TicTacToeAI.java
rename src/main/java/org/toop/{frontend/UI => app/tictactoe/gui}/UIGameBoard.form (94%)
rename src/main/java/org/toop/{frontend/UI => app/tictactoe/gui}/UIGameBoard.java (96%)
delete mode 100644 src/main/java/org/toop/eventbus/events/IEvent.java
delete mode 100644 src/main/java/org/toop/eventbus/events/ServerEvents.java
create mode 100644 src/main/java/org/toop/framework/Logging.java
rename src/main/java/org/toop/{ => framework}/eventbus/EventFlow.java (98%)
rename src/main/java/org/toop/{ => framework}/eventbus/GlobalEventBus.java (98%)
rename src/main/java/org/toop/{ => framework}/eventbus/events/EventWithUuid.java (74%)
rename src/main/java/org/toop/{ => framework}/eventbus/events/Events.java (98%)
create mode 100644 src/main/java/org/toop/framework/eventbus/events/IEvent.java
rename src/main/java/org/toop/{ => framework}/eventbus/events/NetworkEvents.java (98%)
create mode 100644 src/main/java/org/toop/framework/eventbus/events/ServerEvents.java
rename src/main/java/org/toop/{frontend => framework}/networking/NetworkingClient.java (99%)
rename src/main/java/org/toop/{frontend => framework}/networking/NetworkingClientManager.java (97%)
rename src/main/java/org/toop/{frontend => framework}/networking/NetworkingGameClientHandler.java (95%)
rename src/main/java/org/toop/{frontend => framework}/networking/handlers/NetworkingTicTacToeClientHandler.java (100%)
delete mode 100644 src/main/java/org/toop/frontend/UI/Services.form
delete mode 100644 src/main/java/org/toop/frontend/UI/Services.java
delete mode 100644 src/main/java/org/toop/game/tictactoe/GameBase.java
delete mode 100644 src/main/java/org/toop/game/tictactoe/Player.java
delete mode 100644 src/main/java/org/toop/game/tictactoe/ai/MinMaxTicTacToe.java
diff --git a/pom.xml b/pom.xml
index 3de4cfb..8244b25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.toop
@@ -12,9 +12,9 @@
24
24
- UTF-8
+ UTF-8
- org.toop.Main
+ org.toop.Main
@@ -177,4 +177,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/org/toop/Logging.java b/src/main/java/org/toop/Logging.java
deleted file mode 100644
index c44d09f..0000000
--- a/src/main/java/org/toop/Logging.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.toop;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-
-/**
- * Utility class for configuring logging levels dynamically at runtime using Log4j 2.
- *
- *
Provides methods to enable or disable logs globally or per class, with support for specifying
- * log levels either via {@link Level} enums or string names.
- */
-public final class Logging {
-
- /** Disables all logging globally by setting the root logger level to {@link Level#OFF}. */
- public static void disableAllLogs() {
- LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- LoggerConfig rootLoggerConfig = config.getRootLogger();
- rootLoggerConfig.setLevel(Level.OFF);
- ctx.updateLoggers();
- }
-
- /** Enables all logging globally by setting the root logger level to {@link Level#ALL}. */
- public static void enableAllLogs() {
- LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- LoggerConfig rootLoggerConfig = config.getRootLogger();
- rootLoggerConfig.setLevel(Level.ALL);
- ctx.updateLoggers();
- }
-
- /**
- * Enables global logging at a specific level by setting the root logger.
- *
- * @param level the logging level to enable for all logs
- */
- public static void enableAllLogs(Level level) {
- LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- LoggerConfig rootLoggerConfig = config.getRootLogger();
- rootLoggerConfig.setLevel(level);
- ctx.updateLoggers();
- }
-
- /**
- * Verifies whether the provided string corresponds to a valid class name.
- *
- * @param className fully-qualified class name to check
- * @return true if the class exists, false otherwise
- */
- private static boolean verifyStringIsActualClass(String className) {
- try {
- Class.forName(className);
- return true;
- } catch (ClassNotFoundException e) {
- return false;
- }
- }
-
- /**
- * Internal helper to disable logs for a specific class by name.
- *
- * @param className fully-qualified class name
- */
- private static void disableLogsForClassInternal(String className) {
- LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- config.removeLogger(className);
- LoggerConfig specificConfig = new LoggerConfig(className, Level.OFF, false);
- config.addLogger(className, specificConfig);
- ctx.updateLoggers();
- }
-
- /**
- * Disables logs for a specific class.
- *
- * @param class_ the class for which logs should be disabled
- * @param type of the class
- */
- public static void disableLogsForClass(Class class_) {
- disableLogsForClassInternal(class_.getName());
- }
-
- /**
- * Disables logs for a class specified by fully-qualified name, if the class exists.
- *
- * @param className fully-qualified class name
- */
- public static void disableLogsForClass(String className) {
- if (verifyStringIsActualClass(className)) {
- disableLogsForClassInternal(className);
- }
- }
-
- /**
- * Internal helper to enable logs for a specific class at a specific level.
- *
- * @param className fully-qualified class name
- * @param level logging level to set
- */
- private static void enableLogsForClassInternal(String className, Level level) {
- LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- LoggerConfig loggerConfig = config.getLoggers().get(className);
- if (loggerConfig == null) {
- loggerConfig = new LoggerConfig(className, level, false);
- config.addLogger(className, loggerConfig);
- } else {
- loggerConfig.setLevel(level);
- }
- ctx.updateLoggers();
- }
-
- /**
- * Enables logging for a class at a specific level.
- *
- * @param class_ class to configure
- * @param levelToLog the logging level to set
- * @param type of the class
- */
- public static void enableLogsForClass(Class class_, Level levelToLog) {
- enableLogsForClassInternal(class_.getName(), levelToLog);
- }
-
- /**
- * Enables logging for a class specified by name at a specific level, if the class exists.
- *
- * @param className fully-qualified class name
- * @param levelToLog the logging level to set
- */
- public static void enableLogsForClass(String className, Level levelToLog) {
- if (verifyStringIsActualClass(className)) {
- enableLogsForClassInternal(className, levelToLog);
- }
- }
-
- /**
- * Enables logging for a class specified by name at a specific level using a string.
- *
- * @param className fully-qualified class name
- * @param levelToLog name of the logging level (e.g., "DEBUG", "INFO")
- */
- public static void enableLogsForClass(String className, String levelToLog) {
- Level level = Level.valueOf(levelToLog.trim().toUpperCase());
- if (level != null && verifyStringIsActualClass(className)) {
- enableLogsForClassInternal(className, level);
- }
- }
-
- /** Convenience methods for enabling logs at specific levels for classes. */
- public static void enableAllLogsForClass(Class class_) {
- enableLogsForClass(class_, Level.ALL);
- }
-
- public static void enableAllLogsForClass(String className) {
- enableLogsForClass(className, Level.ALL);
- }
-
- public static void enableDebugLogsForClass(Class class_) {
- enableLogsForClass(class_, Level.DEBUG);
- }
-
- public static void enableDebugLogsForClass(String className) {
- enableLogsForClass(className, Level.DEBUG);
- }
-
- public static void enableErrorLogsForClass(Class class_) {
- enableLogsForClass(class_, Level.ERROR);
- }
-
- public static void enableErrorLogsForClass(String className) {
- enableLogsForClass(className, Level.ERROR);
- }
-
- public static void enableFatalLogsForClass(Class class_) {
- enableLogsForClass(class_, Level.FATAL);
- }
-
- public static void enableFatalLogsForClass(String className) {
- enableLogsForClass(className, Level.FATAL);
- }
-
- public static void enableInfoLogsForClass(Class class_) {
- enableLogsForClass(class_, Level.INFO);
- }
-
- public static void enableInfoLogsForClass(String className) {
- enableLogsForClass(className, Level.INFO);
- }
-
- public static void enableTraceLogsForClass(Class class_) {
- enableLogsForClass(class_, Level.TRACE);
- }
-
- public static void enableTraceLogsForClass(String className) {
- enableLogsForClass(className, Level.TRACE);
- }
-}
diff --git a/src/main/java/org/toop/Main.java b/src/main/java/org/toop/Main.java
index 52830ed..e64efec 100644
--- a/src/main/java/org/toop/Main.java
+++ b/src/main/java/org/toop/Main.java
@@ -1,62 +1,6 @@
package org.toop;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.toop.backend.tictactoe.ServerManager;
-import org.toop.eventbus.EventPublisher;
-import org.toop.eventbus.events.Events;
-import org.toop.eventbus.GlobalEventBus;
-import org.toop.frontend.UI.LocalServerSelector;
-import org.toop.frontend.networking.NetworkingClientManager;
-
public class Main {
- private static final Logger logger = LogManager.getLogger(Main.class);
- private static boolean running = false;
-
- public static void main(String[] args) throws ExecutionException, InterruptedException {
- // Logging.disableAllLogs();
- Logging.enableAllLogsForClass(EventRegistry.class);
- // Logging.enableLogsForClass(ServerManager.class, Level.ALL);
- // Logging.enableLogsForClass(TicTacToeServer.class, Level.ALL);
- // Logging.enableLogsForClass(TcpClient.class, Level.ALL);
- // Logging.enableLogsForClass(NetworkingClientManager.class, Level.ALL);
-
- initSystems();
- registerEvents();
-
- CompletableFuture serverIdFuture = new CompletableFuture<>();
- GlobalEventBus.post(
- new Events.ServerEvents.StartServerRequest(5001, "tictactoe", serverIdFuture));
- var serverId = serverIdFuture.get();
-
- var a = new MainTest();
-
- javax.swing.SwingUtilities.invokeLater(LocalServerSelector::new);
-
- }
-
- private static void initSystems() {
- new ServerManager();
- new NetworkingClientManager();
- }
-
- private static void registerEvents() {
- new EventPublisher().onEvent(Events.WindowEvents.OnQuitRequested.class).perform(_ -> quit());
- new EventPublisher().onEvent(Events.WindowEvents.OnMouseMove.class).perform(_ -> {});
- }
-
- private static void quit() {
- running = false;
- }
-
- public static boolean isRunning() {
- return running;
- }
-
- public static void setRunning(boolean running) {
- Main.running = running;
- }
-}
+ public static void main(String[] args) {
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/toop/app/GameBase.java b/src/main/java/org/toop/app/GameBase.java
new file mode 100644
index 0000000..46e1832
--- /dev/null
+++ b/src/main/java/org/toop/app/GameBase.java
@@ -0,0 +1,57 @@
+package org.toop.app;
+
+// Todo: refactor
+public abstract class GameBase {
+ public enum State {
+ INVALID,
+
+ NORMAL,
+ DRAW,
+ WIN,
+ }
+
+ public static char EMPTY = '-';
+
+ protected int size;
+ public char[] grid;
+
+ protected Player[] players;
+ public int currentPlayer;
+
+ public GameBase(int size, Player player1, Player player2) {
+ this.size = size;
+ grid = new char[size * size];
+
+ for (int i = 0; i < grid.length; i++) {
+ grid[i] = EMPTY;
+ }
+
+ players = new Player[2];
+ players[0] = player1;
+ players[1] = player2;
+
+ currentPlayer = 0;
+ }
+
+ public boolean isInside(int index) {
+ return index >= 0 && index < size * size;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public char[] getGrid() {
+ return grid;
+ }
+
+ public Player[] getPlayers() {
+ return players;
+ }
+
+ public Player getCurrentPlayer() {
+ return players[currentPlayer];
+ }
+
+ public abstract State play(int index);
+}
\ No newline at end of file
diff --git a/src/main/java/org/toop/app/Player.java b/src/main/java/org/toop/app/Player.java
new file mode 100644
index 0000000..137c05b
--- /dev/null
+++ b/src/main/java/org/toop/app/Player.java
@@ -0,0 +1,20 @@
+package org.toop.app;
+
+// Todo: refactor
+public class Player {
+ String name;
+ char symbol;
+
+ Player(String name, char symbol) {
+ this.name = name;
+ this.symbol = symbol;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public char getSymbol() {
+ return this.symbol;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/toop/frontend/UI/BackgroundPanel.java b/src/main/java/org/toop/app/gui/BackgroundPanel.java
similarity index 94%
rename from src/main/java/org/toop/frontend/UI/BackgroundPanel.java
rename to src/main/java/org/toop/app/gui/BackgroundPanel.java
index 23cb0ce..bd5c6d2 100644
--- a/src/main/java/org/toop/frontend/UI/BackgroundPanel.java
+++ b/src/main/java/org/toop/app/gui/BackgroundPanel.java
@@ -1,4 +1,4 @@
-package org.toop.frontend.UI;
+package org.toop.app.gui;
import java.awt.*;
import javax.swing.*;
diff --git a/src/main/java/org/toop/frontend/UI/LocalGameSelector.form b/src/main/java/org/toop/app/gui/LocalGameSelector.form
similarity index 96%
rename from src/main/java/org/toop/frontend/UI/LocalGameSelector.form
rename to src/main/java/org/toop/app/gui/LocalGameSelector.form
index d9f3f18..0816519 100644
--- a/src/main/java/org/toop/frontend/UI/LocalGameSelector.form
+++ b/src/main/java/org/toop/app/gui/LocalGameSelector.form
@@ -1,5 +1,5 @@
-