From 8c88346c6bf4e2960a7f758c7c46e0f6129e7ff9 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 23:12:46 +0800 Subject: [PATCH] fix: resolve file collisions --- CAPI/.gitignore | 499 +++ CAPI/API/API.vcxproj | 154 + CAPI/API/API.vcxproj.filters | 17 + CAPI/API/include/AI.h | 27 + CAPI/API/include/API.h | 247 ++ CAPI/API/include/constants.h | 8 + CAPI/API/include/logic.h | 112 + CAPI/API/include/state.h | 27 + CAPI/API/include/structures.h | 151 + CAPI/API/src/AI.cpp | 15 + CAPI/API/src/logic.cpp | 7 + CAPI/CAPI.sln | 31 + CAPI/CMakeLists.txt | 28 + CAPI/README.md | 50 + CAPI/proto/Message2Clients.grpc.pb.cc | 852 +++++ CAPI/proto/Message2Clients.grpc.pb.h | 3348 ++++++++++++++++++ CAPI/proto/Message2Clients.pb.cc | 4294 +++++++++++++++++++++++ CAPI/proto/Message2Clients.pb.h | 4327 ++++++++++++++++++++++++ CAPI/proto/Message2Server.grpc.pb.cc | 25 + CAPI/proto/Message2Server.grpc.pb.h | 35 + CAPI/proto/Message2Server.pb.cc | 2006 +++++++++++ CAPI/proto/Message2Server.pb.h | 1864 ++++++++++ CAPI/proto/MessageType.grpc.pb.cc | 25 + CAPI/proto/MessageType.grpc.pb.h | 35 + CAPI/proto/MessageType.pb.cc | 240 ++ CAPI/proto/MessageType.pb.h | 411 +++ dependency/.gitignore | 363 ++ dependency/Dockerfile/README.md | 4 + dependency/README.md | 10 + dependency/dll/README.md | 4 + dependency/lib/README.md | 4 + dependency/proto/.clang-format | 283 ++ dependency/proto/Message2Clients.proto | 125 + dependency/proto/Message2Server.proto | 62 + dependency/proto/MessageType.proto | 110 + dependency/proto/README.md | 3 + dependency/proto/cpp_output.sh | 10 + dependency/proto/format.sh | 75 + dependency/shell/README.md | 4 + dependency/shell/format.sh | 21 + resource/README.md | 3 + resource/capi_uml.png | Bin 0 -> 10953 bytes resource/capi_uml.vsdx | Bin 0 -> 25797 bytes resource/structure.png | Bin 0 -> 66930 bytes resource/structure.vsdx | Bin 0 -> 65739 bytes 45 files changed, 19916 insertions(+) create mode 100644 CAPI/.gitignore create mode 100644 CAPI/API/API.vcxproj create mode 100644 CAPI/API/API.vcxproj.filters create mode 100644 CAPI/API/include/AI.h create mode 100644 CAPI/API/include/API.h create mode 100644 CAPI/API/include/constants.h create mode 100644 CAPI/API/include/logic.h create mode 100644 CAPI/API/include/state.h create mode 100644 CAPI/API/include/structures.h create mode 100644 CAPI/API/src/AI.cpp create mode 100644 CAPI/API/src/logic.cpp create mode 100644 CAPI/CAPI.sln create mode 100644 CAPI/CMakeLists.txt create mode 100644 CAPI/README.md create mode 100644 CAPI/proto/Message2Clients.grpc.pb.cc create mode 100644 CAPI/proto/Message2Clients.grpc.pb.h create mode 100644 CAPI/proto/Message2Clients.pb.cc create mode 100644 CAPI/proto/Message2Clients.pb.h create mode 100644 CAPI/proto/Message2Server.grpc.pb.cc create mode 100644 CAPI/proto/Message2Server.grpc.pb.h create mode 100644 CAPI/proto/Message2Server.pb.cc create mode 100644 CAPI/proto/Message2Server.pb.h create mode 100644 CAPI/proto/MessageType.grpc.pb.cc create mode 100644 CAPI/proto/MessageType.grpc.pb.h create mode 100644 CAPI/proto/MessageType.pb.cc create mode 100644 CAPI/proto/MessageType.pb.h create mode 100644 dependency/.gitignore create mode 100644 dependency/Dockerfile/README.md create mode 100644 dependency/README.md create mode 100644 dependency/dll/README.md create mode 100644 dependency/lib/README.md create mode 100644 dependency/proto/.clang-format create mode 100644 dependency/proto/Message2Clients.proto create mode 100644 dependency/proto/Message2Server.proto create mode 100644 dependency/proto/MessageType.proto create mode 100644 dependency/proto/README.md create mode 100644 dependency/proto/cpp_output.sh create mode 100644 dependency/proto/format.sh create mode 100644 dependency/shell/README.md create mode 100644 dependency/shell/format.sh create mode 100644 resource/README.md create mode 100644 resource/capi_uml.png create mode 100644 resource/capi_uml.vsdx create mode 100644 resource/structure.png create mode 100644 resource/structure.vsdx diff --git a/CAPI/.gitignore b/CAPI/.gitignore new file mode 100644 index 0000000..698ed27 --- /dev/null +++ b/CAPI/.gitignore @@ -0,0 +1,499 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + +#THUAI playback file +*.thuaipb + +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps diff --git a/CAPI/API/API.vcxproj b/CAPI/API/API.vcxproj new file mode 100644 index 0000000..33f7ab9 --- /dev/null +++ b/CAPI/API/API.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {b9ac3133-177d-453c-8066-ed4702d3f36a} + API + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc17 + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc17 + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc17 + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc17 + + + Console + true + true + true + + + + + + + + \ No newline at end of file diff --git a/CAPI/API/API.vcxproj.filters b/CAPI/API/API.vcxproj.filters new file mode 100644 index 0000000..afef69e --- /dev/null +++ b/CAPI/API/API.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + \ No newline at end of file diff --git a/CAPI/API/include/AI.h b/CAPI/API/include/AI.h new file mode 100644 index 0000000..d274d3d --- /dev/null +++ b/CAPI/API/include/AI.h @@ -0,0 +1,27 @@ +#pragma once +#ifndef AI_H +#define AI_H + +#include "API.h" + +// 暂定版本:Human和Butcher全部继承AI类, +class IAI +{ +public: + IAI() + { + } + virtual void play(IAPI& api) = 0; +}; + +class AI : public IAI +{ +public: + AI() : + IAI() + { + } + void play(IAPI& api) override; +}; + +#endif \ No newline at end of file diff --git a/CAPI/API/include/API.h b/CAPI/API/include/API.h new file mode 100644 index 0000000..076bff2 --- /dev/null +++ b/CAPI/API/include/API.h @@ -0,0 +1,247 @@ +#pragma once +#ifndef API_H +#define API_H + +#ifdef _MSC_VER +#pragma warning(disable : 4996) +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "structures.h" + +const constexpr int num_of_grid_per_cell = 1000; + +class ILogic +{ + // API中依赖Logic的部分 + +public: + // 获取服务器发来的所有消息,要注意线程安全问题 + virtual protobuf::MessageToClient GetFullMessage() = 0; + + // 供IAPI使用的操作相关的部分 + virtual bool Move(protobuf::MoveMsg) = 0; + virtual bool PickProp(protobuf::PickMsg) = 0; + virtual bool UseProp(protobuf::IDMsg) = 0; + virtual bool UseSkill(protobuf::IDMsg) = 0; + virtual void SendMessage(protobuf::SendMsg) = 0; + virtual bool HaveMessage(protobuf::IDMsg) = 0; + virtual protobuf::MsgRes GetMessage(protobuf::IDMsg) = 0; + + virtual bool Escape(protobuf::IDMsg) = 0; + + // 说明:双向stream由三个函数共同实现,两个记录开始和结束,结果由Logic里的私有的成员变量记录,获得返回值则另调函数 + virtual bool StartFixMachine(protobuf::IDMsg) = 0; + virtual bool EndFixMachine(protobuf::IDMsg) = 0; + virtual bool GetFixStatus() = 0; + + virtual bool StartSaveHuman(protobuf::IDMsg) = 0; + virtual bool EndSaveHuman(protobuf::IDMsg) = 0; + virtual bool GetSaveStatus() = 0; + + virtual bool Attack(protobuf::AttackMsg) = 0; + virtual bool CarryHuman(protobuf::IDMsg) = 0; + virtual bool ReleaseHuman(protobuf::IDMsg) = 0; + virtual bool HangHuman(protobuf::IDMsg) = 0; + + virtual bool WaitThread() = 0; + + virtual int GetCounter() = 0; +}; + +class IAPI +{ +public: + // 选手可执行的操作,应当保证所有函数的返回值都应当为std::future,例如下面的移动函数: + // 指挥本角色进行移动,`timeInMilliseconds` 为移动时间,单位为毫秒;`angleInRadian` 表示移动的方向,单位是弧度,使用极坐标——竖直向下方向为 x 轴,水平向右方向为 y 轴 + virtual std::future Move(uint32_t timeInMilliseconds, double angleInRadian) = 0; + + // 向特定方向移动 + virtual std::future MoveRight(uint32_t timeInMilliseconds) = 0; + virtual std::future MoveUp(uint32_t timeInMilliseconds) = 0; + virtual std::future MoveLeft(uint32_t timeInMilliseconds) = 0; + virtual std::future MoveDown(uint32_t timeInMilliseconds) = 0; + + // 捡道具、使用技能 + virtual std::future PickProp() = 0; + virtual std::future UseProp() = 0; + virtual std::future UseSkill() = 0; + + // 发送信息、接受信息 + virtual std::future SendMessage(int, std::string) = 0; + [[nodiscard]] virtual std::future HaveMessage() = 0; + [[nodiscard]] virtual std::future> GetMessage() = 0; + + // 等待下一帧 + virtual std::future Wait() = 0; + + // 获取视野内可见的人类/屠夫的信息 + [[nodiscard]] virtual std::vector> GetHuman() const = 0; + [[nodiscard]] virtual std::vector> GetButcher() const = 0; + + // 获取视野内可见的道具信息 + [[nodiscard]] virtual std::vector> GetProps() const = 0; + + // 获取地图信息,视野外的地图统一为Land + [[nodiscard]] virtual std::array, 50> GetFullMap() const = 0; + [[nodiscard]] virtual THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const = 0; + + // 获取所有玩家的GUID + [[nodiscard]] virtual const std::vector GetPlayerGUIDs() const = 0; + + // 获取游戏目前所进行的帧数 + [[nodiscard]] virtual int GetFrameCount() const = 0; + + /*****人类阵营的特定函数*****/ + + virtual std::future StartFixMachine() = 0; + virtual std::future EndFixMachine() = 0; + virtual std::future GetFixStatus() = 0; + virtual std::future StartSaveHuman() = 0; + virtual std::future EndSaveHuman() = 0; + virtual std::future GetSaveStatus() = 0; + virtual std::future Escape() = 0; + [[nodiscard]] virtual std::shared_ptr HumanGetSelfInfo() const = 0; + + /*****屠夫阵营的特定函数*****/ + + virtual std::future Attack(double angleInRadian) = 0; + virtual std::future CarryHuman() = 0; + virtual std::future ReleaseHuman() = 0; + virtual std::future HangHuman() = 0; + [[nodiscard]] virtual std::shared_ptr ButcherGetSelfInfo() const = 0; + + /*****选手可能用的辅助函数*****/ + + // 获取指定格子中心的坐标 + [[nodiscard]] static inline int CellToGrid(int cell) noexcept + { + return cell * num_of_grid_per_cell + num_of_grid_per_cell / 2; + } + + // 获取指定坐标点所位于的格子的 X 序号 + [[nodiscard]] static inline int GridToCell(int grid) noexcept + { + return grid / num_of_grid_per_cell; + } + + IAPI(ILogic& logic) : + logic(logic) + { + } + + virtual ~IAPI() + { + } + +protected: + ILogic& logic; +}; + +// 给Logic使用的IAPI接口,为了保证面向对象的设计模式 +class IAPIForLogic : public IAPI +{ +public: + IAPIForLogic(ILogic& logic) : + IAPI(logic) + { + } + virtual void StartTimer() = 0; + virtual void EndTimer() = 0; +}; + +class HumanAPI : public IAPIForLogic +{ +public: + HumanAPI(ILogic& logic) : + IAPIForLogic(logic) + { + } +}; + +class ButcherAPI : public IAPIForLogic +{ +public: + ButcherAPI(ILogic& logic) : + IAPIForLogic(logic) + { + } +}; + +// class IHumanAPI : public IAPIForLogic +// { +// public: +// IHumanAPI(ILogic& logic) : +// IAPIForLogic(logic) +// { +// } +// virtual std::future StartFixMachine() = 0; +// virtual std::future EndFixMachine() = 0; +// virtual std::future GetFixStatus() = 0; +// virtual std::future StartSaveHuman() = 0; +// virtual std::future EndSaveHuman() = 0; +// virtual std::future GetSaveStatus() = 0; +// virtual std::future Escape() = 0; +// [[nodiscard]] virtual std::shared_ptr GetSelfInfo() const = 0; +// }; + +// class IButcherAPI : public IAPIForLogic +// { +// public: +// IButcherAPI(Logic& logic) : +// IAPIForLogic(logic) +// { +// } +// virtual std::future Attack(double angleInRadian) = 0; +// virtual std::future CarryHuman() = 0; +// virtual std::future ReleaseHuman() = 0; +// virtual std::future HangHuman() = 0; +// [[nodiscard]] virtual std::shared_ptr GetSelfInfo() const = 0; +// }; + +// class HumanAPI : public IHumanAPI +// { +// public: +// HumanAPI(Logic& logic) : +// IHumanAPI(logic) +// { +// } +// }; + +// class DebugHumanAPI : public IHumanAPI +// { +// public: +// DebugHumanAPI(Logic& logic) : +// IHumanAPI(logic) +// { +// } +// }; + +// class ButhcerAPI : public IButcherAPI +// { +// public: +// ButhcerAPI(Logic& logic) : +// IButcherAPI(logic) +// { +// } +// }; + +// class DebugButcherAPI : public IButcherAPI +// { +// public: +// DebugButcherAPI(Logic& logic) : +// IButcherAPI(logic) +// { +// } +// }; + +#endif \ No newline at end of file diff --git a/CAPI/API/include/constants.h b/CAPI/API/include/constants.h new file mode 100644 index 0000000..735bd03 --- /dev/null +++ b/CAPI/API/include/constants.h @@ -0,0 +1,8 @@ +#pragma once +#ifndef CONSTANTS_H +#define CONSTANTS_H + +namespace Constants +{ +} +#endif \ No newline at end of file diff --git a/CAPI/API/include/logic.h b/CAPI/API/include/logic.h new file mode 100644 index 0000000..6851596 --- /dev/null +++ b/CAPI/API/include/logic.h @@ -0,0 +1,112 @@ +#pragma once + +#ifndef LOGIC_H +#define LOGIC_H + +#ifdef _MSC_VER +#pragma warning(disable : 4996) +#endif + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "API.h" +#include "AI.h" + +// 封装了通信组件和对AI对象进行操作 +class Logic : public ILogic +{ +private: + // gRPC客户端的stub,所有与服务端之间的通信操作都需要基于stub完成。 + std::unique_ptr THUAI6Stub; + // ID、阵营记录 + int playerID; + THUAI6::PlayerType playerType; + + // 类型记录 + THUAI6::HumanType humanType; + THUAI6::ButcherType butcherType; + + // GUID信息 + std::vector playerGUIDs; + + // THUAI5中的通信组件可以完全被我们的stub取代,故无须再写 + + std::unique_ptr pAI; + + std::shared_ptr pAPI; + + std::thread tAI; + + mutable std::mutex mtxAI; + mutable std::mutex mtxState; + mutable std::mutex mtxBuffer; + + std::condition_variable cvBuffer; + std::condition_variable cvAI; + + // 信息队列目前可能会不用?具体待定 + + // 存储状态,分别是现在的状态和缓冲区的状态。 + State state[2]; + State* currentState; + State* bufferState; + + // 是否应该执行player() + std::atomic_bool AILoop = true; + + // buffer是否更新完毕 + bool bufferUpdated = true; + + // 是否可以启用当前状态 + bool currentStateAccessed = false; + + // 是否应当启动AI + bool AIStart = false; + + // 控制内容更新的变量 + std::atomic_bool freshed = false; + + // 所有API中声明的函数都需要在此处重写,先暂时略过,等到之后具体实现时再考虑 + + // 执行AI线程 + void PlayerWrapper(std::function player); + + // THUAI5中的一系列用于处理信息的函数可能也不会再用 + + // 将信息加载到buffer + void LoadBuffer(std::shared_ptr); + + // 解锁状态更新线程 + void UnBlockBuffer(); + + // 解锁AI线程 + void UnBlockAI(); + + // 更新状态 + void Update() noexcept; + + // 等待 + void Wait() noexcept; + +public: + // 构造函数还需要传更多参数,有待补充 + Logic(std::shared_ptr channel); + + ~Logic() = default; + + // Main函数同上 + void Main(); +}; + +#endif \ No newline at end of file diff --git a/CAPI/API/include/state.h b/CAPI/API/include/state.h new file mode 100644 index 0000000..f699d24 --- /dev/null +++ b/CAPI/API/include/state.h @@ -0,0 +1,27 @@ +#pragma once +#ifndef STATE_H +#define STATE_H + +#include + +#include "structures.h" + +// 存储场上的状态 +struct State +{ + uint32_t teamScore; + + // 自身信息,根据playerType的不同,可以调用的值也不同。 + std::shared_ptr humanSelf; + std::shared_ptr butcherSelf; + + std::vector> humans; + std::vector> butchers; + std::vector> props; + + THUAI6::PlaceType gamemap[51][51]; + + std::vector guids; +}; + +#endif \ No newline at end of file diff --git a/CAPI/API/include/structures.h b/CAPI/API/include/structures.h new file mode 100644 index 0000000..06dd24c --- /dev/null +++ b/CAPI/API/include/structures.h @@ -0,0 +1,151 @@ +#pragma once +#ifndef STRUCTURES_H +#define STRUCTURES_H + +#include +#include +#include + +namespace THUAI6 +{ + // 所有NullXXXType均为错误类型,其余为可能出现的正常类型 + + // 位置标志 + enum class PlaceType : unsigned char + { + NullPlaceType = 0, + Land = 1, + Wall = 2, + Grass = 3, + Machine = 4, + Gate = 5, + HiddenGate = 6, + }; + + // 形状标志 + enum class ShapeType : unsigned char + { + NullShapeType = 0, + Circle = 1, + Square = 2, + }; + + // 道具类型 + enum class PropType : unsigned char + { + NullPropType = 0, + PropType1 = 1, + PropType2 = 2, + PropType3 = 3, + PropType4 = 4, + }; + + // 玩家类型 + enum class PlayerType : unsigned char + { + NullPlayerType = 0, + HumanPlayer = 1, + ButcherType = 2, + }; + + // 人类类型 + enum class HumanType : unsigned char + { + NullHumanType = 0, + HumanType1 = 1, + HumanType2 = 2, + HumanType3 = 3, + HumanType4 = 4, + }; + + // 屠夫类型 + enum class ButcherType : unsigned char + { + NullButcherType = 0, + ButcherType1 = 1, + ButcherType2 = 2, + ButcherType3 = 3, + ButcherType4 = 4, + }; + + // 人类Buff类型 + enum class HumanBuffType : unsigned char + { + NullHumanBuffType = 0, + HumanBuffType1 = 1, + HumanBuffType2 = 2, + HumanBuffType3 = 3, + HumanBuffType4 = 4, + }; + + // 玩家类 + struct Player + { + int32_t x; // x坐标 + int32_t y; // y坐标 + uint32_t speed; // 移动速度 + uint32_t viewRange; // 视野范围 + uint64_t playerID; // 玩家ID + uint64_t guid; // 全局唯一ID + uint16_t radius; // 圆形物体的半径或正方形物体的内切圆半径 + + double timeUntilSkillAvailable; // 技能冷却时间 + + PlayerType playerType; // 玩家类型 + PropType prop; // 手上的道具类型 + PlaceType place; // 所处格子的类型 + }; + + struct Human : public Player + { + bool onChair; // 是否被挂 + bool onGround; // 是否倒地 + uint32_t life; // 剩余生命(本次倒地之前还能承受的伤害) + uint32_t hangedTime; // 被挂的次数 + + HumanType humanType; // 人类类型 + std::vector buff; // buff + }; + + struct Butcher : public Player + { + uint32_t damage; // 攻击伤害 + bool movable; // 是否处在攻击后摇中 + + ButcherType butcherType; // 屠夫类型 + std::vector buff; // buff + }; + + struct Prop + { + int32_t x; + int32_t y; + uint32_t size; + uint64_t guid; + PropType type; + PlaceType place; + double facingDirection; // 朝向 + bool isMoving; + }; + + // 仅供DEBUG使用,名称可改动 + // 还没写完,后面待续 + + inline std::map placeDict{ + {PlaceType::NullPlaceType, "NullPlaceType"}, + {PlaceType::Land, "Land"}, + {PlaceType::Wall, "Wall"}, + {PlaceType::Grass, "Grass"}, + {PlaceType::Machine, "Machine"}, + {PlaceType::Gate, "Gate"}, + {PlaceType::HiddenGate, "HiddenGate"}, + }; + + inline std::map propDict{ + {PropType::NullPropType, "NullPropType"}, + + }; + +} // namespace THUAI6 + +#endif diff --git a/CAPI/API/src/AI.cpp b/CAPI/API/src/AI.cpp new file mode 100644 index 0000000..6953fd5 --- /dev/null +++ b/CAPI/API/src/AI.cpp @@ -0,0 +1,15 @@ +#include +#include +#include "AI.h" + +// 选手必须定义该变量来选择自己的阵营 +const THUAI6::PlayerType playerType = THUAI6::PlayerType::HumanPlayer; + +// 选手只需要定义两者中自己选中的那个即可,定义两个也不会有影响。 +const THUAI6::ButcherType butcherType = THUAI6::ButcherType::ButcherType1; + +const THUAI6::HumanType humanType = THUAI6::HumanType::HumanType1; + +void AI::play(IAPI& api) +{ +} \ No newline at end of file diff --git a/CAPI/API/src/logic.cpp b/CAPI/API/src/logic.cpp new file mode 100644 index 0000000..9ef32c9 --- /dev/null +++ b/CAPI/API/src/logic.cpp @@ -0,0 +1,7 @@ +#pragma once +#include "logic.h" + +Logic::Logic(std::shared_ptr channel) : + THUAI6Stub(Protobuf::AvailableService::NewStub(channel)) +{ +} \ No newline at end of file diff --git a/CAPI/CAPI.sln b/CAPI/CAPI.sln new file mode 100644 index 0000000..76cf3d8 --- /dev/null +++ b/CAPI/CAPI.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32014.148 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "API", "API\API.vcxproj", "{B9AC3133-177D-453C-8066-ED4702D3F36A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Debug|x64.ActiveCfg = Debug|x64 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Debug|x64.Build.0 = Debug|x64 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Debug|x86.ActiveCfg = Debug|Win32 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Debug|x86.Build.0 = Debug|Win32 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Release|x64.ActiveCfg = Release|x64 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Release|x64.Build.0 = Release|x64 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Release|x86.ActiveCfg = Release|Win32 + {B9AC3133-177D-453C-8066-ED4702D3F36A}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {372B1478-522C-4EEB-A527-983D310A3F50} + EndGlobalSection +EndGlobal diff --git a/CAPI/CMakeLists.txt b/CAPI/CMakeLists.txt new file mode 100644 index 0000000..6b11ff0 --- /dev/null +++ b/CAPI/CMakeLists.txt @@ -0,0 +1,28 @@ +# 临时CMakeLists,仅供本地调试用 +cmake_minimum_required(VERSION 3.5) + +project(THUAI6_CAPI VERSION 1.0) + +set(CMAKE_CXX_STANDARD 17) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -pthread") + +aux_source_directory(./API/src CPP_LIST) +aux_source_directory(./proto PROTO_CPP_LIST) + +find_package(Protobuf CONFIG REQUIRED) +find_package(gRPC CONFIG REQUIRED) + +message(STATUS "Using protobuf ${Protobuf_VERSION}") +message(STATUS "Using gRPC ${gRPC_VERSION}") + +add_executable(capi ${CPP_LIST} ${PROTO_CPP_LIST}) + +target_include_directories(capi PUBLIC ${PROJECT_SOURCE_DIR}/proto ${PROJECT_SOURCE_DIR}/API/include) + +target_link_libraries(capi +protobuf::libprotobuf +gRPC::grpc +gRPC::grpc++_reflection +gRPC::grpc++ +) \ No newline at end of file diff --git a/CAPI/README.md b/CAPI/README.md new file mode 100644 index 0000000..bb61d52 --- /dev/null +++ b/CAPI/README.md @@ -0,0 +1,50 @@ +# CAPI + +## 简介 + +C++ 通信组件与选手接口 + +## 目标 + +### 基本目标 + +- 基于 Protobuf 与 gRPC,为客户端提供 C++ 通信组件 +- 为选手提供游戏接口 + +### 重要目标 + +- 理解 RPC 的工作原理,使用 gRPC 完善通信逻辑 +- 将通信逻辑与游戏逻辑分离开,便于日后复用 +- 客户端不对游戏人数、观战人数做出任何限制,这些方面全都由服务器决定 +- 改进选手接口,思考如何强制禁止选手一直占用 CPU 而导致 CPU 占用过大的问题。 + +### 提高目标 + +- 提供其他语言的接口:Python、Java、Rust ...... + +## 统一约定 + +- 主要使用现代 C++ 进行编程 +- 代码应当能够同时运行在 Windows 10 平台和 Linux 平台上。Windows 平台下采用 MSVC 作为编译工具,Linux 平台采用 GCC 作为编译工具 +- Windows 下的开发工具使用 Visual Studio 2019 或 Visual Studio 2022,语言标准采用 C++17 和 C17 (MSVC 编译选项 `/std:c++17; /std:c17`),并且应同时在 x64 平台的 Debug 与 Release 模式下正确编译并运行 +- Linux 下 C 语言编译工具使用 gcc,语言标准为 `-std=c17`;C++ 编译工具使用 g++,语言标准为 `-std=c++17`。优化选项为 `-O2`,生成 64 位程序 `-m64`,并编写相应的 Makefile + +## 注意事项 + +- 与逻辑组共同商议通信协议 +- Visual Studio 新建的 C++ 代码文件默认字符编码是 GB2312、默认缩进方式是 TAB,应该注意手动改成 UTF-8 和 空格缩进 +- 了解 Visual Studio 的项目属性配置,例如第三方库的链接、预定义宏等 +- 使用现代 C++ 进行编程,尽量避免裸指针,多使用引用和智能指针 +- 了解 C、C++ 预处理、编译、链接的基本概念 +- 注意模块化、单元化,降低各个类、各个模块之间的耦合。特别注意避免相互依赖、环形依赖的问题 +- 遵循头文件(`.h`、`.hpp`)的编写规范 + + 杜绝头文件相互包含与环形包含 + + 头文件中最好同时写 `#pragma once` 以及保护宏,而 `cpp` 中不要写这两个东西 + + 头文件中**禁止** `using namespace std`!!!也不允许在任何自定义的名字空间中 `using namespace std`!!! + + 头文件和 `cpp` 文件各司其职,代码写在改写的位置 + + 禁止 include .cpp 或 .c 文件 +- 避免忙等待,注意线程安全,做好线程同步 + +## 开发人员 + +- ......(自己加) \ No newline at end of file diff --git a/CAPI/proto/Message2Clients.grpc.pb.cc b/CAPI/proto/Message2Clients.grpc.pb.cc new file mode 100644 index 0000000..ee30772 --- /dev/null +++ b/CAPI/proto/Message2Clients.grpc.pb.cc @@ -0,0 +1,852 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: Message2Clients.proto + +#include "Message2Clients.pb.h" +#include "Message2Clients.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace protobuf +{ + + static const char* AvailableService_method_names[] = { + "/protobuf.AvailableService/TryConnection", + "/protobuf.AvailableService/AddPlayer", + "/protobuf.AvailableService/Move", + "/protobuf.AvailableService/PickProp", + "/protobuf.AvailableService/UseProp", + "/protobuf.AvailableService/UseSkill", + "/protobuf.AvailableService/SendMessage", + "/protobuf.AvailableService/HaveMessage", + "/protobuf.AvailableService/GetMessage", + "/protobuf.AvailableService/FixMachine", + "/protobuf.AvailableService/SaveHuman", + "/protobuf.AvailableService/Attack", + "/protobuf.AvailableService/CarryHuman", + "/protobuf.AvailableService/ReleaseHuman", + "/protobuf.AvailableService/HangHuman", + "/protobuf.AvailableService/Escape", + }; + + std::unique_ptr AvailableService::NewStub(const std::shared_ptr<::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) + { + (void)options; + std::unique_ptr stub(new AvailableService::Stub(channel, options)); + return stub; + } + + AvailableService::Stub::Stub(const std::shared_ptr<::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) : + channel_(channel), + rpcmethod_TryConnection_(AvailableService_method_names[0], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_AddPlayer_(AvailableService_method_names[1], options.suffix_for_stats(), ::grpc::internal::RpcMethod::SERVER_STREAMING, channel), + rpcmethod_Move_(AvailableService_method_names[2], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_PickProp_(AvailableService_method_names[3], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_UseProp_(AvailableService_method_names[4], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_UseSkill_(AvailableService_method_names[5], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_SendMessage_(AvailableService_method_names[6], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_HaveMessage_(AvailableService_method_names[7], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_GetMessage_(AvailableService_method_names[8], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_FixMachine_(AvailableService_method_names[9], options.suffix_for_stats(), ::grpc::internal::RpcMethod::BIDI_STREAMING, channel), + rpcmethod_SaveHuman_(AvailableService_method_names[10], options.suffix_for_stats(), ::grpc::internal::RpcMethod::BIDI_STREAMING, channel), + rpcmethod_Attack_(AvailableService_method_names[11], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_CarryHuman_(AvailableService_method_names[12], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_ReleaseHuman_(AvailableService_method_names[13], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_HangHuman_(AvailableService_method_names[14], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel), + rpcmethod_Escape_(AvailableService_method_names[15], options.suffix_for_stats(), ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + { + } + + ::grpc::Status AvailableService::Stub::TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_TryConnection_, context, request, response); + } + + void AvailableService::Stub::async::TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_TryConnection_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_TryConnection_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncTryConnectionRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_TryConnection_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncTryConnectionRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncTryConnectionRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::ClientReader<::protobuf::MessageToClient>* AvailableService::Stub::AddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request) + { + return ::grpc::internal::ClientReaderFactory<::protobuf::MessageToClient>::Create(channel_.get(), rpcmethod_AddPlayer_, context, request); + } + + void AvailableService::Stub::async::AddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg* request, ::grpc::ClientReadReactor<::protobuf::MessageToClient>* reactor) + { + ::grpc::internal::ClientCallbackReaderFactory<::protobuf::MessageToClient>::Create(stub_->channel_.get(), stub_->rpcmethod_AddPlayer_, context, request, reactor); + } + + ::grpc::ClientAsyncReader<::protobuf::MessageToClient>* AvailableService::Stub::AsyncAddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq, void* tag) + { + return ::grpc::internal::ClientAsyncReaderFactory<::protobuf::MessageToClient>::Create(channel_.get(), cq, rpcmethod_AddPlayer_, context, request, true, tag); + } + + ::grpc::ClientAsyncReader<::protobuf::MessageToClient>* AvailableService::Stub::PrepareAsyncAddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncReaderFactory<::protobuf::MessageToClient>::Create(channel_.get(), cq, rpcmethod_AddPlayer_, context, request, false, nullptr); + } + + ::grpc::Status AvailableService::Stub::Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::protobuf::MoveRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::MoveMsg, ::protobuf::MoveRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_Move_, context, request, response); + } + + void AvailableService::Stub::async::Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::MoveMsg, ::protobuf::MoveRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_Move_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_Move_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>* AvailableService::Stub::PrepareAsyncMoveRaw(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::MoveRes, ::protobuf::MoveMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_Move_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>* AvailableService::Stub::AsyncMoveRaw(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncMoveRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::PickMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PickProp_, context, request, response); + } + + void AvailableService::Stub::async::PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::PickMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PickProp_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PickProp_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncPickPropRaw(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::PickMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PickProp_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncPickPropRaw(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncPickPropRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_UseProp_, context, request, response); + } + + void AvailableService::Stub::async::UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_UseProp_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_UseProp_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncUsePropRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_UseProp_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncUsePropRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncUsePropRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_UseSkill_, context, request, response); + } + + void AvailableService::Stub::async::UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_UseSkill_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_UseSkill_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncUseSkillRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_UseSkill_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncUseSkillRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncUseSkillRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::SendMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_SendMessage_, context, request, response); + } + + void AvailableService::Stub::async::SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::SendMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_SendMessage_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_SendMessage_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncSendMessageRaw(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::SendMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_SendMessage_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncSendMessageRaw(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncSendMessageRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_HaveMessage_, context, request, response); + } + + void AvailableService::Stub::async::HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_HaveMessage_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_HaveMessage_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncHaveMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_HaveMessage_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncHaveMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncHaveMessageRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::MsgRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::MsgRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetMessage_, context, request, response); + } + + void AvailableService::Stub::async::GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::MsgRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetMessage_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetMessage_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>* AvailableService::Stub::PrepareAsyncGetMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::MsgRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetMessage_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>* AvailableService::Stub::AsyncGetMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncGetMessageRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AvailableService::Stub::FixMachineRaw(::grpc::ClientContext* context) + { + return ::grpc::internal::ClientReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(channel_.get(), rpcmethod_FixMachine_, context); + } + + void AvailableService::Stub::async::FixMachine(::grpc::ClientContext* context, ::grpc::ClientBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* reactor) + { + ::grpc::internal::ClientCallbackReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(stub_->channel_.get(), stub_->rpcmethod_FixMachine_, context, reactor); + } + + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AvailableService::Stub::AsyncFixMachineRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) + { + return ::grpc::internal::ClientAsyncReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(channel_.get(), cq, rpcmethod_FixMachine_, context, true, tag); + } + + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncFixMachineRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(channel_.get(), cq, rpcmethod_FixMachine_, context, false, nullptr); + } + + ::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AvailableService::Stub::SaveHumanRaw(::grpc::ClientContext* context) + { + return ::grpc::internal::ClientReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(channel_.get(), rpcmethod_SaveHuman_, context); + } + + void AvailableService::Stub::async::SaveHuman(::grpc::ClientContext* context, ::grpc::ClientBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* reactor) + { + ::grpc::internal::ClientCallbackReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(stub_->channel_.get(), stub_->rpcmethod_SaveHuman_, context, reactor); + } + + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AvailableService::Stub::AsyncSaveHumanRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) + { + return ::grpc::internal::ClientAsyncReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(channel_.get(), cq, rpcmethod_SaveHuman_, context, true, tag); + } + + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncSaveHumanRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncReaderWriterFactory<::protobuf::IDMsg, ::protobuf::BoolRes>::Create(channel_.get(), cq, rpcmethod_SaveHuman_, context, false, nullptr); + } + + ::grpc::Status AvailableService::Stub::Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::AttackMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_Attack_, context, request, response); + } + + void AvailableService::Stub::async::Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::AttackMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_Attack_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_Attack_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncAttackRaw(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::AttackMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_Attack_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncAttackRaw(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncAttackRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_CarryHuman_, context, request, response); + } + + void AvailableService::Stub::async::CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_CarryHuman_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_CarryHuman_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncCarryHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_CarryHuman_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncCarryHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncCarryHumanRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_ReleaseHuman_, context, request, response); + } + + void AvailableService::Stub::async::ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ReleaseHuman_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ReleaseHuman_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncReleaseHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_ReleaseHuman_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncReleaseHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncReleaseHumanRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_HangHuman_, context, request, response); + } + + void AvailableService::Stub::async::HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_HangHuman_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_HangHuman_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncHangHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_HangHuman_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncHangHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncHangHumanRaw(context, request, cq); + result->StartCall(); + return result; + } + + ::grpc::Status AvailableService::Stub::Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) + { + return ::grpc::internal::BlockingUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_Escape_, context, request, response); + } + + void AvailableService::Stub::async::Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function f) + { + ::grpc::internal::CallbackUnaryCall<::protobuf::IDMsg, ::protobuf::BoolRes, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_Escape_, context, request, response, std::move(f)); + } + + void AvailableService::Stub::async::Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) + { + ::grpc::internal::ClientCallbackUnaryFactory::Create<::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_Escape_, context, request, response, reactor); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::PrepareAsyncEscapeRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create<::protobuf::BoolRes, ::protobuf::IDMsg, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_Escape_, context, request); + } + + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AvailableService::Stub::AsyncEscapeRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + auto* result = + this->PrepareAsyncEscapeRaw(context, request, cq); + result->StartCall(); + return result; + } + + AvailableService::Service::Service() + { + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[0], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->TryConnection(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[1], + ::grpc::internal::RpcMethod::SERVER_STREAMING, + new ::grpc::internal::ServerStreamingHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::PlayerMsg* req, + ::grpc::ServerWriter<::protobuf::MessageToClient>* writer) + { + return service->AddPlayer(ctx, req, writer); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[2], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::MoveMsg* req, + ::protobuf::MoveRes* resp) + { + return service->Move(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[3], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::PickMsg* req, + ::protobuf::BoolRes* resp) + { + return service->PickProp(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[4], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->UseProp(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[5], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->UseSkill(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[6], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::SendMsg* req, + ::protobuf::BoolRes* resp) + { + return service->SendMessage(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[7], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->HaveMessage(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[8], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::MsgRes* resp) + { + return service->GetMessage(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[9], + ::grpc::internal::RpcMethod::BIDI_STREAMING, + new ::grpc::internal::BidiStreamingHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream) + { + return service->FixMachine(ctx, stream); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[10], + ::grpc::internal::RpcMethod::BIDI_STREAMING, + new ::grpc::internal::BidiStreamingHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream) + { + return service->SaveHuman(ctx, stream); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[11], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::AttackMsg* req, + ::protobuf::BoolRes* resp) + { + return service->Attack(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[12], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->CarryHuman(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[13], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->ReleaseHuman(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[14], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->HangHuman(ctx, req, resp); + }, + this + ) + )); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AvailableService_method_names[15], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler( + [](AvailableService::Service* service, + ::grpc::ServerContext* ctx, + const ::protobuf::IDMsg* req, + ::protobuf::BoolRes* resp) + { + return service->Escape(ctx, req, resp); + }, + this + ) + )); + } + + AvailableService::Service::~Service() + { + } + + ::grpc::Status AvailableService::Service::TryConnection(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::AddPlayer(::grpc::ServerContext* context, const ::protobuf::PlayerMsg* request, ::grpc::ServerWriter<::protobuf::MessageToClient>* writer) + { + (void)context; + (void)request; + (void)writer; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::Move(::grpc::ServerContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::PickProp(::grpc::ServerContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::UseProp(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::UseSkill(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::SendMessage(::grpc::ServerContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::HaveMessage(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::GetMessage(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::FixMachine(::grpc::ServerContext* context, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream) + { + (void)context; + (void)stream; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::SaveHuman(::grpc::ServerContext* context, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream) + { + (void)context; + (void)stream; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::Attack(::grpc::ServerContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::CarryHuman(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::ReleaseHuman(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::HangHuman(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + + ::grpc::Status AvailableService::Service::Escape(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { + (void)context; + (void)request; + (void)response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + +} // namespace protobuf diff --git a/CAPI/proto/Message2Clients.grpc.pb.h b/CAPI/proto/Message2Clients.grpc.pb.h new file mode 100644 index 0000000..7481d7e --- /dev/null +++ b/CAPI/proto/Message2Clients.grpc.pb.h @@ -0,0 +1,3348 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: Message2Clients.proto +// Original file comments: +// Message2Client +#ifndef GRPC_Message2Clients_2eproto__INCLUDED +#define GRPC_Message2Clients_2eproto__INCLUDED + +#include "Message2Clients.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace protobuf +{ + + class AvailableService final + { + public: + static constexpr char const* service_full_name() + { + return "protobuf.AvailableService"; + } + class StubInterface + { + public: + virtual ~StubInterface() + { + } + virtual ::grpc::Status TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncTryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncTryConnectionRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncTryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncTryConnectionRaw(context, request, cq)); + } + // 游戏开局调用一次的服务 + std::unique_ptr<::grpc::ClientReaderInterface<::protobuf::MessageToClient>> AddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request) + { + return std::unique_ptr<::grpc::ClientReaderInterface<::protobuf::MessageToClient>>(AddPlayerRaw(context, request)); + } + std::unique_ptr<::grpc::ClientAsyncReaderInterface<::protobuf::MessageToClient>> AsyncAddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq, void* tag) + { + return std::unique_ptr<::grpc::ClientAsyncReaderInterface<::protobuf::MessageToClient>>(AsyncAddPlayerRaw(context, request, cq, tag)); + } + std::unique_ptr<::grpc::ClientAsyncReaderInterface<::protobuf::MessageToClient>> PrepareAsyncAddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncReaderInterface<::protobuf::MessageToClient>>(PrepareAsyncAddPlayerRaw(context, request, cq)); + } + // 连接上后等待游戏开始,server会定时通过该服务向所有client发送消息。 + // 游戏过程中玩家执行操作的服务 + virtual ::grpc::Status Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::protobuf::MoveRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MoveRes>> AsyncMove(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MoveRes>>(AsyncMoveRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MoveRes>> PrepareAsyncMove(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MoveRes>>(PrepareAsyncMoveRaw(context, request, cq)); + } + virtual ::grpc::Status PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncPickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncPickPropRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncPickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncPickPropRaw(context, request, cq)); + } + virtual ::grpc::Status UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncUseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncUsePropRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncUseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncUsePropRaw(context, request, cq)); + } + virtual ::grpc::Status UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncUseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncUseSkillRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncUseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncUseSkillRaw(context, request, cq)); + } + virtual ::grpc::Status SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncSendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncSendMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncSendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncSendMessageRaw(context, request, cq)); + } + virtual ::grpc::Status HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncHaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncHaveMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncHaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncHaveMessageRaw(context, request, cq)); + } + virtual ::grpc::Status GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::MsgRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MsgRes>> AsyncGetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MsgRes>>(AsyncGetMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MsgRes>> PrepareAsyncGetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::MsgRes>>(PrepareAsyncGetMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>> FixMachine(::grpc::ClientContext* context) + { + return std::unique_ptr<::grpc::ClientReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>>(FixMachineRaw(context)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>> AsyncFixMachine(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>>(AsyncFixMachineRaw(context, cq, tag)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>> PrepareAsyncFixMachine(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>>(PrepareAsyncFixMachineRaw(context, cq)); + } + // 若正常修复且未被打断则返回修复成功,位置错误/被打断则返回修复失败,下同 + std::unique_ptr<::grpc::ClientReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>> SaveHuman(::grpc::ClientContext* context) + { + return std::unique_ptr<::grpc::ClientReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>>(SaveHumanRaw(context)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>> AsyncSaveHuman(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>>(AsyncSaveHumanRaw(context, cq, tag)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>> PrepareAsyncSaveHuman(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>>(PrepareAsyncSaveHumanRaw(context, cq)); + } + virtual ::grpc::Status Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncAttack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncAttackRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncAttack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncAttackRaw(context, request, cq)); + } + virtual ::grpc::Status CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncCarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncCarryHumanRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncCarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncCarryHumanRaw(context, request, cq)); + } + virtual ::grpc::Status ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncReleaseHumanRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncReleaseHumanRaw(context, request, cq)); + } + virtual ::grpc::Status HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncHangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncHangHumanRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncHangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncHangHumanRaw(context, request, cq)); + } + virtual ::grpc::Status Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) = 0; + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> AsyncEscape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(AsyncEscapeRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>> PrepareAsyncEscape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>>(PrepareAsyncEscapeRaw(context, request, cq)); + } + class async_interface + { + public: + virtual ~async_interface() + { + } + virtual void TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + // 游戏开局调用一次的服务 + virtual void AddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg* request, ::grpc::ClientReadReactor<::protobuf::MessageToClient>* reactor) = 0; + // 连接上后等待游戏开始,server会定时通过该服务向所有client发送消息。 + // 游戏过程中玩家执行操作的服务 + virtual void Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response, std::function) = 0; + virtual void Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response, std::function) = 0; + virtual void GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void FixMachine(::grpc::ClientContext* context, ::grpc::ClientBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* reactor) = 0; + // 若正常修复且未被打断则返回修复成功,位置错误/被打断则返回修复失败,下同 + virtual void SaveHuman(::grpc::ClientContext* context, ::grpc::ClientBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* reactor) = 0; + virtual void Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + virtual void Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) = 0; + virtual void Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) = 0; + }; + typedef class async_interface experimental_async_interface; + virtual class async_interface* async() + { + return nullptr; + } + class async_interface* experimental_async() + { + return async(); + } + + private: + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncTryConnectionRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncTryConnectionRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientReaderInterface<::protobuf::MessageToClient>* AddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request) = 0; + virtual ::grpc::ClientAsyncReaderInterface<::protobuf::MessageToClient>* AsyncAddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq, void* tag) = 0; + virtual ::grpc::ClientAsyncReaderInterface<::protobuf::MessageToClient>* PrepareAsyncAddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::MoveRes>* AsyncMoveRaw(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::MoveRes>* PrepareAsyncMoveRaw(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncPickPropRaw(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncPickPropRaw(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncUsePropRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncUsePropRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncUseSkillRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncUseSkillRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncSendMessageRaw(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncSendMessageRaw(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncHaveMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncHaveMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::MsgRes>* AsyncGetMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::MsgRes>* PrepareAsyncGetMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>* FixMachineRaw(::grpc::ClientContext* context) = 0; + virtual ::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>* AsyncFixMachineRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) = 0; + virtual ::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>* PrepareAsyncFixMachineRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>* SaveHumanRaw(::grpc::ClientContext* context) = 0; + virtual ::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>* AsyncSaveHumanRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) = 0; + virtual ::grpc::ClientAsyncReaderWriterInterface<::protobuf::IDMsg, ::protobuf::BoolRes>* PrepareAsyncSaveHumanRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncAttackRaw(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncAttackRaw(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncCarryHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncCarryHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncReleaseHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncReleaseHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncHangHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncHangHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* AsyncEscapeRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface<::protobuf::BoolRes>* PrepareAsyncEscapeRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) = 0; + }; + class Stub final : public StubInterface + { + public: + Stub(const std::shared_ptr<::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); + ::grpc::Status TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncTryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncTryConnectionRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncTryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncTryConnectionRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientReader<::protobuf::MessageToClient>> AddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request) + { + return std::unique_ptr<::grpc::ClientReader<::protobuf::MessageToClient>>(AddPlayerRaw(context, request)); + } + std::unique_ptr<::grpc::ClientAsyncReader<::protobuf::MessageToClient>> AsyncAddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq, void* tag) + { + return std::unique_ptr<::grpc::ClientAsyncReader<::protobuf::MessageToClient>>(AsyncAddPlayerRaw(context, request, cq, tag)); + } + std::unique_ptr<::grpc::ClientAsyncReader<::protobuf::MessageToClient>> PrepareAsyncAddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncReader<::protobuf::MessageToClient>>(PrepareAsyncAddPlayerRaw(context, request, cq)); + } + ::grpc::Status Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::protobuf::MoveRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>> AsyncMove(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>>(AsyncMoveRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>> PrepareAsyncMove(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>>(PrepareAsyncMoveRaw(context, request, cq)); + } + ::grpc::Status PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncPickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncPickPropRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncPickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncPickPropRaw(context, request, cq)); + } + ::grpc::Status UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncUseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncUsePropRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncUseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncUsePropRaw(context, request, cq)); + } + ::grpc::Status UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncUseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncUseSkillRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncUseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncUseSkillRaw(context, request, cq)); + } + ::grpc::Status SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncSendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncSendMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncSendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncSendMessageRaw(context, request, cq)); + } + ::grpc::Status HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncHaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncHaveMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncHaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncHaveMessageRaw(context, request, cq)); + } + ::grpc::Status GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::MsgRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>> AsyncGetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>>(AsyncGetMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>> PrepareAsyncGetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>>(PrepareAsyncGetMessageRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>> FixMachine(::grpc::ClientContext* context) + { + return std::unique_ptr<::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>>(FixMachineRaw(context)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>> AsyncFixMachine(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>>(AsyncFixMachineRaw(context, cq, tag)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>> PrepareAsyncFixMachine(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>>(PrepareAsyncFixMachineRaw(context, cq)); + } + std::unique_ptr<::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>> SaveHuman(::grpc::ClientContext* context) + { + return std::unique_ptr<::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>>(SaveHumanRaw(context)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>> AsyncSaveHuman(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>>(AsyncSaveHumanRaw(context, cq, tag)); + } + std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>> PrepareAsyncSaveHuman(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>>(PrepareAsyncSaveHumanRaw(context, cq)); + } + ::grpc::Status Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncAttack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncAttackRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncAttack(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncAttackRaw(context, request, cq)); + } + ::grpc::Status CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncCarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncCarryHumanRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncCarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncCarryHumanRaw(context, request, cq)); + } + ::grpc::Status ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncReleaseHumanRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncReleaseHumanRaw(context, request, cq)); + } + ::grpc::Status HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncHangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncHangHumanRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncHangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncHangHumanRaw(context, request, cq)); + } + ::grpc::Status Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::protobuf::BoolRes* response) override; + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> AsyncEscape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(AsyncEscapeRaw(context, request, cq)); + } + std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>> PrepareAsyncEscape(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) + { + return std::unique_ptr<::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>>(PrepareAsyncEscapeRaw(context, request, cq)); + } + class async final : + public StubInterface::async_interface + { + public: + void TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void TryConnection(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void AddPlayer(::grpc::ClientContext* context, const ::protobuf::PlayerMsg* request, ::grpc::ClientReadReactor<::protobuf::MessageToClient>* reactor) override; + void Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response, std::function) override; + void Move(::grpc::ClientContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response, std::function) override; + void PickProp(::grpc::ClientContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void UseProp(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void UseSkill(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response, std::function) override; + void SendMessage(::grpc::ClientContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void HaveMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response, std::function) override; + void GetMessage(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void FixMachine(::grpc::ClientContext* context, ::grpc::ClientBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* reactor) override; + void SaveHuman(::grpc::ClientContext* context, ::grpc::ClientBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* reactor) override; + void Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response, std::function) override; + void Attack(::grpc::ClientContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void CarryHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void ReleaseHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void HangHuman(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + void Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, std::function) override; + void Escape(::grpc::ClientContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response, ::grpc::ClientUnaryReactor* reactor) override; + + private: + friend class Stub; + explicit async(Stub* stub) : + stub_(stub) + { + } + Stub* stub() + { + return stub_; + } + Stub* stub_; + }; + class async* async() override + { + return &async_stub_; + } + + private: + std::shared_ptr<::grpc::ChannelInterface> channel_; + class async async_stub_ + { + this + }; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncTryConnectionRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncTryConnectionRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientReader<::protobuf::MessageToClient>* AddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request) override; + ::grpc::ClientAsyncReader<::protobuf::MessageToClient>* AsyncAddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq, void* tag) override; + ::grpc::ClientAsyncReader<::protobuf::MessageToClient>* PrepareAsyncAddPlayerRaw(::grpc::ClientContext* context, const ::protobuf::PlayerMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>* AsyncMoveRaw(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::MoveRes>* PrepareAsyncMoveRaw(::grpc::ClientContext* context, const ::protobuf::MoveMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncPickPropRaw(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncPickPropRaw(::grpc::ClientContext* context, const ::protobuf::PickMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncUsePropRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncUsePropRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncUseSkillRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncUseSkillRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncSendMessageRaw(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncSendMessageRaw(::grpc::ClientContext* context, const ::protobuf::SendMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncHaveMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncHaveMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>* AsyncGetMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::MsgRes>* PrepareAsyncGetMessageRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* FixMachineRaw(::grpc::ClientContext* context) override; + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AsyncFixMachineRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) override; + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* PrepareAsyncFixMachineRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* SaveHumanRaw(::grpc::ClientContext* context) override; + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* AsyncSaveHumanRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) override; + ::grpc::ClientAsyncReaderWriter<::protobuf::IDMsg, ::protobuf::BoolRes>* PrepareAsyncSaveHumanRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncAttackRaw(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncAttackRaw(::grpc::ClientContext* context, const ::protobuf::AttackMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncCarryHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncCarryHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncReleaseHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncReleaseHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncHangHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncHangHumanRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* AsyncEscapeRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader<::protobuf::BoolRes>* PrepareAsyncEscapeRaw(::grpc::ClientContext* context, const ::protobuf::IDMsg& request, ::grpc::CompletionQueue* cq) override; + const ::grpc::internal::RpcMethod rpcmethod_TryConnection_; + const ::grpc::internal::RpcMethod rpcmethod_AddPlayer_; + const ::grpc::internal::RpcMethod rpcmethod_Move_; + const ::grpc::internal::RpcMethod rpcmethod_PickProp_; + const ::grpc::internal::RpcMethod rpcmethod_UseProp_; + const ::grpc::internal::RpcMethod rpcmethod_UseSkill_; + const ::grpc::internal::RpcMethod rpcmethod_SendMessage_; + const ::grpc::internal::RpcMethod rpcmethod_HaveMessage_; + const ::grpc::internal::RpcMethod rpcmethod_GetMessage_; + const ::grpc::internal::RpcMethod rpcmethod_FixMachine_; + const ::grpc::internal::RpcMethod rpcmethod_SaveHuman_; + const ::grpc::internal::RpcMethod rpcmethod_Attack_; + const ::grpc::internal::RpcMethod rpcmethod_CarryHuman_; + const ::grpc::internal::RpcMethod rpcmethod_ReleaseHuman_; + const ::grpc::internal::RpcMethod rpcmethod_HangHuman_; + const ::grpc::internal::RpcMethod rpcmethod_Escape_; + }; + static std::unique_ptr NewStub(const std::shared_ptr<::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); + + class Service : public ::grpc::Service + { + public: + Service(); + virtual ~Service(); + virtual ::grpc::Status TryConnection(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + // 游戏开局调用一次的服务 + virtual ::grpc::Status AddPlayer(::grpc::ServerContext* context, const ::protobuf::PlayerMsg* request, ::grpc::ServerWriter<::protobuf::MessageToClient>* writer); + // 连接上后等待游戏开始,server会定时通过该服务向所有client发送消息。 + // 游戏过程中玩家执行操作的服务 + virtual ::grpc::Status Move(::grpc::ServerContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response); + virtual ::grpc::Status PickProp(::grpc::ServerContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status UseProp(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status UseSkill(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status SendMessage(::grpc::ServerContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status HaveMessage(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status GetMessage(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response); + virtual ::grpc::Status FixMachine(::grpc::ServerContext* context, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream); + // 若正常修复且未被打断则返回修复成功,位置错误/被打断则返回修复失败,下同 + virtual ::grpc::Status SaveHuman(::grpc::ServerContext* context, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream); + virtual ::grpc::Status Attack(::grpc::ServerContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status CarryHuman(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status ReleaseHuman(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status HangHuman(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + virtual ::grpc::Status Escape(::grpc::ServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response); + }; + template + class WithAsyncMethod_TryConnection : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_TryConnection() + { + ::grpc::Service::MarkMethodAsync(0); + } + ~WithAsyncMethod_TryConnection() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status TryConnection(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestTryConnection(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_AddPlayer : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_AddPlayer() + { + ::grpc::Service::MarkMethodAsync(1); + } + ~WithAsyncMethod_AddPlayer() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status AddPlayer(::grpc::ServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/, ::grpc::ServerWriter<::protobuf::MessageToClient>* /*writer*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestAddPlayer(::grpc::ServerContext* context, ::protobuf::PlayerMsg* request, ::grpc::ServerAsyncWriter<::protobuf::MessageToClient>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncServerStreaming(1, context, request, writer, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_Move : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_Move() + { + ::grpc::Service::MarkMethodAsync(2); + } + ~WithAsyncMethod_Move() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Move(::grpc::ServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestMove(::grpc::ServerContext* context, ::protobuf::MoveMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::MoveRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_PickProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_PickProp() + { + ::grpc::Service::MarkMethodAsync(3); + } + ~WithAsyncMethod_PickProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status PickProp(::grpc::ServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestPickProp(::grpc::ServerContext* context, ::protobuf::PickMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_UseProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_UseProp() + { + ::grpc::Service::MarkMethodAsync(4); + } + ~WithAsyncMethod_UseProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseProp(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestUseProp(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_UseSkill : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_UseSkill() + { + ::grpc::Service::MarkMethodAsync(5); + } + ~WithAsyncMethod_UseSkill() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseSkill(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestUseSkill(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_SendMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_SendMessage() + { + ::grpc::Service::MarkMethodAsync(6); + } + ~WithAsyncMethod_SendMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SendMessage(::grpc::ServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestSendMessage(::grpc::ServerContext* context, ::protobuf::SendMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_HaveMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_HaveMessage() + { + ::grpc::Service::MarkMethodAsync(7); + } + ~WithAsyncMethod_HaveMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HaveMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestHaveMessage(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_GetMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_GetMessage() + { + ::grpc::Service::MarkMethodAsync(8); + } + ~WithAsyncMethod_GetMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetMessage(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::MsgRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_FixMachine : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_FixMachine() + { + ::grpc::Service::MarkMethodAsync(9); + } + ~WithAsyncMethod_FixMachine() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status FixMachine(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestFixMachine(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncBidiStreaming(9, context, stream, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_SaveHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_SaveHuman() + { + ::grpc::Service::MarkMethodAsync(10); + } + ~WithAsyncMethod_SaveHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SaveHuman(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestSaveHuman(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncBidiStreaming(10, context, stream, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_Attack : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_Attack() + { + ::grpc::Service::MarkMethodAsync(11); + } + ~WithAsyncMethod_Attack() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Attack(::grpc::ServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestAttack(::grpc::ServerContext* context, ::protobuf::AttackMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_CarryHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_CarryHuman() + { + ::grpc::Service::MarkMethodAsync(12); + } + ~WithAsyncMethod_CarryHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CarryHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestCarryHuman(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_ReleaseHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_ReleaseHuman() + { + ::grpc::Service::MarkMethodAsync(13); + } + ~WithAsyncMethod_ReleaseHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ReleaseHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestReleaseHuman(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(13, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_HangHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_HangHuman() + { + ::grpc::Service::MarkMethodAsync(14); + } + ~WithAsyncMethod_HangHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HangHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestHangHuman(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_Escape : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithAsyncMethod_Escape() + { + ::grpc::Service::MarkMethodAsync(15); + } + ~WithAsyncMethod_Escape() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Escape(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestEscape(::grpc::ServerContext* context, ::protobuf::IDMsg* request, ::grpc::ServerAsyncResponseWriter<::protobuf::BoolRes>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag); + } + }; + typedef WithAsyncMethod_TryConnection>>>>>>>>>>>>>>> AsyncService; + template + class WithCallbackMethod_TryConnection : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_TryConnection() + { + ::grpc::Service::MarkMethodCallback(0, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->TryConnection(context, request, response); })); + } + void SetMessageAllocatorFor_TryConnection( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_TryConnection() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status TryConnection(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* TryConnection( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_AddPlayer : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_AddPlayer() + { + ::grpc::Service::MarkMethodCallback(1, new ::grpc::internal::CallbackServerStreamingHandler<::protobuf::PlayerMsg, ::protobuf::MessageToClient>([this](::grpc::CallbackServerContext* context, const ::protobuf::PlayerMsg* request) + { return this->AddPlayer(context, request); })); + } + ~WithCallbackMethod_AddPlayer() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status AddPlayer(::grpc::ServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/, ::grpc::ServerWriter<::protobuf::MessageToClient>* /*writer*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerWriteReactor<::protobuf::MessageToClient>* AddPlayer( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_Move : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_Move() + { + ::grpc::Service::MarkMethodCallback(2, new ::grpc::internal::CallbackUnaryHandler<::protobuf::MoveMsg, ::protobuf::MoveRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::MoveMsg* request, ::protobuf::MoveRes* response) + { return this->Move(context, request, response); })); + } + void SetMessageAllocatorFor_Move( + ::grpc::MessageAllocator<::protobuf::MoveMsg, ::protobuf::MoveRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(2); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::MoveMsg, ::protobuf::MoveRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_Move() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Move(::grpc::ServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* Move( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_PickProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_PickProp() + { + ::grpc::Service::MarkMethodCallback(3, new ::grpc::internal::CallbackUnaryHandler<::protobuf::PickMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::PickMsg* request, ::protobuf::BoolRes* response) + { return this->PickProp(context, request, response); })); + } + void SetMessageAllocatorFor_PickProp( + ::grpc::MessageAllocator<::protobuf::PickMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(3); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::PickMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_PickProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status PickProp(::grpc::ServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* PickProp( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_UseProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_UseProp() + { + ::grpc::Service::MarkMethodCallback(4, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->UseProp(context, request, response); })); + } + void SetMessageAllocatorFor_UseProp( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_UseProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseProp(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* UseProp( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_UseSkill : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_UseSkill() + { + ::grpc::Service::MarkMethodCallback(5, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->UseSkill(context, request, response); })); + } + void SetMessageAllocatorFor_UseSkill( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_UseSkill() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseSkill(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* UseSkill( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_SendMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_SendMessage() + { + ::grpc::Service::MarkMethodCallback(6, new ::grpc::internal::CallbackUnaryHandler<::protobuf::SendMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::SendMsg* request, ::protobuf::BoolRes* response) + { return this->SendMessage(context, request, response); })); + } + void SetMessageAllocatorFor_SendMessage( + ::grpc::MessageAllocator<::protobuf::SendMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(6); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::SendMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_SendMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SendMessage(::grpc::ServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* SendMessage( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_HaveMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_HaveMessage() + { + ::grpc::Service::MarkMethodCallback(7, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->HaveMessage(context, request, response); })); + } + void SetMessageAllocatorFor_HaveMessage( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(7); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_HaveMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HaveMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* HaveMessage( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_GetMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_GetMessage() + { + ::grpc::Service::MarkMethodCallback(8, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::MsgRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::MsgRes* response) + { return this->GetMessage(context, request, response); })); + } + void SetMessageAllocatorFor_GetMessage( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::MsgRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(8); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::MsgRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_GetMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* GetMessage( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_FixMachine : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_FixMachine() + { + ::grpc::Service::MarkMethodCallback(9, new ::grpc::internal::CallbackBidiHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context) + { return this->FixMachine(context); })); + } + ~WithCallbackMethod_FixMachine() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status FixMachine(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* FixMachine( + ::grpc::CallbackServerContext* /*context*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_SaveHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_SaveHuman() + { + ::grpc::Service::MarkMethodCallback(10, new ::grpc::internal::CallbackBidiHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context) + { return this->SaveHuman(context); })); + } + ~WithCallbackMethod_SaveHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SaveHuman(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerBidiReactor<::protobuf::IDMsg, ::protobuf::BoolRes>* SaveHuman( + ::grpc::CallbackServerContext* /*context*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_Attack : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_Attack() + { + ::grpc::Service::MarkMethodCallback(11, new ::grpc::internal::CallbackUnaryHandler<::protobuf::AttackMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::AttackMsg* request, ::protobuf::BoolRes* response) + { return this->Attack(context, request, response); })); + } + void SetMessageAllocatorFor_Attack( + ::grpc::MessageAllocator<::protobuf::AttackMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(11); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::AttackMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_Attack() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Attack(::grpc::ServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* Attack( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_CarryHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_CarryHuman() + { + ::grpc::Service::MarkMethodCallback(12, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->CarryHuman(context, request, response); })); + } + void SetMessageAllocatorFor_CarryHuman( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(12); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_CarryHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CarryHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* CarryHuman( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_ReleaseHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_ReleaseHuman() + { + ::grpc::Service::MarkMethodCallback(13, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->ReleaseHuman(context, request, response); })); + } + void SetMessageAllocatorFor_ReleaseHuman( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(13); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_ReleaseHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ReleaseHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* ReleaseHuman( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_HangHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_HangHuman() + { + ::grpc::Service::MarkMethodCallback(14, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->HangHuman(context, request, response); })); + } + void SetMessageAllocatorFor_HangHuman( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(14); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_HangHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HangHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* HangHuman( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithCallbackMethod_Escape : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithCallbackMethod_Escape() + { + ::grpc::Service::MarkMethodCallback(15, new ::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::CallbackServerContext* context, const ::protobuf::IDMsg* request, ::protobuf::BoolRes* response) + { return this->Escape(context, request, response); })); + } + void SetMessageAllocatorFor_Escape( + ::grpc::MessageAllocator<::protobuf::IDMsg, ::protobuf::BoolRes>* allocator + ) + { + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(15); + static_cast<::grpc::internal::CallbackUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>*>(handler) + ->SetMessageAllocator(allocator); + } + ~WithCallbackMethod_Escape() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Escape(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* Escape( + ::grpc::CallbackServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/ + ) + { + return nullptr; + } + }; + typedef WithCallbackMethod_TryConnection>>>>>>>>>>>>>>> CallbackService; + typedef CallbackService ExperimentalCallbackService; + template + class WithGenericMethod_TryConnection : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_TryConnection() + { + ::grpc::Service::MarkMethodGeneric(0); + } + ~WithGenericMethod_TryConnection() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status TryConnection(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_AddPlayer : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_AddPlayer() + { + ::grpc::Service::MarkMethodGeneric(1); + } + ~WithGenericMethod_AddPlayer() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status AddPlayer(::grpc::ServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/, ::grpc::ServerWriter<::protobuf::MessageToClient>* /*writer*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_Move : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_Move() + { + ::grpc::Service::MarkMethodGeneric(2); + } + ~WithGenericMethod_Move() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Move(::grpc::ServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_PickProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_PickProp() + { + ::grpc::Service::MarkMethodGeneric(3); + } + ~WithGenericMethod_PickProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status PickProp(::grpc::ServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_UseProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_UseProp() + { + ::grpc::Service::MarkMethodGeneric(4); + } + ~WithGenericMethod_UseProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseProp(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_UseSkill : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_UseSkill() + { + ::grpc::Service::MarkMethodGeneric(5); + } + ~WithGenericMethod_UseSkill() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseSkill(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_SendMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_SendMessage() + { + ::grpc::Service::MarkMethodGeneric(6); + } + ~WithGenericMethod_SendMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SendMessage(::grpc::ServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_HaveMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_HaveMessage() + { + ::grpc::Service::MarkMethodGeneric(7); + } + ~WithGenericMethod_HaveMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HaveMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_GetMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_GetMessage() + { + ::grpc::Service::MarkMethodGeneric(8); + } + ~WithGenericMethod_GetMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_FixMachine : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_FixMachine() + { + ::grpc::Service::MarkMethodGeneric(9); + } + ~WithGenericMethod_FixMachine() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status FixMachine(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_SaveHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_SaveHuman() + { + ::grpc::Service::MarkMethodGeneric(10); + } + ~WithGenericMethod_SaveHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SaveHuman(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_Attack : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_Attack() + { + ::grpc::Service::MarkMethodGeneric(11); + } + ~WithGenericMethod_Attack() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Attack(::grpc::ServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_CarryHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_CarryHuman() + { + ::grpc::Service::MarkMethodGeneric(12); + } + ~WithGenericMethod_CarryHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CarryHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_ReleaseHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_ReleaseHuman() + { + ::grpc::Service::MarkMethodGeneric(13); + } + ~WithGenericMethod_ReleaseHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ReleaseHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_HangHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_HangHuman() + { + ::grpc::Service::MarkMethodGeneric(14); + } + ~WithGenericMethod_HangHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HangHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_Escape : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithGenericMethod_Escape() + { + ::grpc::Service::MarkMethodGeneric(15); + } + ~WithGenericMethod_Escape() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Escape(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithRawMethod_TryConnection : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_TryConnection() + { + ::grpc::Service::MarkMethodRaw(0); + } + ~WithRawMethod_TryConnection() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status TryConnection(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestTryConnection(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_AddPlayer : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_AddPlayer() + { + ::grpc::Service::MarkMethodRaw(1); + } + ~WithRawMethod_AddPlayer() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status AddPlayer(::grpc::ServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/, ::grpc::ServerWriter<::protobuf::MessageToClient>* /*writer*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestAddPlayer(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter<::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncServerStreaming(1, context, request, writer, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_Move : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_Move() + { + ::grpc::Service::MarkMethodRaw(2); + } + ~WithRawMethod_Move() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Move(::grpc::ServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestMove(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_PickProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_PickProp() + { + ::grpc::Service::MarkMethodRaw(3); + } + ~WithRawMethod_PickProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status PickProp(::grpc::ServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestPickProp(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_UseProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_UseProp() + { + ::grpc::Service::MarkMethodRaw(4); + } + ~WithRawMethod_UseProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseProp(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestUseProp(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_UseSkill : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_UseSkill() + { + ::grpc::Service::MarkMethodRaw(5); + } + ~WithRawMethod_UseSkill() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseSkill(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestUseSkill(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_SendMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_SendMessage() + { + ::grpc::Service::MarkMethodRaw(6); + } + ~WithRawMethod_SendMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SendMessage(::grpc::ServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestSendMessage(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_HaveMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_HaveMessage() + { + ::grpc::Service::MarkMethodRaw(7); + } + ~WithRawMethod_HaveMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HaveMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestHaveMessage(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_GetMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_GetMessage() + { + ::grpc::Service::MarkMethodRaw(8); + } + ~WithRawMethod_GetMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetMessage(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_FixMachine : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_FixMachine() + { + ::grpc::Service::MarkMethodRaw(9); + } + ~WithRawMethod_FixMachine() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status FixMachine(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestFixMachine(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter<::grpc::ByteBuffer, ::grpc::ByteBuffer>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncBidiStreaming(9, context, stream, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_SaveHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_SaveHuman() + { + ::grpc::Service::MarkMethodRaw(10); + } + ~WithRawMethod_SaveHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SaveHuman(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestSaveHuman(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter<::grpc::ByteBuffer, ::grpc::ByteBuffer>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncBidiStreaming(10, context, stream, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_Attack : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_Attack() + { + ::grpc::Service::MarkMethodRaw(11); + } + ~WithRawMethod_Attack() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Attack(::grpc::ServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestAttack(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_CarryHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_CarryHuman() + { + ::grpc::Service::MarkMethodRaw(12); + } + ~WithRawMethod_CarryHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CarryHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestCarryHuman(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_ReleaseHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_ReleaseHuman() + { + ::grpc::Service::MarkMethodRaw(13); + } + ~WithRawMethod_ReleaseHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ReleaseHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestReleaseHuman(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(13, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_HangHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_HangHuman() + { + ::grpc::Service::MarkMethodRaw(14); + } + ~WithRawMethod_HangHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HangHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestHangHuman(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_Escape : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawMethod_Escape() + { + ::grpc::Service::MarkMethodRaw(15); + } + ~WithRawMethod_Escape() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Escape(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestEscape(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter<::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void* tag) + { + ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawCallbackMethod_TryConnection : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_TryConnection() + { + ::grpc::Service::MarkMethodRawCallback(0, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->TryConnection(context, request, response); })); + } + ~WithRawCallbackMethod_TryConnection() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status TryConnection(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* TryConnection( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_AddPlayer : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_AddPlayer() + { + ::grpc::Service::MarkMethodRawCallback(1, new ::grpc::internal::CallbackServerStreamingHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request) + { return this->AddPlayer(context, request); })); + } + ~WithRawCallbackMethod_AddPlayer() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status AddPlayer(::grpc::ServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/, ::grpc::ServerWriter<::protobuf::MessageToClient>* /*writer*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerWriteReactor<::grpc::ByteBuffer>* AddPlayer( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_Move : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_Move() + { + ::grpc::Service::MarkMethodRawCallback(2, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->Move(context, request, response); })); + } + ~WithRawCallbackMethod_Move() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Move(::grpc::ServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* Move( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_PickProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_PickProp() + { + ::grpc::Service::MarkMethodRawCallback(3, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->PickProp(context, request, response); })); + } + ~WithRawCallbackMethod_PickProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status PickProp(::grpc::ServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* PickProp( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_UseProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_UseProp() + { + ::grpc::Service::MarkMethodRawCallback(4, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->UseProp(context, request, response); })); + } + ~WithRawCallbackMethod_UseProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseProp(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* UseProp( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_UseSkill : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_UseSkill() + { + ::grpc::Service::MarkMethodRawCallback(5, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->UseSkill(context, request, response); })); + } + ~WithRawCallbackMethod_UseSkill() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UseSkill(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* UseSkill( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_SendMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_SendMessage() + { + ::grpc::Service::MarkMethodRawCallback(6, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->SendMessage(context, request, response); })); + } + ~WithRawCallbackMethod_SendMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SendMessage(::grpc::ServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* SendMessage( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_HaveMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_HaveMessage() + { + ::grpc::Service::MarkMethodRawCallback(7, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->HaveMessage(context, request, response); })); + } + ~WithRawCallbackMethod_HaveMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HaveMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* HaveMessage( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_GetMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_GetMessage() + { + ::grpc::Service::MarkMethodRawCallback(8, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->GetMessage(context, request, response); })); + } + ~WithRawCallbackMethod_GetMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* GetMessage( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_FixMachine : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_FixMachine() + { + ::grpc::Service::MarkMethodRawCallback(9, new ::grpc::internal::CallbackBidiHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context) + { return this->FixMachine(context); })); + } + ~WithRawCallbackMethod_FixMachine() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status FixMachine(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerBidiReactor<::grpc::ByteBuffer, ::grpc::ByteBuffer>* FixMachine( + ::grpc::CallbackServerContext* /*context*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_SaveHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_SaveHuman() + { + ::grpc::Service::MarkMethodRawCallback(10, new ::grpc::internal::CallbackBidiHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context) + { return this->SaveHuman(context); })); + } + ~WithRawCallbackMethod_SaveHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status SaveHuman(::grpc::ServerContext* /*context*/, ::grpc::ServerReaderWriter<::protobuf::BoolRes, ::protobuf::IDMsg>* /*stream*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerBidiReactor<::grpc::ByteBuffer, ::grpc::ByteBuffer>* SaveHuman( + ::grpc::CallbackServerContext* /*context*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_Attack : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_Attack() + { + ::grpc::Service::MarkMethodRawCallback(11, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->Attack(context, request, response); })); + } + ~WithRawCallbackMethod_Attack() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Attack(::grpc::ServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* Attack( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_CarryHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_CarryHuman() + { + ::grpc::Service::MarkMethodRawCallback(12, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->CarryHuman(context, request, response); })); + } + ~WithRawCallbackMethod_CarryHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CarryHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* CarryHuman( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_ReleaseHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_ReleaseHuman() + { + ::grpc::Service::MarkMethodRawCallback(13, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->ReleaseHuman(context, request, response); })); + } + ~WithRawCallbackMethod_ReleaseHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ReleaseHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* ReleaseHuman( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_HangHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_HangHuman() + { + ::grpc::Service::MarkMethodRawCallback(14, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->HangHuman(context, request, response); })); + } + ~WithRawCallbackMethod_HangHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status HangHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* HangHuman( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithRawCallbackMethod_Escape : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithRawCallbackMethod_Escape() + { + ::grpc::Service::MarkMethodRawCallback(15, new ::grpc::internal::CallbackUnaryHandler<::grpc::ByteBuffer, ::grpc::ByteBuffer>([this](::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) + { return this->Escape(context, request, response); })); + } + ~WithRawCallbackMethod_Escape() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status Escape(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual ::grpc::ServerUnaryReactor* Escape( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/ + ) + { + return nullptr; + } + }; + template + class WithStreamedUnaryMethod_TryConnection : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_TryConnection() + { + ::grpc::Service::MarkMethodStreamed(0, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedTryConnection(context, streamer); })); + } + ~WithStreamedUnaryMethod_TryConnection() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status TryConnection(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedTryConnection(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_Move : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_Move() + { + ::grpc::Service::MarkMethodStreamed(2, new ::grpc::internal::StreamedUnaryHandler<::protobuf::MoveMsg, ::protobuf::MoveRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::MoveMsg, ::protobuf::MoveRes>* streamer) + { return this->StreamedMove(context, streamer); })); + } + ~WithStreamedUnaryMethod_Move() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status Move(::grpc::ServerContext* /*context*/, const ::protobuf::MoveMsg* /*request*/, ::protobuf::MoveRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedMove(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::MoveMsg, ::protobuf::MoveRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_PickProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_PickProp() + { + ::grpc::Service::MarkMethodStreamed(3, new ::grpc::internal::StreamedUnaryHandler<::protobuf::PickMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::PickMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedPickProp(context, streamer); })); + } + ~WithStreamedUnaryMethod_PickProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status PickProp(::grpc::ServerContext* /*context*/, const ::protobuf::PickMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedPickProp(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::PickMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_UseProp : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_UseProp() + { + ::grpc::Service::MarkMethodStreamed(4, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedUseProp(context, streamer); })); + } + ~WithStreamedUnaryMethod_UseProp() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status UseProp(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedUseProp(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_UseSkill : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_UseSkill() + { + ::grpc::Service::MarkMethodStreamed(5, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedUseSkill(context, streamer); })); + } + ~WithStreamedUnaryMethod_UseSkill() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status UseSkill(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedUseSkill(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_SendMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_SendMessage() + { + ::grpc::Service::MarkMethodStreamed(6, new ::grpc::internal::StreamedUnaryHandler<::protobuf::SendMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::SendMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedSendMessage(context, streamer); })); + } + ~WithStreamedUnaryMethod_SendMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status SendMessage(::grpc::ServerContext* /*context*/, const ::protobuf::SendMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedSendMessage(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::SendMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_HaveMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_HaveMessage() + { + ::grpc::Service::MarkMethodStreamed(7, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedHaveMessage(context, streamer); })); + } + ~WithStreamedUnaryMethod_HaveMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status HaveMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedHaveMessage(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_GetMessage : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_GetMessage() + { + ::grpc::Service::MarkMethodStreamed(8, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::MsgRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::MsgRes>* streamer) + { return this->StreamedGetMessage(context, streamer); })); + } + ~WithStreamedUnaryMethod_GetMessage() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status GetMessage(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::MsgRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedGetMessage(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::MsgRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_Attack : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_Attack() + { + ::grpc::Service::MarkMethodStreamed(11, new ::grpc::internal::StreamedUnaryHandler<::protobuf::AttackMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::AttackMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedAttack(context, streamer); })); + } + ~WithStreamedUnaryMethod_Attack() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status Attack(::grpc::ServerContext* /*context*/, const ::protobuf::AttackMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedAttack(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::AttackMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_CarryHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_CarryHuman() + { + ::grpc::Service::MarkMethodStreamed(12, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedCarryHuman(context, streamer); })); + } + ~WithStreamedUnaryMethod_CarryHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status CarryHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedCarryHuman(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_ReleaseHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_ReleaseHuman() + { + ::grpc::Service::MarkMethodStreamed(13, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedReleaseHuman(context, streamer); })); + } + ~WithStreamedUnaryMethod_ReleaseHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status ReleaseHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedReleaseHuman(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_HangHuman : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_HangHuman() + { + ::grpc::Service::MarkMethodStreamed(14, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedHangHuman(context, streamer); })); + } + ~WithStreamedUnaryMethod_HangHuman() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status HangHuman(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedHangHuman(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_Escape : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithStreamedUnaryMethod_Escape() + { + ::grpc::Service::MarkMethodStreamed(15, new ::grpc::internal::StreamedUnaryHandler<::protobuf::IDMsg, ::protobuf::BoolRes>([this](::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* streamer) + { return this->StreamedEscape(context, streamer); })); + } + ~WithStreamedUnaryMethod_Escape() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status Escape(::grpc::ServerContext* /*context*/, const ::protobuf::IDMsg* /*request*/, ::protobuf::BoolRes* /*response*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedEscape(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer<::protobuf::IDMsg, ::protobuf::BoolRes>* server_unary_streamer) = 0; + }; + typedef WithStreamedUnaryMethod_TryConnection>>>>>>>>>>>> StreamedUnaryService; + template + class WithSplitStreamingMethod_AddPlayer : public BaseClass + { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) + { + } + + public: + WithSplitStreamingMethod_AddPlayer() + { + ::grpc::Service::MarkMethodStreamed(1, new ::grpc::internal::SplitServerStreamingHandler<::protobuf::PlayerMsg, ::protobuf::MessageToClient>([this](::grpc::ServerContext* context, ::grpc::ServerSplitStreamer<::protobuf::PlayerMsg, ::protobuf::MessageToClient>* streamer) + { return this->StreamedAddPlayer(context, streamer); })); + } + ~WithSplitStreamingMethod_AddPlayer() override + { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status AddPlayer(::grpc::ServerContext* /*context*/, const ::protobuf::PlayerMsg* /*request*/, ::grpc::ServerWriter<::protobuf::MessageToClient>* /*writer*/) override + { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with split streamed + virtual ::grpc::Status StreamedAddPlayer(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer<::protobuf::PlayerMsg, ::protobuf::MessageToClient>* server_split_streamer) = 0; + }; + typedef WithSplitStreamingMethod_AddPlayer SplitStreamedService; + typedef WithStreamedUnaryMethod_TryConnection>>>>>>>>>>>>> StreamedService; + }; + +} // namespace protobuf + +#endif // GRPC_Message2Clients_2eproto__INCLUDED diff --git a/CAPI/proto/Message2Clients.pb.cc b/CAPI/proto/Message2Clients.pb.cc new file mode 100644 index 0000000..b101df8 --- /dev/null +++ b/CAPI/proto/Message2Clients.pb.cc @@ -0,0 +1,4294 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Message2Clients.proto + +#include "Message2Clients.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +PROTOBUF_PRAGMA_INIT_SEG +namespace protobuf +{ + constexpr MessageOfHuman::MessageOfHuman( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + buff_(), + _buff_cached_byte_size_(0), + x_(0), + y_(0), + speed_(0), + life_(0), + time_until_skill_available_(0), + hanged_time_(0), + place_(0) + + , + prop_(0) + + , + human_type_(0) + + , + guid_(int64_t{0}), + chair_time_(0), + on_chair_(false), + on_ground_(false), + view_range_(0), + ground_time_(0), + player_id_(int64_t{0}) + { + } + struct MessageOfHumanDefaultTypeInternal + { + constexpr MessageOfHumanDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageOfHumanDefaultTypeInternal() + { + } + union + { + MessageOfHuman _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOfHumanDefaultTypeInternal _MessageOfHuman_default_instance_; + constexpr MessageOfButcher::MessageOfButcher( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + buff_(), + _buff_cached_byte_size_(0), + x_(0), + y_(0), + speed_(0), + damage_(0), + time_until_skill_available_(0), + place_(0) + + , + prop_(0) + + , + guid_(int64_t{0}), + butcher_type_(0) + + , + movable_(false), + playerid_(int64_t{0}), + view_range_(0) + { + } + struct MessageOfButcherDefaultTypeInternal + { + constexpr MessageOfButcherDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageOfButcherDefaultTypeInternal() + { + } + union + { + MessageOfButcher _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOfButcherDefaultTypeInternal _MessageOfButcher_default_instance_; + constexpr MessageOfProp::MessageOfProp( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + type_(0) + + , + x_(0), + facing_direction_(0), + y_(0), + place_(0) + + , + guid_(int64_t{0}), + size_(0), + is_moving_(false) + { + } + struct MessageOfPropDefaultTypeInternal + { + constexpr MessageOfPropDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageOfPropDefaultTypeInternal() + { + } + union + { + MessageOfProp _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOfPropDefaultTypeInternal _MessageOfProp_default_instance_; + constexpr MessageOfPickedProp::MessageOfPickedProp( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + type_(0) + + , + x_(0), + facing_direction_(0), + mapping_id_(int64_t{0}), + y_(0) + { + } + struct MessageOfPickedPropDefaultTypeInternal + { + constexpr MessageOfPickedPropDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageOfPickedPropDefaultTypeInternal() + { + } + union + { + MessageOfPickedProp _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOfPickedPropDefaultTypeInternal _MessageOfPickedProp_default_instance_; + constexpr MessageOfMap_Row::MessageOfMap_Row( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + col_(), + _col_cached_byte_size_(0) + { + } + struct MessageOfMap_RowDefaultTypeInternal + { + constexpr MessageOfMap_RowDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageOfMap_RowDefaultTypeInternal() + { + } + union + { + MessageOfMap_Row _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOfMap_RowDefaultTypeInternal _MessageOfMap_Row_default_instance_; + constexpr MessageOfMap::MessageOfMap( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + row_() + { + } + struct MessageOfMapDefaultTypeInternal + { + constexpr MessageOfMapDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageOfMapDefaultTypeInternal() + { + } + union + { + MessageOfMap _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOfMapDefaultTypeInternal _MessageOfMap_default_instance_; + constexpr MessageToClient::MessageToClient( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + human_message_(), + butcher_message_(), + prop_message_(), + map_massage_(nullptr) + { + } + struct MessageToClientDefaultTypeInternal + { + constexpr MessageToClientDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MessageToClientDefaultTypeInternal() + { + } + union + { + MessageToClient _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageToClientDefaultTypeInternal _MessageToClient_default_instance_; + constexpr MoveRes::MoveRes( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + actual_speed_(int64_t{0}), + actual_angle_(0) + { + } + struct MoveResDefaultTypeInternal + { + constexpr MoveResDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MoveResDefaultTypeInternal() + { + } + union + { + MoveRes _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MoveResDefaultTypeInternal _MoveRes_default_instance_; + constexpr BoolRes::BoolRes( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + act_success_(false) + { + } + struct BoolResDefaultTypeInternal + { + constexpr BoolResDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~BoolResDefaultTypeInternal() + { + } + union + { + BoolRes _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BoolResDefaultTypeInternal _BoolRes_default_instance_; + constexpr MsgRes::MsgRes( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + message_received_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string), + from_player_id_(int64_t{0}), + have_message_(false) + { + } + struct MsgResDefaultTypeInternal + { + constexpr MsgResDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MsgResDefaultTypeInternal() + { + } + union + { + MsgRes _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MsgResDefaultTypeInternal _MsgRes_default_instance_; +} // namespace protobuf +static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_Message2Clients_2eproto[10]; +static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_Message2Clients_2eproto = nullptr; +static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_Message2Clients_2eproto = nullptr; + +const uint32_t TableStruct_Message2Clients_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, x_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, y_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, speed_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, life_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, hanged_time_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, time_until_skill_available_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, place_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, prop_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, human_type_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, guid_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, on_chair_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, chair_time_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, on_ground_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, ground_time_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, view_range_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfHuman, buff_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, x_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, y_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, speed_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, damage_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, time_until_skill_available_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, place_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, prop_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, butcher_type_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, guid_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, movable_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, playerid_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, view_range_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfButcher, buff_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, type_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, x_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, y_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, facing_direction_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, guid_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, place_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, size_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfProp, is_moving_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfPickedProp, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfPickedProp, type_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfPickedProp, x_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfPickedProp, y_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfPickedProp, facing_direction_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfPickedProp, mapping_id_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfMap_Row, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfMap_Row, col_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfMap, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageOfMap, row_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageToClient, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MessageToClient, human_message_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageToClient, butcher_message_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageToClient, prop_message_), + PROTOBUF_FIELD_OFFSET(::protobuf::MessageToClient, map_massage_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MoveRes, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MoveRes, actual_speed_), + PROTOBUF_FIELD_OFFSET(::protobuf::MoveRes, actual_angle_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::BoolRes, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::BoolRes, act_success_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MsgRes, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MsgRes, have_message_), + PROTOBUF_FIELD_OFFSET(::protobuf::MsgRes, from_player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::MsgRes, message_received_), +}; +static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + {0, -1, -1, sizeof(::protobuf::MessageOfHuman)}, + {23, -1, -1, sizeof(::protobuf::MessageOfButcher)}, + {42, -1, -1, sizeof(::protobuf::MessageOfProp)}, + {56, -1, -1, sizeof(::protobuf::MessageOfPickedProp)}, + {67, -1, -1, sizeof(::protobuf::MessageOfMap_Row)}, + {74, -1, -1, sizeof(::protobuf::MessageOfMap)}, + {81, -1, -1, sizeof(::protobuf::MessageToClient)}, + {91, -1, -1, sizeof(::protobuf::MoveRes)}, + {99, -1, -1, sizeof(::protobuf::BoolRes)}, + {106, -1, -1, sizeof(::protobuf::MsgRes)}, +}; + +static ::PROTOBUF_NAMESPACE_ID::Message const* const file_default_instances[] = { + reinterpret_cast(&::protobuf::_MessageOfHuman_default_instance_), + reinterpret_cast(&::protobuf::_MessageOfButcher_default_instance_), + reinterpret_cast(&::protobuf::_MessageOfProp_default_instance_), + reinterpret_cast(&::protobuf::_MessageOfPickedProp_default_instance_), + reinterpret_cast(&::protobuf::_MessageOfMap_Row_default_instance_), + reinterpret_cast(&::protobuf::_MessageOfMap_default_instance_), + reinterpret_cast(&::protobuf::_MessageToClient_default_instance_), + reinterpret_cast(&::protobuf::_MoveRes_default_instance_), + reinterpret_cast(&::protobuf::_BoolRes_default_instance_), + reinterpret_cast(&::protobuf::_MsgRes_default_instance_), +}; + +const char descriptor_table_protodef_Message2Clients_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = + "\n\025Message2Clients.proto\022\010protobuf\032\021Messa" + "geType.proto\032\024Message2Server.proto\"\225\003\n\016M" + "essageOfHuman\022\t\n\001x\030\001 \001(\005\022\t\n\001y\030\002 \001(\005\022\r\n\005s" + "peed\030\003 \001(\005\022\014\n\004life\030\004 \001(\005\022\023\n\013hanged_time\030" + "\005 \001(\005\022\"\n\032time_until_skill_available\030\006 \001(" + "\001\022\"\n\005place\030\007 \001(\0162\023.protobuf.PlaceType\022 \n" + "\004prop\030\010 \001(\0162\022.protobuf.PropType\022\'\n\nhuman" + "_type\030\t \001(\0162\023.protobuf.HumanType\022\014\n\004guid" + "\030\n \001(\003\022\020\n\010on_chair\030\013 \001(\010\022\022\n\nchair_time\030\014" + " \001(\001\022\021\n\ton_ground\030\r \001(\010\022\023\n\013ground_time\030\016" + " \001(\001\022\021\n\tplayer_id\030\017 \001(\003\022\022\n\nview_range\030\020 " + "\001(\005\022%\n\004buff\030\021 \003(\0162\027.protobuf.HumanBuffTy" + "pe\"\314\002\n\020MessageOfButcher\022\t\n\001x\030\001 \001(\005\022\t\n\001y\030" + "\002 \001(\005\022\r\n\005speed\030\003 \001(\005\022\016\n\006damage\030\004 \001(\005\022\"\n\032" + "time_until_skill_available\030\005 \001(\001\022\"\n\005plac" + "e\030\006 \001(\0162\023.protobuf.PlaceType\022 \n\004prop\030\007 \001" + "(\0162\022.protobuf.PropType\022+\n\014butcher_type\030\010" + " \001(\0162\025.protobuf.ButcherType\022\014\n\004guid\030\t \001(" + "\003\022\017\n\007movable\030\n \001(\010\022\020\n\010playerID\030\013 \001(\003\022\022\n\n" + "view_range\030\014 \001(\005\022\'\n\004buff\030\r \003(\0162\031.protobu" + "f.ButcherBuffType\"\264\001\n\rMessageOfProp\022 \n\004t" + "ype\030\001 \001(\0162\022.protobuf.PropType\022\t\n\001x\030\002 \001(\005" + "\022\t\n\001y\030\003 \001(\005\022\030\n\020facing_direction\030\004 \001(\001\022\014\n" + "\004guid\030\005 \001(\003\022\"\n\005place\030\006 \001(\0162\023.protobuf.Pl" + "aceType\022\014\n\004size\030\007 \001(\005\022\021\n\tis_moving\030\010 \001(\010" + "\"{\n\023MessageOfPickedProp\022 \n\004type\030\001 \001(\0162\022." + "protobuf.PropType\022\t\n\001x\030\002 \001(\005\022\t\n\001y\030\003 \001(\005\022" + "\030\n\020facing_direction\030\004 \001(\001\022\022\n\nmapping_id\030" + "\005 \001(\003\"`\n\014MessageOfMap\022\'\n\003row\030\002 \003(\0132\032.pro" + "tobuf.MessageOfMap.Row\032\'\n\003Row\022 \n\003col\030\001 \003" + "(\0162\023.protobuf.PlaceType\"\323\001\n\017MessageToCli" + "ent\022/\n\rhuman_message\030\001 \003(\0132\030.protobuf.Me" + "ssageOfHuman\0223\n\017butcher_message\030\002 \003(\0132\032." + "protobuf.MessageOfButcher\022-\n\014prop_messag" + "e\030\003 \003(\0132\027.protobuf.MessageOfProp\022+\n\013map_" + "massage\030\004 \001(\0132\026.protobuf.MessageOfMap\"5\n" + "\007MoveRes\022\024\n\014actual_speed\030\001 \001(\003\022\024\n\014actual" + "_angle\030\002 \001(\001\"\036\n\007BoolRes\022\023\n\013act_success\030\001" + " \001(\010\"P\n\006MsgRes\022\024\n\014have_message\030\001 \001(\010\022\026\n\016" + "from_player_id\030\002 \001(\003\022\030\n\020message_received" + "\030\003 \001(\t2\300\006\n\020AvailableService\0223\n\rTryConnec" + "tion\022\017.protobuf.IDMsg\032\021.protobuf.BoolRes" + "\022=\n\tAddPlayer\022\023.protobuf.PlayerMsg\032\031.pro" + "tobuf.MessageToClient0\001\022,\n\004Move\022\021.protob" + "uf.MoveMsg\032\021.protobuf.MoveRes\0220\n\010PickPro" + "p\022\021.protobuf.PickMsg\032\021.protobuf.BoolRes\022" + "-\n\007UseProp\022\017.protobuf.IDMsg\032\021.protobuf.B" + "oolRes\022.\n\010UseSkill\022\017.protobuf.IDMsg\032\021.pr" + "otobuf.BoolRes\0223\n\013SendMessage\022\021.protobuf" + ".SendMsg\032\021.protobuf.BoolRes\0221\n\013HaveMessa" + "ge\022\017.protobuf.IDMsg\032\021.protobuf.BoolRes\022/" + "\n\nGetMessage\022\017.protobuf.IDMsg\032\020.protobuf" + ".MsgRes\0224\n\nFixMachine\022\017.protobuf.IDMsg\032\021" + ".protobuf.BoolRes(\0010\001\0223\n\tSaveHuman\022\017.pro" + "tobuf.IDMsg\032\021.protobuf.BoolRes(\0010\001\0220\n\006At" + "tack\022\023.protobuf.AttackMsg\032\021.protobuf.Boo" + "lRes\0220\n\nCarryHuman\022\017.protobuf.IDMsg\032\021.pr" + "otobuf.BoolRes\0222\n\014ReleaseHuman\022\017.protobu" + "f.IDMsg\032\021.protobuf.BoolRes\022/\n\tHangHuman\022" + "\017.protobuf.IDMsg\032\021.protobuf.BoolRes\022,\n\006E" + "scape\022\017.protobuf.IDMsg\032\021.protobuf.BoolRe" + "sb\006proto3"; +static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* const descriptor_table_Message2Clients_2eproto_deps[2] = { + &::descriptor_table_Message2Server_2eproto, + &::descriptor_table_MessageType_2eproto, +}; +static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_Message2Clients_2eproto_once; +const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_Message2Clients_2eproto = { + false, + false, + 2449, + descriptor_table_protodef_Message2Clients_2eproto, + "Message2Clients.proto", + &descriptor_table_Message2Clients_2eproto_once, + descriptor_table_Message2Clients_2eproto_deps, + 2, + 10, + schemas, + file_default_instances, + TableStruct_Message2Clients_2eproto::offsets, + file_level_metadata_Message2Clients_2eproto, + file_level_enum_descriptors_Message2Clients_2eproto, + file_level_service_descriptors_Message2Clients_2eproto, +}; +PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_Message2Clients_2eproto_getter() +{ + return &descriptor_table_Message2Clients_2eproto; +} + +// Force running AddDescriptors() at dynamic initialization time. +PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_Message2Clients_2eproto(&descriptor_table_Message2Clients_2eproto); +namespace protobuf +{ + + // =================================================================== + + class MessageOfHuman::_Internal + { + public: + }; + + MessageOfHuman::MessageOfHuman(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned), + buff_(arena) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageOfHuman) + } + MessageOfHuman::MessageOfHuman(const MessageOfHuman& from) : + ::PROTOBUF_NAMESPACE_ID::Message(), + buff_(from.buff_) + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&x_, &from.x_, static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(&x_)) + sizeof(player_id_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MessageOfHuman) + } + + inline void MessageOfHuman::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&x_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(&x_)) + sizeof(player_id_)); + } + + MessageOfHuman::~MessageOfHuman() + { + // @@protoc_insertion_point(destructor:protobuf.MessageOfHuman) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageOfHuman::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MessageOfHuman::ArenaDtor(void* object) + { + MessageOfHuman* _this = reinterpret_cast(object); + (void)_this; + } + void MessageOfHuman::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageOfHuman::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageOfHuman::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageOfHuman) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + buff_.Clear(); + ::memset(&x_, 0, static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(&x_)) + sizeof(player_id_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageOfHuman::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int32 x = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 y = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 speed = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) + { + speed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 life = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 32)) + { + life_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 hanged_time = 5; + case 5: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 40)) + { + hanged_time_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double time_until_skill_available = 6; + case 6: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 49)) + { + time_until_skill_available_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // .protobuf.PlaceType place = 7; + case 7: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 56)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_place(static_cast<::protobuf::PlaceType>(val)); + } + else + goto handle_unusual; + continue; + // .protobuf.PropType prop = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 64)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_prop(static_cast<::protobuf::PropType>(val)); + } + else + goto handle_unusual; + continue; + // .protobuf.HumanType human_type = 9; + case 9: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 72)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_human_type(static_cast<::protobuf::HumanType>(val)); + } + else + goto handle_unusual; + continue; + // int64 guid = 10; + case 10: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 80)) + { + guid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // bool on_chair = 11; + case 11: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 88)) + { + on_chair_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double chair_time = 12; + case 12: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 97)) + { + chair_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // bool on_ground = 13; + case 13: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 104)) + { + on_ground_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double ground_time = 14; + case 14: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 113)) + { + ground_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // int64 player_id = 15; + case 15: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 120)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 view_range = 16; + case 16: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 128)) + { + view_range_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // repeated .protobuf.HumanBuffType buff = 17; + case 17: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 138)) + { + ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_buff(), ptr, ctx); + CHK_(ptr); + } + else if (static_cast(tag) == 136) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_add_buff(static_cast<::protobuf::HumanBuffType>(val)); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageOfHuman::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageOfHuman) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int32 x = 1; + if (this->_internal_x() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_x(), target); + } + + // int32 y = 2; + if (this->_internal_y() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_y(), target); + } + + // int32 speed = 3; + if (this->_internal_speed() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_speed(), target); + } + + // int32 life = 4; + if (this->_internal_life() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_life(), target); + } + + // int32 hanged_time = 5; + if (this->_internal_hanged_time() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_hanged_time(), target); + } + + // double time_until_skill_available = 6; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_time_until_skill_available = this->_internal_time_until_skill_available(); + uint64_t raw_time_until_skill_available; + memcpy(&raw_time_until_skill_available, &tmp_time_until_skill_available, sizeof(tmp_time_until_skill_available)); + if (raw_time_until_skill_available != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(6, this->_internal_time_until_skill_available(), target); + } + + // .protobuf.PlaceType place = 7; + if (this->_internal_place() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 7, this->_internal_place(), target + ); + } + + // .protobuf.PropType prop = 8; + if (this->_internal_prop() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 8, this->_internal_prop(), target + ); + } + + // .protobuf.HumanType human_type = 9; + if (this->_internal_human_type() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 9, this->_internal_human_type(), target + ); + } + + // int64 guid = 10; + if (this->_internal_guid() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(10, this->_internal_guid(), target); + } + + // bool on_chair = 11; + if (this->_internal_on_chair() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(11, this->_internal_on_chair(), target); + } + + // double chair_time = 12; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_chair_time = this->_internal_chair_time(); + uint64_t raw_chair_time; + memcpy(&raw_chair_time, &tmp_chair_time, sizeof(tmp_chair_time)); + if (raw_chair_time != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(12, this->_internal_chair_time(), target); + } + + // bool on_ground = 13; + if (this->_internal_on_ground() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(13, this->_internal_on_ground(), target); + } + + // double ground_time = 14; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_ground_time = this->_internal_ground_time(); + uint64_t raw_ground_time; + memcpy(&raw_ground_time, &tmp_ground_time, sizeof(tmp_ground_time)); + if (raw_ground_time != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(14, this->_internal_ground_time(), target); + } + + // int64 player_id = 15; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(15, this->_internal_player_id(), target); + } + + // int32 view_range = 16; + if (this->_internal_view_range() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(16, this->_internal_view_range(), target); + } + + // repeated .protobuf.HumanBuffType buff = 17; + { + int byte_size = _buff_cached_byte_size_.load(std::memory_order_relaxed); + if (byte_size > 0) + { + target = stream->WriteEnumPacked( + 17, buff_, byte_size, target + ); + } + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageOfHuman) + return target; + } + + size_t MessageOfHuman::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageOfHuman) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // repeated .protobuf.HumanBuffType buff = 17; + { + size_t data_size = 0; + unsigned int count = static_cast(this->_internal_buff_size()); + for (unsigned int i = 0; i < count; i++) + { + data_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize( + this->_internal_buff(static_cast(i)) + ); + } + if (data_size > 0) + { + total_size += 2 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + static_cast(data_size) + ); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size); + _buff_cached_byte_size_.store(cached_size, std::memory_order_relaxed); + total_size += data_size; + } + + // int32 x = 1; + if (this->_internal_x() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_x()); + } + + // int32 y = 2; + if (this->_internal_y() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_y()); + } + + // int32 speed = 3; + if (this->_internal_speed() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_speed()); + } + + // int32 life = 4; + if (this->_internal_life() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_life()); + } + + // double time_until_skill_available = 6; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_time_until_skill_available = this->_internal_time_until_skill_available(); + uint64_t raw_time_until_skill_available; + memcpy(&raw_time_until_skill_available, &tmp_time_until_skill_available, sizeof(tmp_time_until_skill_available)); + if (raw_time_until_skill_available != 0) + { + total_size += 1 + 8; + } + + // int32 hanged_time = 5; + if (this->_internal_hanged_time() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_hanged_time()); + } + + // .protobuf.PlaceType place = 7; + if (this->_internal_place() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_place()); + } + + // .protobuf.PropType prop = 8; + if (this->_internal_prop() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_prop()); + } + + // .protobuf.HumanType human_type = 9; + if (this->_internal_human_type() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_human_type()); + } + + // int64 guid = 10; + if (this->_internal_guid() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_guid()); + } + + // double chair_time = 12; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_chair_time = this->_internal_chair_time(); + uint64_t raw_chair_time; + memcpy(&raw_chair_time, &tmp_chair_time, sizeof(tmp_chair_time)); + if (raw_chair_time != 0) + { + total_size += 1 + 8; + } + + // bool on_chair = 11; + if (this->_internal_on_chair() != 0) + { + total_size += 1 + 1; + } + + // bool on_ground = 13; + if (this->_internal_on_ground() != 0) + { + total_size += 1 + 1; + } + + // int32 view_range = 16; + if (this->_internal_view_range() != 0) + { + total_size += 2 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + this->_internal_view_range() + ); + } + + // double ground_time = 14; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_ground_time = this->_internal_ground_time(); + uint64_t raw_ground_time; + memcpy(&raw_ground_time, &tmp_ground_time, sizeof(tmp_ground_time)); + if (raw_ground_time != 0) + { + total_size += 1 + 8; + } + + // int64 player_id = 15; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageOfHuman::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageOfHuman::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageOfHuman::GetClassData() const + { + return &_class_data_; + } + + void MessageOfHuman::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageOfHuman::MergeFrom(const MessageOfHuman& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageOfHuman) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + buff_.MergeFrom(from.buff_); + if (from._internal_x() != 0) + { + _internal_set_x(from._internal_x()); + } + if (from._internal_y() != 0) + { + _internal_set_y(from._internal_y()); + } + if (from._internal_speed() != 0) + { + _internal_set_speed(from._internal_speed()); + } + if (from._internal_life() != 0) + { + _internal_set_life(from._internal_life()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_time_until_skill_available = from._internal_time_until_skill_available(); + uint64_t raw_time_until_skill_available; + memcpy(&raw_time_until_skill_available, &tmp_time_until_skill_available, sizeof(tmp_time_until_skill_available)); + if (raw_time_until_skill_available != 0) + { + _internal_set_time_until_skill_available(from._internal_time_until_skill_available()); + } + if (from._internal_hanged_time() != 0) + { + _internal_set_hanged_time(from._internal_hanged_time()); + } + if (from._internal_place() != 0) + { + _internal_set_place(from._internal_place()); + } + if (from._internal_prop() != 0) + { + _internal_set_prop(from._internal_prop()); + } + if (from._internal_human_type() != 0) + { + _internal_set_human_type(from._internal_human_type()); + } + if (from._internal_guid() != 0) + { + _internal_set_guid(from._internal_guid()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_chair_time = from._internal_chair_time(); + uint64_t raw_chair_time; + memcpy(&raw_chair_time, &tmp_chair_time, sizeof(tmp_chair_time)); + if (raw_chair_time != 0) + { + _internal_set_chair_time(from._internal_chair_time()); + } + if (from._internal_on_chair() != 0) + { + _internal_set_on_chair(from._internal_on_chair()); + } + if (from._internal_on_ground() != 0) + { + _internal_set_on_ground(from._internal_on_ground()); + } + if (from._internal_view_range() != 0) + { + _internal_set_view_range(from._internal_view_range()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_ground_time = from._internal_ground_time(); + uint64_t raw_ground_time; + memcpy(&raw_ground_time, &tmp_ground_time, sizeof(tmp_ground_time)); + if (raw_ground_time != 0) + { + _internal_set_ground_time(from._internal_ground_time()); + } + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageOfHuman::CopyFrom(const MessageOfHuman& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageOfHuman) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageOfHuman::IsInitialized() const + { + return true; + } + + void MessageOfHuman::InternalSwap(MessageOfHuman* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + buff_.InternalSwap(&other->buff_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MessageOfHuman, player_id_) + sizeof(MessageOfHuman::player_id_) - PROTOBUF_FIELD_OFFSET(MessageOfHuman, x_)>( + reinterpret_cast(&x_), + reinterpret_cast(&other->x_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageOfHuman::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[0] + ); + } + + // =================================================================== + + class MessageOfButcher::_Internal + { + public: + }; + + MessageOfButcher::MessageOfButcher(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned), + buff_(arena) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageOfButcher) + } + MessageOfButcher::MessageOfButcher(const MessageOfButcher& from) : + ::PROTOBUF_NAMESPACE_ID::Message(), + buff_(from.buff_) + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&x_, &from.x_, static_cast(reinterpret_cast(&view_range_) - reinterpret_cast(&x_)) + sizeof(view_range_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MessageOfButcher) + } + + inline void MessageOfButcher::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&x_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&view_range_) - reinterpret_cast(&x_)) + sizeof(view_range_)); + } + + MessageOfButcher::~MessageOfButcher() + { + // @@protoc_insertion_point(destructor:protobuf.MessageOfButcher) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageOfButcher::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MessageOfButcher::ArenaDtor(void* object) + { + MessageOfButcher* _this = reinterpret_cast(object); + (void)_this; + } + void MessageOfButcher::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageOfButcher::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageOfButcher::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageOfButcher) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + buff_.Clear(); + ::memset(&x_, 0, static_cast(reinterpret_cast(&view_range_) - reinterpret_cast(&x_)) + sizeof(view_range_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageOfButcher::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int32 x = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 y = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 speed = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) + { + speed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 damage = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 32)) + { + damage_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double time_until_skill_available = 5; + case 5: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 41)) + { + time_until_skill_available_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // .protobuf.PlaceType place = 6; + case 6: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 48)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_place(static_cast<::protobuf::PlaceType>(val)); + } + else + goto handle_unusual; + continue; + // .protobuf.PropType prop = 7; + case 7: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 56)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_prop(static_cast<::protobuf::PropType>(val)); + } + else + goto handle_unusual; + continue; + // .protobuf.ButcherType butcher_type = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 64)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_butcher_type(static_cast<::protobuf::ButcherType>(val)); + } + else + goto handle_unusual; + continue; + // int64 guid = 9; + case 9: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 72)) + { + guid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // bool movable = 10; + case 10: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 80)) + { + movable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int64 playerID = 11; + case 11: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 88)) + { + playerid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 view_range = 12; + case 12: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 96)) + { + view_range_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // repeated .protobuf.ButcherBuffType buff = 13; + case 13: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 106)) + { + ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_buff(), ptr, ctx); + CHK_(ptr); + } + else if (static_cast(tag) == 104) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_add_buff(static_cast<::protobuf::ButcherBuffType>(val)); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageOfButcher::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageOfButcher) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int32 x = 1; + if (this->_internal_x() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_x(), target); + } + + // int32 y = 2; + if (this->_internal_y() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_y(), target); + } + + // int32 speed = 3; + if (this->_internal_speed() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_speed(), target); + } + + // int32 damage = 4; + if (this->_internal_damage() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_damage(), target); + } + + // double time_until_skill_available = 5; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_time_until_skill_available = this->_internal_time_until_skill_available(); + uint64_t raw_time_until_skill_available; + memcpy(&raw_time_until_skill_available, &tmp_time_until_skill_available, sizeof(tmp_time_until_skill_available)); + if (raw_time_until_skill_available != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(5, this->_internal_time_until_skill_available(), target); + } + + // .protobuf.PlaceType place = 6; + if (this->_internal_place() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 6, this->_internal_place(), target + ); + } + + // .protobuf.PropType prop = 7; + if (this->_internal_prop() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 7, this->_internal_prop(), target + ); + } + + // .protobuf.ButcherType butcher_type = 8; + if (this->_internal_butcher_type() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 8, this->_internal_butcher_type(), target + ); + } + + // int64 guid = 9; + if (this->_internal_guid() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(9, this->_internal_guid(), target); + } + + // bool movable = 10; + if (this->_internal_movable() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_movable(), target); + } + + // int64 playerID = 11; + if (this->_internal_playerid() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(11, this->_internal_playerid(), target); + } + + // int32 view_range = 12; + if (this->_internal_view_range() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(12, this->_internal_view_range(), target); + } + + // repeated .protobuf.ButcherBuffType buff = 13; + { + int byte_size = _buff_cached_byte_size_.load(std::memory_order_relaxed); + if (byte_size > 0) + { + target = stream->WriteEnumPacked( + 13, buff_, byte_size, target + ); + } + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageOfButcher) + return target; + } + + size_t MessageOfButcher::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageOfButcher) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // repeated .protobuf.ButcherBuffType buff = 13; + { + size_t data_size = 0; + unsigned int count = static_cast(this->_internal_buff_size()); + for (unsigned int i = 0; i < count; i++) + { + data_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize( + this->_internal_buff(static_cast(i)) + ); + } + if (data_size > 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + static_cast(data_size) + ); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size); + _buff_cached_byte_size_.store(cached_size, std::memory_order_relaxed); + total_size += data_size; + } + + // int32 x = 1; + if (this->_internal_x() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_x()); + } + + // int32 y = 2; + if (this->_internal_y() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_y()); + } + + // int32 speed = 3; + if (this->_internal_speed() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_speed()); + } + + // int32 damage = 4; + if (this->_internal_damage() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_damage()); + } + + // double time_until_skill_available = 5; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_time_until_skill_available = this->_internal_time_until_skill_available(); + uint64_t raw_time_until_skill_available; + memcpy(&raw_time_until_skill_available, &tmp_time_until_skill_available, sizeof(tmp_time_until_skill_available)); + if (raw_time_until_skill_available != 0) + { + total_size += 1 + 8; + } + + // .protobuf.PlaceType place = 6; + if (this->_internal_place() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_place()); + } + + // .protobuf.PropType prop = 7; + if (this->_internal_prop() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_prop()); + } + + // int64 guid = 9; + if (this->_internal_guid() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_guid()); + } + + // .protobuf.ButcherType butcher_type = 8; + if (this->_internal_butcher_type() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_butcher_type()); + } + + // bool movable = 10; + if (this->_internal_movable() != 0) + { + total_size += 1 + 1; + } + + // int64 playerID = 11; + if (this->_internal_playerid() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_playerid()); + } + + // int32 view_range = 12; + if (this->_internal_view_range() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_view_range()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageOfButcher::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageOfButcher::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageOfButcher::GetClassData() const + { + return &_class_data_; + } + + void MessageOfButcher::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageOfButcher::MergeFrom(const MessageOfButcher& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageOfButcher) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + buff_.MergeFrom(from.buff_); + if (from._internal_x() != 0) + { + _internal_set_x(from._internal_x()); + } + if (from._internal_y() != 0) + { + _internal_set_y(from._internal_y()); + } + if (from._internal_speed() != 0) + { + _internal_set_speed(from._internal_speed()); + } + if (from._internal_damage() != 0) + { + _internal_set_damage(from._internal_damage()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_time_until_skill_available = from._internal_time_until_skill_available(); + uint64_t raw_time_until_skill_available; + memcpy(&raw_time_until_skill_available, &tmp_time_until_skill_available, sizeof(tmp_time_until_skill_available)); + if (raw_time_until_skill_available != 0) + { + _internal_set_time_until_skill_available(from._internal_time_until_skill_available()); + } + if (from._internal_place() != 0) + { + _internal_set_place(from._internal_place()); + } + if (from._internal_prop() != 0) + { + _internal_set_prop(from._internal_prop()); + } + if (from._internal_guid() != 0) + { + _internal_set_guid(from._internal_guid()); + } + if (from._internal_butcher_type() != 0) + { + _internal_set_butcher_type(from._internal_butcher_type()); + } + if (from._internal_movable() != 0) + { + _internal_set_movable(from._internal_movable()); + } + if (from._internal_playerid() != 0) + { + _internal_set_playerid(from._internal_playerid()); + } + if (from._internal_view_range() != 0) + { + _internal_set_view_range(from._internal_view_range()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageOfButcher::CopyFrom(const MessageOfButcher& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageOfButcher) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageOfButcher::IsInitialized() const + { + return true; + } + + void MessageOfButcher::InternalSwap(MessageOfButcher* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + buff_.InternalSwap(&other->buff_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MessageOfButcher, view_range_) + sizeof(MessageOfButcher::view_range_) - PROTOBUF_FIELD_OFFSET(MessageOfButcher, x_)>( + reinterpret_cast(&x_), + reinterpret_cast(&other->x_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageOfButcher::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[1] + ); + } + + // =================================================================== + + class MessageOfProp::_Internal + { + public: + }; + + MessageOfProp::MessageOfProp(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageOfProp) + } + MessageOfProp::MessageOfProp(const MessageOfProp& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&type_, &from.type_, static_cast(reinterpret_cast(&is_moving_) - reinterpret_cast(&type_)) + sizeof(is_moving_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MessageOfProp) + } + + inline void MessageOfProp::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&type_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_moving_) - reinterpret_cast(&type_)) + sizeof(is_moving_)); + } + + MessageOfProp::~MessageOfProp() + { + // @@protoc_insertion_point(destructor:protobuf.MessageOfProp) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageOfProp::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MessageOfProp::ArenaDtor(void* object) + { + MessageOfProp* _this = reinterpret_cast(object); + (void)_this; + } + void MessageOfProp::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageOfProp::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageOfProp::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageOfProp) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&type_, 0, static_cast(reinterpret_cast(&is_moving_) - reinterpret_cast(&type_)) + sizeof(is_moving_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageOfProp::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // .protobuf.PropType type = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_type(static_cast<::protobuf::PropType>(val)); + } + else + goto handle_unusual; + continue; + // int32 x = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 y = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) + { + y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double facing_direction = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 33)) + { + facing_direction_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // int64 guid = 5; + case 5: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 40)) + { + guid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // .protobuf.PlaceType place = 6; + case 6: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 48)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_place(static_cast<::protobuf::PlaceType>(val)); + } + else + goto handle_unusual; + continue; + // int32 size = 7; + case 7: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 56)) + { + size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // bool is_moving = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 64)) + { + is_moving_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageOfProp::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageOfProp) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // .protobuf.PropType type = 1; + if (this->_internal_type() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 1, this->_internal_type(), target + ); + } + + // int32 x = 2; + if (this->_internal_x() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_x(), target); + } + + // int32 y = 3; + if (this->_internal_y() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_y(), target); + } + + // double facing_direction = 4; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_facing_direction = this->_internal_facing_direction(); + uint64_t raw_facing_direction; + memcpy(&raw_facing_direction, &tmp_facing_direction, sizeof(tmp_facing_direction)); + if (raw_facing_direction != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(4, this->_internal_facing_direction(), target); + } + + // int64 guid = 5; + if (this->_internal_guid() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(5, this->_internal_guid(), target); + } + + // .protobuf.PlaceType place = 6; + if (this->_internal_place() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 6, this->_internal_place(), target + ); + } + + // int32 size = 7; + if (this->_internal_size() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_size(), target); + } + + // bool is_moving = 8; + if (this->_internal_is_moving() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(8, this->_internal_is_moving(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageOfProp) + return target; + } + + size_t MessageOfProp::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageOfProp) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // .protobuf.PropType type = 1; + if (this->_internal_type() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type()); + } + + // int32 x = 2; + if (this->_internal_x() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_x()); + } + + // double facing_direction = 4; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_facing_direction = this->_internal_facing_direction(); + uint64_t raw_facing_direction; + memcpy(&raw_facing_direction, &tmp_facing_direction, sizeof(tmp_facing_direction)); + if (raw_facing_direction != 0) + { + total_size += 1 + 8; + } + + // int32 y = 3; + if (this->_internal_y() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_y()); + } + + // .protobuf.PlaceType place = 6; + if (this->_internal_place() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_place()); + } + + // int64 guid = 5; + if (this->_internal_guid() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_guid()); + } + + // int32 size = 7; + if (this->_internal_size() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_size()); + } + + // bool is_moving = 8; + if (this->_internal_is_moving() != 0) + { + total_size += 1 + 1; + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageOfProp::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageOfProp::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageOfProp::GetClassData() const + { + return &_class_data_; + } + + void MessageOfProp::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageOfProp::MergeFrom(const MessageOfProp& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageOfProp) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_type() != 0) + { + _internal_set_type(from._internal_type()); + } + if (from._internal_x() != 0) + { + _internal_set_x(from._internal_x()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_facing_direction = from._internal_facing_direction(); + uint64_t raw_facing_direction; + memcpy(&raw_facing_direction, &tmp_facing_direction, sizeof(tmp_facing_direction)); + if (raw_facing_direction != 0) + { + _internal_set_facing_direction(from._internal_facing_direction()); + } + if (from._internal_y() != 0) + { + _internal_set_y(from._internal_y()); + } + if (from._internal_place() != 0) + { + _internal_set_place(from._internal_place()); + } + if (from._internal_guid() != 0) + { + _internal_set_guid(from._internal_guid()); + } + if (from._internal_size() != 0) + { + _internal_set_size(from._internal_size()); + } + if (from._internal_is_moving() != 0) + { + _internal_set_is_moving(from._internal_is_moving()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageOfProp::CopyFrom(const MessageOfProp& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageOfProp) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageOfProp::IsInitialized() const + { + return true; + } + + void MessageOfProp::InternalSwap(MessageOfProp* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MessageOfProp, is_moving_) + sizeof(MessageOfProp::is_moving_) - PROTOBUF_FIELD_OFFSET(MessageOfProp, type_)>( + reinterpret_cast(&type_), + reinterpret_cast(&other->type_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageOfProp::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[2] + ); + } + + // =================================================================== + + class MessageOfPickedProp::_Internal + { + public: + }; + + MessageOfPickedProp::MessageOfPickedProp(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageOfPickedProp) + } + MessageOfPickedProp::MessageOfPickedProp(const MessageOfPickedProp& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&type_, &from.type_, static_cast(reinterpret_cast(&y_) - reinterpret_cast(&type_)) + sizeof(y_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MessageOfPickedProp) + } + + inline void MessageOfPickedProp::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&type_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&y_) - reinterpret_cast(&type_)) + sizeof(y_)); + } + + MessageOfPickedProp::~MessageOfPickedProp() + { + // @@protoc_insertion_point(destructor:protobuf.MessageOfPickedProp) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageOfPickedProp::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MessageOfPickedProp::ArenaDtor(void* object) + { + MessageOfPickedProp* _this = reinterpret_cast(object); + (void)_this; + } + void MessageOfPickedProp::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageOfPickedProp::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageOfPickedProp::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageOfPickedProp) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&type_, 0, static_cast(reinterpret_cast(&y_) - reinterpret_cast(&type_)) + sizeof(y_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageOfPickedProp::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // .protobuf.PropType type = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_type(static_cast<::protobuf::PropType>(val)); + } + else + goto handle_unusual; + continue; + // int32 x = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int32 y = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) + { + y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double facing_direction = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 33)) + { + facing_direction_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // int64 mapping_id = 5; + case 5: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 40)) + { + mapping_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageOfPickedProp::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageOfPickedProp) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // .protobuf.PropType type = 1; + if (this->_internal_type() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 1, this->_internal_type(), target + ); + } + + // int32 x = 2; + if (this->_internal_x() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_x(), target); + } + + // int32 y = 3; + if (this->_internal_y() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_y(), target); + } + + // double facing_direction = 4; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_facing_direction = this->_internal_facing_direction(); + uint64_t raw_facing_direction; + memcpy(&raw_facing_direction, &tmp_facing_direction, sizeof(tmp_facing_direction)); + if (raw_facing_direction != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(4, this->_internal_facing_direction(), target); + } + + // int64 mapping_id = 5; + if (this->_internal_mapping_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(5, this->_internal_mapping_id(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageOfPickedProp) + return target; + } + + size_t MessageOfPickedProp::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageOfPickedProp) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // .protobuf.PropType type = 1; + if (this->_internal_type() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type()); + } + + // int32 x = 2; + if (this->_internal_x() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_x()); + } + + // double facing_direction = 4; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_facing_direction = this->_internal_facing_direction(); + uint64_t raw_facing_direction; + memcpy(&raw_facing_direction, &tmp_facing_direction, sizeof(tmp_facing_direction)); + if (raw_facing_direction != 0) + { + total_size += 1 + 8; + } + + // int64 mapping_id = 5; + if (this->_internal_mapping_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_mapping_id()); + } + + // int32 y = 3; + if (this->_internal_y() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_y()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageOfPickedProp::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageOfPickedProp::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageOfPickedProp::GetClassData() const + { + return &_class_data_; + } + + void MessageOfPickedProp::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageOfPickedProp::MergeFrom(const MessageOfPickedProp& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageOfPickedProp) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_type() != 0) + { + _internal_set_type(from._internal_type()); + } + if (from._internal_x() != 0) + { + _internal_set_x(from._internal_x()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_facing_direction = from._internal_facing_direction(); + uint64_t raw_facing_direction; + memcpy(&raw_facing_direction, &tmp_facing_direction, sizeof(tmp_facing_direction)); + if (raw_facing_direction != 0) + { + _internal_set_facing_direction(from._internal_facing_direction()); + } + if (from._internal_mapping_id() != 0) + { + _internal_set_mapping_id(from._internal_mapping_id()); + } + if (from._internal_y() != 0) + { + _internal_set_y(from._internal_y()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageOfPickedProp::CopyFrom(const MessageOfPickedProp& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageOfPickedProp) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageOfPickedProp::IsInitialized() const + { + return true; + } + + void MessageOfPickedProp::InternalSwap(MessageOfPickedProp* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MessageOfPickedProp, y_) + sizeof(MessageOfPickedProp::y_) - PROTOBUF_FIELD_OFFSET(MessageOfPickedProp, type_)>( + reinterpret_cast(&type_), + reinterpret_cast(&other->type_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageOfPickedProp::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[3] + ); + } + + // =================================================================== + + class MessageOfMap_Row::_Internal + { + public: + }; + + MessageOfMap_Row::MessageOfMap_Row(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned), + col_(arena) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageOfMap.Row) + } + MessageOfMap_Row::MessageOfMap_Row(const MessageOfMap_Row& from) : + ::PROTOBUF_NAMESPACE_ID::Message(), + col_(from.col_) + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + // @@protoc_insertion_point(copy_constructor:protobuf.MessageOfMap.Row) + } + + inline void MessageOfMap_Row::SharedCtor() + { + } + + MessageOfMap_Row::~MessageOfMap_Row() + { + // @@protoc_insertion_point(destructor:protobuf.MessageOfMap.Row) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageOfMap_Row::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MessageOfMap_Row::ArenaDtor(void* object) + { + MessageOfMap_Row* _this = reinterpret_cast(object); + (void)_this; + } + void MessageOfMap_Row::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageOfMap_Row::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageOfMap_Row::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageOfMap.Row) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + col_.Clear(); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageOfMap_Row::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // repeated .protobuf.PlaceType col = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 10)) + { + ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_col(), ptr, ctx); + CHK_(ptr); + } + else if (static_cast(tag) == 8) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_add_col(static_cast<::protobuf::PlaceType>(val)); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageOfMap_Row::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageOfMap.Row) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // repeated .protobuf.PlaceType col = 1; + { + int byte_size = _col_cached_byte_size_.load(std::memory_order_relaxed); + if (byte_size > 0) + { + target = stream->WriteEnumPacked( + 1, col_, byte_size, target + ); + } + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageOfMap.Row) + return target; + } + + size_t MessageOfMap_Row::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageOfMap.Row) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // repeated .protobuf.PlaceType col = 1; + { + size_t data_size = 0; + unsigned int count = static_cast(this->_internal_col_size()); + for (unsigned int i = 0; i < count; i++) + { + data_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize( + this->_internal_col(static_cast(i)) + ); + } + if (data_size > 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + static_cast(data_size) + ); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size); + _col_cached_byte_size_.store(cached_size, std::memory_order_relaxed); + total_size += data_size; + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageOfMap_Row::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageOfMap_Row::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageOfMap_Row::GetClassData() const + { + return &_class_data_; + } + + void MessageOfMap_Row::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageOfMap_Row::MergeFrom(const MessageOfMap_Row& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageOfMap.Row) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + col_.MergeFrom(from.col_); + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageOfMap_Row::CopyFrom(const MessageOfMap_Row& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageOfMap.Row) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageOfMap_Row::IsInitialized() const + { + return true; + } + + void MessageOfMap_Row::InternalSwap(MessageOfMap_Row* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + col_.InternalSwap(&other->col_); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageOfMap_Row::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[4] + ); + } + + // =================================================================== + + class MessageOfMap::_Internal + { + public: + }; + + MessageOfMap::MessageOfMap(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned), + row_(arena) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageOfMap) + } + MessageOfMap::MessageOfMap(const MessageOfMap& from) : + ::PROTOBUF_NAMESPACE_ID::Message(), + row_(from.row_) + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + // @@protoc_insertion_point(copy_constructor:protobuf.MessageOfMap) + } + + inline void MessageOfMap::SharedCtor() + { + } + + MessageOfMap::~MessageOfMap() + { + // @@protoc_insertion_point(destructor:protobuf.MessageOfMap) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageOfMap::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MessageOfMap::ArenaDtor(void* object) + { + MessageOfMap* _this = reinterpret_cast(object); + (void)_this; + } + void MessageOfMap::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageOfMap::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageOfMap::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageOfMap) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + row_.Clear(); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageOfMap::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // repeated .protobuf.MessageOfMap.Row row = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 18)) + { + ptr -= 1; + do + { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_row(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) + break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageOfMap::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageOfMap) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // repeated .protobuf.MessageOfMap.Row row = 2; + for (unsigned int i = 0, + n = static_cast(this->_internal_row_size()); + i < n; + i++) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(2, this->_internal_row(i), target, stream); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageOfMap) + return target; + } + + size_t MessageOfMap::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageOfMap) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // repeated .protobuf.MessageOfMap.Row row = 2; + total_size += 1UL * this->_internal_row_size(); + for (const auto& msg : this->row_) + { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageOfMap::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageOfMap::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageOfMap::GetClassData() const + { + return &_class_data_; + } + + void MessageOfMap::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageOfMap::MergeFrom(const MessageOfMap& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageOfMap) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + row_.MergeFrom(from.row_); + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageOfMap::CopyFrom(const MessageOfMap& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageOfMap) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageOfMap::IsInitialized() const + { + return true; + } + + void MessageOfMap::InternalSwap(MessageOfMap* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + row_.InternalSwap(&other->row_); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageOfMap::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[5] + ); + } + + // =================================================================== + + class MessageToClient::_Internal + { + public: + static const ::protobuf::MessageOfMap& map_massage(const MessageToClient* msg); + }; + + const ::protobuf::MessageOfMap& + MessageToClient::_Internal::map_massage(const MessageToClient* msg) + { + return *msg->map_massage_; + } + MessageToClient::MessageToClient(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned), + human_message_(arena), + butcher_message_(arena), + prop_message_(arena) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MessageToClient) + } + MessageToClient::MessageToClient(const MessageToClient& from) : + ::PROTOBUF_NAMESPACE_ID::Message(), + human_message_(from.human_message_), + butcher_message_(from.butcher_message_), + prop_message_(from.prop_message_) + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + if (from._internal_has_map_massage()) + { + map_massage_ = new ::protobuf::MessageOfMap(*from.map_massage_); + } + else + { + map_massage_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:protobuf.MessageToClient) + } + + inline void MessageToClient::SharedCtor() + { + map_massage_ = nullptr; + } + + MessageToClient::~MessageToClient() + { + // @@protoc_insertion_point(destructor:protobuf.MessageToClient) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MessageToClient::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + if (this != internal_default_instance()) + delete map_massage_; + } + + void MessageToClient::ArenaDtor(void* object) + { + MessageToClient* _this = reinterpret_cast(object); + (void)_this; + } + void MessageToClient::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MessageToClient::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MessageToClient::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MessageToClient) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + human_message_.Clear(); + butcher_message_.Clear(); + prop_message_.Clear(); + if (GetArenaForAllocation() == nullptr && map_massage_ != nullptr) + { + delete map_massage_; + } + map_massage_ = nullptr; + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MessageToClient::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // repeated .protobuf.MessageOfHuman human_message = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 10)) + { + ptr -= 1; + do + { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_human_message(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) + break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); + } + else + goto handle_unusual; + continue; + // repeated .protobuf.MessageOfButcher butcher_message = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 18)) + { + ptr -= 1; + do + { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_butcher_message(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) + break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); + } + else + goto handle_unusual; + continue; + // repeated .protobuf.MessageOfProp prop_message = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 26)) + { + ptr -= 1; + do + { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_prop_message(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) + break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); + } + else + goto handle_unusual; + continue; + // .protobuf.MessageOfMap map_massage = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 34)) + { + ptr = ctx->ParseMessage(_internal_mutable_map_massage(), ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MessageToClient::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MessageToClient) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // repeated .protobuf.MessageOfHuman human_message = 1; + for (unsigned int i = 0, + n = static_cast(this->_internal_human_message_size()); + i < n; + i++) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(1, this->_internal_human_message(i), target, stream); + } + + // repeated .protobuf.MessageOfButcher butcher_message = 2; + for (unsigned int i = 0, + n = static_cast(this->_internal_butcher_message_size()); + i < n; + i++) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(2, this->_internal_butcher_message(i), target, stream); + } + + // repeated .protobuf.MessageOfProp prop_message = 3; + for (unsigned int i = 0, + n = static_cast(this->_internal_prop_message_size()); + i < n; + i++) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(3, this->_internal_prop_message(i), target, stream); + } + + // .protobuf.MessageOfMap map_massage = 4; + if (this->_internal_has_map_massage()) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage( + 4, _Internal::map_massage(this), target, stream + ); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MessageToClient) + return target; + } + + size_t MessageToClient::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MessageToClient) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // repeated .protobuf.MessageOfHuman human_message = 1; + total_size += 1UL * this->_internal_human_message_size(); + for (const auto& msg : this->human_message_) + { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + // repeated .protobuf.MessageOfButcher butcher_message = 2; + total_size += 1UL * this->_internal_butcher_message_size(); + for (const auto& msg : this->butcher_message_) + { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + // repeated .protobuf.MessageOfProp prop_message = 3; + total_size += 1UL * this->_internal_prop_message_size(); + for (const auto& msg : this->prop_message_) + { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + // .protobuf.MessageOfMap map_massage = 4; + if (this->_internal_has_map_massage()) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( + *map_massage_ + ); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MessageToClient::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MessageToClient::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MessageToClient::GetClassData() const + { + return &_class_data_; + } + + void MessageToClient::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MessageToClient::MergeFrom(const MessageToClient& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MessageToClient) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + human_message_.MergeFrom(from.human_message_); + butcher_message_.MergeFrom(from.butcher_message_); + prop_message_.MergeFrom(from.prop_message_); + if (from._internal_has_map_massage()) + { + _internal_mutable_map_massage()->::protobuf::MessageOfMap::MergeFrom(from._internal_map_massage()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MessageToClient::CopyFrom(const MessageToClient& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MessageToClient) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MessageToClient::IsInitialized() const + { + return true; + } + + void MessageToClient::InternalSwap(MessageToClient* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + human_message_.InternalSwap(&other->human_message_); + butcher_message_.InternalSwap(&other->butcher_message_); + prop_message_.InternalSwap(&other->prop_message_); + swap(map_massage_, other->map_massage_); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MessageToClient::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[6] + ); + } + + // =================================================================== + + class MoveRes::_Internal + { + public: + }; + + MoveRes::MoveRes(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MoveRes) + } + MoveRes::MoveRes(const MoveRes& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&actual_speed_, &from.actual_speed_, static_cast(reinterpret_cast(&actual_angle_) - reinterpret_cast(&actual_speed_)) + sizeof(actual_angle_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MoveRes) + } + + inline void MoveRes::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&actual_speed_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&actual_angle_) - reinterpret_cast(&actual_speed_)) + sizeof(actual_angle_)); + } + + MoveRes::~MoveRes() + { + // @@protoc_insertion_point(destructor:protobuf.MoveRes) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MoveRes::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MoveRes::ArenaDtor(void* object) + { + MoveRes* _this = reinterpret_cast(object); + (void)_this; + } + void MoveRes::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MoveRes::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MoveRes::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MoveRes) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&actual_speed_, 0, static_cast(reinterpret_cast(&actual_angle_) - reinterpret_cast(&actual_speed_)) + sizeof(actual_angle_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MoveRes::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 actual_speed = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + actual_speed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double actual_angle = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 17)) + { + actual_angle_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MoveRes::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MoveRes) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 actual_speed = 1; + if (this->_internal_actual_speed() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_actual_speed(), target); + } + + // double actual_angle = 2; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_actual_angle = this->_internal_actual_angle(); + uint64_t raw_actual_angle; + memcpy(&raw_actual_angle, &tmp_actual_angle, sizeof(tmp_actual_angle)); + if (raw_actual_angle != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(2, this->_internal_actual_angle(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MoveRes) + return target; + } + + size_t MoveRes::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MoveRes) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // int64 actual_speed = 1; + if (this->_internal_actual_speed() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_actual_speed()); + } + + // double actual_angle = 2; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_actual_angle = this->_internal_actual_angle(); + uint64_t raw_actual_angle; + memcpy(&raw_actual_angle, &tmp_actual_angle, sizeof(tmp_actual_angle)); + if (raw_actual_angle != 0) + { + total_size += 1 + 8; + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MoveRes::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MoveRes::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MoveRes::GetClassData() const + { + return &_class_data_; + } + + void MoveRes::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MoveRes::MergeFrom(const MoveRes& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MoveRes) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_actual_speed() != 0) + { + _internal_set_actual_speed(from._internal_actual_speed()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_actual_angle = from._internal_actual_angle(); + uint64_t raw_actual_angle; + memcpy(&raw_actual_angle, &tmp_actual_angle, sizeof(tmp_actual_angle)); + if (raw_actual_angle != 0) + { + _internal_set_actual_angle(from._internal_actual_angle()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MoveRes::CopyFrom(const MoveRes& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MoveRes) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MoveRes::IsInitialized() const + { + return true; + } + + void MoveRes::InternalSwap(MoveRes* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MoveRes, actual_angle_) + sizeof(MoveRes::actual_angle_) - PROTOBUF_FIELD_OFFSET(MoveRes, actual_speed_)>( + reinterpret_cast(&actual_speed_), + reinterpret_cast(&other->actual_speed_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MoveRes::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[7] + ); + } + + // =================================================================== + + class BoolRes::_Internal + { + public: + }; + + BoolRes::BoolRes(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.BoolRes) + } + BoolRes::BoolRes(const BoolRes& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + act_success_ = from.act_success_; + // @@protoc_insertion_point(copy_constructor:protobuf.BoolRes) + } + + inline void BoolRes::SharedCtor() + { + act_success_ = false; + } + + BoolRes::~BoolRes() + { + // @@protoc_insertion_point(destructor:protobuf.BoolRes) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void BoolRes::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void BoolRes::ArenaDtor(void* object) + { + BoolRes* _this = reinterpret_cast(object); + (void)_this; + } + void BoolRes::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void BoolRes::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void BoolRes::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.BoolRes) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + act_success_ = false; + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* BoolRes::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // bool act_success = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + act_success_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* BoolRes::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.BoolRes) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // bool act_success = 1; + if (this->_internal_act_success() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_act_success(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.BoolRes) + return target; + } + + size_t BoolRes::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.BoolRes) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // bool act_success = 1; + if (this->_internal_act_success() != 0) + { + total_size += 1 + 1; + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BoolRes::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + BoolRes::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* BoolRes::GetClassData() const + { + return &_class_data_; + } + + void BoolRes::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void BoolRes::MergeFrom(const BoolRes& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.BoolRes) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_act_success() != 0) + { + _internal_set_act_success(from._internal_act_success()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void BoolRes::CopyFrom(const BoolRes& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.BoolRes) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool BoolRes::IsInitialized() const + { + return true; + } + + void BoolRes::InternalSwap(BoolRes* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + swap(act_success_, other->act_success_); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata BoolRes::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[8] + ); + } + + // =================================================================== + + class MsgRes::_Internal + { + public: + }; + + MsgRes::MsgRes(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MsgRes) + } + MsgRes::MsgRes(const MsgRes& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + message_received_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + message_received_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation()); +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (!from._internal_message_received().empty()) + { + message_received_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_message_received(), GetArenaForAllocation()); + } + ::memcpy(&from_player_id_, &from.from_player_id_, static_cast(reinterpret_cast(&have_message_) - reinterpret_cast(&from_player_id_)) + sizeof(have_message_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MsgRes) + } + + inline void MsgRes::SharedCtor() + { + message_received_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + message_received_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation()); +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&from_player_id_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&have_message_) - reinterpret_cast(&from_player_id_)) + sizeof(have_message_)); + } + + MsgRes::~MsgRes() + { + // @@protoc_insertion_point(destructor:protobuf.MsgRes) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MsgRes::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + message_received_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); + } + + void MsgRes::ArenaDtor(void* object) + { + MsgRes* _this = reinterpret_cast(object); + (void)_this; + } + void MsgRes::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MsgRes::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MsgRes::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MsgRes) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + message_received_.ClearToEmpty(); + ::memset(&from_player_id_, 0, static_cast(reinterpret_cast(&have_message_) - reinterpret_cast(&from_player_id_)) + sizeof(have_message_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MsgRes::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // bool have_message = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + have_message_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int64 from_player_id = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + from_player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // string message_received = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 26)) + { + auto str = _internal_mutable_message_received(); + ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); + CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "protobuf.MsgRes.message_received")); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MsgRes::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MsgRes) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // bool have_message = 1; + if (this->_internal_have_message() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_have_message(), target); + } + + // int64 from_player_id = 2; + if (this->_internal_from_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(2, this->_internal_from_player_id(), target); + } + + // string message_received = 3; + if (!this->_internal_message_received().empty()) + { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + this->_internal_message_received().data(), static_cast(this->_internal_message_received().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "protobuf.MsgRes.message_received" + ); + target = stream->WriteStringMaybeAliased( + 3, this->_internal_message_received(), target + ); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MsgRes) + return target; + } + + size_t MsgRes::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MsgRes) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // string message_received = 3; + if (!this->_internal_message_received().empty()) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + this->_internal_message_received() + ); + } + + // int64 from_player_id = 2; + if (this->_internal_from_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_from_player_id()); + } + + // bool have_message = 1; + if (this->_internal_have_message() != 0) + { + total_size += 1 + 1; + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MsgRes::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MsgRes::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MsgRes::GetClassData() const + { + return &_class_data_; + } + + void MsgRes::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MsgRes::MergeFrom(const MsgRes& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MsgRes) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (!from._internal_message_received().empty()) + { + _internal_set_message_received(from._internal_message_received()); + } + if (from._internal_from_player_id() != 0) + { + _internal_set_from_player_id(from._internal_from_player_id()); + } + if (from._internal_have_message() != 0) + { + _internal_set_have_message(from._internal_have_message()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MsgRes::CopyFrom(const MsgRes& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MsgRes) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MsgRes::IsInitialized() const + { + return true; + } + + void MsgRes::InternalSwap(MsgRes* other) + { + using std::swap; + auto* lhs_arena = GetArenaForAllocation(); + auto* rhs_arena = other->GetArenaForAllocation(); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap( + &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), + &message_received_, + lhs_arena, + &other->message_received_, + rhs_arena + ); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MsgRes, have_message_) + sizeof(MsgRes::have_message_) - PROTOBUF_FIELD_OFFSET(MsgRes, from_player_id_)>( + reinterpret_cast(&from_player_id_), + reinterpret_cast(&other->from_player_id_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MsgRes::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Clients_2eproto_getter, &descriptor_table_Message2Clients_2eproto_once, file_level_metadata_Message2Clients_2eproto[9] + ); + } + + // @@protoc_insertion_point(namespace_scope) +} // namespace protobuf +PROTOBUF_NAMESPACE_OPEN +template<> +PROTOBUF_NOINLINE ::protobuf::MessageOfHuman* Arena::CreateMaybeMessage<::protobuf::MessageOfHuman>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageOfHuman>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MessageOfButcher* Arena::CreateMaybeMessage<::protobuf::MessageOfButcher>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageOfButcher>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MessageOfProp* Arena::CreateMaybeMessage<::protobuf::MessageOfProp>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageOfProp>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MessageOfPickedProp* Arena::CreateMaybeMessage<::protobuf::MessageOfPickedProp>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageOfPickedProp>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MessageOfMap_Row* Arena::CreateMaybeMessage<::protobuf::MessageOfMap_Row>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageOfMap_Row>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MessageOfMap* Arena::CreateMaybeMessage<::protobuf::MessageOfMap>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageOfMap>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MessageToClient* Arena::CreateMaybeMessage<::protobuf::MessageToClient>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MessageToClient>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MoveRes* Arena::CreateMaybeMessage<::protobuf::MoveRes>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MoveRes>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::BoolRes* Arena::CreateMaybeMessage<::protobuf::BoolRes>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::BoolRes>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MsgRes* Arena::CreateMaybeMessage<::protobuf::MsgRes>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MsgRes>(arena); +} +PROTOBUF_NAMESPACE_CLOSE + +// @@protoc_insertion_point(global_scope) +#include diff --git a/CAPI/proto/Message2Clients.pb.h b/CAPI/proto/Message2Clients.pb.h new file mode 100644 index 0000000..d7e690b --- /dev/null +++ b/CAPI/proto/Message2Clients.pb.h @@ -0,0 +1,4327 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Message2Clients.proto + +#ifndef GOOGLE_PROTOBUF_INCLUDED_Message2Clients_2eproto +#define GOOGLE_PROTOBUF_INCLUDED_Message2Clients_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3019000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3019004 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +#include "MessageType.pb.h" +#include "Message2Server.pb.h" +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_Message2Clients_2eproto +PROTOBUF_NAMESPACE_OPEN +namespace internal +{ + class AnyMetadata; +} // namespace internal +PROTOBUF_NAMESPACE_CLOSE + +// Internal implementation detail -- do not use these members. +struct TableStruct_Message2Clients_2eproto +{ + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[10] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; + static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; + static const uint32_t offsets[]; +}; +extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_Message2Clients_2eproto; +namespace protobuf +{ + class BoolRes; + struct BoolResDefaultTypeInternal; + extern BoolResDefaultTypeInternal _BoolRes_default_instance_; + class MessageOfButcher; + struct MessageOfButcherDefaultTypeInternal; + extern MessageOfButcherDefaultTypeInternal _MessageOfButcher_default_instance_; + class MessageOfHuman; + struct MessageOfHumanDefaultTypeInternal; + extern MessageOfHumanDefaultTypeInternal _MessageOfHuman_default_instance_; + class MessageOfMap; + struct MessageOfMapDefaultTypeInternal; + extern MessageOfMapDefaultTypeInternal _MessageOfMap_default_instance_; + class MessageOfMap_Row; + struct MessageOfMap_RowDefaultTypeInternal; + extern MessageOfMap_RowDefaultTypeInternal _MessageOfMap_Row_default_instance_; + class MessageOfPickedProp; + struct MessageOfPickedPropDefaultTypeInternal; + extern MessageOfPickedPropDefaultTypeInternal _MessageOfPickedProp_default_instance_; + class MessageOfProp; + struct MessageOfPropDefaultTypeInternal; + extern MessageOfPropDefaultTypeInternal _MessageOfProp_default_instance_; + class MessageToClient; + struct MessageToClientDefaultTypeInternal; + extern MessageToClientDefaultTypeInternal _MessageToClient_default_instance_; + class MoveRes; + struct MoveResDefaultTypeInternal; + extern MoveResDefaultTypeInternal _MoveRes_default_instance_; + class MsgRes; + struct MsgResDefaultTypeInternal; + extern MsgResDefaultTypeInternal _MsgRes_default_instance_; +} // namespace protobuf +PROTOBUF_NAMESPACE_OPEN +template<> +::protobuf::BoolRes* Arena::CreateMaybeMessage<::protobuf::BoolRes>(Arena*); +template<> +::protobuf::MessageOfButcher* Arena::CreateMaybeMessage<::protobuf::MessageOfButcher>(Arena*); +template<> +::protobuf::MessageOfHuman* Arena::CreateMaybeMessage<::protobuf::MessageOfHuman>(Arena*); +template<> +::protobuf::MessageOfMap* Arena::CreateMaybeMessage<::protobuf::MessageOfMap>(Arena*); +template<> +::protobuf::MessageOfMap_Row* Arena::CreateMaybeMessage<::protobuf::MessageOfMap_Row>(Arena*); +template<> +::protobuf::MessageOfPickedProp* Arena::CreateMaybeMessage<::protobuf::MessageOfPickedProp>(Arena*); +template<> +::protobuf::MessageOfProp* Arena::CreateMaybeMessage<::protobuf::MessageOfProp>(Arena*); +template<> +::protobuf::MessageToClient* Arena::CreateMaybeMessage<::protobuf::MessageToClient>(Arena*); +template<> +::protobuf::MoveRes* Arena::CreateMaybeMessage<::protobuf::MoveRes>(Arena*); +template<> +::protobuf::MsgRes* Arena::CreateMaybeMessage<::protobuf::MsgRes>(Arena*); +PROTOBUF_NAMESPACE_CLOSE +namespace protobuf +{ + + // =================================================================== + + class MessageOfHuman final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageOfHuman) */ + { + public: + inline MessageOfHuman() : + MessageOfHuman(nullptr) + { + } + ~MessageOfHuman() override; + explicit constexpr MessageOfHuman(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageOfHuman(const MessageOfHuman& from); + MessageOfHuman(MessageOfHuman&& from) noexcept + : + MessageOfHuman() + { + *this = ::std::move(from); + } + + inline MessageOfHuman& operator=(const MessageOfHuman& from) + { + CopyFrom(from); + return *this; + } + inline MessageOfHuman& operator=(MessageOfHuman&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageOfHuman& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageOfHuman* internal_default_instance() + { + return reinterpret_cast( + &_MessageOfHuman_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 0; + + friend void swap(MessageOfHuman& a, MessageOfHuman& b) + { + a.Swap(&b); + } + inline void Swap(MessageOfHuman* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageOfHuman* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageOfHuman* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageOfHuman& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageOfHuman& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageOfHuman* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageOfHuman"; + } + + protected: + explicit MessageOfHuman(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kBuffFieldNumber = 17, + kXFieldNumber = 1, + kYFieldNumber = 2, + kSpeedFieldNumber = 3, + kLifeFieldNumber = 4, + kTimeUntilSkillAvailableFieldNumber = 6, + kHangedTimeFieldNumber = 5, + kPlaceFieldNumber = 7, + kPropFieldNumber = 8, + kHumanTypeFieldNumber = 9, + kGuidFieldNumber = 10, + kChairTimeFieldNumber = 12, + kOnChairFieldNumber = 11, + kOnGroundFieldNumber = 13, + kViewRangeFieldNumber = 16, + kGroundTimeFieldNumber = 14, + kPlayerIdFieldNumber = 15, + }; + // repeated .protobuf.HumanBuffType buff = 17; + int buff_size() const; + + private: + int _internal_buff_size() const; + + public: + void clear_buff(); + + private: + ::protobuf::HumanBuffType _internal_buff(int index) const; + void _internal_add_buff(::protobuf::HumanBuffType value); + ::PROTOBUF_NAMESPACE_ID::RepeatedField* _internal_mutable_buff(); + + public: + ::protobuf::HumanBuffType buff(int index) const; + void set_buff(int index, ::protobuf::HumanBuffType value); + void add_buff(::protobuf::HumanBuffType value); + const ::PROTOBUF_NAMESPACE_ID::RepeatedField& buff() const; + ::PROTOBUF_NAMESPACE_ID::RepeatedField* mutable_buff(); + + // int32 x = 1; + void clear_x(); + int32_t x() const; + void set_x(int32_t value); + + private: + int32_t _internal_x() const; + void _internal_set_x(int32_t value); + + public: + // int32 y = 2; + void clear_y(); + int32_t y() const; + void set_y(int32_t value); + + private: + int32_t _internal_y() const; + void _internal_set_y(int32_t value); + + public: + // int32 speed = 3; + void clear_speed(); + int32_t speed() const; + void set_speed(int32_t value); + + private: + int32_t _internal_speed() const; + void _internal_set_speed(int32_t value); + + public: + // int32 life = 4; + void clear_life(); + int32_t life() const; + void set_life(int32_t value); + + private: + int32_t _internal_life() const; + void _internal_set_life(int32_t value); + + public: + // double time_until_skill_available = 6; + void clear_time_until_skill_available(); + double time_until_skill_available() const; + void set_time_until_skill_available(double value); + + private: + double _internal_time_until_skill_available() const; + void _internal_set_time_until_skill_available(double value); + + public: + // int32 hanged_time = 5; + void clear_hanged_time(); + int32_t hanged_time() const; + void set_hanged_time(int32_t value); + + private: + int32_t _internal_hanged_time() const; + void _internal_set_hanged_time(int32_t value); + + public: + // .protobuf.PlaceType place = 7; + void clear_place(); + ::protobuf::PlaceType place() const; + void set_place(::protobuf::PlaceType value); + + private: + ::protobuf::PlaceType _internal_place() const; + void _internal_set_place(::protobuf::PlaceType value); + + public: + // .protobuf.PropType prop = 8; + void clear_prop(); + ::protobuf::PropType prop() const; + void set_prop(::protobuf::PropType value); + + private: + ::protobuf::PropType _internal_prop() const; + void _internal_set_prop(::protobuf::PropType value); + + public: + // .protobuf.HumanType human_type = 9; + void clear_human_type(); + ::protobuf::HumanType human_type() const; + void set_human_type(::protobuf::HumanType value); + + private: + ::protobuf::HumanType _internal_human_type() const; + void _internal_set_human_type(::protobuf::HumanType value); + + public: + // int64 guid = 10; + void clear_guid(); + int64_t guid() const; + void set_guid(int64_t value); + + private: + int64_t _internal_guid() const; + void _internal_set_guid(int64_t value); + + public: + // double chair_time = 12; + void clear_chair_time(); + double chair_time() const; + void set_chair_time(double value); + + private: + double _internal_chair_time() const; + void _internal_set_chair_time(double value); + + public: + // bool on_chair = 11; + void clear_on_chair(); + bool on_chair() const; + void set_on_chair(bool value); + + private: + bool _internal_on_chair() const; + void _internal_set_on_chair(bool value); + + public: + // bool on_ground = 13; + void clear_on_ground(); + bool on_ground() const; + void set_on_ground(bool value); + + private: + bool _internal_on_ground() const; + void _internal_set_on_ground(bool value); + + public: + // int32 view_range = 16; + void clear_view_range(); + int32_t view_range() const; + void set_view_range(int32_t value); + + private: + int32_t _internal_view_range() const; + void _internal_set_view_range(int32_t value); + + public: + // double ground_time = 14; + void clear_ground_time(); + double ground_time() const; + void set_ground_time(double value); + + private: + double _internal_ground_time() const; + void _internal_set_ground_time(double value); + + public: + // int64 player_id = 15; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MessageOfHuman) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedField buff_; + mutable std::atomic _buff_cached_byte_size_; + int32_t x_; + int32_t y_; + int32_t speed_; + int32_t life_; + double time_until_skill_available_; + int32_t hanged_time_; + int place_; + int prop_; + int human_type_; + int64_t guid_; + double chair_time_; + bool on_chair_; + bool on_ground_; + int32_t view_range_; + double ground_time_; + int64_t player_id_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MessageOfButcher final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageOfButcher) */ + { + public: + inline MessageOfButcher() : + MessageOfButcher(nullptr) + { + } + ~MessageOfButcher() override; + explicit constexpr MessageOfButcher(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageOfButcher(const MessageOfButcher& from); + MessageOfButcher(MessageOfButcher&& from) noexcept + : + MessageOfButcher() + { + *this = ::std::move(from); + } + + inline MessageOfButcher& operator=(const MessageOfButcher& from) + { + CopyFrom(from); + return *this; + } + inline MessageOfButcher& operator=(MessageOfButcher&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageOfButcher& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageOfButcher* internal_default_instance() + { + return reinterpret_cast( + &_MessageOfButcher_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 1; + + friend void swap(MessageOfButcher& a, MessageOfButcher& b) + { + a.Swap(&b); + } + inline void Swap(MessageOfButcher* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageOfButcher* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageOfButcher* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageOfButcher& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageOfButcher& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageOfButcher* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageOfButcher"; + } + + protected: + explicit MessageOfButcher(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kBuffFieldNumber = 13, + kXFieldNumber = 1, + kYFieldNumber = 2, + kSpeedFieldNumber = 3, + kDamageFieldNumber = 4, + kTimeUntilSkillAvailableFieldNumber = 5, + kPlaceFieldNumber = 6, + kPropFieldNumber = 7, + kGuidFieldNumber = 9, + kButcherTypeFieldNumber = 8, + kMovableFieldNumber = 10, + kPlayerIDFieldNumber = 11, + kViewRangeFieldNumber = 12, + }; + // repeated .protobuf.ButcherBuffType buff = 13; + int buff_size() const; + + private: + int _internal_buff_size() const; + + public: + void clear_buff(); + + private: + ::protobuf::ButcherBuffType _internal_buff(int index) const; + void _internal_add_buff(::protobuf::ButcherBuffType value); + ::PROTOBUF_NAMESPACE_ID::RepeatedField* _internal_mutable_buff(); + + public: + ::protobuf::ButcherBuffType buff(int index) const; + void set_buff(int index, ::protobuf::ButcherBuffType value); + void add_buff(::protobuf::ButcherBuffType value); + const ::PROTOBUF_NAMESPACE_ID::RepeatedField& buff() const; + ::PROTOBUF_NAMESPACE_ID::RepeatedField* mutable_buff(); + + // int32 x = 1; + void clear_x(); + int32_t x() const; + void set_x(int32_t value); + + private: + int32_t _internal_x() const; + void _internal_set_x(int32_t value); + + public: + // int32 y = 2; + void clear_y(); + int32_t y() const; + void set_y(int32_t value); + + private: + int32_t _internal_y() const; + void _internal_set_y(int32_t value); + + public: + // int32 speed = 3; + void clear_speed(); + int32_t speed() const; + void set_speed(int32_t value); + + private: + int32_t _internal_speed() const; + void _internal_set_speed(int32_t value); + + public: + // int32 damage = 4; + void clear_damage(); + int32_t damage() const; + void set_damage(int32_t value); + + private: + int32_t _internal_damage() const; + void _internal_set_damage(int32_t value); + + public: + // double time_until_skill_available = 5; + void clear_time_until_skill_available(); + double time_until_skill_available() const; + void set_time_until_skill_available(double value); + + private: + double _internal_time_until_skill_available() const; + void _internal_set_time_until_skill_available(double value); + + public: + // .protobuf.PlaceType place = 6; + void clear_place(); + ::protobuf::PlaceType place() const; + void set_place(::protobuf::PlaceType value); + + private: + ::protobuf::PlaceType _internal_place() const; + void _internal_set_place(::protobuf::PlaceType value); + + public: + // .protobuf.PropType prop = 7; + void clear_prop(); + ::protobuf::PropType prop() const; + void set_prop(::protobuf::PropType value); + + private: + ::protobuf::PropType _internal_prop() const; + void _internal_set_prop(::protobuf::PropType value); + + public: + // int64 guid = 9; + void clear_guid(); + int64_t guid() const; + void set_guid(int64_t value); + + private: + int64_t _internal_guid() const; + void _internal_set_guid(int64_t value); + + public: + // .protobuf.ButcherType butcher_type = 8; + void clear_butcher_type(); + ::protobuf::ButcherType butcher_type() const; + void set_butcher_type(::protobuf::ButcherType value); + + private: + ::protobuf::ButcherType _internal_butcher_type() const; + void _internal_set_butcher_type(::protobuf::ButcherType value); + + public: + // bool movable = 10; + void clear_movable(); + bool movable() const; + void set_movable(bool value); + + private: + bool _internal_movable() const; + void _internal_set_movable(bool value); + + public: + // int64 playerID = 11; + void clear_playerid(); + int64_t playerid() const; + void set_playerid(int64_t value); + + private: + int64_t _internal_playerid() const; + void _internal_set_playerid(int64_t value); + + public: + // int32 view_range = 12; + void clear_view_range(); + int32_t view_range() const; + void set_view_range(int32_t value); + + private: + int32_t _internal_view_range() const; + void _internal_set_view_range(int32_t value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MessageOfButcher) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedField buff_; + mutable std::atomic _buff_cached_byte_size_; + int32_t x_; + int32_t y_; + int32_t speed_; + int32_t damage_; + double time_until_skill_available_; + int place_; + int prop_; + int64_t guid_; + int butcher_type_; + bool movable_; + int64_t playerid_; + int32_t view_range_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MessageOfProp final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageOfProp) */ + { + public: + inline MessageOfProp() : + MessageOfProp(nullptr) + { + } + ~MessageOfProp() override; + explicit constexpr MessageOfProp(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageOfProp(const MessageOfProp& from); + MessageOfProp(MessageOfProp&& from) noexcept + : + MessageOfProp() + { + *this = ::std::move(from); + } + + inline MessageOfProp& operator=(const MessageOfProp& from) + { + CopyFrom(from); + return *this; + } + inline MessageOfProp& operator=(MessageOfProp&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageOfProp& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageOfProp* internal_default_instance() + { + return reinterpret_cast( + &_MessageOfProp_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 2; + + friend void swap(MessageOfProp& a, MessageOfProp& b) + { + a.Swap(&b); + } + inline void Swap(MessageOfProp* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageOfProp* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageOfProp* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageOfProp& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageOfProp& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageOfProp* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageOfProp"; + } + + protected: + explicit MessageOfProp(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kTypeFieldNumber = 1, + kXFieldNumber = 2, + kFacingDirectionFieldNumber = 4, + kYFieldNumber = 3, + kPlaceFieldNumber = 6, + kGuidFieldNumber = 5, + kSizeFieldNumber = 7, + kIsMovingFieldNumber = 8, + }; + // .protobuf.PropType type = 1; + void clear_type(); + ::protobuf::PropType type() const; + void set_type(::protobuf::PropType value); + + private: + ::protobuf::PropType _internal_type() const; + void _internal_set_type(::protobuf::PropType value); + + public: + // int32 x = 2; + void clear_x(); + int32_t x() const; + void set_x(int32_t value); + + private: + int32_t _internal_x() const; + void _internal_set_x(int32_t value); + + public: + // double facing_direction = 4; + void clear_facing_direction(); + double facing_direction() const; + void set_facing_direction(double value); + + private: + double _internal_facing_direction() const; + void _internal_set_facing_direction(double value); + + public: + // int32 y = 3; + void clear_y(); + int32_t y() const; + void set_y(int32_t value); + + private: + int32_t _internal_y() const; + void _internal_set_y(int32_t value); + + public: + // .protobuf.PlaceType place = 6; + void clear_place(); + ::protobuf::PlaceType place() const; + void set_place(::protobuf::PlaceType value); + + private: + ::protobuf::PlaceType _internal_place() const; + void _internal_set_place(::protobuf::PlaceType value); + + public: + // int64 guid = 5; + void clear_guid(); + int64_t guid() const; + void set_guid(int64_t value); + + private: + int64_t _internal_guid() const; + void _internal_set_guid(int64_t value); + + public: + // int32 size = 7; + void clear_size(); + int32_t size() const; + void set_size(int32_t value); + + private: + int32_t _internal_size() const; + void _internal_set_size(int32_t value); + + public: + // bool is_moving = 8; + void clear_is_moving(); + bool is_moving() const; + void set_is_moving(bool value); + + private: + bool _internal_is_moving() const; + void _internal_set_is_moving(bool value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MessageOfProp) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int type_; + int32_t x_; + double facing_direction_; + int32_t y_; + int place_; + int64_t guid_; + int32_t size_; + bool is_moving_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MessageOfPickedProp final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageOfPickedProp) */ + { + public: + inline MessageOfPickedProp() : + MessageOfPickedProp(nullptr) + { + } + ~MessageOfPickedProp() override; + explicit constexpr MessageOfPickedProp(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageOfPickedProp(const MessageOfPickedProp& from); + MessageOfPickedProp(MessageOfPickedProp&& from) noexcept + : + MessageOfPickedProp() + { + *this = ::std::move(from); + } + + inline MessageOfPickedProp& operator=(const MessageOfPickedProp& from) + { + CopyFrom(from); + return *this; + } + inline MessageOfPickedProp& operator=(MessageOfPickedProp&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageOfPickedProp& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageOfPickedProp* internal_default_instance() + { + return reinterpret_cast( + &_MessageOfPickedProp_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 3; + + friend void swap(MessageOfPickedProp& a, MessageOfPickedProp& b) + { + a.Swap(&b); + } + inline void Swap(MessageOfPickedProp* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageOfPickedProp* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageOfPickedProp* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageOfPickedProp& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageOfPickedProp& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageOfPickedProp* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageOfPickedProp"; + } + + protected: + explicit MessageOfPickedProp(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kTypeFieldNumber = 1, + kXFieldNumber = 2, + kFacingDirectionFieldNumber = 4, + kMappingIdFieldNumber = 5, + kYFieldNumber = 3, + }; + // .protobuf.PropType type = 1; + void clear_type(); + ::protobuf::PropType type() const; + void set_type(::protobuf::PropType value); + + private: + ::protobuf::PropType _internal_type() const; + void _internal_set_type(::protobuf::PropType value); + + public: + // int32 x = 2; + void clear_x(); + int32_t x() const; + void set_x(int32_t value); + + private: + int32_t _internal_x() const; + void _internal_set_x(int32_t value); + + public: + // double facing_direction = 4; + void clear_facing_direction(); + double facing_direction() const; + void set_facing_direction(double value); + + private: + double _internal_facing_direction() const; + void _internal_set_facing_direction(double value); + + public: + // int64 mapping_id = 5; + void clear_mapping_id(); + int64_t mapping_id() const; + void set_mapping_id(int64_t value); + + private: + int64_t _internal_mapping_id() const; + void _internal_set_mapping_id(int64_t value); + + public: + // int32 y = 3; + void clear_y(); + int32_t y() const; + void set_y(int32_t value); + + private: + int32_t _internal_y() const; + void _internal_set_y(int32_t value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MessageOfPickedProp) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int type_; + int32_t x_; + double facing_direction_; + int64_t mapping_id_; + int32_t y_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MessageOfMap_Row final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageOfMap.Row) */ + { + public: + inline MessageOfMap_Row() : + MessageOfMap_Row(nullptr) + { + } + ~MessageOfMap_Row() override; + explicit constexpr MessageOfMap_Row(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageOfMap_Row(const MessageOfMap_Row& from); + MessageOfMap_Row(MessageOfMap_Row&& from) noexcept + : + MessageOfMap_Row() + { + *this = ::std::move(from); + } + + inline MessageOfMap_Row& operator=(const MessageOfMap_Row& from) + { + CopyFrom(from); + return *this; + } + inline MessageOfMap_Row& operator=(MessageOfMap_Row&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageOfMap_Row& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageOfMap_Row* internal_default_instance() + { + return reinterpret_cast( + &_MessageOfMap_Row_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 4; + + friend void swap(MessageOfMap_Row& a, MessageOfMap_Row& b) + { + a.Swap(&b); + } + inline void Swap(MessageOfMap_Row* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageOfMap_Row* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageOfMap_Row* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageOfMap_Row& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageOfMap_Row& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageOfMap_Row* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageOfMap.Row"; + } + + protected: + explicit MessageOfMap_Row(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kColFieldNumber = 1, + }; + // repeated .protobuf.PlaceType col = 1; + int col_size() const; + + private: + int _internal_col_size() const; + + public: + void clear_col(); + + private: + ::protobuf::PlaceType _internal_col(int index) const; + void _internal_add_col(::protobuf::PlaceType value); + ::PROTOBUF_NAMESPACE_ID::RepeatedField* _internal_mutable_col(); + + public: + ::protobuf::PlaceType col(int index) const; + void set_col(int index, ::protobuf::PlaceType value); + void add_col(::protobuf::PlaceType value); + const ::PROTOBUF_NAMESPACE_ID::RepeatedField& col() const; + ::PROTOBUF_NAMESPACE_ID::RepeatedField* mutable_col(); + + // @@protoc_insertion_point(class_scope:protobuf.MessageOfMap.Row) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedField col_; + mutable std::atomic _col_cached_byte_size_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MessageOfMap final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageOfMap) */ + { + public: + inline MessageOfMap() : + MessageOfMap(nullptr) + { + } + ~MessageOfMap() override; + explicit constexpr MessageOfMap(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageOfMap(const MessageOfMap& from); + MessageOfMap(MessageOfMap&& from) noexcept + : + MessageOfMap() + { + *this = ::std::move(from); + } + + inline MessageOfMap& operator=(const MessageOfMap& from) + { + CopyFrom(from); + return *this; + } + inline MessageOfMap& operator=(MessageOfMap&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageOfMap& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageOfMap* internal_default_instance() + { + return reinterpret_cast( + &_MessageOfMap_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 5; + + friend void swap(MessageOfMap& a, MessageOfMap& b) + { + a.Swap(&b); + } + inline void Swap(MessageOfMap* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageOfMap* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageOfMap* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageOfMap& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageOfMap& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageOfMap* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageOfMap"; + } + + protected: + explicit MessageOfMap(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + typedef MessageOfMap_Row Row; + + // accessors ------------------------------------------------------- + + enum : int + { + kRowFieldNumber = 2, + }; + // repeated .protobuf.MessageOfMap.Row row = 2; + int row_size() const; + + private: + int _internal_row_size() const; + + public: + void clear_row(); + ::protobuf::MessageOfMap_Row* mutable_row(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfMap_Row>* + mutable_row(); + + private: + const ::protobuf::MessageOfMap_Row& _internal_row(int index) const; + ::protobuf::MessageOfMap_Row* _internal_add_row(); + + public: + const ::protobuf::MessageOfMap_Row& row(int index) const; + ::protobuf::MessageOfMap_Row* add_row(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfMap_Row>& + row() const; + + // @@protoc_insertion_point(class_scope:protobuf.MessageOfMap) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfMap_Row> row_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MessageToClient final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MessageToClient) */ + { + public: + inline MessageToClient() : + MessageToClient(nullptr) + { + } + ~MessageToClient() override; + explicit constexpr MessageToClient(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MessageToClient(const MessageToClient& from); + MessageToClient(MessageToClient&& from) noexcept + : + MessageToClient() + { + *this = ::std::move(from); + } + + inline MessageToClient& operator=(const MessageToClient& from) + { + CopyFrom(from); + return *this; + } + inline MessageToClient& operator=(MessageToClient&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MessageToClient& default_instance() + { + return *internal_default_instance(); + } + static inline const MessageToClient* internal_default_instance() + { + return reinterpret_cast( + &_MessageToClient_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 6; + + friend void swap(MessageToClient& a, MessageToClient& b) + { + a.Swap(&b); + } + inline void Swap(MessageToClient* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MessageToClient* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MessageToClient* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MessageToClient& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MessageToClient& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MessageToClient* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MessageToClient"; + } + + protected: + explicit MessageToClient(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kHumanMessageFieldNumber = 1, + kButcherMessageFieldNumber = 2, + kPropMessageFieldNumber = 3, + kMapMassageFieldNumber = 4, + }; + // repeated .protobuf.MessageOfHuman human_message = 1; + int human_message_size() const; + + private: + int _internal_human_message_size() const; + + public: + void clear_human_message(); + ::protobuf::MessageOfHuman* mutable_human_message(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfHuman>* + mutable_human_message(); + + private: + const ::protobuf::MessageOfHuman& _internal_human_message(int index) const; + ::protobuf::MessageOfHuman* _internal_add_human_message(); + + public: + const ::protobuf::MessageOfHuman& human_message(int index) const; + ::protobuf::MessageOfHuman* add_human_message(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfHuman>& + human_message() const; + + // repeated .protobuf.MessageOfButcher butcher_message = 2; + int butcher_message_size() const; + + private: + int _internal_butcher_message_size() const; + + public: + void clear_butcher_message(); + ::protobuf::MessageOfButcher* mutable_butcher_message(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfButcher>* + mutable_butcher_message(); + + private: + const ::protobuf::MessageOfButcher& _internal_butcher_message(int index) const; + ::protobuf::MessageOfButcher* _internal_add_butcher_message(); + + public: + const ::protobuf::MessageOfButcher& butcher_message(int index) const; + ::protobuf::MessageOfButcher* add_butcher_message(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfButcher>& + butcher_message() const; + + // repeated .protobuf.MessageOfProp prop_message = 3; + int prop_message_size() const; + + private: + int _internal_prop_message_size() const; + + public: + void clear_prop_message(); + ::protobuf::MessageOfProp* mutable_prop_message(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfProp>* + mutable_prop_message(); + + private: + const ::protobuf::MessageOfProp& _internal_prop_message(int index) const; + ::protobuf::MessageOfProp* _internal_add_prop_message(); + + public: + const ::protobuf::MessageOfProp& prop_message(int index) const; + ::protobuf::MessageOfProp* add_prop_message(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfProp>& + prop_message() const; + + // .protobuf.MessageOfMap map_massage = 4; + bool has_map_massage() const; + + private: + bool _internal_has_map_massage() const; + + public: + void clear_map_massage(); + const ::protobuf::MessageOfMap& map_massage() const; + PROTOBUF_NODISCARD ::protobuf::MessageOfMap* release_map_massage(); + ::protobuf::MessageOfMap* mutable_map_massage(); + void set_allocated_map_massage(::protobuf::MessageOfMap* map_massage); + + private: + const ::protobuf::MessageOfMap& _internal_map_massage() const; + ::protobuf::MessageOfMap* _internal_mutable_map_massage(); + + public: + void unsafe_arena_set_allocated_map_massage( + ::protobuf::MessageOfMap* map_massage + ); + ::protobuf::MessageOfMap* unsafe_arena_release_map_massage(); + + // @@protoc_insertion_point(class_scope:protobuf.MessageToClient) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfHuman> human_message_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfButcher> butcher_message_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfProp> prop_message_; + ::protobuf::MessageOfMap* map_massage_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MoveRes final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MoveRes) */ + { + public: + inline MoveRes() : + MoveRes(nullptr) + { + } + ~MoveRes() override; + explicit constexpr MoveRes(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MoveRes(const MoveRes& from); + MoveRes(MoveRes&& from) noexcept + : + MoveRes() + { + *this = ::std::move(from); + } + + inline MoveRes& operator=(const MoveRes& from) + { + CopyFrom(from); + return *this; + } + inline MoveRes& operator=(MoveRes&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MoveRes& default_instance() + { + return *internal_default_instance(); + } + static inline const MoveRes* internal_default_instance() + { + return reinterpret_cast( + &_MoveRes_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 7; + + friend void swap(MoveRes& a, MoveRes& b) + { + a.Swap(&b); + } + inline void Swap(MoveRes* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MoveRes* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MoveRes* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MoveRes& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MoveRes& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MoveRes* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MoveRes"; + } + + protected: + explicit MoveRes(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kActualSpeedFieldNumber = 1, + kActualAngleFieldNumber = 2, + }; + // int64 actual_speed = 1; + void clear_actual_speed(); + int64_t actual_speed() const; + void set_actual_speed(int64_t value); + + private: + int64_t _internal_actual_speed() const; + void _internal_set_actual_speed(int64_t value); + + public: + // double actual_angle = 2; + void clear_actual_angle(); + double actual_angle() const; + void set_actual_angle(double value); + + private: + double _internal_actual_angle() const; + void _internal_set_actual_angle(double value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MoveRes) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int64_t actual_speed_; + double actual_angle_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class BoolRes final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.BoolRes) */ + { + public: + inline BoolRes() : + BoolRes(nullptr) + { + } + ~BoolRes() override; + explicit constexpr BoolRes(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + BoolRes(const BoolRes& from); + BoolRes(BoolRes&& from) noexcept + : + BoolRes() + { + *this = ::std::move(from); + } + + inline BoolRes& operator=(const BoolRes& from) + { + CopyFrom(from); + return *this; + } + inline BoolRes& operator=(BoolRes&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const BoolRes& default_instance() + { + return *internal_default_instance(); + } + static inline const BoolRes* internal_default_instance() + { + return reinterpret_cast( + &_BoolRes_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 8; + + friend void swap(BoolRes& a, BoolRes& b) + { + a.Swap(&b); + } + inline void Swap(BoolRes* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(BoolRes* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + BoolRes* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const BoolRes& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const BoolRes& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(BoolRes* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.BoolRes"; + } + + protected: + explicit BoolRes(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kActSuccessFieldNumber = 1, + }; + // bool act_success = 1; + void clear_act_success(); + bool act_success() const; + void set_act_success(bool value); + + private: + bool _internal_act_success() const; + void _internal_set_act_success(bool value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.BoolRes) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + bool act_success_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // ------------------------------------------------------------------- + + class MsgRes final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MsgRes) */ + { + public: + inline MsgRes() : + MsgRes(nullptr) + { + } + ~MsgRes() override; + explicit constexpr MsgRes(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MsgRes(const MsgRes& from); + MsgRes(MsgRes&& from) noexcept + : + MsgRes() + { + *this = ::std::move(from); + } + + inline MsgRes& operator=(const MsgRes& from) + { + CopyFrom(from); + return *this; + } + inline MsgRes& operator=(MsgRes&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MsgRes& default_instance() + { + return *internal_default_instance(); + } + static inline const MsgRes* internal_default_instance() + { + return reinterpret_cast( + &_MsgRes_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 9; + + friend void swap(MsgRes& a, MsgRes& b) + { + a.Swap(&b); + } + inline void Swap(MsgRes* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MsgRes* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MsgRes* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MsgRes& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MsgRes& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MsgRes* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MsgRes"; + } + + protected: + explicit MsgRes(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kMessageReceivedFieldNumber = 3, + kFromPlayerIdFieldNumber = 2, + kHaveMessageFieldNumber = 1, + }; + // string message_received = 3; + void clear_message_received(); + const std::string& message_received() const; + template + void set_message_received(ArgT0&& arg0, ArgT... args); + std::string* mutable_message_received(); + PROTOBUF_NODISCARD std::string* release_message_received(); + void set_allocated_message_received(std::string* message_received); + + private: + const std::string& _internal_message_received() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_message_received(const std::string& value); + std::string* _internal_mutable_message_received(); + + public: + // int64 from_player_id = 2; + void clear_from_player_id(); + int64_t from_player_id() const; + void set_from_player_id(int64_t value); + + private: + int64_t _internal_from_player_id() const; + void _internal_set_from_player_id(int64_t value); + + public: + // bool have_message = 1; + void clear_have_message(); + bool have_message() const; + void set_have_message(bool value); + + private: + bool _internal_have_message() const; + void _internal_set_have_message(bool value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MsgRes) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr message_received_; + int64_t from_player_id_; + bool have_message_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Clients_2eproto; + }; + // =================================================================== + + // =================================================================== + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ + // MessageOfHuman + + // int32 x = 1; + inline void MessageOfHuman::clear_x() + { + x_ = 0; + } + inline int32_t MessageOfHuman::_internal_x() const + { + return x_; + } + inline int32_t MessageOfHuman::x() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.x) + return _internal_x(); + } + inline void MessageOfHuman::_internal_set_x(int32_t value) + { + x_ = value; + } + inline void MessageOfHuman::set_x(int32_t value) + { + _internal_set_x(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.x) + } + + // int32 y = 2; + inline void MessageOfHuman::clear_y() + { + y_ = 0; + } + inline int32_t MessageOfHuman::_internal_y() const + { + return y_; + } + inline int32_t MessageOfHuman::y() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.y) + return _internal_y(); + } + inline void MessageOfHuman::_internal_set_y(int32_t value) + { + y_ = value; + } + inline void MessageOfHuman::set_y(int32_t value) + { + _internal_set_y(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.y) + } + + // int32 speed = 3; + inline void MessageOfHuman::clear_speed() + { + speed_ = 0; + } + inline int32_t MessageOfHuman::_internal_speed() const + { + return speed_; + } + inline int32_t MessageOfHuman::speed() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.speed) + return _internal_speed(); + } + inline void MessageOfHuman::_internal_set_speed(int32_t value) + { + speed_ = value; + } + inline void MessageOfHuman::set_speed(int32_t value) + { + _internal_set_speed(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.speed) + } + + // int32 life = 4; + inline void MessageOfHuman::clear_life() + { + life_ = 0; + } + inline int32_t MessageOfHuman::_internal_life() const + { + return life_; + } + inline int32_t MessageOfHuman::life() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.life) + return _internal_life(); + } + inline void MessageOfHuman::_internal_set_life(int32_t value) + { + life_ = value; + } + inline void MessageOfHuman::set_life(int32_t value) + { + _internal_set_life(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.life) + } + + // int32 hanged_time = 5; + inline void MessageOfHuman::clear_hanged_time() + { + hanged_time_ = 0; + } + inline int32_t MessageOfHuman::_internal_hanged_time() const + { + return hanged_time_; + } + inline int32_t MessageOfHuman::hanged_time() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.hanged_time) + return _internal_hanged_time(); + } + inline void MessageOfHuman::_internal_set_hanged_time(int32_t value) + { + hanged_time_ = value; + } + inline void MessageOfHuman::set_hanged_time(int32_t value) + { + _internal_set_hanged_time(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.hanged_time) + } + + // double time_until_skill_available = 6; + inline void MessageOfHuman::clear_time_until_skill_available() + { + time_until_skill_available_ = 0; + } + inline double MessageOfHuman::_internal_time_until_skill_available() const + { + return time_until_skill_available_; + } + inline double MessageOfHuman::time_until_skill_available() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.time_until_skill_available) + return _internal_time_until_skill_available(); + } + inline void MessageOfHuman::_internal_set_time_until_skill_available(double value) + { + time_until_skill_available_ = value; + } + inline void MessageOfHuman::set_time_until_skill_available(double value) + { + _internal_set_time_until_skill_available(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.time_until_skill_available) + } + + // .protobuf.PlaceType place = 7; + inline void MessageOfHuman::clear_place() + { + place_ = 0; + } + inline ::protobuf::PlaceType MessageOfHuman::_internal_place() const + { + return static_cast<::protobuf::PlaceType>(place_); + } + inline ::protobuf::PlaceType MessageOfHuman::place() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.place) + return _internal_place(); + } + inline void MessageOfHuman::_internal_set_place(::protobuf::PlaceType value) + { + place_ = value; + } + inline void MessageOfHuman::set_place(::protobuf::PlaceType value) + { + _internal_set_place(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.place) + } + + // .protobuf.PropType prop = 8; + inline void MessageOfHuman::clear_prop() + { + prop_ = 0; + } + inline ::protobuf::PropType MessageOfHuman::_internal_prop() const + { + return static_cast<::protobuf::PropType>(prop_); + } + inline ::protobuf::PropType MessageOfHuman::prop() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.prop) + return _internal_prop(); + } + inline void MessageOfHuman::_internal_set_prop(::protobuf::PropType value) + { + prop_ = value; + } + inline void MessageOfHuman::set_prop(::protobuf::PropType value) + { + _internal_set_prop(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.prop) + } + + // .protobuf.HumanType human_type = 9; + inline void MessageOfHuman::clear_human_type() + { + human_type_ = 0; + } + inline ::protobuf::HumanType MessageOfHuman::_internal_human_type() const + { + return static_cast<::protobuf::HumanType>(human_type_); + } + inline ::protobuf::HumanType MessageOfHuman::human_type() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.human_type) + return _internal_human_type(); + } + inline void MessageOfHuman::_internal_set_human_type(::protobuf::HumanType value) + { + human_type_ = value; + } + inline void MessageOfHuman::set_human_type(::protobuf::HumanType value) + { + _internal_set_human_type(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.human_type) + } + + // int64 guid = 10; + inline void MessageOfHuman::clear_guid() + { + guid_ = int64_t{0}; + } + inline int64_t MessageOfHuman::_internal_guid() const + { + return guid_; + } + inline int64_t MessageOfHuman::guid() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.guid) + return _internal_guid(); + } + inline void MessageOfHuman::_internal_set_guid(int64_t value) + { + guid_ = value; + } + inline void MessageOfHuman::set_guid(int64_t value) + { + _internal_set_guid(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.guid) + } + + // bool on_chair = 11; + inline void MessageOfHuman::clear_on_chair() + { + on_chair_ = false; + } + inline bool MessageOfHuman::_internal_on_chair() const + { + return on_chair_; + } + inline bool MessageOfHuman::on_chair() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.on_chair) + return _internal_on_chair(); + } + inline void MessageOfHuman::_internal_set_on_chair(bool value) + { + on_chair_ = value; + } + inline void MessageOfHuman::set_on_chair(bool value) + { + _internal_set_on_chair(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.on_chair) + } + + // double chair_time = 12; + inline void MessageOfHuman::clear_chair_time() + { + chair_time_ = 0; + } + inline double MessageOfHuman::_internal_chair_time() const + { + return chair_time_; + } + inline double MessageOfHuman::chair_time() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.chair_time) + return _internal_chair_time(); + } + inline void MessageOfHuman::_internal_set_chair_time(double value) + { + chair_time_ = value; + } + inline void MessageOfHuman::set_chair_time(double value) + { + _internal_set_chair_time(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.chair_time) + } + + // bool on_ground = 13; + inline void MessageOfHuman::clear_on_ground() + { + on_ground_ = false; + } + inline bool MessageOfHuman::_internal_on_ground() const + { + return on_ground_; + } + inline bool MessageOfHuman::on_ground() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.on_ground) + return _internal_on_ground(); + } + inline void MessageOfHuman::_internal_set_on_ground(bool value) + { + on_ground_ = value; + } + inline void MessageOfHuman::set_on_ground(bool value) + { + _internal_set_on_ground(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.on_ground) + } + + // double ground_time = 14; + inline void MessageOfHuman::clear_ground_time() + { + ground_time_ = 0; + } + inline double MessageOfHuman::_internal_ground_time() const + { + return ground_time_; + } + inline double MessageOfHuman::ground_time() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.ground_time) + return _internal_ground_time(); + } + inline void MessageOfHuman::_internal_set_ground_time(double value) + { + ground_time_ = value; + } + inline void MessageOfHuman::set_ground_time(double value) + { + _internal_set_ground_time(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.ground_time) + } + + // int64 player_id = 15; + inline void MessageOfHuman::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t MessageOfHuman::_internal_player_id() const + { + return player_id_; + } + inline int64_t MessageOfHuman::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.player_id) + return _internal_player_id(); + } + inline void MessageOfHuman::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void MessageOfHuman::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.player_id) + } + + // int32 view_range = 16; + inline void MessageOfHuman::clear_view_range() + { + view_range_ = 0; + } + inline int32_t MessageOfHuman::_internal_view_range() const + { + return view_range_; + } + inline int32_t MessageOfHuman::view_range() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.view_range) + return _internal_view_range(); + } + inline void MessageOfHuman::_internal_set_view_range(int32_t value) + { + view_range_ = value; + } + inline void MessageOfHuman::set_view_range(int32_t value) + { + _internal_set_view_range(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.view_range) + } + + // repeated .protobuf.HumanBuffType buff = 17; + inline int MessageOfHuman::_internal_buff_size() const + { + return buff_.size(); + } + inline int MessageOfHuman::buff_size() const + { + return _internal_buff_size(); + } + inline void MessageOfHuman::clear_buff() + { + buff_.Clear(); + } + inline ::protobuf::HumanBuffType MessageOfHuman::_internal_buff(int index) const + { + return static_cast<::protobuf::HumanBuffType>(buff_.Get(index)); + } + inline ::protobuf::HumanBuffType MessageOfHuman::buff(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfHuman.buff) + return _internal_buff(index); + } + inline void MessageOfHuman::set_buff(int index, ::protobuf::HumanBuffType value) + { + buff_.Set(index, value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfHuman.buff) + } + inline void MessageOfHuman::_internal_add_buff(::protobuf::HumanBuffType value) + { + buff_.Add(value); + } + inline void MessageOfHuman::add_buff(::protobuf::HumanBuffType value) + { + _internal_add_buff(value); + // @@protoc_insertion_point(field_add:protobuf.MessageOfHuman.buff) + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField& + MessageOfHuman::buff() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageOfHuman.buff) + return buff_; + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedField* + MessageOfHuman::_internal_mutable_buff() + { + return &buff_; + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedField* + MessageOfHuman::mutable_buff() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageOfHuman.buff) + return _internal_mutable_buff(); + } + + // ------------------------------------------------------------------- + + // MessageOfButcher + + // int32 x = 1; + inline void MessageOfButcher::clear_x() + { + x_ = 0; + } + inline int32_t MessageOfButcher::_internal_x() const + { + return x_; + } + inline int32_t MessageOfButcher::x() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.x) + return _internal_x(); + } + inline void MessageOfButcher::_internal_set_x(int32_t value) + { + x_ = value; + } + inline void MessageOfButcher::set_x(int32_t value) + { + _internal_set_x(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.x) + } + + // int32 y = 2; + inline void MessageOfButcher::clear_y() + { + y_ = 0; + } + inline int32_t MessageOfButcher::_internal_y() const + { + return y_; + } + inline int32_t MessageOfButcher::y() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.y) + return _internal_y(); + } + inline void MessageOfButcher::_internal_set_y(int32_t value) + { + y_ = value; + } + inline void MessageOfButcher::set_y(int32_t value) + { + _internal_set_y(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.y) + } + + // int32 speed = 3; + inline void MessageOfButcher::clear_speed() + { + speed_ = 0; + } + inline int32_t MessageOfButcher::_internal_speed() const + { + return speed_; + } + inline int32_t MessageOfButcher::speed() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.speed) + return _internal_speed(); + } + inline void MessageOfButcher::_internal_set_speed(int32_t value) + { + speed_ = value; + } + inline void MessageOfButcher::set_speed(int32_t value) + { + _internal_set_speed(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.speed) + } + + // int32 damage = 4; + inline void MessageOfButcher::clear_damage() + { + damage_ = 0; + } + inline int32_t MessageOfButcher::_internal_damage() const + { + return damage_; + } + inline int32_t MessageOfButcher::damage() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.damage) + return _internal_damage(); + } + inline void MessageOfButcher::_internal_set_damage(int32_t value) + { + damage_ = value; + } + inline void MessageOfButcher::set_damage(int32_t value) + { + _internal_set_damage(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.damage) + } + + // double time_until_skill_available = 5; + inline void MessageOfButcher::clear_time_until_skill_available() + { + time_until_skill_available_ = 0; + } + inline double MessageOfButcher::_internal_time_until_skill_available() const + { + return time_until_skill_available_; + } + inline double MessageOfButcher::time_until_skill_available() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.time_until_skill_available) + return _internal_time_until_skill_available(); + } + inline void MessageOfButcher::_internal_set_time_until_skill_available(double value) + { + time_until_skill_available_ = value; + } + inline void MessageOfButcher::set_time_until_skill_available(double value) + { + _internal_set_time_until_skill_available(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.time_until_skill_available) + } + + // .protobuf.PlaceType place = 6; + inline void MessageOfButcher::clear_place() + { + place_ = 0; + } + inline ::protobuf::PlaceType MessageOfButcher::_internal_place() const + { + return static_cast<::protobuf::PlaceType>(place_); + } + inline ::protobuf::PlaceType MessageOfButcher::place() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.place) + return _internal_place(); + } + inline void MessageOfButcher::_internal_set_place(::protobuf::PlaceType value) + { + place_ = value; + } + inline void MessageOfButcher::set_place(::protobuf::PlaceType value) + { + _internal_set_place(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.place) + } + + // .protobuf.PropType prop = 7; + inline void MessageOfButcher::clear_prop() + { + prop_ = 0; + } + inline ::protobuf::PropType MessageOfButcher::_internal_prop() const + { + return static_cast<::protobuf::PropType>(prop_); + } + inline ::protobuf::PropType MessageOfButcher::prop() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.prop) + return _internal_prop(); + } + inline void MessageOfButcher::_internal_set_prop(::protobuf::PropType value) + { + prop_ = value; + } + inline void MessageOfButcher::set_prop(::protobuf::PropType value) + { + _internal_set_prop(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.prop) + } + + // .protobuf.ButcherType butcher_type = 8; + inline void MessageOfButcher::clear_butcher_type() + { + butcher_type_ = 0; + } + inline ::protobuf::ButcherType MessageOfButcher::_internal_butcher_type() const + { + return static_cast<::protobuf::ButcherType>(butcher_type_); + } + inline ::protobuf::ButcherType MessageOfButcher::butcher_type() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.butcher_type) + return _internal_butcher_type(); + } + inline void MessageOfButcher::_internal_set_butcher_type(::protobuf::ButcherType value) + { + butcher_type_ = value; + } + inline void MessageOfButcher::set_butcher_type(::protobuf::ButcherType value) + { + _internal_set_butcher_type(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.butcher_type) + } + + // int64 guid = 9; + inline void MessageOfButcher::clear_guid() + { + guid_ = int64_t{0}; + } + inline int64_t MessageOfButcher::_internal_guid() const + { + return guid_; + } + inline int64_t MessageOfButcher::guid() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.guid) + return _internal_guid(); + } + inline void MessageOfButcher::_internal_set_guid(int64_t value) + { + guid_ = value; + } + inline void MessageOfButcher::set_guid(int64_t value) + { + _internal_set_guid(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.guid) + } + + // bool movable = 10; + inline void MessageOfButcher::clear_movable() + { + movable_ = false; + } + inline bool MessageOfButcher::_internal_movable() const + { + return movable_; + } + inline bool MessageOfButcher::movable() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.movable) + return _internal_movable(); + } + inline void MessageOfButcher::_internal_set_movable(bool value) + { + movable_ = value; + } + inline void MessageOfButcher::set_movable(bool value) + { + _internal_set_movable(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.movable) + } + + // int64 playerID = 11; + inline void MessageOfButcher::clear_playerid() + { + playerid_ = int64_t{0}; + } + inline int64_t MessageOfButcher::_internal_playerid() const + { + return playerid_; + } + inline int64_t MessageOfButcher::playerid() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.playerID) + return _internal_playerid(); + } + inline void MessageOfButcher::_internal_set_playerid(int64_t value) + { + playerid_ = value; + } + inline void MessageOfButcher::set_playerid(int64_t value) + { + _internal_set_playerid(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.playerID) + } + + // int32 view_range = 12; + inline void MessageOfButcher::clear_view_range() + { + view_range_ = 0; + } + inline int32_t MessageOfButcher::_internal_view_range() const + { + return view_range_; + } + inline int32_t MessageOfButcher::view_range() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.view_range) + return _internal_view_range(); + } + inline void MessageOfButcher::_internal_set_view_range(int32_t value) + { + view_range_ = value; + } + inline void MessageOfButcher::set_view_range(int32_t value) + { + _internal_set_view_range(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.view_range) + } + + // repeated .protobuf.ButcherBuffType buff = 13; + inline int MessageOfButcher::_internal_buff_size() const + { + return buff_.size(); + } + inline int MessageOfButcher::buff_size() const + { + return _internal_buff_size(); + } + inline void MessageOfButcher::clear_buff() + { + buff_.Clear(); + } + inline ::protobuf::ButcherBuffType MessageOfButcher::_internal_buff(int index) const + { + return static_cast<::protobuf::ButcherBuffType>(buff_.Get(index)); + } + inline ::protobuf::ButcherBuffType MessageOfButcher::buff(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfButcher.buff) + return _internal_buff(index); + } + inline void MessageOfButcher::set_buff(int index, ::protobuf::ButcherBuffType value) + { + buff_.Set(index, value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfButcher.buff) + } + inline void MessageOfButcher::_internal_add_buff(::protobuf::ButcherBuffType value) + { + buff_.Add(value); + } + inline void MessageOfButcher::add_buff(::protobuf::ButcherBuffType value) + { + _internal_add_buff(value); + // @@protoc_insertion_point(field_add:protobuf.MessageOfButcher.buff) + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField& + MessageOfButcher::buff() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageOfButcher.buff) + return buff_; + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedField* + MessageOfButcher::_internal_mutable_buff() + { + return &buff_; + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedField* + MessageOfButcher::mutable_buff() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageOfButcher.buff) + return _internal_mutable_buff(); + } + + // ------------------------------------------------------------------- + + // MessageOfProp + + // .protobuf.PropType type = 1; + inline void MessageOfProp::clear_type() + { + type_ = 0; + } + inline ::protobuf::PropType MessageOfProp::_internal_type() const + { + return static_cast<::protobuf::PropType>(type_); + } + inline ::protobuf::PropType MessageOfProp::type() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.type) + return _internal_type(); + } + inline void MessageOfProp::_internal_set_type(::protobuf::PropType value) + { + type_ = value; + } + inline void MessageOfProp::set_type(::protobuf::PropType value) + { + _internal_set_type(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.type) + } + + // int32 x = 2; + inline void MessageOfProp::clear_x() + { + x_ = 0; + } + inline int32_t MessageOfProp::_internal_x() const + { + return x_; + } + inline int32_t MessageOfProp::x() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.x) + return _internal_x(); + } + inline void MessageOfProp::_internal_set_x(int32_t value) + { + x_ = value; + } + inline void MessageOfProp::set_x(int32_t value) + { + _internal_set_x(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.x) + } + + // int32 y = 3; + inline void MessageOfProp::clear_y() + { + y_ = 0; + } + inline int32_t MessageOfProp::_internal_y() const + { + return y_; + } + inline int32_t MessageOfProp::y() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.y) + return _internal_y(); + } + inline void MessageOfProp::_internal_set_y(int32_t value) + { + y_ = value; + } + inline void MessageOfProp::set_y(int32_t value) + { + _internal_set_y(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.y) + } + + // double facing_direction = 4; + inline void MessageOfProp::clear_facing_direction() + { + facing_direction_ = 0; + } + inline double MessageOfProp::_internal_facing_direction() const + { + return facing_direction_; + } + inline double MessageOfProp::facing_direction() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.facing_direction) + return _internal_facing_direction(); + } + inline void MessageOfProp::_internal_set_facing_direction(double value) + { + facing_direction_ = value; + } + inline void MessageOfProp::set_facing_direction(double value) + { + _internal_set_facing_direction(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.facing_direction) + } + + // int64 guid = 5; + inline void MessageOfProp::clear_guid() + { + guid_ = int64_t{0}; + } + inline int64_t MessageOfProp::_internal_guid() const + { + return guid_; + } + inline int64_t MessageOfProp::guid() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.guid) + return _internal_guid(); + } + inline void MessageOfProp::_internal_set_guid(int64_t value) + { + guid_ = value; + } + inline void MessageOfProp::set_guid(int64_t value) + { + _internal_set_guid(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.guid) + } + + // .protobuf.PlaceType place = 6; + inline void MessageOfProp::clear_place() + { + place_ = 0; + } + inline ::protobuf::PlaceType MessageOfProp::_internal_place() const + { + return static_cast<::protobuf::PlaceType>(place_); + } + inline ::protobuf::PlaceType MessageOfProp::place() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.place) + return _internal_place(); + } + inline void MessageOfProp::_internal_set_place(::protobuf::PlaceType value) + { + place_ = value; + } + inline void MessageOfProp::set_place(::protobuf::PlaceType value) + { + _internal_set_place(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.place) + } + + // int32 size = 7; + inline void MessageOfProp::clear_size() + { + size_ = 0; + } + inline int32_t MessageOfProp::_internal_size() const + { + return size_; + } + inline int32_t MessageOfProp::size() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.size) + return _internal_size(); + } + inline void MessageOfProp::_internal_set_size(int32_t value) + { + size_ = value; + } + inline void MessageOfProp::set_size(int32_t value) + { + _internal_set_size(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.size) + } + + // bool is_moving = 8; + inline void MessageOfProp::clear_is_moving() + { + is_moving_ = false; + } + inline bool MessageOfProp::_internal_is_moving() const + { + return is_moving_; + } + inline bool MessageOfProp::is_moving() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfProp.is_moving) + return _internal_is_moving(); + } + inline void MessageOfProp::_internal_set_is_moving(bool value) + { + is_moving_ = value; + } + inline void MessageOfProp::set_is_moving(bool value) + { + _internal_set_is_moving(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfProp.is_moving) + } + + // ------------------------------------------------------------------- + + // MessageOfPickedProp + + // .protobuf.PropType type = 1; + inline void MessageOfPickedProp::clear_type() + { + type_ = 0; + } + inline ::protobuf::PropType MessageOfPickedProp::_internal_type() const + { + return static_cast<::protobuf::PropType>(type_); + } + inline ::protobuf::PropType MessageOfPickedProp::type() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfPickedProp.type) + return _internal_type(); + } + inline void MessageOfPickedProp::_internal_set_type(::protobuf::PropType value) + { + type_ = value; + } + inline void MessageOfPickedProp::set_type(::protobuf::PropType value) + { + _internal_set_type(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfPickedProp.type) + } + + // int32 x = 2; + inline void MessageOfPickedProp::clear_x() + { + x_ = 0; + } + inline int32_t MessageOfPickedProp::_internal_x() const + { + return x_; + } + inline int32_t MessageOfPickedProp::x() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfPickedProp.x) + return _internal_x(); + } + inline void MessageOfPickedProp::_internal_set_x(int32_t value) + { + x_ = value; + } + inline void MessageOfPickedProp::set_x(int32_t value) + { + _internal_set_x(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfPickedProp.x) + } + + // int32 y = 3; + inline void MessageOfPickedProp::clear_y() + { + y_ = 0; + } + inline int32_t MessageOfPickedProp::_internal_y() const + { + return y_; + } + inline int32_t MessageOfPickedProp::y() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfPickedProp.y) + return _internal_y(); + } + inline void MessageOfPickedProp::_internal_set_y(int32_t value) + { + y_ = value; + } + inline void MessageOfPickedProp::set_y(int32_t value) + { + _internal_set_y(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfPickedProp.y) + } + + // double facing_direction = 4; + inline void MessageOfPickedProp::clear_facing_direction() + { + facing_direction_ = 0; + } + inline double MessageOfPickedProp::_internal_facing_direction() const + { + return facing_direction_; + } + inline double MessageOfPickedProp::facing_direction() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfPickedProp.facing_direction) + return _internal_facing_direction(); + } + inline void MessageOfPickedProp::_internal_set_facing_direction(double value) + { + facing_direction_ = value; + } + inline void MessageOfPickedProp::set_facing_direction(double value) + { + _internal_set_facing_direction(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfPickedProp.facing_direction) + } + + // int64 mapping_id = 5; + inline void MessageOfPickedProp::clear_mapping_id() + { + mapping_id_ = int64_t{0}; + } + inline int64_t MessageOfPickedProp::_internal_mapping_id() const + { + return mapping_id_; + } + inline int64_t MessageOfPickedProp::mapping_id() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfPickedProp.mapping_id) + return _internal_mapping_id(); + } + inline void MessageOfPickedProp::_internal_set_mapping_id(int64_t value) + { + mapping_id_ = value; + } + inline void MessageOfPickedProp::set_mapping_id(int64_t value) + { + _internal_set_mapping_id(value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfPickedProp.mapping_id) + } + + // ------------------------------------------------------------------- + + // MessageOfMap_Row + + // repeated .protobuf.PlaceType col = 1; + inline int MessageOfMap_Row::_internal_col_size() const + { + return col_.size(); + } + inline int MessageOfMap_Row::col_size() const + { + return _internal_col_size(); + } + inline void MessageOfMap_Row::clear_col() + { + col_.Clear(); + } + inline ::protobuf::PlaceType MessageOfMap_Row::_internal_col(int index) const + { + return static_cast<::protobuf::PlaceType>(col_.Get(index)); + } + inline ::protobuf::PlaceType MessageOfMap_Row::col(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfMap.Row.col) + return _internal_col(index); + } + inline void MessageOfMap_Row::set_col(int index, ::protobuf::PlaceType value) + { + col_.Set(index, value); + // @@protoc_insertion_point(field_set:protobuf.MessageOfMap.Row.col) + } + inline void MessageOfMap_Row::_internal_add_col(::protobuf::PlaceType value) + { + col_.Add(value); + } + inline void MessageOfMap_Row::add_col(::protobuf::PlaceType value) + { + _internal_add_col(value); + // @@protoc_insertion_point(field_add:protobuf.MessageOfMap.Row.col) + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField& + MessageOfMap_Row::col() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageOfMap.Row.col) + return col_; + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedField* + MessageOfMap_Row::_internal_mutable_col() + { + return &col_; + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedField* + MessageOfMap_Row::mutable_col() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageOfMap.Row.col) + return _internal_mutable_col(); + } + + // ------------------------------------------------------------------- + + // MessageOfMap + + // repeated .protobuf.MessageOfMap.Row row = 2; + inline int MessageOfMap::_internal_row_size() const + { + return row_.size(); + } + inline int MessageOfMap::row_size() const + { + return _internal_row_size(); + } + inline void MessageOfMap::clear_row() + { + row_.Clear(); + } + inline ::protobuf::MessageOfMap_Row* MessageOfMap::mutable_row(int index) + { + // @@protoc_insertion_point(field_mutable:protobuf.MessageOfMap.row) + return row_.Mutable(index); + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfMap_Row>* + MessageOfMap::mutable_row() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageOfMap.row) + return &row_; + } + inline const ::protobuf::MessageOfMap_Row& MessageOfMap::_internal_row(int index) const + { + return row_.Get(index); + } + inline const ::protobuf::MessageOfMap_Row& MessageOfMap::row(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageOfMap.row) + return _internal_row(index); + } + inline ::protobuf::MessageOfMap_Row* MessageOfMap::_internal_add_row() + { + return row_.Add(); + } + inline ::protobuf::MessageOfMap_Row* MessageOfMap::add_row() + { + ::protobuf::MessageOfMap_Row* _add = _internal_add_row(); + // @@protoc_insertion_point(field_add:protobuf.MessageOfMap.row) + return _add; + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfMap_Row>& + MessageOfMap::row() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageOfMap.row) + return row_; + } + + // ------------------------------------------------------------------- + + // MessageToClient + + // repeated .protobuf.MessageOfHuman human_message = 1; + inline int MessageToClient::_internal_human_message_size() const + { + return human_message_.size(); + } + inline int MessageToClient::human_message_size() const + { + return _internal_human_message_size(); + } + inline void MessageToClient::clear_human_message() + { + human_message_.Clear(); + } + inline ::protobuf::MessageOfHuman* MessageToClient::mutable_human_message(int index) + { + // @@protoc_insertion_point(field_mutable:protobuf.MessageToClient.human_message) + return human_message_.Mutable(index); + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfHuman>* + MessageToClient::mutable_human_message() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageToClient.human_message) + return &human_message_; + } + inline const ::protobuf::MessageOfHuman& MessageToClient::_internal_human_message(int index) const + { + return human_message_.Get(index); + } + inline const ::protobuf::MessageOfHuman& MessageToClient::human_message(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageToClient.human_message) + return _internal_human_message(index); + } + inline ::protobuf::MessageOfHuman* MessageToClient::_internal_add_human_message() + { + return human_message_.Add(); + } + inline ::protobuf::MessageOfHuman* MessageToClient::add_human_message() + { + ::protobuf::MessageOfHuman* _add = _internal_add_human_message(); + // @@protoc_insertion_point(field_add:protobuf.MessageToClient.human_message) + return _add; + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfHuman>& + MessageToClient::human_message() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageToClient.human_message) + return human_message_; + } + + // repeated .protobuf.MessageOfButcher butcher_message = 2; + inline int MessageToClient::_internal_butcher_message_size() const + { + return butcher_message_.size(); + } + inline int MessageToClient::butcher_message_size() const + { + return _internal_butcher_message_size(); + } + inline void MessageToClient::clear_butcher_message() + { + butcher_message_.Clear(); + } + inline ::protobuf::MessageOfButcher* MessageToClient::mutable_butcher_message(int index) + { + // @@protoc_insertion_point(field_mutable:protobuf.MessageToClient.butcher_message) + return butcher_message_.Mutable(index); + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfButcher>* + MessageToClient::mutable_butcher_message() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageToClient.butcher_message) + return &butcher_message_; + } + inline const ::protobuf::MessageOfButcher& MessageToClient::_internal_butcher_message(int index) const + { + return butcher_message_.Get(index); + } + inline const ::protobuf::MessageOfButcher& MessageToClient::butcher_message(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageToClient.butcher_message) + return _internal_butcher_message(index); + } + inline ::protobuf::MessageOfButcher* MessageToClient::_internal_add_butcher_message() + { + return butcher_message_.Add(); + } + inline ::protobuf::MessageOfButcher* MessageToClient::add_butcher_message() + { + ::protobuf::MessageOfButcher* _add = _internal_add_butcher_message(); + // @@protoc_insertion_point(field_add:protobuf.MessageToClient.butcher_message) + return _add; + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfButcher>& + MessageToClient::butcher_message() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageToClient.butcher_message) + return butcher_message_; + } + + // repeated .protobuf.MessageOfProp prop_message = 3; + inline int MessageToClient::_internal_prop_message_size() const + { + return prop_message_.size(); + } + inline int MessageToClient::prop_message_size() const + { + return _internal_prop_message_size(); + } + inline void MessageToClient::clear_prop_message() + { + prop_message_.Clear(); + } + inline ::protobuf::MessageOfProp* MessageToClient::mutable_prop_message(int index) + { + // @@protoc_insertion_point(field_mutable:protobuf.MessageToClient.prop_message) + return prop_message_.Mutable(index); + } + inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfProp>* + MessageToClient::mutable_prop_message() + { + // @@protoc_insertion_point(field_mutable_list:protobuf.MessageToClient.prop_message) + return &prop_message_; + } + inline const ::protobuf::MessageOfProp& MessageToClient::_internal_prop_message(int index) const + { + return prop_message_.Get(index); + } + inline const ::protobuf::MessageOfProp& MessageToClient::prop_message(int index) const + { + // @@protoc_insertion_point(field_get:protobuf.MessageToClient.prop_message) + return _internal_prop_message(index); + } + inline ::protobuf::MessageOfProp* MessageToClient::_internal_add_prop_message() + { + return prop_message_.Add(); + } + inline ::protobuf::MessageOfProp* MessageToClient::add_prop_message() + { + ::protobuf::MessageOfProp* _add = _internal_add_prop_message(); + // @@protoc_insertion_point(field_add:protobuf.MessageToClient.prop_message) + return _add; + } + inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<::protobuf::MessageOfProp>& + MessageToClient::prop_message() const + { + // @@protoc_insertion_point(field_list:protobuf.MessageToClient.prop_message) + return prop_message_; + } + + // .protobuf.MessageOfMap map_massage = 4; + inline bool MessageToClient::_internal_has_map_massage() const + { + return this != internal_default_instance() && map_massage_ != nullptr; + } + inline bool MessageToClient::has_map_massage() const + { + return _internal_has_map_massage(); + } + inline void MessageToClient::clear_map_massage() + { + if (GetArenaForAllocation() == nullptr && map_massage_ != nullptr) + { + delete map_massage_; + } + map_massage_ = nullptr; + } + inline const ::protobuf::MessageOfMap& MessageToClient::_internal_map_massage() const + { + const ::protobuf::MessageOfMap* p = map_massage_; + return p != nullptr ? *p : reinterpret_cast(::protobuf::_MessageOfMap_default_instance_); + } + inline const ::protobuf::MessageOfMap& MessageToClient::map_massage() const + { + // @@protoc_insertion_point(field_get:protobuf.MessageToClient.map_massage) + return _internal_map_massage(); + } + inline void MessageToClient::unsafe_arena_set_allocated_map_massage( + ::protobuf::MessageOfMap* map_massage + ) + { + if (GetArenaForAllocation() == nullptr) + { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(map_massage_); + } + map_massage_ = map_massage; + if (map_massage) + { + } + else + { + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:protobuf.MessageToClient.map_massage) + } + inline ::protobuf::MessageOfMap* MessageToClient::release_map_massage() + { + ::protobuf::MessageOfMap* temp = map_massage_; + map_massage_ = nullptr; +#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE + auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + if (GetArenaForAllocation() == nullptr) + { + delete old; + } +#else // PROTOBUF_FORCE_COPY_IN_RELEASE + if (GetArenaForAllocation() != nullptr) + { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } +#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE + return temp; + } + inline ::protobuf::MessageOfMap* MessageToClient::unsafe_arena_release_map_massage() + { + // @@protoc_insertion_point(field_release:protobuf.MessageToClient.map_massage) + + ::protobuf::MessageOfMap* temp = map_massage_; + map_massage_ = nullptr; + return temp; + } + inline ::protobuf::MessageOfMap* MessageToClient::_internal_mutable_map_massage() + { + if (map_massage_ == nullptr) + { + auto* p = CreateMaybeMessage<::protobuf::MessageOfMap>(GetArenaForAllocation()); + map_massage_ = p; + } + return map_massage_; + } + inline ::protobuf::MessageOfMap* MessageToClient::mutable_map_massage() + { + ::protobuf::MessageOfMap* _msg = _internal_mutable_map_massage(); + // @@protoc_insertion_point(field_mutable:protobuf.MessageToClient.map_massage) + return _msg; + } + inline void MessageToClient::set_allocated_map_massage(::protobuf::MessageOfMap* map_massage) + { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); + if (message_arena == nullptr) + { + delete map_massage_; + } + if (map_massage) + { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::protobuf::MessageOfMap>::GetOwningArena(map_massage); + if (message_arena != submessage_arena) + { + map_massage = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, map_massage, submessage_arena + ); + } + } + else + { + } + map_massage_ = map_massage; + // @@protoc_insertion_point(field_set_allocated:protobuf.MessageToClient.map_massage) + } + + // ------------------------------------------------------------------- + + // MoveRes + + // int64 actual_speed = 1; + inline void MoveRes::clear_actual_speed() + { + actual_speed_ = int64_t{0}; + } + inline int64_t MoveRes::_internal_actual_speed() const + { + return actual_speed_; + } + inline int64_t MoveRes::actual_speed() const + { + // @@protoc_insertion_point(field_get:protobuf.MoveRes.actual_speed) + return _internal_actual_speed(); + } + inline void MoveRes::_internal_set_actual_speed(int64_t value) + { + actual_speed_ = value; + } + inline void MoveRes::set_actual_speed(int64_t value) + { + _internal_set_actual_speed(value); + // @@protoc_insertion_point(field_set:protobuf.MoveRes.actual_speed) + } + + // double actual_angle = 2; + inline void MoveRes::clear_actual_angle() + { + actual_angle_ = 0; + } + inline double MoveRes::_internal_actual_angle() const + { + return actual_angle_; + } + inline double MoveRes::actual_angle() const + { + // @@protoc_insertion_point(field_get:protobuf.MoveRes.actual_angle) + return _internal_actual_angle(); + } + inline void MoveRes::_internal_set_actual_angle(double value) + { + actual_angle_ = value; + } + inline void MoveRes::set_actual_angle(double value) + { + _internal_set_actual_angle(value); + // @@protoc_insertion_point(field_set:protobuf.MoveRes.actual_angle) + } + + // ------------------------------------------------------------------- + + // BoolRes + + // bool act_success = 1; + inline void BoolRes::clear_act_success() + { + act_success_ = false; + } + inline bool BoolRes::_internal_act_success() const + { + return act_success_; + } + inline bool BoolRes::act_success() const + { + // @@protoc_insertion_point(field_get:protobuf.BoolRes.act_success) + return _internal_act_success(); + } + inline void BoolRes::_internal_set_act_success(bool value) + { + act_success_ = value; + } + inline void BoolRes::set_act_success(bool value) + { + _internal_set_act_success(value); + // @@protoc_insertion_point(field_set:protobuf.BoolRes.act_success) + } + + // ------------------------------------------------------------------- + + // MsgRes + + // bool have_message = 1; + inline void MsgRes::clear_have_message() + { + have_message_ = false; + } + inline bool MsgRes::_internal_have_message() const + { + return have_message_; + } + inline bool MsgRes::have_message() const + { + // @@protoc_insertion_point(field_get:protobuf.MsgRes.have_message) + return _internal_have_message(); + } + inline void MsgRes::_internal_set_have_message(bool value) + { + have_message_ = value; + } + inline void MsgRes::set_have_message(bool value) + { + _internal_set_have_message(value); + // @@protoc_insertion_point(field_set:protobuf.MsgRes.have_message) + } + + // int64 from_player_id = 2; + inline void MsgRes::clear_from_player_id() + { + from_player_id_ = int64_t{0}; + } + inline int64_t MsgRes::_internal_from_player_id() const + { + return from_player_id_; + } + inline int64_t MsgRes::from_player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.MsgRes.from_player_id) + return _internal_from_player_id(); + } + inline void MsgRes::_internal_set_from_player_id(int64_t value) + { + from_player_id_ = value; + } + inline void MsgRes::set_from_player_id(int64_t value) + { + _internal_set_from_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.MsgRes.from_player_id) + } + + // string message_received = 3; + inline void MsgRes::clear_message_received() + { + message_received_.ClearToEmpty(); + } + inline const std::string& MsgRes::message_received() const + { + // @@protoc_insertion_point(field_get:protobuf.MsgRes.message_received) + return _internal_message_received(); + } + template + inline PROTOBUF_ALWAYS_INLINE void MsgRes::set_message_received(ArgT0&& arg0, ArgT... args) + { + message_received_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:protobuf.MsgRes.message_received) + } + inline std::string* MsgRes::mutable_message_received() + { + std::string* _s = _internal_mutable_message_received(); + // @@protoc_insertion_point(field_mutable:protobuf.MsgRes.message_received) + return _s; + } + inline const std::string& MsgRes::_internal_message_received() const + { + return message_received_.Get(); + } + inline void MsgRes::_internal_set_message_received(const std::string& value) + { + message_received_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation()); + } + inline std::string* MsgRes::_internal_mutable_message_received() + { + return message_received_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation()); + } + inline std::string* MsgRes::release_message_received() + { + // @@protoc_insertion_point(field_release:protobuf.MsgRes.message_received) + return message_received_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation()); + } + inline void MsgRes::set_allocated_message_received(std::string* message_received) + { + if (message_received != nullptr) + { + } + else + { + } + message_received_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), message_received, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (message_received_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) + { + message_received_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:protobuf.MsgRes.message_received) + } + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif // __GNUC__ + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // @@protoc_insertion_point(namespace_scope) + +} // namespace protobuf + +// @@protoc_insertion_point(global_scope) + +#include +#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_Message2Clients_2eproto diff --git a/CAPI/proto/Message2Server.grpc.pb.cc b/CAPI/proto/Message2Server.grpc.pb.cc new file mode 100644 index 0000000..1b47393 --- /dev/null +++ b/CAPI/proto/Message2Server.grpc.pb.cc @@ -0,0 +1,25 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: Message2Server.proto + +#include "Message2Server.pb.h" +#include "Message2Server.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace protobuf +{ + +} // namespace protobuf diff --git a/CAPI/proto/Message2Server.grpc.pb.h b/CAPI/proto/Message2Server.grpc.pb.h new file mode 100644 index 0000000..511570c --- /dev/null +++ b/CAPI/proto/Message2Server.grpc.pb.h @@ -0,0 +1,35 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: Message2Server.proto +// Original file comments: +// Message2Server +#ifndef GRPC_Message2Server_2eproto__INCLUDED +#define GRPC_Message2Server_2eproto__INCLUDED + +#include "Message2Server.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace protobuf +{ + +} // namespace protobuf + +#endif // GRPC_Message2Server_2eproto__INCLUDED diff --git a/CAPI/proto/Message2Server.pb.cc b/CAPI/proto/Message2Server.pb.cc new file mode 100644 index 0000000..9777136 --- /dev/null +++ b/CAPI/proto/Message2Server.pb.cc @@ -0,0 +1,2006 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Message2Server.proto + +#include "Message2Server.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +PROTOBUF_PRAGMA_INIT_SEG +namespace protobuf +{ + constexpr PlayerMsg::PlayerMsg( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + player_id_(int64_t{0}), + player_type_(0) + + , + _oneof_case_{} + { + } + struct PlayerMsgDefaultTypeInternal + { + constexpr PlayerMsgDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~PlayerMsgDefaultTypeInternal() + { + } + union + { + PlayerMsg _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PlayerMsgDefaultTypeInternal _PlayerMsg_default_instance_; + constexpr MoveMsg::MoveMsg( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + player_id_(int64_t{0}), + angle_(0), + time_in_milliseconds_(int64_t{0}) + { + } + struct MoveMsgDefaultTypeInternal + { + constexpr MoveMsgDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~MoveMsgDefaultTypeInternal() + { + } + union + { + MoveMsg _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MoveMsgDefaultTypeInternal _MoveMsg_default_instance_; + constexpr PickMsg::PickMsg( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + player_id_(int64_t{0}), + prop_type_(0) + { + } + struct PickMsgDefaultTypeInternal + { + constexpr PickMsgDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~PickMsgDefaultTypeInternal() + { + } + union + { + PickMsg _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PickMsgDefaultTypeInternal _PickMsg_default_instance_; + constexpr SendMsg::SendMsg( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + message_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string), + player_id_(int64_t{0}), + to_player_id_(int64_t{0}) + { + } + struct SendMsgDefaultTypeInternal + { + constexpr SendMsgDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~SendMsgDefaultTypeInternal() + { + } + union + { + SendMsg _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SendMsgDefaultTypeInternal _SendMsg_default_instance_; + constexpr AttackMsg::AttackMsg( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + player_id_(int64_t{0}), + angle_(0) + { + } + struct AttackMsgDefaultTypeInternal + { + constexpr AttackMsgDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~AttackMsgDefaultTypeInternal() + { + } + union + { + AttackMsg _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT AttackMsgDefaultTypeInternal _AttackMsg_default_instance_; + constexpr IDMsg::IDMsg( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized + ) : + player_id_(int64_t{0}) + { + } + struct IDMsgDefaultTypeInternal + { + constexpr IDMsgDefaultTypeInternal() : + _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) + { + } + ~IDMsgDefaultTypeInternal() + { + } + union + { + IDMsg _instance; + }; + }; + PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT IDMsgDefaultTypeInternal _IDMsg_default_instance_; +} // namespace protobuf +static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_Message2Server_2eproto[6]; +static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_Message2Server_2eproto = nullptr; +static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_Message2Server_2eproto = nullptr; + +const uint32_t TableStruct_Message2Server_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::PlayerMsg, _internal_metadata_), + ~0u, // no _extensions_ + PROTOBUF_FIELD_OFFSET(::protobuf::PlayerMsg, _oneof_case_[0]), + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::PlayerMsg, player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::PlayerMsg, player_type_), + ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, + ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, + PROTOBUF_FIELD_OFFSET(::protobuf::PlayerMsg, job_type_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::MoveMsg, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::MoveMsg, player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::MoveMsg, angle_), + PROTOBUF_FIELD_OFFSET(::protobuf::MoveMsg, time_in_milliseconds_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::PickMsg, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::PickMsg, player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::PickMsg, prop_type_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::SendMsg, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::SendMsg, player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::SendMsg, to_player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::SendMsg, message_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::AttackMsg, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::AttackMsg, player_id_), + PROTOBUF_FIELD_OFFSET(::protobuf::AttackMsg, angle_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::protobuf::IDMsg, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::protobuf::IDMsg, player_id_), +}; +static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + {0, -1, -1, sizeof(::protobuf::PlayerMsg)}, + {11, -1, -1, sizeof(::protobuf::MoveMsg)}, + {20, -1, -1, sizeof(::protobuf::PickMsg)}, + {28, -1, -1, sizeof(::protobuf::SendMsg)}, + {37, -1, -1, sizeof(::protobuf::AttackMsg)}, + {45, -1, -1, sizeof(::protobuf::IDMsg)}, +}; + +static ::PROTOBUF_NAMESPACE_ID::Message const* const file_default_instances[] = { + reinterpret_cast(&::protobuf::_PlayerMsg_default_instance_), + reinterpret_cast(&::protobuf::_MoveMsg_default_instance_), + reinterpret_cast(&::protobuf::_PickMsg_default_instance_), + reinterpret_cast(&::protobuf::_SendMsg_default_instance_), + reinterpret_cast(&::protobuf::_AttackMsg_default_instance_), + reinterpret_cast(&::protobuf::_IDMsg_default_instance_), +}; + +const char descriptor_table_protodef_Message2Server_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = + "\n\024Message2Server.proto\022\010protobuf\032\021Messag" + "eType.proto\"\257\001\n\tPlayerMsg\022\021\n\tplayer_id\030\001" + " \001(\003\022)\n\013player_type\030\002 \001(\0162\024.protobuf.Pla" + "yerType\022)\n\nhuman_type\030\003 \001(\0162\023.protobuf.H" + "umanTypeH\000\022-\n\014butcher_type\030\004 \001(\0162\025.proto" + "buf.ButcherTypeH\000B\n\n\010job_type\"I\n\007MoveMsg" + "\022\021\n\tplayer_id\030\001 \001(\003\022\r\n\005angle\030\002 \001(\001\022\034\n\024ti" + "me_in_milliseconds\030\003 \001(\003\"C\n\007PickMsg\022\021\n\tp" + "layer_id\030\001 \001(\003\022%\n\tprop_type\030\002 \001(\0162\022.prot" + "obuf.PropType\"C\n\007SendMsg\022\021\n\tplayer_id\030\001 " + "\001(\003\022\024\n\014to_player_id\030\002 \001(\003\022\017\n\007message\030\003 \001" + "(\t\"-\n\tAttackMsg\022\021\n\tplayer_id\030\001 \001(\003\022\r\n\005an" + "gle\030\002 \001(\001\"\032\n\005IDMsg\022\021\n\tplayer_id\030\001 \001(\003b\006p" + "roto3"; +static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* const descriptor_table_Message2Server_2eproto_deps[1] = { + &::descriptor_table_MessageType_2eproto, +}; +static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_Message2Server_2eproto_once; +const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_Message2Server_2eproto = { + false, + false, + 525, + descriptor_table_protodef_Message2Server_2eproto, + "Message2Server.proto", + &descriptor_table_Message2Server_2eproto_once, + descriptor_table_Message2Server_2eproto_deps, + 1, + 6, + schemas, + file_default_instances, + TableStruct_Message2Server_2eproto::offsets, + file_level_metadata_Message2Server_2eproto, + file_level_enum_descriptors_Message2Server_2eproto, + file_level_service_descriptors_Message2Server_2eproto, +}; +PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_Message2Server_2eproto_getter() +{ + return &descriptor_table_Message2Server_2eproto; +} + +// Force running AddDescriptors() at dynamic initialization time. +PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_Message2Server_2eproto(&descriptor_table_Message2Server_2eproto); +namespace protobuf +{ + + // =================================================================== + + class PlayerMsg::_Internal + { + public: + }; + + PlayerMsg::PlayerMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.PlayerMsg) + } + PlayerMsg::PlayerMsg(const PlayerMsg& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&player_id_, &from.player_id_, static_cast(reinterpret_cast(&player_type_) - reinterpret_cast(&player_id_)) + sizeof(player_type_)); + clear_has_job_type(); + switch (from.job_type_case()) + { + case kHumanType: + { + _internal_set_human_type(from._internal_human_type()); + break; + } + case kButcherType: + { + _internal_set_butcher_type(from._internal_butcher_type()); + break; + } + case JOB_TYPE_NOT_SET: + { + break; + } + } + // @@protoc_insertion_point(copy_constructor:protobuf.PlayerMsg) + } + + inline void PlayerMsg::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&player_type_) - reinterpret_cast(&player_id_)) + sizeof(player_type_)); + clear_has_job_type(); + } + + PlayerMsg::~PlayerMsg() + { + // @@protoc_insertion_point(destructor:protobuf.PlayerMsg) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void PlayerMsg::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + if (has_job_type()) + { + clear_job_type(); + } + } + + void PlayerMsg::ArenaDtor(void* object) + { + PlayerMsg* _this = reinterpret_cast(object); + (void)_this; + } + void PlayerMsg::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void PlayerMsg::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void PlayerMsg::clear_job_type() + { + // @@protoc_insertion_point(one_of_clear_start:protobuf.PlayerMsg) + switch (job_type_case()) + { + case kHumanType: + { + // No need to clear + break; + } + case kButcherType: + { + // No need to clear + break; + } + case JOB_TYPE_NOT_SET: + { + break; + } + } + _oneof_case_[0] = JOB_TYPE_NOT_SET; + } + + void PlayerMsg::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.PlayerMsg) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&player_id_, 0, static_cast(reinterpret_cast(&player_type_) - reinterpret_cast(&player_id_)) + sizeof(player_type_)); + clear_job_type(); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* PlayerMsg::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 player_id = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // .protobuf.PlayerType player_type = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_player_type(static_cast<::protobuf::PlayerType>(val)); + } + else + goto handle_unusual; + continue; + // .protobuf.HumanType human_type = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_human_type(static_cast<::protobuf::HumanType>(val)); + } + else + goto handle_unusual; + continue; + // .protobuf.ButcherType butcher_type = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 32)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_butcher_type(static_cast<::protobuf::ButcherType>(val)); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* PlayerMsg::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.PlayerMsg) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_player_id(), target); + } + + // .protobuf.PlayerType player_type = 2; + if (this->_internal_player_type() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 2, this->_internal_player_type(), target + ); + } + + // .protobuf.HumanType human_type = 3; + if (_internal_has_human_type()) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 3, this->_internal_human_type(), target + ); + } + + // .protobuf.ButcherType butcher_type = 4; + if (_internal_has_butcher_type()) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 4, this->_internal_butcher_type(), target + ); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.PlayerMsg) + return target; + } + + size_t PlayerMsg::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.PlayerMsg) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + // .protobuf.PlayerType player_type = 2; + if (this->_internal_player_type() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_player_type()); + } + + switch (job_type_case()) + { + // .protobuf.HumanType human_type = 3; + case kHumanType: + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_human_type()); + break; + } + // .protobuf.ButcherType butcher_type = 4; + case kButcherType: + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_butcher_type()); + break; + } + case JOB_TYPE_NOT_SET: + { + break; + } + } + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PlayerMsg::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + PlayerMsg::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* PlayerMsg::GetClassData() const + { + return &_class_data_; + } + + void PlayerMsg::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void PlayerMsg::MergeFrom(const PlayerMsg& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.PlayerMsg) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + if (from._internal_player_type() != 0) + { + _internal_set_player_type(from._internal_player_type()); + } + switch (from.job_type_case()) + { + case kHumanType: + { + _internal_set_human_type(from._internal_human_type()); + break; + } + case kButcherType: + { + _internal_set_butcher_type(from._internal_butcher_type()); + break; + } + case JOB_TYPE_NOT_SET: + { + break; + } + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void PlayerMsg::CopyFrom(const PlayerMsg& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.PlayerMsg) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool PlayerMsg::IsInitialized() const + { + return true; + } + + void PlayerMsg::InternalSwap(PlayerMsg* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(PlayerMsg, player_type_) + sizeof(PlayerMsg::player_type_) - PROTOBUF_FIELD_OFFSET(PlayerMsg, player_id_)>( + reinterpret_cast(&player_id_), + reinterpret_cast(&other->player_id_) + ); + swap(job_type_, other->job_type_); + swap(_oneof_case_[0], other->_oneof_case_[0]); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata PlayerMsg::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Server_2eproto_getter, &descriptor_table_Message2Server_2eproto_once, file_level_metadata_Message2Server_2eproto[0] + ); + } + + // =================================================================== + + class MoveMsg::_Internal + { + public: + }; + + MoveMsg::MoveMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.MoveMsg) + } + MoveMsg::MoveMsg(const MoveMsg& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&player_id_, &from.player_id_, static_cast(reinterpret_cast(&time_in_milliseconds_) - reinterpret_cast(&player_id_)) + sizeof(time_in_milliseconds_)); + // @@protoc_insertion_point(copy_constructor:protobuf.MoveMsg) + } + + inline void MoveMsg::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&time_in_milliseconds_) - reinterpret_cast(&player_id_)) + sizeof(time_in_milliseconds_)); + } + + MoveMsg::~MoveMsg() + { + // @@protoc_insertion_point(destructor:protobuf.MoveMsg) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void MoveMsg::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void MoveMsg::ArenaDtor(void* object) + { + MoveMsg* _this = reinterpret_cast(object); + (void)_this; + } + void MoveMsg::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void MoveMsg::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void MoveMsg::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.MoveMsg) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&player_id_, 0, static_cast(reinterpret_cast(&time_in_milliseconds_) - reinterpret_cast(&player_id_)) + sizeof(time_in_milliseconds_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* MoveMsg::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 player_id = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double angle = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 17)) + { + angle_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + // int64 time_in_milliseconds = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) + { + time_in_milliseconds_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* MoveMsg::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.MoveMsg) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_player_id(), target); + } + + // double angle = 2; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_angle = this->_internal_angle(); + uint64_t raw_angle; + memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle)); + if (raw_angle != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(2, this->_internal_angle(), target); + } + + // int64 time_in_milliseconds = 3; + if (this->_internal_time_in_milliseconds() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(3, this->_internal_time_in_milliseconds(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.MoveMsg) + return target; + } + + size_t MoveMsg::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.MoveMsg) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + // double angle = 2; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_angle = this->_internal_angle(); + uint64_t raw_angle; + memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle)); + if (raw_angle != 0) + { + total_size += 1 + 8; + } + + // int64 time_in_milliseconds = 3; + if (this->_internal_time_in_milliseconds() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_time_in_milliseconds()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MoveMsg::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + MoveMsg::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* MoveMsg::GetClassData() const + { + return &_class_data_; + } + + void MoveMsg::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void MoveMsg::MergeFrom(const MoveMsg& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.MoveMsg) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_angle = from._internal_angle(); + uint64_t raw_angle; + memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle)); + if (raw_angle != 0) + { + _internal_set_angle(from._internal_angle()); + } + if (from._internal_time_in_milliseconds() != 0) + { + _internal_set_time_in_milliseconds(from._internal_time_in_milliseconds()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void MoveMsg::CopyFrom(const MoveMsg& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.MoveMsg) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool MoveMsg::IsInitialized() const + { + return true; + } + + void MoveMsg::InternalSwap(MoveMsg* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MoveMsg, time_in_milliseconds_) + sizeof(MoveMsg::time_in_milliseconds_) - PROTOBUF_FIELD_OFFSET(MoveMsg, player_id_)>( + reinterpret_cast(&player_id_), + reinterpret_cast(&other->player_id_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata MoveMsg::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Server_2eproto_getter, &descriptor_table_Message2Server_2eproto_once, file_level_metadata_Message2Server_2eproto[1] + ); + } + + // =================================================================== + + class PickMsg::_Internal + { + public: + }; + + PickMsg::PickMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.PickMsg) + } + PickMsg::PickMsg(const PickMsg& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&player_id_, &from.player_id_, static_cast(reinterpret_cast(&prop_type_) - reinterpret_cast(&player_id_)) + sizeof(prop_type_)); + // @@protoc_insertion_point(copy_constructor:protobuf.PickMsg) + } + + inline void PickMsg::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&prop_type_) - reinterpret_cast(&player_id_)) + sizeof(prop_type_)); + } + + PickMsg::~PickMsg() + { + // @@protoc_insertion_point(destructor:protobuf.PickMsg) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void PickMsg::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void PickMsg::ArenaDtor(void* object) + { + PickMsg* _this = reinterpret_cast(object); + (void)_this; + } + void PickMsg::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void PickMsg::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void PickMsg::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.PickMsg) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&player_id_, 0, static_cast(reinterpret_cast(&prop_type_) - reinterpret_cast(&player_id_)) + sizeof(prop_type_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* PickMsg::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 player_id = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // .protobuf.PropType prop_type = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + _internal_set_prop_type(static_cast<::protobuf::PropType>(val)); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* PickMsg::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.PickMsg) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_player_id(), target); + } + + // .protobuf.PropType prop_type = 2; + if (this->_internal_prop_type() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 2, this->_internal_prop_type(), target + ); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.PickMsg) + return target; + } + + size_t PickMsg::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.PickMsg) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + // .protobuf.PropType prop_type = 2; + if (this->_internal_prop_type() != 0) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_prop_type()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PickMsg::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + PickMsg::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* PickMsg::GetClassData() const + { + return &_class_data_; + } + + void PickMsg::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void PickMsg::MergeFrom(const PickMsg& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.PickMsg) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + if (from._internal_prop_type() != 0) + { + _internal_set_prop_type(from._internal_prop_type()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void PickMsg::CopyFrom(const PickMsg& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.PickMsg) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool PickMsg::IsInitialized() const + { + return true; + } + + void PickMsg::InternalSwap(PickMsg* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(PickMsg, prop_type_) + sizeof(PickMsg::prop_type_) - PROTOBUF_FIELD_OFFSET(PickMsg, player_id_)>( + reinterpret_cast(&player_id_), + reinterpret_cast(&other->player_id_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata PickMsg::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Server_2eproto_getter, &descriptor_table_Message2Server_2eproto_once, file_level_metadata_Message2Server_2eproto[2] + ); + } + + // =================================================================== + + class SendMsg::_Internal + { + public: + }; + + SendMsg::SendMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.SendMsg) + } + SendMsg::SendMsg(const SendMsg& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + message_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + message_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation()); +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (!from._internal_message().empty()) + { + message_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_message(), GetArenaForAllocation()); + } + ::memcpy(&player_id_, &from.player_id_, static_cast(reinterpret_cast(&to_player_id_) - reinterpret_cast(&player_id_)) + sizeof(to_player_id_)); + // @@protoc_insertion_point(copy_constructor:protobuf.SendMsg) + } + + inline void SendMsg::SharedCtor() + { + message_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + message_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation()); +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&to_player_id_) - reinterpret_cast(&player_id_)) + sizeof(to_player_id_)); + } + + SendMsg::~SendMsg() + { + // @@protoc_insertion_point(destructor:protobuf.SendMsg) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void SendMsg::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + message_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); + } + + void SendMsg::ArenaDtor(void* object) + { + SendMsg* _this = reinterpret_cast(object); + (void)_this; + } + void SendMsg::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void SendMsg::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void SendMsg::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.SendMsg) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + message_.ClearToEmpty(); + ::memset(&player_id_, 0, static_cast(reinterpret_cast(&to_player_id_) - reinterpret_cast(&player_id_)) + sizeof(to_player_id_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* SendMsg::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 player_id = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // int64 to_player_id = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) + { + to_player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // string message = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 26)) + { + auto str = _internal_mutable_message(); + ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); + CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "protobuf.SendMsg.message")); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* SendMsg::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.SendMsg) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_player_id(), target); + } + + // int64 to_player_id = 2; + if (this->_internal_to_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(2, this->_internal_to_player_id(), target); + } + + // string message = 3; + if (!this->_internal_message().empty()) + { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + this->_internal_message().data(), static_cast(this->_internal_message().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "protobuf.SendMsg.message" + ); + target = stream->WriteStringMaybeAliased( + 3, this->_internal_message(), target + ); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.SendMsg) + return target; + } + + size_t SendMsg::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.SendMsg) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // string message = 3; + if (!this->_internal_message().empty()) + { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + this->_internal_message() + ); + } + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + // int64 to_player_id = 2; + if (this->_internal_to_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_to_player_id()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SendMsg::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + SendMsg::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* SendMsg::GetClassData() const + { + return &_class_data_; + } + + void SendMsg::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void SendMsg::MergeFrom(const SendMsg& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.SendMsg) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (!from._internal_message().empty()) + { + _internal_set_message(from._internal_message()); + } + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + if (from._internal_to_player_id() != 0) + { + _internal_set_to_player_id(from._internal_to_player_id()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void SendMsg::CopyFrom(const SendMsg& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.SendMsg) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool SendMsg::IsInitialized() const + { + return true; + } + + void SendMsg::InternalSwap(SendMsg* other) + { + using std::swap; + auto* lhs_arena = GetArenaForAllocation(); + auto* rhs_arena = other->GetArenaForAllocation(); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap( + &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), + &message_, + lhs_arena, + &other->message_, + rhs_arena + ); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(SendMsg, to_player_id_) + sizeof(SendMsg::to_player_id_) - PROTOBUF_FIELD_OFFSET(SendMsg, player_id_)>( + reinterpret_cast(&player_id_), + reinterpret_cast(&other->player_id_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata SendMsg::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Server_2eproto_getter, &descriptor_table_Message2Server_2eproto_once, file_level_metadata_Message2Server_2eproto[3] + ); + } + + // =================================================================== + + class AttackMsg::_Internal + { + public: + }; + + AttackMsg::AttackMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.AttackMsg) + } + AttackMsg::AttackMsg(const AttackMsg& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&player_id_, &from.player_id_, static_cast(reinterpret_cast(&angle_) - reinterpret_cast(&player_id_)) + sizeof(angle_)); + // @@protoc_insertion_point(copy_constructor:protobuf.AttackMsg) + } + + inline void AttackMsg::SharedCtor() + { + ::memset(reinterpret_cast(this) + static_cast(reinterpret_cast(&player_id_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&angle_) - reinterpret_cast(&player_id_)) + sizeof(angle_)); + } + + AttackMsg::~AttackMsg() + { + // @@protoc_insertion_point(destructor:protobuf.AttackMsg) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void AttackMsg::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void AttackMsg::ArenaDtor(void* object) + { + AttackMsg* _this = reinterpret_cast(object); + (void)_this; + } + void AttackMsg::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void AttackMsg::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void AttackMsg::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.AttackMsg) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::memset(&player_id_, 0, static_cast(reinterpret_cast(&angle_) - reinterpret_cast(&player_id_)) + sizeof(angle_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* AttackMsg::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 player_id = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + // double angle = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 17)) + { + angle_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(double); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* AttackMsg::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.AttackMsg) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_player_id(), target); + } + + // double angle = 2; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_angle = this->_internal_angle(); + uint64_t raw_angle; + memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle)); + if (raw_angle != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(2, this->_internal_angle(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.AttackMsg) + return target; + } + + size_t AttackMsg::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.AttackMsg) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + // double angle = 2; + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_angle = this->_internal_angle(); + uint64_t raw_angle; + memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle)); + if (raw_angle != 0) + { + total_size += 1 + 8; + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData AttackMsg::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + AttackMsg::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* AttackMsg::GetClassData() const + { + return &_class_data_; + } + + void AttackMsg::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void AttackMsg::MergeFrom(const AttackMsg& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.AttackMsg) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size."); + double tmp_angle = from._internal_angle(); + uint64_t raw_angle; + memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle)); + if (raw_angle != 0) + { + _internal_set_angle(from._internal_angle()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void AttackMsg::CopyFrom(const AttackMsg& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.AttackMsg) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool AttackMsg::IsInitialized() const + { + return true; + } + + void AttackMsg::InternalSwap(AttackMsg* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(AttackMsg, angle_) + sizeof(AttackMsg::angle_) - PROTOBUF_FIELD_OFFSET(AttackMsg, player_id_)>( + reinterpret_cast(&player_id_), + reinterpret_cast(&other->player_id_) + ); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata AttackMsg::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Server_2eproto_getter, &descriptor_table_Message2Server_2eproto_once, file_level_metadata_Message2Server_2eproto[4] + ); + } + + // =================================================================== + + class IDMsg::_Internal + { + public: + }; + + IDMsg::IDMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : + ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) + { + SharedCtor(); + if (!is_message_owned) + { + RegisterArenaDtor(arena); + } + // @@protoc_insertion_point(arena_constructor:protobuf.IDMsg) + } + IDMsg::IDMsg(const IDMsg& from) : + ::PROTOBUF_NAMESPACE_ID::Message() + { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + player_id_ = from.player_id_; + // @@protoc_insertion_point(copy_constructor:protobuf.IDMsg) + } + + inline void IDMsg::SharedCtor() + { + player_id_ = int64_t{0}; + } + + IDMsg::~IDMsg() + { + // @@protoc_insertion_point(destructor:protobuf.IDMsg) + if (GetArenaForAllocation() != nullptr) + return; + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + inline void IDMsg::SharedDtor() + { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + } + + void IDMsg::ArenaDtor(void* object) + { + IDMsg* _this = reinterpret_cast(object); + (void)_this; + } + void IDMsg::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) + { + } + void IDMsg::SetCachedSize(int size) const + { + _cached_size_.Set(size); + } + + void IDMsg::Clear() + { + // @@protoc_insertion_point(message_clear_start:protobuf.IDMsg) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + player_id_ = int64_t{0}; + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); + } + + const char* IDMsg::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) + { +#define CHK_(x) \ + if (PROTOBUF_PREDICT_FALSE(!(x))) \ + goto failure + while (!ctx->Done(&ptr)) + { + uint32_t tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + switch (tag >> 3) + { + // int64 player_id = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) + { + player_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } + else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) + { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, + ctx + ); + CHK_(ptr != nullptr); + } // while + message_done: + return ptr; + failure: + ptr = nullptr; + goto message_done; +#undef CHK_ + } + + uint8_t* IDMsg::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const + { + // @@protoc_insertion_point(serialize_to_array_start:protobuf.IDMsg) + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_player_id(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) + { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream + ); + } + // @@protoc_insertion_point(serialize_to_array_end:protobuf.IDMsg) + return target; + } + + size_t IDMsg::ByteSizeLong() const + { + // @@protoc_insertion_point(message_byte_size_start:protobuf.IDMsg) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + // int64 player_id = 1; + if (this->_internal_player_id() != 0) + { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_player_id()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_); + } + + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData IDMsg::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck, + IDMsg::MergeImpl}; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* IDMsg::GetClassData() const + { + return &_class_data_; + } + + void IDMsg::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from) + { + static_cast(to)->MergeFrom( + static_cast(from) + ); + } + + void IDMsg::MergeFrom(const IDMsg& from) + { + // @@protoc_insertion_point(class_specific_merge_from_start:protobuf.IDMsg) + GOOGLE_DCHECK_NE(&from, this); + uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + if (from._internal_player_id() != 0) + { + _internal_set_player_id(from._internal_player_id()); + } + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + } + + void IDMsg::CopyFrom(const IDMsg& from) + { + // @@protoc_insertion_point(class_specific_copy_from_start:protobuf.IDMsg) + if (&from == this) + return; + Clear(); + MergeFrom(from); + } + + bool IDMsg::IsInitialized() const + { + return true; + } + + void IDMsg::InternalSwap(IDMsg* other) + { + using std::swap; + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + swap(player_id_, other->player_id_); + } + + ::PROTOBUF_NAMESPACE_ID::Metadata IDMsg::GetMetadata() const + { + return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors( + &descriptor_table_Message2Server_2eproto_getter, &descriptor_table_Message2Server_2eproto_once, file_level_metadata_Message2Server_2eproto[5] + ); + } + + // @@protoc_insertion_point(namespace_scope) +} // namespace protobuf +PROTOBUF_NAMESPACE_OPEN +template<> +PROTOBUF_NOINLINE ::protobuf::PlayerMsg* Arena::CreateMaybeMessage<::protobuf::PlayerMsg>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::PlayerMsg>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::MoveMsg* Arena::CreateMaybeMessage<::protobuf::MoveMsg>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::MoveMsg>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::PickMsg* Arena::CreateMaybeMessage<::protobuf::PickMsg>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::PickMsg>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::SendMsg* Arena::CreateMaybeMessage<::protobuf::SendMsg>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::SendMsg>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::AttackMsg* Arena::CreateMaybeMessage<::protobuf::AttackMsg>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::AttackMsg>(arena); +} +template<> +PROTOBUF_NOINLINE ::protobuf::IDMsg* Arena::CreateMaybeMessage<::protobuf::IDMsg>(Arena* arena) +{ + return Arena::CreateMessageInternal<::protobuf::IDMsg>(arena); +} +PROTOBUF_NAMESPACE_CLOSE + +// @@protoc_insertion_point(global_scope) +#include diff --git a/CAPI/proto/Message2Server.pb.h b/CAPI/proto/Message2Server.pb.h new file mode 100644 index 0000000..33caf27 --- /dev/null +++ b/CAPI/proto/Message2Server.pb.h @@ -0,0 +1,1864 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Message2Server.proto + +#ifndef GOOGLE_PROTOBUF_INCLUDED_Message2Server_2eproto +#define GOOGLE_PROTOBUF_INCLUDED_Message2Server_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3019000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3019004 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +#include "MessageType.pb.h" +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_Message2Server_2eproto +PROTOBUF_NAMESPACE_OPEN +namespace internal +{ + class AnyMetadata; +} // namespace internal +PROTOBUF_NAMESPACE_CLOSE + +// Internal implementation detail -- do not use these members. +struct TableStruct_Message2Server_2eproto +{ + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[6] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; + static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; + static const uint32_t offsets[]; +}; +extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_Message2Server_2eproto; +namespace protobuf +{ + class AttackMsg; + struct AttackMsgDefaultTypeInternal; + extern AttackMsgDefaultTypeInternal _AttackMsg_default_instance_; + class IDMsg; + struct IDMsgDefaultTypeInternal; + extern IDMsgDefaultTypeInternal _IDMsg_default_instance_; + class MoveMsg; + struct MoveMsgDefaultTypeInternal; + extern MoveMsgDefaultTypeInternal _MoveMsg_default_instance_; + class PickMsg; + struct PickMsgDefaultTypeInternal; + extern PickMsgDefaultTypeInternal _PickMsg_default_instance_; + class PlayerMsg; + struct PlayerMsgDefaultTypeInternal; + extern PlayerMsgDefaultTypeInternal _PlayerMsg_default_instance_; + class SendMsg; + struct SendMsgDefaultTypeInternal; + extern SendMsgDefaultTypeInternal _SendMsg_default_instance_; +} // namespace protobuf +PROTOBUF_NAMESPACE_OPEN +template<> +::protobuf::AttackMsg* Arena::CreateMaybeMessage<::protobuf::AttackMsg>(Arena*); +template<> +::protobuf::IDMsg* Arena::CreateMaybeMessage<::protobuf::IDMsg>(Arena*); +template<> +::protobuf::MoveMsg* Arena::CreateMaybeMessage<::protobuf::MoveMsg>(Arena*); +template<> +::protobuf::PickMsg* Arena::CreateMaybeMessage<::protobuf::PickMsg>(Arena*); +template<> +::protobuf::PlayerMsg* Arena::CreateMaybeMessage<::protobuf::PlayerMsg>(Arena*); +template<> +::protobuf::SendMsg* Arena::CreateMaybeMessage<::protobuf::SendMsg>(Arena*); +PROTOBUF_NAMESPACE_CLOSE +namespace protobuf +{ + + // =================================================================== + + class PlayerMsg final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.PlayerMsg) */ + { + public: + inline PlayerMsg() : + PlayerMsg(nullptr) + { + } + ~PlayerMsg() override; + explicit constexpr PlayerMsg(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + PlayerMsg(const PlayerMsg& from); + PlayerMsg(PlayerMsg&& from) noexcept + : + PlayerMsg() + { + *this = ::std::move(from); + } + + inline PlayerMsg& operator=(const PlayerMsg& from) + { + CopyFrom(from); + return *this; + } + inline PlayerMsg& operator=(PlayerMsg&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const PlayerMsg& default_instance() + { + return *internal_default_instance(); + } + enum JobTypeCase + { + kHumanType = 3, + kButcherType = 4, + JOB_TYPE_NOT_SET = 0, + }; + + static inline const PlayerMsg* internal_default_instance() + { + return reinterpret_cast( + &_PlayerMsg_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 0; + + friend void swap(PlayerMsg& a, PlayerMsg& b) + { + a.Swap(&b); + } + inline void Swap(PlayerMsg* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PlayerMsg* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + PlayerMsg* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const PlayerMsg& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const PlayerMsg& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PlayerMsg* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.PlayerMsg"; + } + + protected: + explicit PlayerMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kPlayerIdFieldNumber = 1, + kPlayerTypeFieldNumber = 2, + kHumanTypeFieldNumber = 3, + kButcherTypeFieldNumber = 4, + }; + // int64 player_id = 1; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // .protobuf.PlayerType player_type = 2; + void clear_player_type(); + ::protobuf::PlayerType player_type() const; + void set_player_type(::protobuf::PlayerType value); + + private: + ::protobuf::PlayerType _internal_player_type() const; + void _internal_set_player_type(::protobuf::PlayerType value); + + public: + // .protobuf.HumanType human_type = 3; + bool has_human_type() const; + + private: + bool _internal_has_human_type() const; + + public: + void clear_human_type(); + ::protobuf::HumanType human_type() const; + void set_human_type(::protobuf::HumanType value); + + private: + ::protobuf::HumanType _internal_human_type() const; + void _internal_set_human_type(::protobuf::HumanType value); + + public: + // .protobuf.ButcherType butcher_type = 4; + bool has_butcher_type() const; + + private: + bool _internal_has_butcher_type() const; + + public: + void clear_butcher_type(); + ::protobuf::ButcherType butcher_type() const; + void set_butcher_type(::protobuf::ButcherType value); + + private: + ::protobuf::ButcherType _internal_butcher_type() const; + void _internal_set_butcher_type(::protobuf::ButcherType value); + + public: + void clear_job_type(); + JobTypeCase job_type_case() const; + // @@protoc_insertion_point(class_scope:protobuf.PlayerMsg) + + private: + class _Internal; + void set_has_human_type(); + void set_has_butcher_type(); + + inline bool has_job_type() const; + inline void clear_has_job_type(); + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int64_t player_id_; + int player_type_; + union JobTypeUnion + { + constexpr JobTypeUnion() : + _constinit_{} + { + } + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_; + int human_type_; + int butcher_type_; + } job_type_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + uint32_t _oneof_case_[1]; + + friend struct ::TableStruct_Message2Server_2eproto; + }; + // ------------------------------------------------------------------- + + class MoveMsg final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.MoveMsg) */ + { + public: + inline MoveMsg() : + MoveMsg(nullptr) + { + } + ~MoveMsg() override; + explicit constexpr MoveMsg(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MoveMsg(const MoveMsg& from); + MoveMsg(MoveMsg&& from) noexcept + : + MoveMsg() + { + *this = ::std::move(from); + } + + inline MoveMsg& operator=(const MoveMsg& from) + { + CopyFrom(from); + return *this; + } + inline MoveMsg& operator=(MoveMsg&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const MoveMsg& default_instance() + { + return *internal_default_instance(); + } + static inline const MoveMsg* internal_default_instance() + { + return reinterpret_cast( + &_MoveMsg_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 1; + + friend void swap(MoveMsg& a, MoveMsg& b) + { + a.Swap(&b); + } + inline void Swap(MoveMsg* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MoveMsg* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + MoveMsg* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const MoveMsg& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const MoveMsg& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MoveMsg* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.MoveMsg"; + } + + protected: + explicit MoveMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kPlayerIdFieldNumber = 1, + kAngleFieldNumber = 2, + kTimeInMillisecondsFieldNumber = 3, + }; + // int64 player_id = 1; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // double angle = 2; + void clear_angle(); + double angle() const; + void set_angle(double value); + + private: + double _internal_angle() const; + void _internal_set_angle(double value); + + public: + // int64 time_in_milliseconds = 3; + void clear_time_in_milliseconds(); + int64_t time_in_milliseconds() const; + void set_time_in_milliseconds(int64_t value); + + private: + int64_t _internal_time_in_milliseconds() const; + void _internal_set_time_in_milliseconds(int64_t value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.MoveMsg) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int64_t player_id_; + double angle_; + int64_t time_in_milliseconds_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Server_2eproto; + }; + // ------------------------------------------------------------------- + + class PickMsg final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.PickMsg) */ + { + public: + inline PickMsg() : + PickMsg(nullptr) + { + } + ~PickMsg() override; + explicit constexpr PickMsg(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + PickMsg(const PickMsg& from); + PickMsg(PickMsg&& from) noexcept + : + PickMsg() + { + *this = ::std::move(from); + } + + inline PickMsg& operator=(const PickMsg& from) + { + CopyFrom(from); + return *this; + } + inline PickMsg& operator=(PickMsg&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const PickMsg& default_instance() + { + return *internal_default_instance(); + } + static inline const PickMsg* internal_default_instance() + { + return reinterpret_cast( + &_PickMsg_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 2; + + friend void swap(PickMsg& a, PickMsg& b) + { + a.Swap(&b); + } + inline void Swap(PickMsg* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PickMsg* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + PickMsg* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const PickMsg& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const PickMsg& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PickMsg* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.PickMsg"; + } + + protected: + explicit PickMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kPlayerIdFieldNumber = 1, + kPropTypeFieldNumber = 2, + }; + // int64 player_id = 1; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // .protobuf.PropType prop_type = 2; + void clear_prop_type(); + ::protobuf::PropType prop_type() const; + void set_prop_type(::protobuf::PropType value); + + private: + ::protobuf::PropType _internal_prop_type() const; + void _internal_set_prop_type(::protobuf::PropType value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.PickMsg) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int64_t player_id_; + int prop_type_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Server_2eproto; + }; + // ------------------------------------------------------------------- + + class SendMsg final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.SendMsg) */ + { + public: + inline SendMsg() : + SendMsg(nullptr) + { + } + ~SendMsg() override; + explicit constexpr SendMsg(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + SendMsg(const SendMsg& from); + SendMsg(SendMsg&& from) noexcept + : + SendMsg() + { + *this = ::std::move(from); + } + + inline SendMsg& operator=(const SendMsg& from) + { + CopyFrom(from); + return *this; + } + inline SendMsg& operator=(SendMsg&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const SendMsg& default_instance() + { + return *internal_default_instance(); + } + static inline const SendMsg* internal_default_instance() + { + return reinterpret_cast( + &_SendMsg_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 3; + + friend void swap(SendMsg& a, SendMsg& b) + { + a.Swap(&b); + } + inline void Swap(SendMsg* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SendMsg* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + SendMsg* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const SendMsg& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const SendMsg& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SendMsg* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.SendMsg"; + } + + protected: + explicit SendMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kMessageFieldNumber = 3, + kPlayerIdFieldNumber = 1, + kToPlayerIdFieldNumber = 2, + }; + // string message = 3; + void clear_message(); + const std::string& message() const; + template + void set_message(ArgT0&& arg0, ArgT... args); + std::string* mutable_message(); + PROTOBUF_NODISCARD std::string* release_message(); + void set_allocated_message(std::string* message); + + private: + const std::string& _internal_message() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_message(const std::string& value); + std::string* _internal_mutable_message(); + + public: + // int64 player_id = 1; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // int64 to_player_id = 2; + void clear_to_player_id(); + int64_t to_player_id() const; + void set_to_player_id(int64_t value); + + private: + int64_t _internal_to_player_id() const; + void _internal_set_to_player_id(int64_t value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.SendMsg) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr message_; + int64_t player_id_; + int64_t to_player_id_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Server_2eproto; + }; + // ------------------------------------------------------------------- + + class AttackMsg final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.AttackMsg) */ + { + public: + inline AttackMsg() : + AttackMsg(nullptr) + { + } + ~AttackMsg() override; + explicit constexpr AttackMsg(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + AttackMsg(const AttackMsg& from); + AttackMsg(AttackMsg&& from) noexcept + : + AttackMsg() + { + *this = ::std::move(from); + } + + inline AttackMsg& operator=(const AttackMsg& from) + { + CopyFrom(from); + return *this; + } + inline AttackMsg& operator=(AttackMsg&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const AttackMsg& default_instance() + { + return *internal_default_instance(); + } + static inline const AttackMsg* internal_default_instance() + { + return reinterpret_cast( + &_AttackMsg_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 4; + + friend void swap(AttackMsg& a, AttackMsg& b) + { + a.Swap(&b); + } + inline void Swap(AttackMsg* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AttackMsg* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + AttackMsg* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const AttackMsg& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const AttackMsg& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AttackMsg* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.AttackMsg"; + } + + protected: + explicit AttackMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kPlayerIdFieldNumber = 1, + kAngleFieldNumber = 2, + }; + // int64 player_id = 1; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // double angle = 2; + void clear_angle(); + double angle() const; + void set_angle(double value); + + private: + double _internal_angle() const; + void _internal_set_angle(double value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.AttackMsg) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int64_t player_id_; + double angle_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Server_2eproto; + }; + // ------------------------------------------------------------------- + + class IDMsg final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:protobuf.IDMsg) */ + { + public: + inline IDMsg() : + IDMsg(nullptr) + { + } + ~IDMsg() override; + explicit constexpr IDMsg(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + IDMsg(const IDMsg& from); + IDMsg(IDMsg&& from) noexcept + : + IDMsg() + { + *this = ::std::move(from); + } + + inline IDMsg& operator=(const IDMsg& from) + { + CopyFrom(from); + return *this; + } + inline IDMsg& operator=(IDMsg&& from) noexcept + { + if (this == &from) + return *this; + if (GetOwningArena() == from.GetOwningArena() +#ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr +#endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) + { + InternalSwap(&from); + } + else + { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() + { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() + { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() + { + return default_instance().GetMetadata().reflection; + } + static const IDMsg& default_instance() + { + return *internal_default_instance(); + } + static inline const IDMsg* internal_default_instance() + { + return reinterpret_cast( + &_IDMsg_default_instance_ + ); + } + static constexpr int kIndexInFileMessages = + 5; + + friend void swap(IDMsg& a, IDMsg& b) + { + a.Swap(&b); + } + inline void Swap(IDMsg* other) + { + if (other == this) + return; +#ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) + { +#else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) + { +#endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } + else + { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(IDMsg* other) + { + if (other == this) + return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + IDMsg* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final + { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const IDMsg& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom(const IDMsg& from); + + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from); + + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream + ) const final; + int GetCachedSize() const final + { + return _cached_size_.Get(); + } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(IDMsg* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() + { + return "protobuf.IDMsg"; + } + + protected: + explicit IDMsg(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); + + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + + public: + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData* GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int + { + kPlayerIdFieldNumber = 1, + }; + // int64 player_id = 1; + void clear_player_id(); + int64_t player_id() const; + void set_player_id(int64_t value); + + private: + int64_t _internal_player_id() const; + void _internal_set_player_id(int64_t value); + + public: + // @@protoc_insertion_point(class_scope:protobuf.IDMsg) + + private: + class _Internal; + + template + friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int64_t player_id_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_Message2Server_2eproto; + }; + // =================================================================== + + // =================================================================== + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ + // PlayerMsg + + // int64 player_id = 1; + inline void PlayerMsg::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t PlayerMsg::_internal_player_id() const + { + return player_id_; + } + inline int64_t PlayerMsg::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.PlayerMsg.player_id) + return _internal_player_id(); + } + inline void PlayerMsg::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void PlayerMsg::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.PlayerMsg.player_id) + } + + // .protobuf.PlayerType player_type = 2; + inline void PlayerMsg::clear_player_type() + { + player_type_ = 0; + } + inline ::protobuf::PlayerType PlayerMsg::_internal_player_type() const + { + return static_cast<::protobuf::PlayerType>(player_type_); + } + inline ::protobuf::PlayerType PlayerMsg::player_type() const + { + // @@protoc_insertion_point(field_get:protobuf.PlayerMsg.player_type) + return _internal_player_type(); + } + inline void PlayerMsg::_internal_set_player_type(::protobuf::PlayerType value) + { + player_type_ = value; + } + inline void PlayerMsg::set_player_type(::protobuf::PlayerType value) + { + _internal_set_player_type(value); + // @@protoc_insertion_point(field_set:protobuf.PlayerMsg.player_type) + } + + // .protobuf.HumanType human_type = 3; + inline bool PlayerMsg::_internal_has_human_type() const + { + return job_type_case() == kHumanType; + } + inline bool PlayerMsg::has_human_type() const + { + return _internal_has_human_type(); + } + inline void PlayerMsg::set_has_human_type() + { + _oneof_case_[0] = kHumanType; + } + inline void PlayerMsg::clear_human_type() + { + if (_internal_has_human_type()) + { + job_type_.human_type_ = 0; + clear_has_job_type(); + } + } + inline ::protobuf::HumanType PlayerMsg::_internal_human_type() const + { + if (_internal_has_human_type()) + { + return static_cast<::protobuf::HumanType>(job_type_.human_type_); + } + return static_cast<::protobuf::HumanType>(0); + } + inline ::protobuf::HumanType PlayerMsg::human_type() const + { + // @@protoc_insertion_point(field_get:protobuf.PlayerMsg.human_type) + return _internal_human_type(); + } + inline void PlayerMsg::_internal_set_human_type(::protobuf::HumanType value) + { + if (!_internal_has_human_type()) + { + clear_job_type(); + set_has_human_type(); + } + job_type_.human_type_ = value; + } + inline void PlayerMsg::set_human_type(::protobuf::HumanType value) + { + _internal_set_human_type(value); + // @@protoc_insertion_point(field_set:protobuf.PlayerMsg.human_type) + } + + // .protobuf.ButcherType butcher_type = 4; + inline bool PlayerMsg::_internal_has_butcher_type() const + { + return job_type_case() == kButcherType; + } + inline bool PlayerMsg::has_butcher_type() const + { + return _internal_has_butcher_type(); + } + inline void PlayerMsg::set_has_butcher_type() + { + _oneof_case_[0] = kButcherType; + } + inline void PlayerMsg::clear_butcher_type() + { + if (_internal_has_butcher_type()) + { + job_type_.butcher_type_ = 0; + clear_has_job_type(); + } + } + inline ::protobuf::ButcherType PlayerMsg::_internal_butcher_type() const + { + if (_internal_has_butcher_type()) + { + return static_cast<::protobuf::ButcherType>(job_type_.butcher_type_); + } + return static_cast<::protobuf::ButcherType>(0); + } + inline ::protobuf::ButcherType PlayerMsg::butcher_type() const + { + // @@protoc_insertion_point(field_get:protobuf.PlayerMsg.butcher_type) + return _internal_butcher_type(); + } + inline void PlayerMsg::_internal_set_butcher_type(::protobuf::ButcherType value) + { + if (!_internal_has_butcher_type()) + { + clear_job_type(); + set_has_butcher_type(); + } + job_type_.butcher_type_ = value; + } + inline void PlayerMsg::set_butcher_type(::protobuf::ButcherType value) + { + _internal_set_butcher_type(value); + // @@protoc_insertion_point(field_set:protobuf.PlayerMsg.butcher_type) + } + + inline bool PlayerMsg::has_job_type() const + { + return job_type_case() != JOB_TYPE_NOT_SET; + } + inline void PlayerMsg::clear_has_job_type() + { + _oneof_case_[0] = JOB_TYPE_NOT_SET; + } + inline PlayerMsg::JobTypeCase PlayerMsg::job_type_case() const + { + return PlayerMsg::JobTypeCase(_oneof_case_[0]); + } + // ------------------------------------------------------------------- + + // MoveMsg + + // int64 player_id = 1; + inline void MoveMsg::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t MoveMsg::_internal_player_id() const + { + return player_id_; + } + inline int64_t MoveMsg::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.MoveMsg.player_id) + return _internal_player_id(); + } + inline void MoveMsg::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void MoveMsg::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.MoveMsg.player_id) + } + + // double angle = 2; + inline void MoveMsg::clear_angle() + { + angle_ = 0; + } + inline double MoveMsg::_internal_angle() const + { + return angle_; + } + inline double MoveMsg::angle() const + { + // @@protoc_insertion_point(field_get:protobuf.MoveMsg.angle) + return _internal_angle(); + } + inline void MoveMsg::_internal_set_angle(double value) + { + angle_ = value; + } + inline void MoveMsg::set_angle(double value) + { + _internal_set_angle(value); + // @@protoc_insertion_point(field_set:protobuf.MoveMsg.angle) + } + + // int64 time_in_milliseconds = 3; + inline void MoveMsg::clear_time_in_milliseconds() + { + time_in_milliseconds_ = int64_t{0}; + } + inline int64_t MoveMsg::_internal_time_in_milliseconds() const + { + return time_in_milliseconds_; + } + inline int64_t MoveMsg::time_in_milliseconds() const + { + // @@protoc_insertion_point(field_get:protobuf.MoveMsg.time_in_milliseconds) + return _internal_time_in_milliseconds(); + } + inline void MoveMsg::_internal_set_time_in_milliseconds(int64_t value) + { + time_in_milliseconds_ = value; + } + inline void MoveMsg::set_time_in_milliseconds(int64_t value) + { + _internal_set_time_in_milliseconds(value); + // @@protoc_insertion_point(field_set:protobuf.MoveMsg.time_in_milliseconds) + } + + // ------------------------------------------------------------------- + + // PickMsg + + // int64 player_id = 1; + inline void PickMsg::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t PickMsg::_internal_player_id() const + { + return player_id_; + } + inline int64_t PickMsg::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.PickMsg.player_id) + return _internal_player_id(); + } + inline void PickMsg::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void PickMsg::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.PickMsg.player_id) + } + + // .protobuf.PropType prop_type = 2; + inline void PickMsg::clear_prop_type() + { + prop_type_ = 0; + } + inline ::protobuf::PropType PickMsg::_internal_prop_type() const + { + return static_cast<::protobuf::PropType>(prop_type_); + } + inline ::protobuf::PropType PickMsg::prop_type() const + { + // @@protoc_insertion_point(field_get:protobuf.PickMsg.prop_type) + return _internal_prop_type(); + } + inline void PickMsg::_internal_set_prop_type(::protobuf::PropType value) + { + prop_type_ = value; + } + inline void PickMsg::set_prop_type(::protobuf::PropType value) + { + _internal_set_prop_type(value); + // @@protoc_insertion_point(field_set:protobuf.PickMsg.prop_type) + } + + // ------------------------------------------------------------------- + + // SendMsg + + // int64 player_id = 1; + inline void SendMsg::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t SendMsg::_internal_player_id() const + { + return player_id_; + } + inline int64_t SendMsg::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.SendMsg.player_id) + return _internal_player_id(); + } + inline void SendMsg::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void SendMsg::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.SendMsg.player_id) + } + + // int64 to_player_id = 2; + inline void SendMsg::clear_to_player_id() + { + to_player_id_ = int64_t{0}; + } + inline int64_t SendMsg::_internal_to_player_id() const + { + return to_player_id_; + } + inline int64_t SendMsg::to_player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.SendMsg.to_player_id) + return _internal_to_player_id(); + } + inline void SendMsg::_internal_set_to_player_id(int64_t value) + { + to_player_id_ = value; + } + inline void SendMsg::set_to_player_id(int64_t value) + { + _internal_set_to_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.SendMsg.to_player_id) + } + + // string message = 3; + inline void SendMsg::clear_message() + { + message_.ClearToEmpty(); + } + inline const std::string& SendMsg::message() const + { + // @@protoc_insertion_point(field_get:protobuf.SendMsg.message) + return _internal_message(); + } + template + inline PROTOBUF_ALWAYS_INLINE void SendMsg::set_message(ArgT0&& arg0, ArgT... args) + { + message_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:protobuf.SendMsg.message) + } + inline std::string* SendMsg::mutable_message() + { + std::string* _s = _internal_mutable_message(); + // @@protoc_insertion_point(field_mutable:protobuf.SendMsg.message) + return _s; + } + inline const std::string& SendMsg::_internal_message() const + { + return message_.Get(); + } + inline void SendMsg::_internal_set_message(const std::string& value) + { + message_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation()); + } + inline std::string* SendMsg::_internal_mutable_message() + { + return message_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation()); + } + inline std::string* SendMsg::release_message() + { + // @@protoc_insertion_point(field_release:protobuf.SendMsg.message) + return message_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation()); + } + inline void SendMsg::set_allocated_message(std::string* message) + { + if (message != nullptr) + { + } + else + { + } + message_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), message, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (message_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) + { + message_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:protobuf.SendMsg.message) + } + + // ------------------------------------------------------------------- + + // AttackMsg + + // int64 player_id = 1; + inline void AttackMsg::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t AttackMsg::_internal_player_id() const + { + return player_id_; + } + inline int64_t AttackMsg::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.AttackMsg.player_id) + return _internal_player_id(); + } + inline void AttackMsg::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void AttackMsg::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.AttackMsg.player_id) + } + + // double angle = 2; + inline void AttackMsg::clear_angle() + { + angle_ = 0; + } + inline double AttackMsg::_internal_angle() const + { + return angle_; + } + inline double AttackMsg::angle() const + { + // @@protoc_insertion_point(field_get:protobuf.AttackMsg.angle) + return _internal_angle(); + } + inline void AttackMsg::_internal_set_angle(double value) + { + angle_ = value; + } + inline void AttackMsg::set_angle(double value) + { + _internal_set_angle(value); + // @@protoc_insertion_point(field_set:protobuf.AttackMsg.angle) + } + + // ------------------------------------------------------------------- + + // IDMsg + + // int64 player_id = 1; + inline void IDMsg::clear_player_id() + { + player_id_ = int64_t{0}; + } + inline int64_t IDMsg::_internal_player_id() const + { + return player_id_; + } + inline int64_t IDMsg::player_id() const + { + // @@protoc_insertion_point(field_get:protobuf.IDMsg.player_id) + return _internal_player_id(); + } + inline void IDMsg::_internal_set_player_id(int64_t value) + { + player_id_ = value; + } + inline void IDMsg::set_player_id(int64_t value) + { + _internal_set_player_id(value); + // @@protoc_insertion_point(field_set:protobuf.IDMsg.player_id) + } + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif // __GNUC__ + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // ------------------------------------------------------------------- + + // @@protoc_insertion_point(namespace_scope) + +} // namespace protobuf + +// @@protoc_insertion_point(global_scope) + +#include +#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_Message2Server_2eproto diff --git a/CAPI/proto/MessageType.grpc.pb.cc b/CAPI/proto/MessageType.grpc.pb.cc new file mode 100644 index 0000000..fe0ba6f --- /dev/null +++ b/CAPI/proto/MessageType.grpc.pb.cc @@ -0,0 +1,25 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: MessageType.proto + +#include "MessageType.pb.h" +#include "MessageType.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace protobuf +{ + +} // namespace protobuf diff --git a/CAPI/proto/MessageType.grpc.pb.h b/CAPI/proto/MessageType.grpc.pb.h new file mode 100644 index 0000000..587ae62 --- /dev/null +++ b/CAPI/proto/MessageType.grpc.pb.h @@ -0,0 +1,35 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: MessageType.proto +// Original file comments: +// MessageType +#ifndef GRPC_MessageType_2eproto__INCLUDED +#define GRPC_MessageType_2eproto__INCLUDED + +#include "MessageType.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace protobuf +{ + +} // namespace protobuf + +#endif // GRPC_MessageType_2eproto__INCLUDED diff --git a/CAPI/proto/MessageType.pb.cc b/CAPI/proto/MessageType.pb.cc new file mode 100644 index 0000000..4f47a0e --- /dev/null +++ b/CAPI/proto/MessageType.pb.cc @@ -0,0 +1,240 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: MessageType.proto + +#include "MessageType.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +PROTOBUF_PRAGMA_INIT_SEG +namespace protobuf +{ +} // namespace protobuf +static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_MessageType_2eproto[8]; +static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_MessageType_2eproto = nullptr; +const uint32_t TableStruct_MessageType_2eproto::offsets[1] = {}; +static constexpr ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema* schemas = nullptr; +static constexpr ::PROTOBUF_NAMESPACE_ID::Message* const* file_default_instances = nullptr; + +const char descriptor_table_protodef_MessageType_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = + "\n\021MessageType.proto\022\010protobuf*g\n\tPlaceTy" + "pe\022\023\n\017NULL_PLACE_TYPE\020\000\022\010\n\004LAND\020\001\022\010\n\004WAL" + "L\020\002\022\t\n\005GRASS\020\003\022\013\n\007MACHINE\020\004\022\010\n\004GATE\020\005\022\017\n" + "\013HIDDEN_GATE\020\006*8\n\tShapeType\022\023\n\017NULL_SHAP" + "E_TYPE\020\000\022\n\n\006CIRCLE\020\001\022\n\n\006SQUARE\020\002*N\n\010Prop" + "Type\022\022\n\016NULL_PROP_TYPE\020\000\022\n\n\006PTYPE1\020\001\022\n\n\006" + "PTYPE2\020\002\022\n\n\006PTYPE3\020\003\022\n\n\006PTYPE4\020\004*d\n\rHuma" + "nBuffType\022\023\n\017NULL_HBUFF_TYPE\020\000\022\016\n\nHBUFFT" + "YPE1\020\001\022\016\n\nHBUFFTYPE2\020\002\022\016\n\nHBUFFTYPE3\020\003\022\016" + "\n\nHBUFFTYPE4\020\004*f\n\017ButcherBuffType\022\023\n\017NUL" + "L_BBUFF_TYPE\020\000\022\016\n\nBBUFFTYPE1\020\001\022\016\n\nBBUFFT" + "YPE2\020\002\022\016\n\nBBUFFTYPE3\020\003\022\016\n\nBBUFFTYPE4\020\004*H" + "\n\nPlayerType\022\024\n\020NULL_PLAYER_TYPE\020\000\022\020\n\014HU" + "MAN_PLAYER\020\001\022\022\n\016BUTCHER_PLAYER\020\002*`\n\tHuma" + "nType\022\023\n\017NULL_HUMAN_TYPE\020\000\022\016\n\nHUMANTYPE1" + "\020\001\022\016\n\nHUMANTYPE2\020\002\022\016\n\nHUMANTYPE3\020\003\022\016\n\nHU" + "MANTYPE4\020\004*l\n\013ButcherType\022\025\n\021NULL_BUTCHE" + "R_TYPE\020\000\022\020\n\014BUTCHERTYPE1\020\001\022\020\n\014BUTCHERTYP" + "E2\020\002\022\020\n\014BUTCHERTYPE3\020\003\022\020\n\014BUTCHERTYPE4\020\004" + "b\006proto3"; +static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_MessageType_2eproto_once; +const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_MessageType_2eproto = { + false, + false, + 768, + descriptor_table_protodef_MessageType_2eproto, + "MessageType.proto", + &descriptor_table_MessageType_2eproto_once, + nullptr, + 0, + 0, + schemas, + file_default_instances, + TableStruct_MessageType_2eproto::offsets, + nullptr, + file_level_enum_descriptors_MessageType_2eproto, + file_level_service_descriptors_MessageType_2eproto, +}; +PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_MessageType_2eproto_getter() +{ + return &descriptor_table_MessageType_2eproto; +} + +// Force running AddDescriptors() at dynamic initialization time. +PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_MessageType_2eproto(&descriptor_table_MessageType_2eproto); +namespace protobuf +{ + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PlaceType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[0]; + } + bool PlaceType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ShapeType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[1]; + } + bool ShapeType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PropType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[2]; + } + bool PropType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* HumanBuffType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[3]; + } + bool HumanBuffType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ButcherBuffType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[4]; + } + bool ButcherBuffType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PlayerType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[5]; + } + bool PlayerType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* HumanType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[6]; + } + bool HumanType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } + } + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ButcherType_descriptor() + { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_MessageType_2eproto); + return file_level_enum_descriptors_MessageType_2eproto[7]; + } + bool ButcherType_IsValid(int value) + { + switch (value) + { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } + } + + // @@protoc_insertion_point(namespace_scope) +} // namespace protobuf +PROTOBUF_NAMESPACE_OPEN +PROTOBUF_NAMESPACE_CLOSE + +// @@protoc_insertion_point(global_scope) +#include diff --git a/CAPI/proto/MessageType.pb.h b/CAPI/proto/MessageType.pb.h new file mode 100644 index 0000000..a2c218d --- /dev/null +++ b/CAPI/proto/MessageType.pb.h @@ -0,0 +1,411 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: MessageType.proto + +#ifndef GOOGLE_PROTOBUF_INCLUDED_MessageType_2eproto +#define GOOGLE_PROTOBUF_INCLUDED_MessageType_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3019000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3019004 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_MessageType_2eproto +PROTOBUF_NAMESPACE_OPEN +namespace internal +{ + class AnyMetadata; +} // namespace internal +PROTOBUF_NAMESPACE_CLOSE + +// Internal implementation detail -- do not use these members. +struct TableStruct_MessageType_2eproto +{ + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[1] PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; + static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; + static const uint32_t offsets[]; +}; +extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_MessageType_2eproto; +PROTOBUF_NAMESPACE_OPEN +PROTOBUF_NAMESPACE_CLOSE +namespace protobuf +{ + + enum PlaceType : int + { + NULL_PLACE_TYPE = 0, + LAND = 1, + WALL = 2, + GRASS = 3, + MACHINE = 4, + GATE = 5, + HIDDEN_GATE = 6, + PlaceType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + PlaceType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool PlaceType_IsValid(int value); + constexpr PlaceType PlaceType_MIN = NULL_PLACE_TYPE; + constexpr PlaceType PlaceType_MAX = HIDDEN_GATE; + constexpr int PlaceType_ARRAYSIZE = PlaceType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PlaceType_descriptor(); + template + inline const std::string& PlaceType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function PlaceType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + PlaceType_descriptor(), enum_t_value + ); + } + inline bool PlaceType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PlaceType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + PlaceType_descriptor(), name, value + ); + } + enum ShapeType : int + { + NULL_SHAPE_TYPE = 0, + CIRCLE = 1, + SQUARE = 2, + ShapeType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + ShapeType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool ShapeType_IsValid(int value); + constexpr ShapeType ShapeType_MIN = NULL_SHAPE_TYPE; + constexpr ShapeType ShapeType_MAX = SQUARE; + constexpr int ShapeType_ARRAYSIZE = ShapeType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ShapeType_descriptor(); + template + inline const std::string& ShapeType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ShapeType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ShapeType_descriptor(), enum_t_value + ); + } + inline bool ShapeType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ShapeType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ShapeType_descriptor(), name, value + ); + } + enum PropType : int + { + NULL_PROP_TYPE = 0, + PTYPE1 = 1, + PTYPE2 = 2, + PTYPE3 = 3, + PTYPE4 = 4, + PropType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + PropType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool PropType_IsValid(int value); + constexpr PropType PropType_MIN = NULL_PROP_TYPE; + constexpr PropType PropType_MAX = PTYPE4; + constexpr int PropType_ARRAYSIZE = PropType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PropType_descriptor(); + template + inline const std::string& PropType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function PropType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + PropType_descriptor(), enum_t_value + ); + } + inline bool PropType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PropType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + PropType_descriptor(), name, value + ); + } + enum HumanBuffType : int + { + NULL_HBUFF_TYPE = 0, + HBUFFTYPE1 = 1, + HBUFFTYPE2 = 2, + HBUFFTYPE3 = 3, + HBUFFTYPE4 = 4, + HumanBuffType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + HumanBuffType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool HumanBuffType_IsValid(int value); + constexpr HumanBuffType HumanBuffType_MIN = NULL_HBUFF_TYPE; + constexpr HumanBuffType HumanBuffType_MAX = HBUFFTYPE4; + constexpr int HumanBuffType_ARRAYSIZE = HumanBuffType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* HumanBuffType_descriptor(); + template + inline const std::string& HumanBuffType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function HumanBuffType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + HumanBuffType_descriptor(), enum_t_value + ); + } + inline bool HumanBuffType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, HumanBuffType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + HumanBuffType_descriptor(), name, value + ); + } + enum ButcherBuffType : int + { + NULL_BBUFF_TYPE = 0, + BBUFFTYPE1 = 1, + BBUFFTYPE2 = 2, + BBUFFTYPE3 = 3, + BBUFFTYPE4 = 4, + ButcherBuffType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + ButcherBuffType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool ButcherBuffType_IsValid(int value); + constexpr ButcherBuffType ButcherBuffType_MIN = NULL_BBUFF_TYPE; + constexpr ButcherBuffType ButcherBuffType_MAX = BBUFFTYPE4; + constexpr int ButcherBuffType_ARRAYSIZE = ButcherBuffType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ButcherBuffType_descriptor(); + template + inline const std::string& ButcherBuffType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ButcherBuffType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ButcherBuffType_descriptor(), enum_t_value + ); + } + inline bool ButcherBuffType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ButcherBuffType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ButcherBuffType_descriptor(), name, value + ); + } + enum PlayerType : int + { + NULL_PLAYER_TYPE = 0, + HUMAN_PLAYER = 1, + BUTCHER_PLAYER = 2, + PlayerType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + PlayerType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool PlayerType_IsValid(int value); + constexpr PlayerType PlayerType_MIN = NULL_PLAYER_TYPE; + constexpr PlayerType PlayerType_MAX = BUTCHER_PLAYER; + constexpr int PlayerType_ARRAYSIZE = PlayerType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PlayerType_descriptor(); + template + inline const std::string& PlayerType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function PlayerType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + PlayerType_descriptor(), enum_t_value + ); + } + inline bool PlayerType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PlayerType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + PlayerType_descriptor(), name, value + ); + } + enum HumanType : int + { + NULL_HUMAN_TYPE = 0, + HUMANTYPE1 = 1, + HUMANTYPE2 = 2, + HUMANTYPE3 = 3, + HUMANTYPE4 = 4, + HumanType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + HumanType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool HumanType_IsValid(int value); + constexpr HumanType HumanType_MIN = NULL_HUMAN_TYPE; + constexpr HumanType HumanType_MAX = HUMANTYPE4; + constexpr int HumanType_ARRAYSIZE = HumanType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* HumanType_descriptor(); + template + inline const std::string& HumanType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function HumanType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + HumanType_descriptor(), enum_t_value + ); + } + inline bool HumanType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, HumanType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + HumanType_descriptor(), name, value + ); + } + enum ButcherType : int + { + NULL_BUTCHER_TYPE = 0, + BUTCHERTYPE1 = 1, + BUTCHERTYPE2 = 2, + BUTCHERTYPE3 = 3, + BUTCHERTYPE4 = 4, + ButcherType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), + ButcherType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() + }; + bool ButcherType_IsValid(int value); + constexpr ButcherType ButcherType_MIN = NULL_BUTCHER_TYPE; + constexpr ButcherType ButcherType_MAX = BUTCHERTYPE4; + constexpr int ButcherType_ARRAYSIZE = ButcherType_MAX + 1; + + const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ButcherType_descriptor(); + template + inline const std::string& ButcherType_Name(T enum_t_value) + { + static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ButcherType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ButcherType_descriptor(), enum_t_value + ); + } + inline bool ButcherType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ButcherType* value + ) + { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ButcherType_descriptor(), name, value + ); + } + // =================================================================== + + // =================================================================== + + // =================================================================== + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif // __GNUC__ + + // @@protoc_insertion_point(namespace_scope) + +} // namespace protobuf + +PROTOBUF_NAMESPACE_OPEN + +template<> +struct is_proto_enum<::protobuf::PlaceType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::PlaceType>() +{ + return ::protobuf::PlaceType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::ShapeType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::ShapeType>() +{ + return ::protobuf::ShapeType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::PropType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::PropType>() +{ + return ::protobuf::PropType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::HumanBuffType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::HumanBuffType>() +{ + return ::protobuf::HumanBuffType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::ButcherBuffType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::ButcherBuffType>() +{ + return ::protobuf::ButcherBuffType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::PlayerType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::PlayerType>() +{ + return ::protobuf::PlayerType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::HumanType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::HumanType>() +{ + return ::protobuf::HumanType_descriptor(); +} +template<> +struct is_proto_enum<::protobuf::ButcherType> : ::std::true_type +{ +}; +template<> +inline const EnumDescriptor* GetEnumDescriptor<::protobuf::ButcherType>() +{ + return ::protobuf::ButcherType_descriptor(); +} + +PROTOBUF_NAMESPACE_CLOSE + +// @@protoc_insertion_point(global_scope) + +#include +#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_MessageType_2eproto diff --git a/dependency/.gitignore b/dependency/.gitignore new file mode 100644 index 0000000..9491a2f --- /dev/null +++ b/dependency/.gitignore @@ -0,0 +1,363 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/dependency/Dockerfile/README.md b/dependency/Dockerfile/README.md new file mode 100644 index 0000000..94a32a9 --- /dev/null +++ b/dependency/Dockerfile/README.md @@ -0,0 +1,4 @@ +# Dockerfile + +用于存放Docker配置文件Dockerfile + diff --git a/dependency/README.md b/dependency/README.md new file mode 100644 index 0000000..0fd060b --- /dev/null +++ b/dependency/README.md @@ -0,0 +1,10 @@ +# Dependency + +## 简介 + +该目录用于存放程序所需的所有依赖文件,例如程序编译必须的 .lib 与 .a、程序运行所需的 .dll 与 .so、Docker 配置文件 Dockerfile、protobuf 源代码文件 .proto、shell 脚本 .sh,等等。 + +## 统一约定 + +- 将对应后缀名的文件放入同名的子文件夹时,需要在子文件夹内再建立一个子文件夹,并在新建的文件夹内新建 README 介绍每个文件的用途。 + diff --git a/dependency/dll/README.md b/dependency/dll/README.md new file mode 100644 index 0000000..77b9fe5 --- /dev/null +++ b/dependency/dll/README.md @@ -0,0 +1,4 @@ +# dll + +动态链接库 .dll 与 .so + diff --git a/dependency/lib/README.md b/dependency/lib/README.md new file mode 100644 index 0000000..eb79320 --- /dev/null +++ b/dependency/lib/README.md @@ -0,0 +1,4 @@ +# lib + +静态链接库 .lib 与 .a + diff --git a/dependency/proto/.clang-format b/dependency/proto/.clang-format new file mode 100644 index 0000000..f10f5bd --- /dev/null +++ b/dependency/proto/.clang-format @@ -0,0 +1,283 @@ +--- +BasedOnStyle: Microsoft +Language: CSharp +AccessModifierOffset: -4 +AlignAfterOpenBracket: BlockIndent +AlignArrayOfStructures: None +AlignConsecutiveMacros: None +AlignConsecutiveAssignments: None +AlignConsecutiveBitFields: None +AlignConsecutiveDeclarations: None +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: false +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: false +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: true + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: true +BreakBeforeBraces: Custom +BreakInheritanceList: AfterColon +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: AfterColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 0 +CommentPragmas: '^ THU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: Always +ExperimentalAutoDetectBinPacking: false +PackConstructorInitializers: CurrentLine +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Merge +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IndentAccessModifiers: false +IndentCaseLabels: true +IndentCaseBlocks: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequires: false +IndentWidth: 4 +IndentWrappedFunctionNames: true +InsertTrailingCommas: None +LambdaBodyIndentation: Signature +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: All +PointerAlignment: Left +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +SeparateDefinitionBlocks: Leave +SortIncludes: Never +SpaceAfterTemplateKeyword: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpacesInSquareBrackets: false +SpaceInEmptyBlock: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: Never +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: false +SpacesInLineCommentPrefix: + Minimum: 1 +SpacesInParentheses: false +SpaceBeforeSquareBrackets: false +Standard: Latest +TabWidth: 4 +UseTab: Never +--- +BasedOnStyle: Google +Language: Cpp +AccessModifierOffset: -4 +AlignAfterOpenBracket: BlockIndent +AlignArrayOfStructures: None +AlignConsecutiveMacros: None +AlignConsecutiveAssignments: None +AlignConsecutiveBitFields: None +AlignConsecutiveDeclarations: None +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: false +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: false +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: true + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: true +BreakBeforeBraces: Custom +BreakInheritanceList: AfterColon +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: AfterColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 0 +CommentPragmas: '^ THU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: Always +ExperimentalAutoDetectBinPacking: false +PackConstructorInitializers: CurrentLine +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Merge +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IndentAccessModifiers: false +IndentCaseLabels: true +IndentCaseBlocks: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequires: false +IndentWidth: 4 +IndentWrappedFunctionNames: true +InsertTrailingCommas: None +LambdaBodyIndentation: Signature +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: All +PointerAlignment: Left +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +SeparateDefinitionBlocks: Leave +SortIncludes: Never +SpaceAfterTemplateKeyword: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpacesInSquareBrackets: false +SpaceInEmptyBlock: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: Never +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: false +SpacesInLineCommentPrefix: + Minimum: 1 +SpacesInParentheses: false +SpaceBeforeSquareBrackets: false +Standard: c++17 +TabWidth: 4 +UseTab: Never + diff --git a/dependency/proto/Message2Clients.proto b/dependency/proto/Message2Clients.proto new file mode 100644 index 0000000..edae464 --- /dev/null +++ b/dependency/proto/Message2Clients.proto @@ -0,0 +1,125 @@ +// Message2Client +syntax = "proto3"; +package protobuf; + +import "MessageType.proto"; +import "Message2Server.proto"; + +message MessageOfHuman +{ + int32 x = 1; + int32 y = 2; + int32 speed = 3; + int32 life = 4; // 本次未倒地前的血量,也即还可以受的伤害 + int32 hanged_time = 5; // 被挂上的次数 + double time_until_skill_available = 6; + PlaceType place = 7; + PropType prop = 8; + HumanType human_type = 9; + int64 guid = 10; + bool on_chair = 11; // 是否被挂 + double chair_time = 12; // 被挂的时间 + bool on_ground = 13; // 是否倒地 + double ground_time = 14; // 倒地时间 + int64 player_id = 15; + int32 view_range = 16; // 视野距离 + repeated HumanBuffType buff = 17; +} + +message MessageOfButcher +{ + int32 x = 1; + int32 y = 2; + int32 speed = 3; + int32 damage = 4; + double time_until_skill_available = 5; + PlaceType place = 6; + PropType prop = 7; + ButcherType butcher_type = 8; + int64 guid = 9; + bool movable = 10; // 是否进入了攻击后摇 + int64 playerID = 11; + int32 view_range = 12; // 视野距离 + repeated ButcherBuffType buff = 13; +} + +message MessageOfProp // 可拾取道具的信息 +{ + PropType type = 1; + int32 x = 2; + int32 y = 3; + double facing_direction = 4; + int64 guid = 5; + PlaceType place = 6; + int32 size = 7; + bool is_moving = 8; +} + +message MessageOfPickedProp //for Unity,直接继承自THUAI5 +{ + PropType type = 1; + int32 x = 2; + int32 y = 3; + double facing_direction = 4; + int64 mapping_id = 5; +} + +message MessageOfMap +{ + message Row + { + repeated PlaceType col = 1; + } + repeated Row row = 2; +} + +message MessageToClient +{ + repeated MessageOfHuman human_message = 1; + repeated MessageOfButcher butcher_message = 2; // 是否真正repeated待定 + repeated MessageOfProp prop_message = 3; + MessageOfMap map_massage = 4; +} + +message MoveRes // 如果打算设计撞墙保留平行速度分量,且需要返回值则可用这个(大概没啥用) +{ + int64 actual_speed = 1; + double actual_angle = 2; +} + +message BoolRes // 用于只需要判断执行操作是否成功的行为,如捡起道具、使用道具 +{ + bool act_success = 1; +} + +message MsgRes // 用于获取队友发来的消息 +{ + bool have_message = 1; // 是否有待接收的消息 + int64 from_player_id = 2; + string message_received = 3; +} + +service AvailableService +{ + rpc TryConnection(IDMsg) returns(BoolRes); + + // 游戏开局调用一次的服务 + rpc AddPlayer(PlayerMsg) returns(stream MessageToClient); // 连接上后等待游戏开始,server会定时通过该服务向所有client发送消息。 + + // 游戏过程中玩家执行操作的服务 + rpc Move(MoveMsg) returns (MoveRes); + rpc PickProp(PickMsg) returns (BoolRes); + rpc UseProp(IDMsg) returns (BoolRes); + rpc UseSkill(IDMsg) returns (BoolRes); + rpc SendMessage(SendMsg) returns (BoolRes); + rpc HaveMessage(IDMsg) returns (BoolRes); + rpc GetMessage(IDMsg) returns (MsgRes); + rpc FixMachine(stream IDMsg) returns (stream BoolRes); // 若正常修复且未被打断则返回修复成功,位置错误/被打断则返回修复失败,下同 + rpc SaveHuman(stream IDMsg) returns (stream BoolRes); + rpc Attack (AttackMsg) returns (BoolRes); + rpc CarryHuman (IDMsg) returns (BoolRes); + rpc ReleaseHuman (IDMsg) returns (BoolRes); + rpc HangHuman (IDMsg) returns (BoolRes); + rpc Escape (IDMsg) returns (BoolRes); + +} \ No newline at end of file diff --git a/dependency/proto/Message2Server.proto b/dependency/proto/Message2Server.proto new file mode 100644 index 0000000..b3891b6 --- /dev/null +++ b/dependency/proto/Message2Server.proto @@ -0,0 +1,62 @@ +// Message2Server +syntax = "proto3"; +package protobuf; + +import "MessageType.proto"; + +message PlayerMsg +{ + int64 player_id = 1; + PlayerType player_type = 2; + oneof job_type + { + HumanType human_type = 3; + ButcherType butcher_type = 4; + } +} + +message MoveMsg +{ + int64 player_id = 1; + double angle = 2; + int64 time_in_milliseconds = 3; +} + +message PickMsg +{ + int64 player_id = 1; + PropType prop_type = 2; +} + +message SendMsg +{ + int64 player_id = 1; + int64 to_player_id = 2; + string message = 3; +} + +message AttackMsg +{ + int64 player_id = 1; + double angle = 2; +} + +message IDMsg +{ + int64 player_id = 1; +} + +// 基本继承于THUAI5,为了使发送的信息尽可能不被浪费,暂定不发这类大包。 +// message MessageToServer +// { +// MessageType messageType = 1; +// int64 playerID = 2; // 消息发送者的playerID +// PlayerType playerType = 3; +// HumanType humanType= 4; +// ButcherType butcherType = 5; +// double angle = 6; // messageType为Move, Attack时的角度 +// PropType propType = 7; // messageType为PickProp时要捡起的道具类型,防止多个道具堆叠时出现问题 +// int64 timeInMilliseconds = 8;//时间参数 +// int64 ToPlayerID = 9; // messageType为Send时要发送的对象的ID +// string message = 10; // messageType为Send时发送的消息内容 +// } \ No newline at end of file diff --git a/dependency/proto/MessageType.proto b/dependency/proto/MessageType.proto new file mode 100644 index 0000000..2041fe0 --- /dev/null +++ b/dependency/proto/MessageType.proto @@ -0,0 +1,110 @@ +// MessageType +syntax = "proto3"; +package protobuf; + +enum PlaceType // 地图中的所有物件类型 +{ + NULL_PLACE_TYPE = 0; + + // 地图情况,其中Gate是总体的大门,HiddenGate是地窖 + LAND = 1; + WALL = 2; + GRASS = 3; + MACHINE = 4; + GATE = 5; + HIDDEN_GATE = 6; + // 待补充有特殊效果的地形 + +} + +enum ShapeType // 形状类型 +{ + NULL_SHAPE_TYPE = 0; + CIRCLE = 1; // 人类、屠夫、可拾取道具等为圆形 + SQUARE = 2; // 地形均为方形 +} + +enum PropType // 地图中的可拾取道具类型 +{ + NULL_PROP_TYPE = 0; + PTYPE1 = 1; + PTYPE2 = 2; + PTYPE3 = 3; + PTYPE4 = 4; + +} + +enum HumanBuffType // 人类可用的增益效果类型 +{ + NULL_HBUFF_TYPE = 0; + HBUFFTYPE1 = 1; + HBUFFTYPE2 = 2; + HBUFFTYPE3 = 3; + HBUFFTYPE4 = 4; +} + +enum ButcherBuffType // 屠夫可用的增益效果类型 +{ + NULL_BBUFF_TYPE = 0; + BBUFFTYPE1 = 1; + BBUFFTYPE2 = 2; + BBUFFTYPE3 = 3; + BBUFFTYPE4 = 4; +} + +// 特别说明:由于Human阵营和Butcher阵营有显著的隔离,且暂定职业、主动技能和被动效果相互绑定,故不按照THUAI5的方式区分ActiveSkillType和PassiveSkillType,而是选择了按照阵营来给不同阵营赋予不同的职业(及技能)。 + +enum PlayerType +{ + NULL_PLAYER_TYPE = 0; + HUMAN_PLAYER = 1; + BUTCHER_PLAYER = 2; +} + +enum HumanType +{ + NULL_HUMAN_TYPE = 0; + HUMANTYPE1 = 1; + HUMANTYPE2 = 2; + HUMANTYPE3 = 3; + HUMANTYPE4 = 4; +} + +enum ButcherType +{ + NULL_BUTCHER_TYPE = 0; + BUTCHERTYPE1 = 1; + BUTCHERTYPE2 = 2; + BUTCHERTYPE3 = 3; + BUTCHERTYPE4 = 4; +} + +// 取消了大包之后,MessageType的枚举是否有必要保留还有待商榷 +// enum MessageType +// { +// // 公共信息类型 +// Move = 0; +// PickProp = 1; +// UseProp = 2; +// UseSkill = 3; +// Map = 4; +// Send = 5; + +// // 人类限定信息类型 +// FixMachine = 6; +// SaveHuman = 7; + +// // 屠夫限定信息类型 +// Attack = 8; +// CarryHuman = 9; +// ReleaseHuman = 10; +// HangHuman = 11; + +// // 游戏相关信息类型 +// AddPlayer = 12; +// InvalidPlayer = 13; +// ValidPlayer = 14; +// StartGame = 15; +// Gaming = 16; +// EndGame = 17; +// } diff --git a/dependency/proto/README.md b/dependency/proto/README.md new file mode 100644 index 0000000..f8ba2c9 --- /dev/null +++ b/dependency/proto/README.md @@ -0,0 +1,3 @@ +# Proto + +该目录用于存放需要用到的`.proto`文件 \ No newline at end of file diff --git a/dependency/proto/cpp_output.sh b/dependency/proto/cpp_output.sh new file mode 100644 index 0000000..cf2dd5d --- /dev/null +++ b/dependency/proto/cpp_output.sh @@ -0,0 +1,10 @@ +protoc Message2Clients.proto --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` +protoc Message2Clients.proto --cpp_out=. +protoc MessageType.proto --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` +protoc MessageType.proto --cpp_out=. +protoc Message2Server.proto --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` +protoc Message2Server.proto --cpp_out=. +chmod -R 755 ./ +./format.sh +mv -f ./*.h ../../CAPI/proto +mv -f ./*.cc ../../CAPI/proto diff --git a/dependency/proto/format.sh b/dependency/proto/format.sh new file mode 100644 index 0000000..63bdd5a --- /dev/null +++ b/dependency/proto/format.sh @@ -0,0 +1,75 @@ +clang-format --version +if [ $? -eq 0 ] +then + for i in {1..10} + do + find . -iname "*.cs" \ + -or -iname "*.c" \ + -or -iname "*.h" \ + -or -iname "*.C" \ + -or -iname "*.H" \ + -or -iname "*.cpp" \ + -or -iname "*.hpp" \ + -or -iname "*.cc" \ + -or -iname "*.hh" \ + -or -iname "*.c++" \ + -or -iname "*.h++" \ + -or -iname "*.cxx" \ + -or -iname "*.hxx" \ + -or -iname "*.i" \ + -or -iname "*.ixx" \ + -or -iname "*.ipp" \ + -or -iname "*.i++" \ + | xargs clang-format -i + done +fi +clang-format-15 --version +if [ $? -eq 0 ] +then + for i in {1..10} + do + find . -iname "*.cs" \ + -or -iname "*.c" \ + -or -iname "*.h" \ + -or -iname "*.C" \ + -or -iname "*.H" \ + -or -iname "*.cpp" \ + -or -iname "*.hpp" \ + -or -iname "*.cc" \ + -or -iname "*.hh" \ + -or -iname "*.c++" \ + -or -iname "*.h++" \ + -or -iname "*.cxx" \ + -or -iname "*.hxx" \ + -or -iname "*.i" \ + -or -iname "*.ixx" \ + -or -iname "*.ipp" \ + -or -iname "*.i++" \ + | xargs clang-format-15 -i + done +fi +clang-format-14 --version +if [ $? -eq 0 ] +then + for i in {1..10} + do + find . -iname "*.cs" \ + -or -iname "*.c" \ + -or -iname "*.h" \ + -or -iname "*.C" \ + -or -iname "*.H" \ + -or -iname "*.cpp" \ + -or -iname "*.hpp" \ + -or -iname "*.cc" \ + -or -iname "*.hh" \ + -or -iname "*.c++" \ + -or -iname "*.h++" \ + -or -iname "*.cxx" \ + -or -iname "*.hxx" \ + -or -iname "*.i" \ + -or -iname "*.ixx" \ + -or -iname "*.ipp" \ + -or -iname "*.i++" \ + | xargs clang-format-14 -i + done +fi \ No newline at end of file diff --git a/dependency/shell/README.md b/dependency/shell/README.md new file mode 100644 index 0000000..03496ee --- /dev/null +++ b/dependency/shell/README.md @@ -0,0 +1,4 @@ +# Shell + +本目录用于存放程序所需的shell脚本 + diff --git a/dependency/shell/format.sh b/dependency/shell/format.sh new file mode 100644 index 0000000..dba6115 --- /dev/null +++ b/dependency/shell/format.sh @@ -0,0 +1,21 @@ +for i in {1..10} +do +find . -iname "*.cs" \ + -or -iname "*.c" \ + -or -iname "*.h" \ + -or -iname "*.C" \ + -or -iname "*.H" \ + -or -iname "*.cpp" \ + -or -iname "*.hpp" \ + -or -iname "*.cc" \ + -or -iname "*.hh" \ + -or -iname "*.c++" \ + -or -iname "*.h++" \ + -or -iname "*.cxx" \ + -or -iname "*.hxx" \ + -or -iname "*.i" \ + -or -iname "*.ixx" \ + -or -iname "*.ipp" \ + -or -iname "*.i++" \ + | xargs clang-format -i +done diff --git a/resource/README.md b/resource/README.md new file mode 100644 index 0000000..eb723ac --- /dev/null +++ b/resource/README.md @@ -0,0 +1,3 @@ +# Resource + +本目录用于存放主目录 README 的所有资源,**目录名称及目录内文件禁止更改**。 \ No newline at end of file diff --git a/resource/capi_uml.png b/resource/capi_uml.png new file mode 100644 index 0000000000000000000000000000000000000000..937233930dad6f9911953c7164e9ddf6c76ecc53 GIT binary patch literal 10953 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 literal 0 HcmV?d00001 diff --git a/resource/capi_uml.vsdx b/resource/capi_uml.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..52276aaa41eb7f62014f342407b606088bcb2e7e GIT binary patch literal 25797 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℘J(^NAfBzcZ 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 literal 0 HcmV?d00001 diff --git a/resource/structure.png b/resource/structure.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffe9b095653c1386c8f455977c972a3a899527c GIT binary patch literal 66930 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 vy9+`ld8y(iWrg-~AUYF4$8Aa^e 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 literal 0 HcmV?d00001 diff --git a/resource/structure.vsdx b/resource/structure.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..4a070e8d61d58464553f52f55bf0ea8c2536d806 GIT binary patch literal 65739 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

QGD40m&EGUa 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 AFaQ7m literal 0 HcmV?d00001