diff --git a/apps/client/src/app.tsx b/apps/client/src/app.tsx
index 37a01a3..8b37e31 100644
--- a/apps/client/src/app.tsx
+++ b/apps/client/src/app.tsx
@@ -8,7 +8,7 @@
import { ResultScene } from "./scenes/result/ResultScene";
import { LandscapeOnlyGate } from "./components/LandscapeOnlyGate";
-import { appConsts } from "@repo/shared";
+import { domain } from "@repo/shared";
export default function App() {
const {
@@ -25,7 +25,7 @@
let scene = ;
// タイトル画面分岐
- if (scenePhase === appConsts.ScenePhase.TITLE) {
+ if (scenePhase === domain.app.ScenePhase.TITLE) {
scene = (
void;
+ requestJoin: (payload: domain.room.JoinRoomPayload) => void;
returnToTitle: (options?: { leaveRoom?: boolean }) => void;
};
@@ -28,7 +28,7 @@
};
type JoinFailureReason =
- | roomTypes.JoinRoomRejectedPayload["reason"]
+ | domain.room.JoinRoomRejectedPayload["reason"]
| "timeout";
type JoinFailure = {
@@ -65,16 +65,16 @@
/** アプリ全体のシーン状態と参加要求フローを管理するフック */
export const useAppFlow = (): AppFlowState => {
- const [scenePhase, setScenePhase] = useState(
- appConsts.ScenePhase.TITLE,
+ const [scenePhase, setScenePhase] = useState(
+ domain.app.ScenePhase.TITLE,
);
- const [room, setRoom] = useState(null);
+ const [room, setRoom] = useState(null);
const [myId, setMyId] = useState(null);
const [gameResult, setGameResult] = useState(null);
const [joinState, dispatchJoin] = useReducer(joinReducer, initialJoinState);
const joinTimeoutRef = useRef | null>(null);
const joinRejectedHandlerRef = useRef<
- ((payload: roomTypes.JoinRoomRejectedPayload) => void) | null
+ ((payload: domain.room.JoinRoomRejectedPayload) => void) | null
>(null);
const clearJoinRejectedHandler = useCallback(() => {
@@ -128,7 +128,7 @@
);
const requestJoin = useCallback(
- (payload: roomTypes.JoinRoomPayload) => {
+ (payload: domain.room.JoinRoomPayload) => {
if (joinState.isJoining) {
return;
}
@@ -137,7 +137,7 @@
dispatchJoin({ type: "start" });
const handleJoinRejected = (
- payload: roomTypes.JoinRoomRejectedPayload,
+ payload: domain.room.JoinRoomRejectedPayload,
) => {
completeJoinRequest({
reason: payload.reason,
@@ -162,7 +162,7 @@
completeJoinRequest();
setRoom(null);
setGameResult(null);
- setScenePhase(appConsts.ScenePhase.TITLE);
+ setScenePhase(domain.app.ScenePhase.TITLE);
if (!options?.leaveRoom) {
return;
diff --git a/apps/client/src/hooks/useSocketSubscriptions.ts b/apps/client/src/hooks/useSocketSubscriptions.ts
index 33f2df7..19a2ef8 100644
--- a/apps/client/src/hooks/useSocketSubscriptions.ts
+++ b/apps/client/src/hooks/useSocketSubscriptions.ts
@@ -5,20 +5,20 @@
*/
import { useEffect } from "react";
import { socketManager } from "@client/network/SocketManager";
-import { appConsts } from "@repo/shared";
-import type { appTypes, roomTypes, GameResultPayload } from "@repo/shared";
+import { domain } from "@repo/shared";
+import type { GameResultPayload } from "@repo/shared";
type UseSocketSubscriptionsParams = {
completeJoinRequest: () => void;
setGameResult: (payload: GameResultPayload | null) => void;
setMyId: (id: string | null) => void;
- setRoom: (room: roomTypes.Room | null) => void;
- setScenePhase: (phase: appTypes.ScenePhase) => void;
+ setRoom: (room: domain.room.Room | null) => void;
+ setScenePhase: (phase: domain.app.ScenePhaseType) => void;
};
type AppSocketHandlers = {
handleConnect: (id: string) => void;
- handleRoomUpdate: (updatedRoom: roomTypes.Room) => void;
+ handleRoomUpdate: (updatedRoom: domain.room.Room) => void;
handleGameStart: () => void;
handleGameResult: (payload: GameResultPayload) => void;
};
@@ -77,20 +77,20 @@
setMyId(id);
},
- handleRoomUpdate: (updatedRoom: roomTypes.Room) => {
+ handleRoomUpdate: (updatedRoom: domain.room.Room) => {
completeJoinRequest();
setRoom(updatedRoom);
- setScenePhase(appConsts.ScenePhase.LOBBY);
+ setScenePhase(domain.app.ScenePhase.LOBBY);
},
handleGameStart: () => {
setGameResult(null);
- setScenePhase(appConsts.ScenePhase.PLAYING);
+ setScenePhase(domain.app.ScenePhase.PLAYING);
},
handleGameResult: (payload: GameResultPayload) => {
setGameResult(payload);
- setScenePhase(appConsts.ScenePhase.RESULT);
+ setScenePhase(domain.app.ScenePhase.RESULT);
},
};
diff --git a/apps/server/src/domains/room/application/services/RoomJoinService.ts b/apps/server/src/domains/room/application/services/RoomJoinService.ts
index dfaf7b8..8b72619 100644
--- a/apps/server/src/domains/room/application/services/RoomJoinService.ts
+++ b/apps/server/src/domains/room/application/services/RoomJoinService.ts
@@ -2,16 +2,15 @@
* RoomJoinService
* ルーム作成とプレイヤー参加処理を担うサービス
*/
-import { roomConsts } from "@repo/shared";
+import { domain } from "@repo/shared";
import { config } from "@server/config";
-import type { roomTypes } from "@repo/shared";
import { logEvent } from "@server/logging/logger";
import { logResults, logScopes, roomDomainLogEvents } from "@server/logging/index";
import type { JoinRoomResult } from "../ports/roomUseCasePorts";
/** 参加要求に応じてルーム作成と参加者追加を行うサービス */
export class RoomJoinService {
- constructor(private rooms: Map) {}
+ constructor(private rooms: Map) {}
public addPlayerToRoom(roomId: string, socketId: string, playerName: string): JoinRoomResult {
let room = this.rooms.get(roomId);
@@ -20,7 +19,7 @@
roomId,
ownerId: socketId,
players: [],
- status: roomConsts.RoomPhase.WAITING,
+ status: domain.room.RoomPhase.WAITING,
maxPlayers: config.GAME_CONFIG.MAX_PLAYERS_PER_ROOM,
};
this.rooms.set(roomId, room);
@@ -59,7 +58,7 @@
return { room, status: "full" };
}
- const newPlayer: roomTypes.RoomMember = {
+ const newPlayer: domain.room.RoomMember = {
id: socketId,
name: playerName,
isOwner: room.ownerId === socketId,
diff --git a/apps/server/src/domains/room/application/services/RoomPhaseService.ts b/apps/server/src/domains/room/application/services/RoomPhaseService.ts
index b79a237..3ee0466 100644
--- a/apps/server/src/domains/room/application/services/RoomPhaseService.ts
+++ b/apps/server/src/domains/room/application/services/RoomPhaseService.ts
@@ -2,13 +2,12 @@
* RoomPhaseService
* ルーム状態のフェーズ更新処理を提供する
*/
-import { roomConsts } from "@repo/shared";
-import type { roomTypes } from "@repo/shared";
+import { domain } from "@repo/shared";
import type { RoomPhaseTransitionResult } from "../ports/roomUseCasePorts";
/** ルーム状態のフェーズ遷移を管理するサービス */
export class RoomPhaseService {
- constructor(private rooms: Map) {}
+ constructor(private rooms: Map) {}
public markRoomPlaying(roomId: string): RoomPhaseTransitionResult {
const room = this.rooms.get(roomId);
@@ -16,14 +15,14 @@
return { status: "not_found" };
}
- if (room.status === roomConsts.RoomPhase.PLAYING) {
+ if (room.status === domain.room.RoomPhase.PLAYING) {
return {
status: "invalid_transition",
room,
};
}
- room.status = roomConsts.RoomPhase.PLAYING;
+ room.status = domain.room.RoomPhase.PLAYING;
return {
status: "updated",
room,
@@ -36,14 +35,14 @@
return { status: "not_found" };
}
- if (room.status === roomConsts.RoomPhase.WAITING) {
+ if (room.status === domain.room.RoomPhase.WAITING) {
return {
status: "invalid_transition",
room,
};
}
- room.status = roomConsts.RoomPhase.WAITING;
+ room.status = domain.room.RoomPhase.WAITING;
return {
status: "updated",
room,