syntax = "proto3";
package ET;
import 'Player.proto';

message HttpGetRouterResponse
{
	repeated string Realms = 1;
	repeated string Routers = 2;
}

message RouterSync
{
	uint32 ConnectId = 1;
	string Address = 2;
}

//ResponseType M2C_TestResponse
message C2M_TestRequest // IActorLocationRequest
{
	int32 RpcId = 1;
	string request = 2;
}

message M2C_TestResponse // IActorLocationResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	string response = 4;
}

//ResponseType Actor_TransferResponse
message Actor_TransferRequest // IActorLocationRequest
{
	int32 RpcId = 1;
	int32 MapIndex = 2;
}

message Actor_TransferResponse // IActorLocationResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

//ResponseType G2C_EnterMap
message C2G_EnterMap // IRequest
{
	int32 RpcId = 1;
	int64 InstanceId = 2;
}

message G2C_EnterMap // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	int64 MapInstanceId = 4;
}

//ResponseType G2C_EnterSceneReady
message C2G_EnterSceneReady // IRequest
{
	int32 RpcId = 1;
}

message G2C_EnterSceneReady // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

message MoveInfo
{
	repeated Unity.Mathematics.float3 Points = 1;
	Unity.Mathematics.quaternion Rotation = 2;
	int32 TurnSpeed = 3;
}

message UnitInfo
{
	int64 UnitId = 1;
	int32 ConfigId = 2;
	int32 Type = 3;
	Unity.Mathematics.float3 Position = 4;
	Unity.Mathematics.float3 Forward = 5;
	map<int32, int64> KV = 6;
	MoveInfo MoveInfo = 7;
}

message M2C_CreateUnits // IActorMessage
{
	repeated UnitInfo Units = 1;
}

message M2C_CreateMyUnit // IActorMessage
{
	UnitInfo Unit = 1;
}

message M2C_StartSceneChange // IActorMessage
{
	int64 SceneInstanceId = 1;
	string SceneName = 2;
}

message M2C_RemoveUnits // IActorMessage
{
	repeated int64 Units = 2;
}

message C2M_PathfindingResult // IActorLocationMessage
{
	int32 RpcId = 1;
	Unity.Mathematics.float3 Position = 2;
}

message M2C_PathfindingResult // IActorMessage
{
	int64 Id = 1;
	Unity.Mathematics.float3 Position = 2;
	repeated Unity.Mathematics.float3 Points = 3;
}

message C2M_Stop // IActorLocationMessage
{
	int32 RpcId = 1;
}

message M2C_Stop // IActorMessage
{
	int32 Error = 1;
	int64 Id = 2;
	Unity.Mathematics.float3 Position = 3;
	Unity.Mathematics.quaternion Rotation = 4;
}

//ResponseType G2C_Ping
message C2G_Ping // IRequest
{
	int32 RpcId = 1;
}

message G2C_Ping // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	int64 Time = 4;
}


message G2C_Test // IMessage
{
}

//ResponseType M2C_Reload
message C2M_Reload // IRequest
{
	int32 RpcId = 1;
	string Account = 2;
	string Password = 3;
}

message M2C_Reload // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

//ResponseType R2C_Login
message C2R_Login // IRequest
{
	int32 RpcId = 1;
	string RoomId = 2;
}

message R2C_Login // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	string Token = 4;
	// 服务器列表
	repeated string Address = 5;
}

//ResponseType G2C_LoginGame
message C2G_LoginGame // IRequest
{
	int32 RpcId = 1;
	string Token = 2;
}

message G2C_LoginGame // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	PlayerBasic Player = 4;	// 角色
}

//ResponseType G2C_CreatePlayer
message C2G_CreatePlayer // IRequest
{
	int32 RpcId = 1;
	int64 UserId = 2;
	string Name = 3;  // 角色名称
	int32 Pro = 4;	// 职业
	int32 Sex = 5;	// 性别
}

message G2C_CreatePlayer // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	Player Player = 4;
}

//ResponseType G2C_BindPlayer
message C2G_BindPlayer // IRequest
{
	int32 RpcId = 1;
	int64 PlayerId = 2;
}

message G2C_BindPlayer // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	Player Player = 4;
}

//ResponseType G2C_AddUnitsToMap
message C2G_AddUnitsToMap // IRequest
{
	int32 RpcId = 1;
	int32 UnitId = 2;	// 单位模板ID
	int32 Force = 3;	// 阵营信息 0-无 1-怪物 2-阵营a 3-阵营b
	string Flag = 4;	// 编辑器配置的出生点, 为空则读xy
	int32 X = 5;
	int32 Y = 6;
}

message G2C_AddUnitsToMap // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

//ResponseType G2C_RemoveUnit
message C2G_RemoveUnit // IActorLocationRequest
{
	int32 RpcId = 1;
	int32 UnitId = 2;	// 单位模板ID
}

message G2C_RemoveUnit // IActorLocationResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

//ResponseType G2C_TriggrBattleFunction
message C2G_TriggrBattleFunction // IRequest
{
	int32 RpcId = 1;
	int32 TriggerID = 2;// 效果id
	int32 Value1 = 3;	// 属性数值
	int32 Value2 = 4;	// 属性数值
	int32 Value3 = 5;	// 属性数值
	int32 Value4 = 6;	// 属性数值
	int32 Value5 = 7;	// 属性数值
	int32 Value6 = 8;	// 属性数值
}

message G2C_TriggrBattleFunction // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

message RankInfo
{
	string Name = 1;		// 名称
	int32 Value = 2;		// 贡献值
	int32 Ranking = 3;		// 排名
}

message G2C_RankNotify // IActorMessage
{
	repeated RankInfo InfoList = 1;	// 排行榜list
}

message G2C_TestHotfixMessage // IMessage
{
	string Info = 1;
}

//ResponseType M2C_TestRobotCase
message C2M_TestRobotCase // IActorLocationRequest
{
	int32 RpcId = 1;
	int32 N = 2;
}

message M2C_TestRobotCase // IActorLocationResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
	int32 N = 4;
}

//ResponseType G2C_Benchmark
message C2G_Benchmark // IRequest
{
	int32 RpcId = 1;
}

message G2C_Benchmark // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

message R2C_Disconnect // IActorMessage
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}

message HttpDouyinApiCallbackResponse
{
	int32 Error = 1;
	string Message = 2;
}

message HttpGetVersionResponse
{
	int32 Error = 1;
	string Message = 2;
	int64 Version = 3;	// 版本号
	string Url = 4;	// 新包地址
}

//ResponseType G2C_BattleNotify
message C2G_BattleNotify // IRequest
{
	int32 RpcId = 1;
	string Message = 2;
}

message G2C_BattleNotify // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;
}