syntax = "proto3";
package data;

message VectorData {
  float x = 1;
  float y = 2;
  float z = 3;
}

message TransformData {
  VectorData position = 1;
  VectorData rotation = 2;
}

message PlayerBasicData {
  int32 id = 1;
  string name = 2;
  int32 sex = 3;
  int32 level = 4;
  int32 exp = 5;
  int32 head_photo = 6;
  int32 head_frame = 7;
  int32 cur_map_id = 8;
  repeated int32 role_show_list = 9;
}

message RoleSkillNodeData {
  int32 node_id = 1;
  bool is_active = 2;
  int32 skill_id = 3;
}

message RoleData {
  int32 role_id = 1;
  string name = 2;
  int32 level = 3;
  int32 exp = 4;
  int32 breakthrough = 5;
  map<int32, int32> skill_map = 6;
  map<int32, int32> phantom_map = 7;
  int32 star = 8;
  int32 favor = 9;
  uint32 create_time = 10;
  int32 cur_model = 11;
  repeated int32 models = 12;
  repeated RoleSkillNodeData skill_node_state = 13;
  int32 resonant_chain_group_index = 14;
  int32 equip_weapon = 15;
}

message RoleFormationData {
  int32 formation_id = 1;
  int32 cur_role = 2;
  repeated int32 role_id_list = 3;
  bool is_current = 4;
}

message PlayerRoleData {
  repeated RoleData role_list = 1;
  map<int32, RoleFormationData> role_formation_list = 2;
  int32 cur_formation_id = 3;
}

message PlayerLocationData {
  int32 instance_id = 1;
  TransformData position = 2;
}

message PlayerFuncData {
  map<int32, int32> func_map = 1;
}

message PlayerExploreToolsData {
  repeated int32 unlocked_skill_list = 1;
  int32 active_skill_id = 2;
  repeated int32 roulette = 3;
}

message PlayerSaveData {
  PlayerBasicData basic_data = 1;
  PlayerRoleData role_data = 2;
  PlayerLocationData location_data = 3;
  PlayerFuncData func_data = 4;
  PlayerExploreToolsData explore_tools_data = 5;
}
