Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
dddca6e
Add FXML views for home, players, leaderboard, and games
MahmoudRafaat Jan 10, 2026
f6a4a12
Add controllers and home page CSS for new features
MahmoudRafaat Jan 10, 2026
8aa815f
Add player and game request models, update Screens enum
MahmoudRafaat Jan 10, 2026
bb01cbf
Add domain models for game response, start, and move
MahmoudRafaat Jan 10, 2026
8c26f73
Enhance server communication and error handling
MahmoudRafaat Jan 10, 2026
e8f667f
Add game service and player controllers
MahmoudRafaat Jan 10, 2026
c8368b3
Implement online game management with game state handling and player …
ZeiadT Jan 10, 2026
9083f3b
Merge remote-tracking branch 'origin/develop' into feature/online-gam…
ZeiadT Jan 11, 2026
ae4235b
Redesign home and leaderboard FXML layouts
MahmoudRafaat Jan 11, 2026
6e2b211
Update home.css
MahmoudRafaat Jan 11, 2026
0b97d42
Add animated background and improve HomeController UI
MahmoudRafaat Jan 11, 2026
e625eff
Enhance leaderboard UI and fix player status label
MahmoudRafaat Jan 11, 2026
292f713
Add leaderboard support and improve error handling
MahmoudRafaat Jan 11, 2026
1768e7c
Merge branch 'develop' into feature/online-players
MahmoudRafaat Jan 11, 2026
f13d154
disconnect from server on navigation back action
ZeiadT Jan 11, 2026
230f14d
Fix enum and switch statement formatting issues
MahmoudRafaat Jan 11, 2026
ba6a6a7
Merge branch 'develop' into feature/online-players
MahmoudRafaat Jan 11, 2026
84beb13
Update GameModeScreenController.java
MahmoudRafaat Jan 12, 2026
2005382
Merge branch 'develop' into feature/online-players
MahmoudRafaat Jan 12, 2026
7b01eaa
Add settings button action to home screen
MahmoudRafaat Jan 12, 2026
00e05a6
Improve leaderboard ranking and display logic
MahmoudRafaat Jan 12, 2026
4e1a5de
Rename GameService to OnlinGameSession
MahmoudRafaat Jan 13, 2026
390596d
Merge branch 'develop' into feature/online-players
MahmoudRafaat Jan 13, 2026
6a5aab0
Merge remote-tracking branch 'origin/feature/online-players' into fea…
ZeiadT Jan 13, 2026
d8bfb57
Merge remote-tracking branch 'origin/feature/online-players' into fea…
ZeiadT Jan 13, 2026
7718c62
Merge branch 'develop' into feature/online-players
Hazem-0 Jan 13, 2026
bd8e8a5
feat: implement offline mode selection screen and navigation
ZeiadT Jan 13, 2026
ceaa0f8
Merge remote-tracking branch 'origin/feature/online-players' into fea…
ZeiadT Jan 13, 2026
60e67ef
Merge branch 'feature/online-players' into feature/online-game-manager
ZeiadT Jan 13, 2026
a9eb9a2
Merge pull request #28 from BoredxGames/feature/online-game-manager
ZeiadT Jan 13, 2026
c4c0f0a
Remove Player model class
MahmoudRafaat Jan 13, 2026
4bfde7d
Merge remote-tracking branch 'origin/feature/online-game-manager' int…
ZeiadT Jan 13, 2026
2eaf86a
feat: implement offline mode selection screen and navigation
ZeiadT Jan 13, 2026
cbfc526
add which player turn
Hazem-0 Jan 13, 2026
297c468
Improve move handling and game state checks
MahmoudRafaat Jan 13, 2026
955d198
Update HomeController.java
MahmoudRafaat Jan 13, 2026
59e1187
Merge branch 'feature/online-game-manager-fix' into feature/online-ga…
MahmoudRafaat Jan 13, 2026
7498cb6
Merge pull request #30 from BoredxGames/feature/online-game-manager
Hazem-0 Jan 13, 2026
f4c5f08
Merge remote-tracking branch 'origin/develop' into feature/online-pla…
ZeiadT Jan 13, 2026
6c44d96
Merge remote-tracking branch 'origin/feature/online-players' into fea…
ZeiadT Jan 13, 2026
1e40e5d
feat: enhance online multiplayer functionality and improve game state…
ZeiadT Jan 13, 2026
90f7a84
Merge branch 'develop' into feature/online-players
ZeiadT Jan 13, 2026
46e9a74
feat: enhance authentication dialog styling and implement replay func…
ZeiadT Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,17 @@
<version>${javafx.version}</version>
</dependency>

<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240303</version>
</dependency>

<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
Expand Down
11 changes: 5 additions & 6 deletions src/main/java/com/boredxgames/tictactoeclient/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,21 @@

public class App extends Application {

private static Scene scene;

@Override
public void start(Stage stage) throws IOException {
scene = NavigationManager.init();
Scene scene = NavigationManager.init();
ThemeManager.init(scene);
stage.setScene(scene);
stage.show();


AudioManager.playDefaultMusic();


AudioManager.attachGlobalClickSoundToScene(scene);
}

public static void main(String[] args) {
launch();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,7 @@ public static Scene init() throws IOException {

current = new ScreenNavigationEntry(Screens.PRIMARY, null, null);

Parent root = initRoot(current.screen().getName());
scene = new Scene(root, 640, 480);


ThemeManager.init(scene);
scene = new Scene(initRoot(current.screen().getName()), 1200, 800);

return scene;
}
Expand Down Expand Up @@ -105,7 +101,6 @@ private static Parent initRoot(String fxml) throws IOException {

Parent root = loader.load();

current = new ScreenNavigationEntry(Screens.PRIMARY, null, loader.getController());

return root;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ public enum Screens {
SECONDARY("GameModeScreen"),
SETTINGS("SettingsScreen"),
GAME_MODE("GameModeScreen"),
OFFLINE_MODE_SELECTION("offline_mode_selection"),
SERVER_CONNECTION("server_connection"),
AUTHENTICATION("authentication"),
GAME("game_screen"),
Home("home"),
PVP_SETUP("pvp_setup"),
GAME("game_screen"),
DifficultySelection("difficulty_selection"),
RECORDINGS("RecordingsListScreen");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
public class AuthResponseEntity {
private String id ;
private String userName ;
private int Score;
private int score;

public AuthResponseEntity(String id, String userName, int Score) {
this.id = id;
this.userName = userName;
this.Score = Score;
this.score = Score;
}

public AuthResponseEntity() {
Expand All @@ -31,7 +31,7 @@ public void setUserName(String userName) {
}

public void setScore(int Score) {
this.Score = Score;
this.score = Score;
}

public String getId() {
Expand All @@ -43,7 +43,7 @@ public String getUserName() {
}

public int getScore() {
return Score;
return score;
}

public static AuthResponseEntity createAuthEntity(String id ,String username , int score)
Expand All @@ -53,7 +53,7 @@ public static AuthResponseEntity createAuthEntity(String id ,String username , i

@Override
public String toString() {
return "AuthRequestEntity{" + "id=" + id + ", userName=" + userName + ", Score=" + Score + '}';
return "AuthRequestEntity{" + "id=" + id + ", userName=" + userName + ", Score=" + score + '}';
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.boredxgames.tictactoeclient.domain.model;

import java.util.Vector;

/**
*
* @author mahmoud
*/
public class AvailablePlayersInfo {
public Vector<PlayerEntity> onlinePlayers;
public Vector<PlayerEntity> inGamePlayers;
public Vector<PlayerEntity> pendingPlayers;

public AvailablePlayersInfo(Vector<PlayerEntity> online, Vector<PlayerEntity> inGame, Vector<PlayerEntity> pending) {
this.onlinePlayers = online;
this.inGamePlayers = inGame;
this.pendingPlayers = pending;
}

public Vector<PlayerEntity> getOnlinePlayers() {
return onlinePlayers;
}

public void setOnlinePlayers(Vector<PlayerEntity> onlinePlayers) {
this.onlinePlayers = onlinePlayers;
}

public Vector<PlayerEntity> getInGamePlayers() {
return inGamePlayers;
}

public void setInGamePlayers(Vector<PlayerEntity> inGamePlayers) {
this.inGamePlayers = inGamePlayers;
}

public Vector<PlayerEntity> getPendingPlayers() {
return pendingPlayers;
}

public void setPendingPlayers(Vector<PlayerEntity> pendingPlayers) {
this.pendingPlayers = pendingPlayers;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.boredxgames.tictactoeclient.domain.model;

/**
*
* @author mahmoud
*/
public class GameRequestInfo {
private final String requesterId;
private final String requesterUserName;
private final String targetId;

public GameRequestInfo(String requesterId, String requesterUserName, String targetId) {
this.requesterId = requesterId;
this.requesterUserName = requesterUserName;
this.targetId = targetId;
}

public String getRequesterUserName() {
return requesterUserName;
}




public String getRequesterId() {
return requesterId;
}

public String getTargetId() {
return targetId;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.boredxgames.tictactoeclient.domain.model;

/**
*
* @author mahmoud
*/
public class GameResponseInfo {
private String requesterId;
private String responderId;
private String responderUserName;
private boolean accepted;

public String getRequesterId() {
return requesterId;
}

public GameResponseInfo(String requesterId, String responderId, String responderUserName, boolean accepted) {
this.requesterId = requesterId;
this.responderId = responderId;
this.responderUserName = responderUserName;
this.accepted = accepted;
}

public String getResponderUserName() {
return responderUserName;
}

public void setResponderUserName(String responderUserName) {
this.responderUserName = responderUserName;
}


public void setRequesterId(String requesterId) {
this.requesterId = requesterId;
}

public String getResponderId() {
return responderId;
}

public void setResponderId(String responderId) {
this.responderId = responderId;
}

public boolean isAccepted() {
return accepted;
}

public void setAccepted(boolean accepted) {
this.accepted = accepted;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.boredxgames.tictactoeclient.domain.model;

/**
*
* @author moham
*/
public class GameStartInfo {
private final String roomId;
private final String player1;
private final String player2;

public GameStartInfo(String roomId, String player1, String player2) {
this.roomId = roomId;
this.player1 = player1;
this.player2 = player2;
}

public String getRoomId() {
return roomId;
}

public String getPlayer1() {
return player1;
}

public String getPlayer2() {
return player2;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.boredxgames.tictactoeclient.domain.model;

import com.boredxgames.tictactoeclient.domain.services.communication.Action;
import com.boredxgames.tictactoeclient.domain.services.communication.Header;
import com.boredxgames.tictactoeclient.domain.services.communication.Message;
import com.boredxgames.tictactoeclient.domain.services.communication.MessageType;
import com.google.gson.Gson;

/**
*
* @author mahmoud
*/
public class MoveInfo {
private final String roomId;
private final String playerId;
private final String move;

public MoveInfo(String playerId, String move, String roomId) {
this.playerId = playerId;
this.move = move;
this.roomId = roomId;
}

public String getRoomId() {
return roomId;
}

public String getPlayerId() {
return playerId;
}

public String getMove() {
return move;
}

public static MoveInfo createMoveInfo(String roomId, String playerId , Object data)
{
return new MoveInfo(playerId , toJson(data), roomId);
}

static private String toJson(Object data)
{
Gson gson = new Gson();
return gson.toJson(data);

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.boredxgames.tictactoeclient.domain.model;

public class OnlineGameState {
public static GameStartInfo info = null;
}
Loading