Showing
1 changed file
with
119 additions
and
0 deletions
1 | +// 서버로 들어오는 메세지 타입을 정의합니다. | ||
2 | +// 'result' 속성은 서버 요청 결과에만 포함되는 특별한 속성입니다. | ||
1 | export interface ServerInboundMessageMap { | 3 | export interface ServerInboundMessageMap { |
4 | + // 로그인을 시도합니다. | ||
2 | login: { | 5 | login: { |
3 | username: string; | 6 | username: string; |
4 | }; | 7 | }; |
8 | + | ||
9 | + // 방 목록을 요청합니다. | ||
5 | roomList: { | 10 | roomList: { |
6 | result: { | 11 | result: { |
7 | uuid: string; | 12 | uuid: string; |
... | @@ -10,10 +15,124 @@ export interface ServerInboundMessageMap { | ... | @@ -10,10 +15,124 @@ export interface ServerInboundMessageMap { |
10 | maxUsers: number; | 15 | maxUsers: number; |
11 | }[]; | 16 | }[]; |
12 | }; | 17 | }; |
18 | + | ||
19 | + // 방에 접속합니다. | ||
20 | + joinRoom: { | ||
21 | + uuid: string; | ||
22 | + result: { | ||
23 | + uuid: string; | ||
24 | + name: string; | ||
25 | + maxUsers: number; | ||
26 | + users: { | ||
27 | + username: string; | ||
28 | + }[]; | ||
29 | + }; | ||
30 | + }; | ||
31 | + | ||
32 | + // 방에서 나갑니다. | ||
33 | + leaveRoom: {}; | ||
34 | + | ||
35 | + // 채팅을 보냅니다. | ||
36 | + chat: { | ||
37 | + message: string; | ||
38 | + }; | ||
39 | + | ||
40 | + // drawer가 단어를 선택합니다. | ||
41 | + chooseWord: { | ||
42 | + word: string; | ||
43 | + }; | ||
44 | + | ||
45 | + // 브러시 정보를 변경합니다. | ||
46 | + setBrush: { | ||
47 | + size: number; | ||
48 | + color: string; | ||
49 | + drawing: boolean; | ||
50 | + }; | ||
51 | + | ||
52 | + // 브러시를 이동합니다. | ||
53 | + moveBrush: { | ||
54 | + x: number; | ||
55 | + y: number; | ||
56 | + }; | ||
13 | } | 57 | } |
14 | 58 | ||
59 | +// 서버에서 나가는 메세지 타입을 정의합니다. | ||
15 | export interface ServerOutboundMessageMap { | 60 | export interface ServerOutboundMessageMap { |
61 | + // 방에 접속 중인 유저 목록이 업데이트 되었습니다. | ||
62 | + updateRoomUser: { | ||
63 | + state: "added" | "updated" | "removed"; | ||
64 | + user: { | ||
65 | + username: string; | ||
66 | + }; | ||
67 | + }; | ||
68 | + | ||
69 | + // 다른 유저가 채팅을 보냈습니다. | ||
16 | chat: { | 70 | chat: { |
71 | + sender: string; | ||
17 | message: string; | 72 | message: string; |
18 | }; | 73 | }; |
74 | + | ||
75 | + // 라운드가 시작되었습니다. | ||
76 | + startRound: { | ||
77 | + round: number; | ||
78 | + duration: number; | ||
79 | + roles: { | ||
80 | + username: string; | ||
81 | + role: "drawer" | "guesser" | "winner" | "spectator"; | ||
82 | + }; | ||
83 | + }; | ||
84 | + | ||
85 | + // drawer에게 선택할 수 있는 단어가 주어졌습니다. | ||
86 | + wordSet: { | ||
87 | + words: string[]; | ||
88 | + }; | ||
89 | + | ||
90 | + // 이번 라운드의 단어가 선택되었습니다. | ||
91 | + wordChosen: { | ||
92 | + length: number; | ||
93 | + }; | ||
94 | + | ||
95 | + // 라운드 타이머 정보를 동기화합니다. | ||
96 | + timer: { | ||
97 | + state: "started" | "stopped"; | ||
98 | + time: number; | ||
99 | + }; | ||
100 | + | ||
101 | + // 라운드가 종료되었습니다. | ||
102 | + finishRound: { | ||
103 | + answer: string; | ||
104 | + }; | ||
105 | + | ||
106 | + // 역할이 변경되었습니다. | ||
107 | + role: { | ||
108 | + username: string; | ||
109 | + role: "drawer" | "guesser" | "winner" | "spectator"; | ||
110 | + }; | ||
111 | + | ||
112 | + // 보낸 단어가 정답 처리 되었습니다. | ||
113 | + answerAccepted: { | ||
114 | + answer: string; | ||
115 | + }; | ||
116 | + | ||
117 | + // 게임이 종료되었습니다. | ||
118 | + finishGame: {}; | ||
119 | + | ||
120 | + // 브러시 정보가 변경되었습니다. | ||
121 | + setBrush: { | ||
122 | + size: number; | ||
123 | + color: string; | ||
124 | + drawing: boolean; | ||
125 | + }; | ||
126 | + | ||
127 | + // 브러시가 이동되었습니다. | ||
128 | + moveBrush: { | ||
129 | + x: number; | ||
130 | + y: number; | ||
131 | + }; | ||
132 | +} | ||
133 | + | ||
134 | +export interface ServerResponse<T> { | ||
135 | + ok: boolean; | ||
136 | + reason?: string; | ||
137 | + result?: T; | ||
19 | } | 138 | } | ... | ... |
-
Please register or login to post a comment