// 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 "GCGMsgAddCards.proto";
import "GCGMsgAddDice.proto";
import "GCGMsgCardUpdate.proto";
import "GCGMsgCharDie.proto";
import "GCGMsgClientPerform.proto";
import "GCGMsgCostDice.proto";
import "GCGMsgCostRevise.proto";
import "GCGMsgDiceReroll.proto";
import "GCGMsgDiceRoll.proto";
import "GCGMsgDuelDataChange.proto";
import "GCGMsgGameOver.proto";
import "GCGMsgModifyAdd.proto";
import "GCGMsgModifyRemove.proto";
import "GCGMsgMoveCard.proto";
import "GCGMsgNewCard.proto";
import "GCGMsgOpTimer.proto";
import "GCGMsgPVEDoOp.proto";
import "GCGMsgPVEGenCardOp.proto";
import "GCGMsgPass.proto";
import "GCGMsgPhaseChange.proto";
import "GCGMsgRemoveCards.proto";
import "GCGMsgSelectOnStage.proto";
import "GCGMsgSelectOnStageByEffect.proto";
import "GCGMsgSkillResult.proto";
import "GCGMsgTokenChange.proto";
import "GCGMsgUpdateController.proto";
import "GCGMsgUseSkill.proto";
import "GCGMsgUseSkillEnd.proto";
import "GCGMsgWaitingListChange.proto";

package proto;
option go_package = "./;proto";

message GCGMessage {
  oneof message {
    GCGMsgTokenChange token_change = 12;
    GCGMsgPhaseChange phase_change = 13;
    GCGMsgAddCards add_cards = 10;
    GCGMsgRemoveCards remove_cards = 14;
    GCGMsgSelectOnStage select_on_stage = 6;
    GCGMsgDiceRoll dice_roll = 9;
    GCGMsgDiceReroll dice_reroll = 11;
    GCGMsgPass pass = 5;
    GCGMsgCharDie char_die = 2;
    GCGMsgSkillResult skill_result = 1;
    GCGMsgCostDice cost_dice = 7;
    GCGMsgAddDice add_dice = 3;
    GCGMsgMoveCard move_card = 15;
    GCGMsgUseSkill use_skill = 4;
    GCGMsgNewCard new_card = 1848;
    GCGMsgUpdateController update_controller = 429;
    GCGMsgModifyAdd modify_add = 1851;
    GCGMsgModifyRemove modify_remove = 471;
    GCGMsgUseSkillEnd use_skill_end = 1411;
    GCGMsgPVEGenCardOp pve_gen_card_op = 1741;
    GCGMsgPVEDoOp pve_do_op = 614;
    GCGMsgDuelDataChange duel_data_change = 1008;
    GCGMsgClientPerform client_perform = 1035;
    GCGMsgGameOver game_over = 714;
    GCGMsgOpTimer op_timer = 1862;
    GCGMsgWaitingListChange waiting_list_change = 1678;
    GCGMsgCardUpdate card_update = 1879;
    GCGMsgSelectOnStageByEffect select_on_stage_by_effect = 2042;
    GCGMsgCostRevise cost_revise = 1350;
  }
}
