Skip to content

Commit 5140943

Browse files
authored
Merge pull request #3 from coderang/dev
添加 proto 文件和构建脚本以支持消息传递和服务定义
2 parents 68dc188 + 2d5afe5 commit 5140943

7 files changed

Lines changed: 618 additions & 0 deletions

File tree

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
// Message2Client
2+
syntax = "proto3";
3+
package protobuf;
4+
5+
import "MessageType.proto";
6+
7+
message MessageOfCharacter
8+
{
9+
int64 guid = 1;
10+
11+
int64 team_id = 2;
12+
int64 player_id = 3;
13+
14+
CharacterType character_type = 4;
15+
16+
// 主动状态
17+
CharacterState character_active_state = 5;
18+
19+
// 位置
20+
int32 x = 17;
21+
int32 y = 18;
22+
23+
double facing_direction = 19;
24+
int32 speed = 20;
25+
int32 view_range = 21;
26+
27+
int32 common_attack = 22;
28+
int64 common_attack_cd = 23;
29+
int32 common_attack_range = 24;
30+
31+
int32 hp = 28;
32+
}
33+
34+
35+
message MessageOfMaterialResource
36+
{
37+
MaterialResourceState material_resource_state = 2;
38+
39+
int32 x = 3;
40+
int32 y = 4;
41+
42+
int32 process = 5; // 采集进度 等价于血量
43+
44+
int32 id = 6;
45+
46+
}
47+
48+
message MessageOfMap
49+
{
50+
uint32 height = 1;
51+
uint32 width = 2;
52+
message Row
53+
{
54+
repeated PlaceType cols = 1;
55+
}
56+
repeated Row rows = 3;
57+
}
58+
59+
message MessageOfTeam
60+
{
61+
int64 team_id = 1;
62+
int64 player_id = 2;
63+
int64 score = 3;
64+
int64 energy = 4;
65+
// int64 guid=5;
66+
}
67+
68+
message MessageOfObj
69+
{
70+
oneof message_of_obj
71+
{
72+
MessageOfCharacter character_message = 1;
73+
MessageOfMaterialResource material_resource_message= 6;
74+
MessageOfMap map_message = 8;
75+
MessageOfNews news_message = 9;
76+
MessageOfTeam team_message = 10;
77+
}
78+
}
79+
80+
message MessageOfAll
81+
{
82+
int32 game_time = 1;
83+
84+
int32 team1_score=2;
85+
int32 team2_score=3;
86+
int32 team3_score=3;
87+
int32 team4_score=3;
88+
89+
int32 team1_material = 4;
90+
int32 team2_material = 4;
91+
int32 team3_material = 4;
92+
int32 team4_material = 4;
93+
94+
int32 team1_computing_power = 5;
95+
int32 team2_computing_power = 5;
96+
int32 team3_computing_power = 5;
97+
int32 team4_computing_power = 5;
98+
99+
int32 team1_factory_hp = 6;
100+
int32 team2_factory_hp = 6;
101+
int32 team3_factory_hp = 6;
102+
int32 team4_factory_hp = 6;
103+
104+
}
105+
106+
message MessageToClient
107+
{
108+
repeated MessageOfObj obj_message = 1;
109+
GameState game_state = 2;
110+
MessageOfAll all_message = 3;
111+
}
112+
113+
message MoveRes // 如果打算设计撞墙保留平行速度分量,且需要返回值则可用这个(大概没啥用)
114+
{
115+
int64 actual_speed = 1;
116+
double actual_angle = 2;
117+
bool act_success = 3;
118+
}
119+
120+
message CreatCharacterRes
121+
{
122+
bool act_success = 1;
123+
int64 player_id = 2;
124+
}
125+
126+
message BoolRes
127+
{
128+
bool act_success = 1;
129+
}
130+
131+
message CharacterInfoRes
132+
{
133+
repeated MessageOfCharacter Character_info = 1;
134+
}
135+
136+
message EcoRes
137+
{
138+
int64 economy = 1;
139+
}
140+
141+
message MessageOfNews
142+
{
143+
oneof news // 一条新闻
144+
{
145+
string text_message = 1;
146+
bytes binary_message = 2;
147+
}
148+
int64 from_id = 3;
149+
int64 to_id = 4;
150+
int64 team_id = 5;
151+
}
152+
// message MsgRes // 用于获取队友发来的消息
153+
// {
154+
// bool have_message = 1; // 是否有待接收的消息
155+
// int64 from_player_id = 2;
156+
// string message_received = 3;
157+
// }
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
// Message2Server
2+
syntax = "proto3";
3+
package protobuf;
4+
import "MessageType.proto";
5+
6+
message NullRequest {}
7+
8+
message IDMsg
9+
{
10+
int64 character_id = 1;
11+
int64 team_id = 2;
12+
}
13+
14+
/*
15+
message CharacterMsg
16+
{
17+
int64 character_id = 1;
18+
int64 team_id = 2;
19+
CharacterType character_type = 3;
20+
int32 side_flag = 4;
21+
}
22+
*/
23+
24+
message MaterialResourceMsg
25+
{
26+
int64 character_id = 1;
27+
int64 team_id = 1;
28+
int32 process = 2;
29+
MaterialResourceType material_resource_type = 3;
30+
}
31+
32+
message MoveMsg
33+
{
34+
int64 character_id = 1;
35+
double angle = 2;
36+
int64 time_in_milliseconds = 3;
37+
int64 team_id = 4;
38+
}
39+
40+
message SendMsg
41+
{
42+
int64 character_id = 1;
43+
int64 to_character_id = 2;
44+
oneof message
45+
{
46+
string text_message = 3;
47+
bytes binary_message = 4;
48+
}
49+
int64 team_id = 5;
50+
}
51+
52+
message AttackMsg // 普通攻击
53+
{
54+
int64 character_id = 1;
55+
int64 team_id = 2;
56+
int32 attack_range = 3; // 攻击范围
57+
int64 attacked_character_id = 4; // 攻击对象
58+
int64 attacked_team_id = 5;
59+
}
60+
61+
message AttackFactoryMsg
62+
{
63+
int64 character_id = 1;
64+
int64 team_id = 2;
65+
int32 attack_range = 3;
66+
int64 attacked_Factory_id = 4;
67+
int64 attacked_team_id = 5;
68+
}
69+
70+
message RecoverMsg
71+
{
72+
int64 character_id = 1;
73+
int64 recovered_hp = 2;
74+
int64 team_id = 3;
75+
}
76+
77+
message RepairFactory
78+
{
79+
int32 character_id = 1;
80+
int32 team_id = 2;
81+
}
82+
83+
message CreatCharacterMsg
84+
{
85+
CharacterType character_type = 1;
86+
int64 team_id = 2;
87+
int32 birthpoint_index = 3;
88+
}
89+
90+
message ProduceProductMeg
91+
{
92+
ProductType product_type = 1;
93+
int64 team_id = 2;
94+
int32 max_produce_num = 3;
95+
}
96+
97+
message LoadMeg
98+
{
99+
int64 team_id = 1;
100+
int64 character_id = 2;
101+
int32 semiconductor_num = 3;
102+
int32 medicine_num = 4;
103+
int32 handiwork_num = 5;
104+
int32 costume_num = 6;
105+
int32 food_num = 7;
106+
107+
}
108+
109+
message SellMeg
110+
{
111+
int64 team_id = 1;
112+
int64 character_id = 2;
113+
int32 semiconductor_num = 3;
114+
int32 medicine_num = 4;
115+
int32 handiwork_num = 5;
116+
int32 costume_num = 6;
117+
int32 food_num = 7;
118+
int32 marketindex = 8;
119+
}

dependency/proto/MessageType.proto

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// MessageType
2+
syntax = "proto3";
3+
package protobuf;
4+
5+
enum GameState //
6+
{
7+
NULL_GAME_STATE = 0;
8+
GAME_START = 1;
9+
GAME_RUNNING = 2;
10+
GAME_END = 3;
11+
}
12+
13+
enum PlaceType //
14+
{
15+
NULL_PLACE_TYPE = 0;
16+
HOME = 1; // 出生点工厂(地图四个角落)
17+
SPACE = 2; // 空地
18+
BARRIER = 3; // 障碍
19+
BUSH = 4; // 草丛
20+
COMPUTING_CENTER = 5; // 算力中心
21+
MATERIAL_RESOURCE = 6; // 材料资源
22+
CHEAP_MARKET = 7; // 廉价市场
23+
EXPENSIVE_MARKET = 8; // 高额市场
24+
}
25+
26+
enum ShapeType //
27+
{
28+
NULL_SHAPE_TYPE = 0;
29+
CIRCLE = 1;
30+
SQUARE = 2;
31+
}
32+
33+
enum PlayerType
34+
{
35+
NULL_PLAYER_TYPE = 0;
36+
CHARACTER = 1;
37+
TEAM = 2;
38+
}
39+
40+
enum CharacterType //
41+
{
42+
NULL_CHARACTER_TYPE = 0;
43+
// 机器类型
44+
DriverlessCar = 1; // 无人驾驶汽车
45+
Drone = 2; // 无人机
46+
Robot = 3; // 机器人
47+
}
48+
49+
enum CharacterState // 角色状态
50+
{
51+
NULL_CHARACTER_STATE = 0;
52+
53+
IDLE = 1;
54+
HARVESTING = 2;
55+
ATTACKING = 3;
56+
CONSTRUCTING = 4;
57+
MOVING = 5;
58+
59+
HEALING = 6;
60+
DECEASED = 7;
61+
}
62+
63+
enum HomeState // 工厂状态
64+
{
65+
NULL_HOME_STATE = 0;
66+
67+
IDLE = 1; // 闲置状态
68+
PRODUCING_PRODUCT = 2; // 生产产品中
69+
REPAIRING = 3; // 修理中
70+
PRODUCING_CHARACTER = 4; // 生产机器中
71+
}
72+
73+
// 不需要ComputingCenterState, 建议使用一个变量来表示归属于哪个队伍
74+
75+
enum MaterialResourceState //
76+
{
77+
NULL_ECONOMY_RESOURCE_STSTE = 0;
78+
HARVESTABLE = 1;
79+
BEING_HARVESTED = 2;
80+
HARVESTED = 3;
81+
}
82+
83+
enum NewsType // 用于角色间通信?或许咱们需要
84+
{
85+
NULL_NEWS_TYPE = 0;
86+
TEXT = 1;
87+
BINARY = 2;
88+
}
89+
90+
cnum ProductType
91+
{
92+
NULL_PRODUCT_TYPE = 0;
93+
94+
SEMICONDUCTOR = 1;
95+
MEDICINE = 2;
96+
HANDIWORK = 3;
97+
COSTUME = 4;
98+
FOOD = 5;
99+
}

0 commit comments

Comments
 (0)