// Proto has been converted from Sorapointa to Grasscutter format
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022  Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

syntax = "proto3";

import "AnimatorParameterValueInfoPair.proto";
import "EntityAuthorityInfo.proto";
import "EntityClientData.proto";
import "EntityEnvironmentInfo.proto";
import "FightPropPair.proto";
import "MotionInfo.proto";
import "PropPair.proto";
import "ProtEntityType.proto";
import "SceneAvatarInfo.proto";
import "SceneGadgetInfo.proto";
import "SceneMonsterInfo.proto";
import "SceneNpcInfo.proto";
import "ServerBuff.proto";

option java_package = "emu.grasscutter.net.proto";

message SceneEntityInfo {
  ProtEntityType entity_type = 1;
  uint32 entity_id = 2;
  string name = 3;
  MotionInfo motion_info = 4;
  repeated PropPair prop_list = 5;
  repeated FightPropPair fight_prop_list = 6;
  uint32 life_state = 7;
  repeated AnimatorParameterValueInfoPair animator_para_list = 9;
  uint32 last_move_scene_time_ms = 17;
  uint32 last_move_reliable_seq = 18;
  EntityClientData entity_client_data = 19;
  repeated EntityEnvironmentInfo entity_environment_info_list = 20;
  EntityAuthorityInfo entity_authority_info = 21;
  repeated string tag_list = 22;
  repeated ServerBuff server_buff_list = 23;
  oneof entity {
    SceneAvatarInfo avatar = 10;
    SceneMonsterInfo monster = 11;
    SceneNpcInfo npc = 12;
    SceneGadgetInfo gadget = 13;
  }
}
