// 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 "AbilityGadgetInfo.proto";
import "BlossomChestInfo.proto";
import "BossChestInfo.proto";
import "ClientGadgetInfo.proto";
import "CoinCollectOperatorInfo.proto";
import "CustomGadgetTreeInfo.proto";
import "DeshretObeliskGadgetInfo.proto";
import "EchoShellInfo.proto";
import "FishPoolInfo.proto";
import "FoundationInfo.proto";
import "GadgetBornType.proto";
import "GadgetGeneralRewardInfo.proto";
import "GadgetPlayInfo.proto";
import "GatherGadgetInfo.proto";
import "Item.proto";
import "MpPlayRewardInfo.proto";
import "NightCrowGadgetInfo.proto";
import "OfferingInfo.proto";
import "PlatformInfo.proto";
import "RoguelikeGadgetInfo.proto";
import "ScreenInfo.proto";
import "StatueGadgetInfo.proto";
import "VehicleInfo.proto";
import "WeatherInfo.proto";
import "WorktopInfo.proto";

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

message SceneGadgetInfo {
  uint32 gadget_id = 1;
  uint32 group_id = 2;
  uint32 config_id = 3;
  uint32 owner_entity_id = 4;
  GadgetBornType born_type = 5;
  uint32 gadget_state = 6;
  uint32 gadget_type = 7;
  bool is_show_cutscene = 8;
  uint32 authority_peer_id = 9;
  bool is_enable_interact = 10;
  uint32 interact_id = 11;
  uint32 mark_flag = 21;
  uint32 prop_owner_entity_id = 22;
  PlatformInfo platform = 23;
  repeated uint32 interact_uid_list = 24;
  uint32 draft_id = 25;
  uint32 gadget_talk_state = 26;
  GadgetPlayInfo play_info = 100;
  oneof content {
    Item trifle_item = 12;
    GatherGadgetInfo gather_gadget = 13;
    WorktopInfo worktop = 14;
    ClientGadgetInfo client_gadget = 15;
    WeatherInfo weather = 17;
    AbilityGadgetInfo ability_gadget = 18;
    StatueGadgetInfo statue_gadget = 19;
    BossChestInfo boss_chest = 20;
    BlossomChestInfo blossom_chest = 41;
    MpPlayRewardInfo mp_play_reward = 42;
    GadgetGeneralRewardInfo general_reward = 43;
    OfferingInfo offering_info = 44;
    FoundationInfo foundation_info = 45;
    VehicleInfo vehicle_info = 46;
    EchoShellInfo shell_info = 47;
    ScreenInfo screen_info = 48;
    FishPoolInfo fish_pool_info = 59;
    CustomGadgetTreeInfo custom_gadget_tree_info = 60;
    RoguelikeGadgetInfo roguelike_gadget_info = 61;
    NightCrowGadgetInfo night_crow_gadget_info = 62;
    DeshretObeliskGadgetInfo deshret_obelisk_gadget_info = 63;
    CoinCollectOperatorInfo coin_collect_operator_info = 64;
  }
}