-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi.proto
131 lines (109 loc) · 2.84 KB
/
api.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
syntax = "proto2";
package api;
option go_package = "./api";
enum Direction {
UP = 1;
DOWN = 2;
LEFT = 3;
RIGHT = 4;
}
message APIRequest {
message ConnectMsg {}
message PingMsg {
required string token = 1;
}
message CreateGameMsg {
required string token = 1;
required string player_name = 2;
required string game_name = 3;
required int32 width = 4;
required int32 height = 5;
required int32 food_static = 6;
required int32 state_delay_ms = 7;
}
message DiscoverGamesMsg {
required string token = 1;
}
message JoinGameMsg {
required string token = 1;
required string player_name = 2;
required string game_name = 3;
required bool is_player = 4;
}
message SteerSnakeMsg {
required string token = 1;
required Direction direction = 2;
}
message GetGameStateMsg {
required string token = 1;
}
message ExitGameMsg {
required string token = 1;
}
message DisconnectMsg {
required string token = 1;
}
oneof Type {
ConnectMsg connect = 1;
PingMsg ping = 2;
CreateGameMsg create_game = 3;
DiscoverGamesMsg discover_games = 4;
JoinGameMsg join_game = 5;
SteerSnakeMsg steer_snake = 6;
GetGameStateMsg get_game_state = 7;
ExitGameMsg exit_game = 8;
DisconnectMsg disconnect = 9;
}
}
message APIResponse {
message SuccessConnectMsg {
required string token = 1;
required int32 timeout = 2;
}
message AckMsg {}
message ErrorMsg {
required string error_message = 1;
}
message GameListMsg {
message GameInfo {
required string gameName = 1;
required int32 width = 2;
required int32 height = 3;
required int32 stateDelay = 4;
}
repeated GameInfo games = 1;
}
message GameStateMsg {
enum Role {
NORMAL = 0;
MASTER = 1;
DEPUTY = 2;
VIEWER = 3;
}
message Coord {
required sint32 x = 1;
required sint32 y = 2;
}
message Snake {
required int32 player_id = 1;
repeated Coord points = 2;
required Direction head_direction = 3;
}
message Player {
required string name = 1;
required int32 id = 2;
required int32 score = 3;
required Role role = 4;
}
repeated Snake snakes = 2;
repeated Coord foods = 3;
repeated Player players = 4;
}
oneof Type {
SuccessConnectMsg successConnect = 1;
AckMsg ack = 2;
ErrorMsg error = 3;
GameListMsg game_list = 4;
GameStateMsg game_state = 5;
}
}