From 039a639eab69f363e0a19026a4c6826df44e623f Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 15 Oct 2022 15:47:47 +0800 Subject: [PATCH 01/11] fix: logic/Preparation/.../EnumType.cs add PlaceType:Building --- logic/Preparation/Utility/EnumType.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/logic/Preparation/Utility/EnumType.cs b/logic/Preparation/Utility/EnumType.cs index 5dfb8cc..96a190a 100644 --- a/logic/Preparation/Utility/EnumType.cs +++ b/logic/Preparation/Utility/EnumType.cs @@ -27,15 +27,16 @@ namespace Preparation.Utility Circle = 1, // 子弹和人物为圆形,格子为方形 Square = 2 } - public enum PlaceType // 位置标志,包括陆地(一般默认为陆地,如墙体等),草丛。游戏中每一帧都要刷新各个物体的该属性 + public enum PlaceType // 位置标志,包括陆地,建筑,草丛。游戏中每一帧都要刷新各个物体的该属性 { Null = 0, Land = 1, - Grass1 = 2, - Grass2 = 3, - Grass3 = 4, - Grass4 = 5, - Grass5 = 6, + Building = 2, + Grass1 = 3, + Grass2 = 4, + Grass3 = 5, + Grass4 = 6, + Grass5 = 7, } public enum BulletType // 子弹类型 { From 261ced1e95a2442e60fe90ae8905a5a5bbbd5cd6 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 15 Oct 2022 22:07:02 +0800 Subject: [PATCH 02/11] fix: make the type of obj immutable --- logic/Preparation/Interface/IGameObj.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logic/Preparation/Interface/IGameObj.cs b/logic/Preparation/Interface/IGameObj.cs index a32a1c5..6c5205b 100644 --- a/logic/Preparation/Interface/IGameObj.cs +++ b/logic/Preparation/Interface/IGameObj.cs @@ -4,7 +4,7 @@ namespace Preparation.Interface { public interface IGameObj { - public GameObjType Type { get; set; } + public GameObjType Type { get; } public long ID { get; } public XYPosition Position { get; } // if Square, Pos equals the center public double FacingDirection { get; } From 31b0fa35bb64c88ccbce49aba12ed4f29d865894 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 20:47:53 +0800 Subject: [PATCH 03/11] refactor: XYPosition is special (XY)Vector --- logic/Preparation/Utility/Tools.cs | 20 -------- logic/Preparation/Utility/Vector.cs | 62 +++++++++---------------- logic/Preparation/Utility/XYPosition.cs | 49 ------------------- 3 files changed, 23 insertions(+), 108 deletions(-) delete mode 100644 logic/Preparation/Utility/Tools.cs delete mode 100644 logic/Preparation/Utility/XYPosition.cs diff --git a/logic/Preparation/Utility/Tools.cs b/logic/Preparation/Utility/Tools.cs deleted file mode 100644 index 78ee847..0000000 --- a/logic/Preparation/Utility/Tools.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace Preparation.Utility -{ - public static class Tools - { - public static double CorrectAngle(double angle) // 将幅角转化为主值0~2pi - { - if (double.IsNaN(angle) || double.IsInfinity(angle)) - { - return 0.0; - } - while (angle < 0) - angle += 2 * Math.PI; - while (angle >= 2 * Math.PI) - angle -= 2 * Math.PI; - return angle; - } - } -} diff --git a/logic/Preparation/Utility/Vector.cs b/logic/Preparation/Utility/Vector.cs index 50614f0..77e2f5c 100644 --- a/logic/Preparation/Utility/Vector.cs +++ b/logic/Preparation/Utility/Vector.cs @@ -2,56 +2,40 @@ namespace Preparation.Utility { - public struct Vector + + public class Vector { - public double angle; - public double length; - - public static XYPosition VectorToXY(Vector v) - { - return new XYPosition((int)(v.length * Math.Cos(v.angle)), (int)(v.length * Math.Sin(v.angle))); - } - public Vector2 ToVector2() - { - return new Vector2((int)(this.length * Math.Cos(this.angle)), (int)(this.length * Math.Sin(this.angle))); - } - public static Vector XYToVector(double x, double y) - { - return new Vector(Math.Atan2(y, x), Math.Sqrt((x * x) + (y * y))); - } - public Vector(double angle, double length) - { - if (length < 0) - { - angle += Math.PI; - length = -length; - } - this.angle = Tools.CorrectAngle(angle); - this.length = length; - } - } - - public struct Vector2 - { - public double x; - public double y; - public Vector2(double x, double y) + public int x; + public int y; + public Vector(int x, int y) { this.x = x; this.y = y; } - - public static double operator*(Vector2 v1, Vector2 v2) + public override string ToString() + { + return "(" + x.ToString() + "," + y.ToString() + ")"; + } + public static int operator*(Vector v1, Vector v2) { return (v1.x * v2.x) + (v1.y * v2.y); } - public static Vector2 operator +(Vector2 v1, Vector2 v2) + public static Vector operator +(Vector v1, Vector v2) { - return new Vector2(v1.x + v2.x, v1.y + v2.y); + return new Vector(v1.x + v2.x, v1.y + v2.y); } - public static Vector2 operator -(Vector2 v1, Vector2 v2) + public static Vector operator -(Vector v1, Vector v2) { - return new Vector2(v1.x - v2.x, v1.y - v2.y); + return new Vector(v1.x - v2.x, v1.y - v2.y); } } + public class XYPosition: Vector + { + public XYPosition(int x, int y):base(x,y){} + + public static double Distance(XYPosition p1, XYPosition p2) + { + return Math.Sqrt(((long)(p1.x - p2.x) * (p1.x - p2.x)) + ((long)(p1.y - p2.y) * (p1.y - p2.y))); + } + } } diff --git a/logic/Preparation/Utility/XYPosition.cs b/logic/Preparation/Utility/XYPosition.cs deleted file mode 100644 index 55647ec..0000000 --- a/logic/Preparation/Utility/XYPosition.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; - -namespace Preparation.Utility -{ - public struct XYPosition - { - public int x; - public int y; - public XYPosition(int x, int y) - { - this.x = x; - this.y = y; - } - public override string ToString() - { - return "(" + x.ToString() + "," + y.ToString() + ")"; - } - public static XYPosition operator +(XYPosition p1, XYPosition p2) - { - return new XYPosition(p1.x + p2.x, p1.y + p2.y); - } - public static XYPosition operator -(XYPosition p1, XYPosition p2) - { - return new XYPosition(p1.x - p2.x, p1.y - p2.y); - } - public static double Distance(XYPosition p1, XYPosition p2) - { - return Math.Sqrt(((long)(p1.x - p2.x) * (p1.x - p2.x)) + ((long)(p1.y - p2.y) * (p1.y - p2.y))); - } - /*public static XYPosition[] GetSquareRange(uint edgeLen) // 从THUAI4的BULLET.CS移植而来,不知还有用否 - { - XYPosition[] range = new XYPosition[edgeLen * edgeLen]; - int offset = (int)(edgeLen >> 1); - for (int i = 0; i < (int)edgeLen; ++i) - { - for (int j = 0; j < (int)edgeLen; ++j) - { - range[i * edgeLen + j].x = i - offset; - range[i * edgeLen + j].y = j - offset; - } - } - return range; - }*/ - public Vector2 ToVector2() - { - return new Vector2(this.x, this.y); - } - } -} From fe7d296bb91bf24bf1ec6e3fa578b10e19612d6e Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 21:17:22 +0800 Subject: [PATCH 04/11] refactor: Change Vector and XYPosition to XY --- logic/Preparation/Interface/IGameObj.cs | 4 +-- logic/Preparation/Interface/IMap.cs | 2 +- logic/Preparation/Interface/IMoveable.cs | 6 ++-- logic/Preparation/Utility/Vector.cs | 41 ------------------------ logic/Preparation/Utility/XY.cs | 36 +++++++++++++++++++++ 5 files changed, 42 insertions(+), 47 deletions(-) delete mode 100644 logic/Preparation/Utility/Vector.cs create mode 100644 logic/Preparation/Utility/XY.cs diff --git a/logic/Preparation/Interface/IGameObj.cs b/logic/Preparation/Interface/IGameObj.cs index 6c5205b..9be3aab 100644 --- a/logic/Preparation/Interface/IGameObj.cs +++ b/logic/Preparation/Interface/IGameObj.cs @@ -6,8 +6,8 @@ namespace Preparation.Interface { public GameObjType Type { get; } public long ID { get; } - public XYPosition Position { get; } // if Square, Pos equals the center - public double FacingDirection { get; } + public XY Position { get; } // if Square, Pos equals the center + public XY FacingDirection { get; } public bool IsRigid { get; } public ShapeType Shape { get; } public bool CanMove { get; set; } diff --git a/logic/Preparation/Interface/IMap.cs b/logic/Preparation/Interface/IMap.cs index 0d781b3..4ad6e18 100644 --- a/logic/Preparation/Interface/IMap.cs +++ b/logic/Preparation/Interface/IMap.cs @@ -13,6 +13,6 @@ namespace Preparation.Interface Dictionary GameObjLockDict { get; } public bool IsOutOfBound(IGameObj obj); - public IOutOfBound GetOutOfBound(XYPosition pos); // 返回新建的一个OutOfBound对象 + public IOutOfBound GetOutOfBound(XY pos); // 返回新建的一个OutOfBound对象 } } diff --git a/logic/Preparation/Interface/IMoveable.cs b/logic/Preparation/Interface/IMoveable.cs index bc16f5b..e72e14e 100644 --- a/logic/Preparation/Interface/IMoveable.cs +++ b/logic/Preparation/Interface/IMoveable.cs @@ -7,9 +7,9 @@ namespace Preparation.Interface { object MoveLock { get; } public int MoveSpeed { get; } - public long Move(Vector moveVec); + public long Move(XY moveVec); protected bool IgnoreCollide(IGameObj targetObj); // 忽略碰撞,在具体类中实现 - public bool WillCollideWith(IGameObj? targetObj, XYPosition nextPos) // 检查下一位置是否会和目标物碰撞 + public bool WillCollideWith(IGameObj? targetObj, XY nextPos) // 检查下一位置是否会和目标物碰撞 { if (targetObj == null) return false; @@ -20,7 +20,7 @@ namespace Preparation.Interface return false; if (targetObj.Shape == ShapeType.Circle) { - return XYPosition.Distance(nextPos, targetObj.Position) < targetObj.Radius + Radius; + return XY.Distance(nextPos, targetObj.Position) < targetObj.Radius + Radius; } else // Square { diff --git a/logic/Preparation/Utility/Vector.cs b/logic/Preparation/Utility/Vector.cs deleted file mode 100644 index 77e2f5c..0000000 --- a/logic/Preparation/Utility/Vector.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; - -namespace Preparation.Utility -{ - - public class Vector - { - public int x; - public int y; - public Vector(int x, int y) - { - this.x = x; - this.y = y; - } - public override string ToString() - { - return "(" + x.ToString() + "," + y.ToString() + ")"; - } - public static int operator*(Vector v1, Vector v2) - { - return (v1.x * v2.x) + (v1.y * v2.y); - } - public static Vector operator +(Vector v1, Vector v2) - { - return new Vector(v1.x + v2.x, v1.y + v2.y); - } - public static Vector operator -(Vector v1, Vector v2) - { - return new Vector(v1.x - v2.x, v1.y - v2.y); - } - } - public class XYPosition: Vector - { - public XYPosition(int x, int y):base(x,y){} - - public static double Distance(XYPosition p1, XYPosition p2) - { - return Math.Sqrt(((long)(p1.x - p2.x) * (p1.x - p2.x)) + ((long)(p1.y - p2.y) * (p1.y - p2.y))); - } - } -} diff --git a/logic/Preparation/Utility/XY.cs b/logic/Preparation/Utility/XY.cs new file mode 100644 index 0000000..f7536a0 --- /dev/null +++ b/logic/Preparation/Utility/XY.cs @@ -0,0 +1,36 @@ +using System; + +namespace Preparation.Utility +{ + + public struct XY + { + public int x; + public int y; + public XY(int x, int y) + { + this.x = x; + this.y = y; + } + public override string ToString() + { + return "(" + x.ToString() + "," + y.ToString() + ")"; + } + public static int operator *(XY v1, XY v2) + { + return (v1.x * v2.x) + (v1.y * v2.y); + } + public static XY operator +(XY v1, XY v2) + { + return new XY(v1.x + v2.x, v1.y + v2.y); + } + public static XY operator -(XY v1, XY v2) + { + return new XY(v1.x - v2.x, v1.y - v2.y); + } + public static double Distance(XY p1, XY p2) + { + return Math.Sqrt(((long)(p1.x - p2.x) * (p1.x - p2.x)) + ((long)(p1.y - p2.y) * (p1.y - p2.y))); + } + } +} From a28ffab63e4fff9ddc9d764fb08364d894f7c40a Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 21:41:26 +0800 Subject: [PATCH 05/11] build: add GameObj.cs --- logic/GameClass/GameObj/GameObj.cs | 184 ++++++++++++++++++++++++++ logic/Preparation/Utility/EnumType.cs | 2 +- 2 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 logic/GameClass/GameObj/GameObj.cs diff --git a/logic/GameClass/GameObj/GameObj.cs b/logic/GameClass/GameObj/GameObj.cs new file mode 100644 index 0000000..8164961 --- /dev/null +++ b/logic/GameClass/GameObj/GameObj.cs @@ -0,0 +1,184 @@ +using Preparation.Interface; +using Preparation.Utility; +using System.Threading; + +namespace GameClass.GameObj +{ + /// + /// 一切游戏元素的总基类,与THUAI4不同,继承IMoveable接口(出于一切物体其实都是可运动的指导思想)——LHR + /// + public abstract class GameObj : IMoveable + { + protected readonly object gameObjLock = new(); + /// + /// 可移动物体专用锁 + /// + public object MoveLock => gameObjLock; + + protected readonly XY birthPos; + + private GameObjType type; + public GameObjType Type => type; + + private static long currentMaxID = 0; //目前游戏对象的最大ID + public const long invalidID = long.MaxValue; //无效的ID + public const long noneID = long.MinValue; + public long ID { get; } + + private XY position; + public XY Position + { + get => position; + protected set + { + lock (gameObjLock) + { + position = value; + } + } + } + public abstract bool IsRigid { get; } + + private XY facingDirection = new(1,0); + public XY FacingDirection + { + get => facingDirection; + set + { + lock (gameObjLock) + facingDirection = value; + } + } + public abstract ShapeType Shape { get; } + + private bool canMove; + public bool CanMove + { + get => canMove; + set + { + lock (gameObjLock) + { + canMove = value; + } + } + } + + private bool isMoving; + public bool IsMoving + { + get => isMoving; + set + { + lock (gameObjLock) + { + isMoving = value; + } + } + } + + private bool isResetting; + public bool IsResetting + { + get => isResetting; + set + { + lock (gameObjLock) + { + isResetting = value; + } + } + } + public bool IsAvailable => !IsMoving && CanMove && !IsResetting; //是否能接收指令 + public int Radius { get; } + + private PlaceType place; + public PlaceType Place + { + get => place; + set + { + lock (gameObjLock) + { + place = value; + } + } + } + protected int moveSpeed; + /// + /// 移动速度 + /// + public int MoveSpeed + { + get => moveSpeed; + set + { + lock (gameObjLock) + { + moveSpeed = value; + } + } + } + /// + /// 原初移动速度 + /// + private int orgMoveSpeed; + public int OrgMoveSpeed { get => orgMoveSpeed; protected set { orgMoveSpeed = value; } } + + // 移动,改变坐标 + public long Move(XY moveVec) + { + lock (gameObjLock) + { + FacingDirection = moveVec; + this.Position += moveVec; + } + return (long)(moveVec * moveVec); + } + /// + /// 设置位置 + /// + /// 新位置 + public void SetPosition(XY newpos) + { + Position = newpos; + } + /// + /// 设置移动速度 + /// + /// 新速度 + public void SetMoveSpeed(int newMoveSpeed) + { + MoveSpeed = newMoveSpeed; + } + /// + /// 复活时数据重置 + /// + public virtual void Reset() + { + lock (gameObjLock) + { + facingDirection = new XY(1,0); + isMoving = false; + canMove = false; + isResetting = true; + this.position = birthPos; + } + } + /// + /// 为了使IgnoreCollide多态化并使GameObj能不报错地继承IMoveable + /// 在xfgg点播下设计了这个抽象辅助方法,在具体类中实现 + /// + /// 依具体类及该方法参数而定,默认为false + protected virtual bool IgnoreCollideExecutor(IGameObj targetObj) => false; + bool IMoveable.IgnoreCollide(IGameObj targetObj) => IgnoreCollideExecutor(targetObj); + public GameObj(XY initPos, int initRadius, PlaceType initPlace, GameObjType initType) + { + this.Position = this.birthPos = initPos; + this.Radius = initRadius; + this.place = initPlace; + this.type = initType; + ID = Interlocked.Increment(ref currentMaxID); + } + } +} diff --git a/logic/Preparation/Utility/EnumType.cs b/logic/Preparation/Utility/EnumType.cs index 96a190a..1d20b79 100644 --- a/logic/Preparation/Utility/EnumType.cs +++ b/logic/Preparation/Utility/EnumType.cs @@ -55,7 +55,7 @@ namespace Preparation.Utility Spear = 4, Gem = 5, // 新增:宝石 } - public enum PassiveSkillType // 被动技能 + public enum CharacterType // 职业 { Null = 0, RecoverAfterBattle = 1, From dd9fb93ddbf55ef8b469c66a9cea98ecbf22c1e9 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 21:54:38 +0800 Subject: [PATCH 06/11] build:add BirthPoint.cs and ObjOfCharacter.cs --- logic/GameClass/GameObj/GameObj.cs | 43 ++++++++++++----------- logic/GameClass/GameObj/Map/BirthPoint.cs | 29 +++++++++++++++ logic/GameClass/GameObj/ObjOfCharacter.cs | 28 +++++++++++++++ logic/Preparation/GameData/GameData.cs | 10 +++--- 4 files changed, 84 insertions(+), 26 deletions(-) create mode 100644 logic/GameClass/GameObj/Map/BirthPoint.cs create mode 100644 logic/GameClass/GameObj/ObjOfCharacter.cs diff --git a/logic/GameClass/GameObj/GameObj.cs b/logic/GameClass/GameObj/GameObj.cs index 8164961..27f2abd 100644 --- a/logic/GameClass/GameObj/GameObj.cs +++ b/logic/GameClass/GameObj/GameObj.cs @@ -20,8 +20,8 @@ namespace GameClass.GameObj private GameObjType type; public GameObjType Type => type; - private static long currentMaxID = 0; //目前游戏对象的最大ID - public const long invalidID = long.MaxValue; //无效的ID + private static long currentMaxID = 0; // 目前游戏对象的最大ID + public const long invalidID = long.MaxValue; // 无效的ID public const long noneID = long.MinValue; public long ID { get; } @@ -29,8 +29,8 @@ namespace GameClass.GameObj public XY Position { get => position; - protected set - { + protected + set { lock (gameObjLock) { position = value; @@ -39,12 +39,11 @@ namespace GameClass.GameObj } public abstract bool IsRigid { get; } - private XY facingDirection = new(1,0); + private XY facingDirection = new(1, 0); public XY FacingDirection { get => facingDirection; - set - { + set { lock (gameObjLock) facingDirection = value; } @@ -55,8 +54,7 @@ namespace GameClass.GameObj public bool CanMove { get => canMove; - set - { + set { lock (gameObjLock) { canMove = value; @@ -68,8 +66,7 @@ namespace GameClass.GameObj public bool IsMoving { get => isMoving; - set - { + set { lock (gameObjLock) { isMoving = value; @@ -81,23 +78,21 @@ namespace GameClass.GameObj public bool IsResetting { get => isResetting; - set - { + set { lock (gameObjLock) { isResetting = value; } } } - public bool IsAvailable => !IsMoving && CanMove && !IsResetting; //是否能接收指令 + public bool IsAvailable => !IsMoving && CanMove && !IsResetting; // 是否能接收指令 public int Radius { get; } private PlaceType place; public PlaceType Place { get => place; - set - { + set { lock (gameObjLock) { place = value; @@ -111,8 +106,7 @@ namespace GameClass.GameObj public int MoveSpeed { get => moveSpeed; - set - { + set { lock (gameObjLock) { moveSpeed = value; @@ -123,7 +117,14 @@ namespace GameClass.GameObj /// 原初移动速度 /// private int orgMoveSpeed; - public int OrgMoveSpeed { get => orgMoveSpeed; protected set { orgMoveSpeed = value; } } + public int OrgMoveSpeed + { + get => orgMoveSpeed; + protected + set { + orgMoveSpeed = value; + } + } // 移动,改变坐标 public long Move(XY moveVec) @@ -158,7 +159,7 @@ namespace GameClass.GameObj { lock (gameObjLock) { - facingDirection = new XY(1,0); + facingDirection = new XY(1, 0); isMoving = false; canMove = false; isResetting = true; @@ -169,7 +170,7 @@ namespace GameClass.GameObj /// 为了使IgnoreCollide多态化并使GameObj能不报错地继承IMoveable /// 在xfgg点播下设计了这个抽象辅助方法,在具体类中实现 /// - /// 依具体类及该方法参数而定,默认为false + /// 依具体类及该方法参数而定,默认为false protected virtual bool IgnoreCollideExecutor(IGameObj targetObj) => false; bool IMoveable.IgnoreCollide(IGameObj targetObj) => IgnoreCollideExecutor(targetObj); public GameObj(XY initPos, int initRadius, PlaceType initPlace, GameObjType initType) diff --git a/logic/GameClass/GameObj/Map/BirthPoint.cs b/logic/GameClass/GameObj/Map/BirthPoint.cs new file mode 100644 index 0000000..3d4ab37 --- /dev/null +++ b/logic/GameClass/GameObj/Map/BirthPoint.cs @@ -0,0 +1,29 @@ +using Preparation.Interface; +using Preparation.Utility; +using Preparation.GameData; + +namespace GameClass.GameObj +{ + /// + /// 出生点 + /// + public class BirthPoint : ObjOfCharacter + { + public BirthPoint(XY initPos) : + base(initPos, GameData.numOfPosGridPerCell / 2, PlaceType.Land, GameObjType.BirthPoint) + { + this.CanMove = false; + } + // 修改建议:需要避免非自己的玩家进入出生点,否则会重叠 + public override bool IsRigid => true; + protected override bool IgnoreCollideExecutor(IGameObj targetObj) + { + if (targetObj.Type != GameObjType.Character) + return true; // 非玩家不碰撞 + else if (targetObj.Type == GameObjType.Character && targetObj.ID == this.Parent.ID) + return true; // 出生点所属的玩家不碰撞 + return false; + } + public override ShapeType Shape => ShapeType.Square; + } +} \ No newline at end of file diff --git a/logic/GameClass/GameObj/ObjOfCharacter.cs b/logic/GameClass/GameObj/ObjOfCharacter.cs new file mode 100644 index 0000000..a09c6e5 --- /dev/null +++ b/logic/GameClass/GameObj/ObjOfCharacter.cs @@ -0,0 +1,28 @@ +using Preparation.Interface; +using Preparation.Utility; + +namespace GameClass.GameObj +{ + /// + /// 所有物,具有主人(Parent)(特定玩家)属性的对象 + /// + public abstract class ObjOfCharacter : GameObj, IObjOfCharacter + { + private ICharacter? parent = null; // 主人 + public ICharacter? Parent + { + get => parent; + set { + lock (gameObjLock) + { + parent = value; + } + } + } + // LHR注:本来考虑在构造函数里设置parent属性,见THUAI4在游戏引擎中才设置该属性,作罢。——2021/9/24 + public ObjOfCharacter(XY initPos, int initRadius, PlaceType initPlace, GameObjType initType) : + base(initPos, initRadius, initPlace, initType) + { + } + } +} diff --git a/logic/Preparation/GameData/GameData.cs b/logic/Preparation/GameData/GameData.cs index 2d13d58..0903b6d 100644 --- a/logic/Preparation/GameData/GameData.cs +++ b/logic/Preparation/GameData/GameData.cs @@ -16,20 +16,20 @@ namespace Preparation.GameData public const int MinSpeed = 1; // 最小速度 public const int MaxSpeed = int.MaxValue; // 最大速度 - public static XYPosition GetCellCenterPos(int x, int y) // 求格子的中心坐标 + public static XY GetCellCenterPos(int x, int y) // 求格子的中心坐标 { - XYPosition ret = new((x * numOfPosGridPerCell) + (numOfPosGridPerCell / 2), (y * numOfPosGridPerCell) + (numOfPosGridPerCell / 2)); + XY ret = new((x * numOfPosGridPerCell) + (numOfPosGridPerCell / 2), (y * numOfPosGridPerCell) + (numOfPosGridPerCell / 2)); return ret; } - public static int PosGridToCellX(XYPosition pos) // 求坐标所在的格子的x坐标 + public static int PosGridToCellX(XY pos) // 求坐标所在的格子的x坐标 { return pos.x / numOfPosGridPerCell; } - public static int PosGridToCellY(XYPosition pos) // 求坐标所在的格子的y坐标 + public static int PosGridToCellY(XY pos) // 求坐标所在的格子的y坐标 { return pos.y / numOfPosGridPerCell; } - public static bool IsInTheSameCell(XYPosition pos1, XYPosition pos2) + public static bool IsInTheSameCell(XY pos1, XY pos2) { return PosGridToCellX(pos1) == PosGridToCellX(pos2) && PosGridToCellY(pos1) == PosGridToCellY(pos2); } From 593169ac1523a27c1799e34bf56f07032fb8975c Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 22:42:57 +0800 Subject: [PATCH 07/11] build: Copy GameEngine and add Character.cs --- logic/GameClass/GameObj/Character.cs | 457 +++++++++++++++++++++++++++ logic/GameEngine/CollisionChecker.cs | 224 +++++++++++++ logic/GameEngine/GameEngine.csproj | 17 + logic/GameEngine/MoveEngine.cs | 176 +++++++++++ 4 files changed, 874 insertions(+) create mode 100644 logic/GameClass/GameObj/Character.cs create mode 100644 logic/GameEngine/CollisionChecker.cs create mode 100644 logic/GameEngine/GameEngine.csproj create mode 100644 logic/GameEngine/MoveEngine.cs diff --git a/logic/GameClass/GameObj/Character.cs b/logic/GameClass/GameObj/Character.cs new file mode 100644 index 0000000..fc16f6b --- /dev/null +++ b/logic/GameClass/GameObj/Character.cs @@ -0,0 +1,457 @@ +using Preparation.GameData; +using Preparation.Interface; +using Preparation.Utility; +using System; +using System.Collections.Generic; +using System.Threading; + +namespace GameClass.GameObj +{ + public partial class Character : GameObj, ICharacter // 负责人LHR摆烂终了 + { + private readonly object beAttackedLock = new(); + +#region 角色的基本属性及方法,包括与道具的交互方法 + /* + //THUAI5子弹 + /// + /// 装弹冷却 + /// + protected int cd; + public int CD + { + get => cd; + private + set { + lock (gameObjLock) + { + cd = value; + Debugger.Output(this, string.Format("'s CD has been set to: {0}.", value)); + } + } + } + public int OrgCD { get; protected set; } + protected int maxBulletNum; + public int MaxBulletNum => maxBulletNum; // 人物最大子弹数 + protected int bulletNum; + public int BulletNum => bulletNum; // 目前持有的子弹数 + */ + public int MaxHp { get; protected set; } // 最大血量 + protected int hp; + public int HP + { + get => hp; + set { + lock (gameObjLock) + hp = value <= MaxHp ? value : MaxHp; + } + } + private int deathCount = 0; + public int DeathCount => deathCount; // 玩家的死亡次数 + + private int score = 0; + public int Score + { + get => score; + } + + //public double AttackRange => BulletFactory.BulletAttackRange(this.BulletOfPlayer); + + private double vampire = 0; // 回血率:0-1之间 + public double Vampire + { + get => vampire; + set { + if (value > 1) + lock (gameObjLock) + vampire = 1; + else if (value < 0) + lock (gameObjLock) + vampire = 0; + else + lock (gameObjLock) + vampire = value; + } + } + private double OriVampire { get; } + + /* + public readonly BulletType OriBulletOfPlayer; + private BulletType bulletOfPlayer; + public BulletType BulletOfPlayer + { + get => bulletOfPlayer; + set { + lock (gameObjLock) + bulletOfPlayer = value; + } + } + */ + + private Prop? propInventory; + public Prop? PropInventory // 持有的道具 + { + get => propInventory; + set { + lock (gameObjLock) + { + propInventory = value; + Debugger.Output(this, " prop becomes " + (PropInventory == null ? "null" : PropInventory.ToString())); + } + } + } + + /// + /// 使用物品栏中的道具 + /// + /// 被使用的道具 + public Prop? UseProp() + { + lock (gameObjLock) + { + var oldProp = PropInventory; + PropInventory = null; + return oldProp; + } + } + + /// + /// 是否正在更换道具(包括捡起与抛出) + /// + private bool isModifyingProp = false; + public bool IsModifyingProp + { + get => isModifyingProp; + set { + lock (gameObjLock) + { + isModifyingProp = value; + } + } + } + + /// + /// 是否在隐身 + /// + private bool isInvisible = false; + public bool IsInvisible + { + get => isInvisible; + set { + lock (gameObjLock) + { + isInvisible = value; + } + } + } + /* + /// + /// 进行一次远程攻击 + /// + /// 子弹初始位置偏差值 + /// 攻击操作发出的子弹 + public Bullet? RemoteAttack(XY posOffset) + { + if (TrySubBulletNum()) + return ProduceOneBullet(this.Position + posOffset); + else + return null; + } + protected Bullet? ProduceOneBullet(XY initPos) + { + var newBullet = BulletFactory.GetBullet(this); + newBullet?.SetPosition(initPos); + return newBullet; + } + + /// + /// 尝试将子弹数量减1 + /// + /// 减操作是否成功 + private bool TrySubBulletNum() + { + lock (gameObjLock) + { + if (bulletNum > 0) + { + --bulletNum; + return true; + } + return false; + } + } + /// + /// 尝试将子弹数量加1 + /// + /// 加操作是否成功 + public bool TryAddBulletNum() + { + lock (gameObjLock) + { + if (bulletNum < maxBulletNum) + { + ++bulletNum; + return true; + } + return false; + } + } + */ + /// + /// 尝试加血 + /// + /// 欲加量 + /// 加操作是否成功 + public bool TryAddHp(int add) + { + if (hp < MaxHp) + { + lock (gameObjLock) + hp = MaxHp > hp + add ? hp + add : MaxHp; + Debugger.Output(this, " hp has added to: " + hp.ToString()); + return true; + } + return false; + } + /// + /// 尝试减血 + /// + /// 减血量 + /// 减操作是否成功 + public bool TrySubHp(int sub) + { + if (hp > 0) + { + lock (gameObjLock) + hp = 0 >= hp - sub ? 0 : hp - sub; + Debugger.Output(this, " hp has subed to: " + hp.ToString()); + return true; + } + return false; + } + /// + /// 增加死亡次数 + /// + /// 当前死亡次数 + private int AddDeathCount() + { + lock (gameObjLock) + { + ++deathCount; + return deathCount; + } + } + /// + /// 加分 + /// + /// 增加量 + public void AddScore(int add) + { + lock (gameObjLock) + { + score += add; + Debugger.Output(this, " 's score has been added to: " + score.ToString()); + } + } + /// + /// 减分 + /// + /// 减少量 + public void SubScore(int sub) + { + lock (gameObjLock) + { + score -= sub; + Debugger.Output(this, " 's score has been subed to: " + score.ToString()); + } + } + /* + /// + /// 遭受攻击 + /// + /// + /// + /// 伤害来源 + /// 人物在受到攻击后死了吗 + public bool BeAttack(Bullet bullet) + { + + lock (beAttackedLock) + { + if (hp <= 0) + return false; // 原来已经死了 + if (bullet.Parent.TeamID != this.TeamID) + { + + if (HasShield) + { + if (bullet.HasSpear) + _ = TrySubHp(bullet.AP); + else + return false; + } + else + { + TrySubHp(bullet.AP); + } +#if DEBUG + Console.WriteLine($"PlayerID:{ID} is being shot! Now his hp is {hp}."); +#endif + if (hp <= 0) + TryActivatingLIFE(); // 如果有复活甲 + } + return hp <= 0; + } + } + /// + /// 攻击被反弹,反弹伤害不会再被反弹 + /// + /// + /// + /// 反弹伤害者 + /// 是否因反弹伤害而死 + private bool BeBounced(int subHP, bool hasSpear, Character? bouncer) + { + lock (beAttackedLock) + { + if (hp <= 0) + return false; + if (!(bouncer?.TeamID == this.TeamID)) + { + if (hasSpear || !HasShield) + _ = TrySubHp(subHP); + if (hp <= 0) + TryActivatingLIFE(); + } + return hp <= 0; + } + } + */ + /// + /// 角色所属队伍ID + /// + private long teamID = long.MaxValue; + public long TeamID + { + get => teamID; + set { + lock (gameObjLock) + { + teamID = value; + Debugger.Output(this, " joins in the team: " + value.ToString()); + } + } + } + private long playerID = long.MaxValue; + public long PlayerID + { + get => playerID; + set { + lock (gameObjLock) + { + playerID = value; + } + } + } + /// + /// 角色携带的信息 + /// + private string message = "THUAI5"; + public string Message + { + get => message; + set { + lock (gameObjLock) + { + message = value; + } + } + } +#endregion + +#region 角色拥有的buff相关属性、方法 + public void AddMoveSpeed(int buffTime, double add = 2.0) => buffManeger.AddMoveSpeed(add, buffTime, newVal => + { MoveSpeed = newVal < GameData.characterMaxSpeed ? newVal : GameData.characterMaxSpeed; }, + OrgMoveSpeed); + public bool HasFasterSpeed => buffManeger.HasFasterSpeed; + + public void AddShield(int shieldTime) => buffManeger.AddShield(shieldTime); + public bool HasShield => buffManeger.HasShield; + + public void AddLIFE(int LIFETime) => buffManeger.AddLIFE(LIFETime); + public bool HasLIFE => buffManeger.HasLIFE; + + public void AddSpear(int spearTime) => buffManeger.AddSpear(spearTime); + public bool HasSpear => buffManeger.HasSpear; + + private Array buffTypeArray = Enum.GetValues(typeof(BuffType)); + public Dictionary Buff + { + get { + Dictionary buff = new Dictionary(); + foreach (BuffType type in buffTypeArray) + { + if (type != BuffType.Null) + buff.Add(type, GetBuffStatus(type)); + } + return buff; + } + } + private bool GetBuffStatus(BuffType type) + { + switch (type) + { + case BuffType.Spear: + return this.HasSpear; + case BuffType.AddSpeed: + return this.HasFasterSpeed; + case BuffType.Shield: + return this.HasShield; + case BuffType.AddLIFE: + return this.HasLIFE; + default: + return false; + } + } + private void TryActivatingLIFE() + { + if (buffManeger.TryActivatingLIFE()) + { + hp = MaxHp; + } + } +#endregion + public override void Reset() // 要加锁吗? + { + _ = AddDeathCount(); + base.Reset(); + this.MoveSpeed = OrgMoveSpeed; + HP = MaxHp; + PropInventory = null; + //BulletOfPlayer = OriBulletOfPlayer; + //lock (gameObjLock) + // bulletNum = maxBulletNum; + + buffManeger.ClearAll(); + IsInvisible = false; + this.Vampire = this.OriVampire; + } + public override bool IsRigid => true; + public override ShapeType Shape => ShapeType.Circle; + protected override bool IgnoreCollideExecutor(IGameObj targetObj) + { + if (targetObj.Type == GameObjType.BirthPoint) + { + if (object.ReferenceEquals(((BirthPoint)targetObj).Parent, this)) // 自己的出生点可以忽略碰撞 + { + return true; + } + } + else if (targetObj.Type == GameObjType.Prop) // 自己队的地雷忽略碰撞 + { + return true; + } + return false; + } + } +} diff --git a/logic/GameEngine/CollisionChecker.cs b/logic/GameEngine/CollisionChecker.cs new file mode 100644 index 0000000..93e0074 --- /dev/null +++ b/logic/GameEngine/CollisionChecker.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using Preparation.Interface; +using Preparation.Utility; +using Preparation.GameData; + +namespace GameEngine +{ + internal class CollisionChecker + { + /// + /// 碰撞检测,如果这样行走是否会与之碰撞,返回与之碰撞的物体 + /// + /// 移动的物体 + /// 移动的位移向量 + /// 和它碰撞的物体 + public IGameObj? CheckCollision(IMoveable obj, XY moveVec) + { + XY nextPos = obj.Position + XY.VectorToXY(moveVec); + if (!obj.IsRigid) + { + if (gameMap.IsOutOfBound(obj)) + return gameMap.GetOutOfBound(nextPos); + return null; + } + //在列表中检查碰撞 + Func, ReaderWriterLockSlim, IGameObj?> CheckCollisionInList = + (IEnumerable lst, ReaderWriterLockSlim listLock) => + { + IGameObj? collisionObj = null; + listLock.EnterReadLock(); + try + { + foreach (var listObj in lst) + { + if (obj.WillCollideWith(listObj, nextPos)) + { + collisionObj = listObj; + break; + } + } + } + finally { listLock.ExitReadLock(); } + return collisionObj; + }; + + IGameObj? collisionObj = null; + foreach (var list in lists) + { + if ((collisionObj = CheckCollisionInList(list.Item1, list.Item2)) != null) + { + return collisionObj; + } + } + + return null; + } + /// + /// /// 可移动物体(圆)向矩形物体移动时,可移动且不会碰撞的最大距离。直接用double计算,防止误差 + /// + /// + /// 矩形的中心坐标 + /// + //private double MaxMoveToSquare(IMoveable obj, IGameObj square) + //{ + // double tmpMax; + // double angle = Math.Atan2(square.Position.y - obj.Position.y, square.Position.x - obj.Position.x); + // if (obj.WillCollideWith(square, obj.Position)) + // tmpMax = 0; + // else tmpMax = + // Math.Abs(XYPosition.Distance(obj.Position, square.Position) - obj.Radius - + // (square.Radius / Math.Min(Math.Abs(Math.Cos(angle)), Math.Abs(Math.Sin(angle))))); + // return tmpMax; + //} + + //private double FindMaxOnlyConsiderWall(IMoveable obj, Vector moveVec) + //{ + // var desination = moveVec; + // double maxOnlyConsiderWall = moveVec.length; + // if (desination.length > 0) //如果length足够长,还是有可能穿墙的 + // { + // XYPosition nextXY = Vector.Vector2XY(desination) + obj.Position + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle)), (int)(obj.Radius * Math.Sin(moveVec.angle))); + // if (gameMap.IsWall(nextXY)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 + // { + // maxOnlyConsiderWall = MaxMoveToSquare(obj, gameMap.GetCell(nextXY)); + // } + // else //考虑物体宽度 + // { + // double dist = 0; + // XYPosition nextXYConsiderWidth; + // nextXYConsiderWidth = nextXY + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle + Math.PI / 4)), (int)(obj.Radius * Math.Sin(moveVec.angle + Math.PI / 4))); + // if (gameMap.IsWall(nextXYConsiderWidth)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 + // { + // dist = MaxMoveToSquare(obj, gameMap.GetCell(nextXYConsiderWidth)); + // if (dist < maxOnlyConsiderWall) + // maxOnlyConsiderWall = dist; + // } + // nextXYConsiderWidth = nextXY + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle - Math.PI / 4)), (int)(obj.Radius * Math.Sin(moveVec.angle - Math.PI / 4))); + // if (gameMap.IsWall(nextXYConsiderWidth)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 + // { + // dist = MaxMoveToSquare(obj, gameMap.GetCell(nextXYConsiderWidth)); + // if (dist < maxOnlyConsiderWall) + // maxOnlyConsiderWall = dist; + // } + // } + // } + // return maxOnlyConsiderWall; + //} + + /// + /// 寻找最大可能移动距离 + /// + /// 移动物体,默认obj.Rigid为true + /// 下一步要到达的位置 + /// 移动的位移向量,默认与nextPos协调 + /// 最大可能的移动距离 + public double FindMax(IMoveable obj, XY nextPos, XY moveVec) + { + double maxLen = (double)uint.MaxValue; + double tmpMax = maxLen; //暂存最大值 + + // 先找只考虑墙的最大距离 + //double maxOnlyConsiderWall = FindMaxOnlyConsiderWall(obj, moveVec); + double maxDistance = maxLen; + foreach (var listWithLock in lists) + { + var lst = listWithLock.Item1; + var listLock = listWithLock.Item2; + listLock.EnterReadLock(); + try + { + foreach (IGameObj listObj in lst) + { + //如果再走一步发生碰撞 + if (obj.WillCollideWith(listObj, nextPos)) + { + { + switch (listObj.Shape) //默认obj为圆形 + { + case ShapeType.Circle: + { + //计算两者之间的距离 + double mod = XY.Distance(listObj.Position, obj.Position); + int orgDeltaX = listObj.Position.x - obj.Position.x; + int orgDeltaY = listObj.Position.y - obj.Position.y; + + if (mod < listObj.Radius + obj.Radius) //如果两者已经重叠 + { + tmpMax = 0; + } + else + { + double tmp = mod - obj.Radius - listObj.Radius; + //计算能走的最长距离,好像这么算有一点误差? + tmp = tmp / Math.Cos(Math.Atan2(orgDeltaY, orgDeltaX) - moveVec.angle); + if (tmp < 0 || tmp > uint.MaxValue || tmp == double.NaN) + { + tmpMax = uint.MaxValue; + } + else tmpMax = tmp; + } + break; + } + case ShapeType.Square: + { + //if (obj.WillCollideWith(listObj, obj.Position)) + // tmpMax = 0; + //else tmpMax = MaxMoveToSquare(obj, listObj); + //break; + if (obj.WillCollideWith(listObj, obj.Position)) + tmpMax = 0; + else + { + //二分查找最大可能移动距离 + int left = 0, right = (int)moveVec.length; + while (left < right - 1) + { + int mid = (right - left) / 2 + left; + if (obj.WillCollideWith(listObj, obj.Position + new XY((int)(mid * Math.Cos(moveVec.angle)), (int)(mid * Math.Sin(moveVec.angle))))) + { + right = mid; + } + else left = mid; + } + tmpMax = (uint)left; + } + break; + } + default: + tmpMax = uint.MaxValue; + break; + } + if (tmpMax < maxDistance) + maxDistance = tmpMax; + } + } + } + } + finally + { + //maxLen = Math.Min(maxOnlyConsiderWall, maxDistance); //最大可能距离的最小值 + listLock.ExitReadLock(); + } + } + //return maxLen; + return maxDistance; + } + + readonly IMap gameMap; + private readonly Tuple, ReaderWriterLockSlim>[] lists; + + public CollisionChecker(IMap gameMap) + { + this.gameMap = gameMap; + lists = new Tuple, ReaderWriterLockSlim>[gameMap.GameObjDict.Count]; + int i = 0; + foreach(var keyValuePair in gameMap.GameObjDict) + { + lists[i++] = new Tuple, ReaderWriterLockSlim>(keyValuePair.Value as IList, gameMap.GameObjLockDict[keyValuePair.Key]); + } + } + } +} diff --git a/logic/GameEngine/GameEngine.csproj b/logic/GameEngine/GameEngine.csproj new file mode 100644 index 0000000..2adc507 --- /dev/null +++ b/logic/GameEngine/GameEngine.csproj @@ -0,0 +1,17 @@ + + + + Library + net6.0 + enable + + + + + + + + + + + diff --git a/logic/GameEngine/MoveEngine.cs b/logic/GameEngine/MoveEngine.cs new file mode 100644 index 0000000..0424397 --- /dev/null +++ b/logic/GameEngine/MoveEngine.cs @@ -0,0 +1,176 @@ +using System; +using System.Threading; +using Preparation.Interface; +using Preparation.Utility; +using Timothy.FrameRateTask; +using Preparation.GameData; + +namespace GameEngine +{ + public class MoveEngine + { + /// + /// 碰撞结束后要做的事情 + /// + public enum AfterCollision + { + ContinueCheck = 0, // 碰撞后继续检查其他碰撞 + MoveMax = 1, // 行走最远距离 + Destroyed = 2 // 物体已经毁坏 + } + + private readonly ITimer gameTimer; + private readonly Action EndMove; + private readonly CollisionChecker collisionChecker; + private readonly Func OnCollision; + /// + /// Constrctor + /// + /// 游戏地图 + /// 发生碰撞时要做的事情,第一个参数为移动的物体,第二个参数为撞到的物体,第三个参数为移动的位移向量,返回值见AfterCollision的定义 + /// 结束碰撞时要做的事情 + public MoveEngine + ( + IMap gameMap, + Func OnCollision, + Action EndMove + ) + { + this.gameTimer = gameMap.Timer; + this.EndMove = EndMove; + this.OnCollision = OnCollision; + this.collisionChecker = new CollisionChecker(gameMap); + } + + /// + /// 在无碰撞的前提下行走最远的距离 + /// + /// 移动物体,默认obj.Rigid为true + /// 移动的位移向量 + private void MoveMax(IMoveable obj, XY moveVec) + { + + /*由于四周是墙,所以人物永远不可能与越界方块碰撞*/ + XY nextPos = obj.Position + XY.VectorToXY(moveVec); + double maxLen = collisionChecker.FindMax(obj, nextPos, moveVec); + maxLen = Math.Min(maxLen, obj.MoveSpeed / GameData.numOfStepPerSecond); + _ = obj.Move(new Vector(moveVec.angle, maxLen)); + } + + public void MoveObj(IMoveable obj, int moveTime, double direction) + { + if (obj.IsMoving) //已经移动的物体不能再移动 + return; + new Thread + ( + ()=> + { + if (!obj.IsAvailable&&gameTimer.IsGaming) //不能动就直接return,后面都是能动的情况 + return; + lock (obj.MoveLock) + obj.IsMoving = true; + + XY moveVec = new(direction, 0.0); + double deltaLen = moveVec.length - Math.Sqrt(obj.Move(moveVec)); //转向,并用deltaLen存储行走的误差 + IGameObj? collisionObj = null; + bool isDestroyed = false; + new FrameRateTaskExecutor + ( + () => gameTimer.IsGaming && obj.CanMove && !obj.IsResetting, + () => + { + moveVec.length = obj.MoveSpeed / GameData.numOfStepPerSecond; + + //越界情况处理:如果越界,则与越界方块碰撞 + bool flag; //循环标志 + do + { + flag = false; + collisionObj = collisionChecker.CheckCollision(obj, moveVec); + if (collisionObj == null) break; + + switch (OnCollision(obj, collisionObj, moveVec)) + { + case AfterCollision.ContinueCheck: + flag = true; + break; + case AfterCollision.Destroyed: + Debugger.Output(obj, " collide with " + collisionObj.ToString() + " and has been removed from the game."); + isDestroyed = true; + return false; + case AfterCollision.MoveMax: + MoveMax(obj, moveVec); + moveVec.length = 0; + break; + } + } while (flag); + + deltaLen += moveVec.length - Math.Sqrt(obj.Move(moveVec)); + + return true; + }, + GameData.numOfPosGridPerCell / GameData.numOfStepPerSecond, + () => + { + int leftTime = moveTime % (GameData.numOfPosGridPerCell / GameData.numOfStepPerSecond); + bool flag; + do + { + flag = false; + if (!isDestroyed) + { + moveVec.length = deltaLen + leftTime * obj.MoveSpeed / GameData.numOfPosGridPerCell; + if ((collisionObj = collisionChecker.CheckCollision(obj, moveVec)) == null) + { + obj.Move(moveVec); + } + else + { + switch (OnCollision(obj, collisionObj, moveVec)) + { + case AfterCollision.ContinueCheck: + flag = true; + break; + case AfterCollision.Destroyed: + Debugger.Output(obj, " collide with " + collisionObj.ToString() + " and has been removed from the game."); + isDestroyed = true; + break; + case AfterCollision.MoveMax: + MoveMax(obj, moveVec); + moveVec.length = 0; + break; + } + } + } + } while (flag); + if (leftTime > 0) + { + Thread.Sleep(leftTime); //多移动的在这里补回来 + } + lock(obj.MoveLock) + obj.IsMoving = false; //结束移动 + EndMove(obj); + return 0; + }, + maxTotalDuration: moveTime + ) + { + AllowTimeExceed = true, + MaxTolerantTimeExceedCount = ulong.MaxValue, + TimeExceedAction = b => + { + if (b) Console.WriteLine("Fatal Error: The computer runs so slow that the object cannot finish moving during this time!!!!!!"); + +#if DEBUG + else + { + Console.WriteLine("Debug info: Object moving time exceed for once."); + } +#endif + } + }.Start(); + } + ).Start(); + } + } +} From dbc1ca1aec173ba4f26d80899a9af0a58dd5818e Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 23:05:06 +0800 Subject: [PATCH 08/11] 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 10953 -> 0 bytes resource/capi_uml.vsdx | Bin 25797 -> 0 bytes resource/structure.png | Bin 66930 -> 0 bytes resource/structure.vsdx | Bin 65739 -> 0 bytes 45 files changed, 19916 deletions(-) delete mode 100644 CAPI/.gitignore delete mode 100644 CAPI/API/API.vcxproj delete mode 100644 CAPI/API/API.vcxproj.filters delete mode 100644 CAPI/API/include/AI.h delete mode 100644 CAPI/API/include/API.h delete mode 100644 CAPI/API/include/constants.h delete mode 100644 CAPI/API/include/logic.h delete mode 100644 CAPI/API/include/state.h delete mode 100644 CAPI/API/include/structures.h delete mode 100644 CAPI/API/src/AI.cpp delete mode 100644 CAPI/API/src/logic.cpp delete mode 100644 CAPI/CAPI.sln delete mode 100644 CAPI/CMakeLists.txt delete mode 100644 CAPI/README.md delete mode 100644 CAPI/proto/Message2Clients.grpc.pb.cc delete mode 100644 CAPI/proto/Message2Clients.grpc.pb.h delete mode 100644 CAPI/proto/Message2Clients.pb.cc delete mode 100644 CAPI/proto/Message2Clients.pb.h delete mode 100644 CAPI/proto/Message2Server.grpc.pb.cc delete mode 100644 CAPI/proto/Message2Server.grpc.pb.h delete mode 100644 CAPI/proto/Message2Server.pb.cc delete mode 100644 CAPI/proto/Message2Server.pb.h delete mode 100644 CAPI/proto/MessageType.grpc.pb.cc delete mode 100644 CAPI/proto/MessageType.grpc.pb.h delete mode 100644 CAPI/proto/MessageType.pb.cc delete mode 100644 CAPI/proto/MessageType.pb.h delete mode 100644 dependency/.gitignore delete mode 100644 dependency/Dockerfile/README.md delete mode 100644 dependency/README.md delete mode 100644 dependency/dll/README.md delete mode 100644 dependency/lib/README.md delete mode 100755 dependency/proto/.clang-format delete mode 100755 dependency/proto/Message2Clients.proto delete mode 100755 dependency/proto/Message2Server.proto delete mode 100755 dependency/proto/MessageType.proto delete mode 100755 dependency/proto/README.md delete mode 100755 dependency/proto/cpp_output.sh delete mode 100755 dependency/proto/format.sh delete mode 100644 dependency/shell/README.md delete mode 100644 dependency/shell/format.sh delete mode 100644 resource/README.md delete mode 100644 resource/capi_uml.png delete mode 100644 resource/capi_uml.vsdx delete mode 100644 resource/structure.png delete mode 100644 resource/structure.vsdx diff --git a/CAPI/.gitignore b/CAPI/.gitignore deleted file mode 100644 index 698ed27..0000000 --- a/CAPI/.gitignore +++ /dev/null @@ -1,499 +0,0 @@ -## 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 deleted file mode 100644 index 33f7ab9..0000000 --- a/CAPI/API/API.vcxproj +++ /dev/null @@ -1,154 +0,0 @@ - - - - - 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 deleted file mode 100644 index afef69e..0000000 --- a/CAPI/API/API.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {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 deleted file mode 100644 index d274d3d..0000000 --- a/CAPI/API/include/AI.h +++ /dev/null @@ -1,27 +0,0 @@ -#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 deleted file mode 100644 index 076bff2..0000000 --- a/CAPI/API/include/API.h +++ /dev/null @@ -1,247 +0,0 @@ -#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 deleted file mode 100644 index 735bd03..0000000 --- a/CAPI/API/include/constants.h +++ /dev/null @@ -1,8 +0,0 @@ -#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 deleted file mode 100644 index 6851596..0000000 --- a/CAPI/API/include/logic.h +++ /dev/null @@ -1,112 +0,0 @@ -#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 deleted file mode 100644 index f699d24..0000000 --- a/CAPI/API/include/state.h +++ /dev/null @@ -1,27 +0,0 @@ -#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 deleted file mode 100644 index 06dd24c..0000000 --- a/CAPI/API/include/structures.h +++ /dev/null @@ -1,151 +0,0 @@ -#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 deleted file mode 100644 index 6953fd5..0000000 --- a/CAPI/API/src/AI.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#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 deleted file mode 100644 index 9ef32c9..0000000 --- a/CAPI/API/src/logic.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#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 deleted file mode 100644 index 76cf3d8..0000000 --- a/CAPI/CAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -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 deleted file mode 100644 index 6b11ff0..0000000 --- a/CAPI/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -# 临时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 deleted file mode 100644 index bb61d52..0000000 --- a/CAPI/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# 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 deleted file mode 100644 index ee30772..0000000 --- a/CAPI/proto/Message2Clients.grpc.pb.cc +++ /dev/null @@ -1,852 +0,0 @@ -// 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 deleted file mode 100644 index 7481d7e..0000000 --- a/CAPI/proto/Message2Clients.grpc.pb.h +++ /dev/null @@ -1,3348 +0,0 @@ -// 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 deleted file mode 100644 index b101df8..0000000 --- a/CAPI/proto/Message2Clients.pb.cc +++ /dev/null @@ -1,4294 +0,0 @@ -// 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 deleted file mode 100644 index d7e690b..0000000 --- a/CAPI/proto/Message2Clients.pb.h +++ /dev/null @@ -1,4327 +0,0 @@ -// 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 deleted file mode 100644 index 1b47393..0000000 --- a/CAPI/proto/Message2Server.grpc.pb.cc +++ /dev/null @@ -1,25 +0,0 @@ -// 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 deleted file mode 100644 index 511570c..0000000 --- a/CAPI/proto/Message2Server.grpc.pb.h +++ /dev/null @@ -1,35 +0,0 @@ -// 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 deleted file mode 100644 index 9777136..0000000 --- a/CAPI/proto/Message2Server.pb.cc +++ /dev/null @@ -1,2006 +0,0 @@ -// 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 deleted file mode 100644 index 33caf27..0000000 --- a/CAPI/proto/Message2Server.pb.h +++ /dev/null @@ -1,1864 +0,0 @@ -// 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 deleted file mode 100644 index fe0ba6f..0000000 --- a/CAPI/proto/MessageType.grpc.pb.cc +++ /dev/null @@ -1,25 +0,0 @@ -// 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 deleted file mode 100644 index 587ae62..0000000 --- a/CAPI/proto/MessageType.grpc.pb.h +++ /dev/null @@ -1,35 +0,0 @@ -// 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 deleted file mode 100644 index 4f47a0e..0000000 --- a/CAPI/proto/MessageType.pb.cc +++ /dev/null @@ -1,240 +0,0 @@ -// 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 deleted file mode 100644 index a2c218d..0000000 --- a/CAPI/proto/MessageType.pb.h +++ /dev/null @@ -1,411 +0,0 @@ -// 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 deleted file mode 100644 index 9491a2f..0000000 --- a/dependency/.gitignore +++ /dev/null @@ -1,363 +0,0 @@ -## 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 deleted file mode 100644 index 94a32a9..0000000 --- a/dependency/Dockerfile/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Dockerfile - -用于存放Docker配置文件Dockerfile - diff --git a/dependency/README.md b/dependency/README.md deleted file mode 100644 index 0fd060b..0000000 --- a/dependency/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Dependency - -## 简介 - -该目录用于存放程序所需的所有依赖文件,例如程序编译必须的 .lib 与 .a、程序运行所需的 .dll 与 .so、Docker 配置文件 Dockerfile、protobuf 源代码文件 .proto、shell 脚本 .sh,等等。 - -## 统一约定 - -- 将对应后缀名的文件放入同名的子文件夹时,需要在子文件夹内再建立一个子文件夹,并在新建的文件夹内新建 README 介绍每个文件的用途。 - diff --git a/dependency/dll/README.md b/dependency/dll/README.md deleted file mode 100644 index 77b9fe5..0000000 --- a/dependency/dll/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# dll - -动态链接库 .dll 与 .so - diff --git a/dependency/lib/README.md b/dependency/lib/README.md deleted file mode 100644 index eb79320..0000000 --- a/dependency/lib/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# lib - -静态链接库 .lib 与 .a - diff --git a/dependency/proto/.clang-format b/dependency/proto/.clang-format deleted file mode 100755 index f10f5bd..0000000 --- a/dependency/proto/.clang-format +++ /dev/null @@ -1,283 +0,0 @@ ---- -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 deleted file mode 100755 index edae464..0000000 --- a/dependency/proto/Message2Clients.proto +++ /dev/null @@ -1,125 +0,0 @@ -// 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 deleted file mode 100755 index b3891b6..0000000 --- a/dependency/proto/Message2Server.proto +++ /dev/null @@ -1,62 +0,0 @@ -// 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 deleted file mode 100755 index 2041fe0..0000000 --- a/dependency/proto/MessageType.proto +++ /dev/null @@ -1,110 +0,0 @@ -// 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 deleted file mode 100755 index f8ba2c9..0000000 --- a/dependency/proto/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Proto - -该目录用于存放需要用到的`.proto`文件 \ No newline at end of file diff --git a/dependency/proto/cpp_output.sh b/dependency/proto/cpp_output.sh deleted file mode 100755 index cf2dd5d..0000000 --- a/dependency/proto/cpp_output.sh +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100755 index 63bdd5a..0000000 --- a/dependency/proto/format.sh +++ /dev/null @@ -1,75 +0,0 @@ -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 deleted file mode 100644 index 03496ee..0000000 --- a/dependency/shell/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Shell - -本目录用于存放程序所需的shell脚本 - diff --git a/dependency/shell/format.sh b/dependency/shell/format.sh deleted file mode 100644 index dba6115..0000000 --- a/dependency/shell/format.sh +++ /dev/null @@ -1,21 +0,0 @@ -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 deleted file mode 100644 index eb723ac..0000000 --- a/resource/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Resource - -本目录用于存放主目录 README 的所有资源,**目录名称及目录内文件禁止更改**。 \ No newline at end of file diff --git a/resource/capi_uml.png b/resource/capi_uml.png deleted file mode 100644 index 937233930dad6f9911953c7164e9ddf6c76ecc53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10953 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 diff --git a/resource/capi_uml.vsdx b/resource/capi_uml.vsdx deleted file mode 100644 index 52276aaa41eb7f62014f342407b606088bcb2e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25797 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℘J(^NAfBzcZ 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 diff --git a/resource/structure.png b/resource/structure.png deleted file mode 100644 index 5ffe9b095653c1386c8f455977c972a3a899527c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66930 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 vy9+`ld8y(iWrg-~AUYF4$8Aa^e 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 diff --git a/resource/structure.vsdx b/resource/structure.vsdx deleted file mode 100644 index 4a070e8d61d58464553f52f55bf0ea8c2536d806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65739 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

QGD40m&EGUa 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 AFaQ7m literal 0 HcmV?d00001 From 608c73ac87fcc0e6224f4a37489faff057910e48 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 23:23:29 +0800 Subject: [PATCH 10/11] style: :art: format --- logic/GameClass/GameObj/Character.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/logic/GameClass/GameObj/Character.cs b/logic/GameClass/GameObj/Character.cs index fc16f6b..9631793 100644 --- a/logic/GameClass/GameObj/Character.cs +++ b/logic/GameClass/GameObj/Character.cs @@ -55,7 +55,7 @@ namespace GameClass.GameObj get => score; } - //public double AttackRange => BulletFactory.BulletAttackRange(this.BulletOfPlayer); + // public double AttackRange => BulletFactory.BulletAttackRange(this.BulletOfPlayer); private double vampire = 0; // 回血率:0-1之间 public double Vampire @@ -100,7 +100,7 @@ namespace GameClass.GameObj } } } - + ///

/// 使用物品栏中的道具 /// @@ -428,9 +428,9 @@ namespace GameClass.GameObj this.MoveSpeed = OrgMoveSpeed; HP = MaxHp; PropInventory = null; - //BulletOfPlayer = OriBulletOfPlayer; - //lock (gameObjLock) - // bulletNum = maxBulletNum; + // BulletOfPlayer = OriBulletOfPlayer; + // lock (gameObjLock) + // bulletNum = maxBulletNum; buffManeger.ClearAll(); IsInvisible = false; From 28a5ca9df13ea516e81785a27d3fa888d01be8f1 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 29 Oct 2022 23:32:17 +0800 Subject: [PATCH 11/11] style: :art: --- logic/GameEngine/CollisionChecker.cs | 151 ++++++++++--------- logic/GameEngine/MoveEngine.cs | 181 +++++++++++------------ logic/Preparation/Interface/IMoveable.cs | 2 +- logic/Preparation/Utility/XY.cs | 2 +- 4 files changed, 170 insertions(+), 166 deletions(-) diff --git a/logic/GameEngine/CollisionChecker.cs b/logic/GameEngine/CollisionChecker.cs index 93e0074..08ca0f7 100644 --- a/logic/GameEngine/CollisionChecker.cs +++ b/logic/GameEngine/CollisionChecker.cs @@ -24,26 +24,29 @@ namespace GameEngine return gameMap.GetOutOfBound(nextPos); return null; } - //在列表中检查碰撞 + // 在列表中检查碰撞 Func, ReaderWriterLockSlim, IGameObj?> CheckCollisionInList = (IEnumerable lst, ReaderWriterLockSlim listLock) => + { + IGameObj? collisionObj = null; + listLock.EnterReadLock(); + try { - IGameObj? collisionObj = null; - listLock.EnterReadLock(); - try + foreach (var listObj in lst) { - foreach (var listObj in lst) + if (obj.WillCollideWith(listObj, nextPos)) { - if (obj.WillCollideWith(listObj, nextPos)) - { - collisionObj = listObj; - break; - } + collisionObj = listObj; + break; } } - finally { listLock.ExitReadLock(); } - return collisionObj; - }; + } + finally + { + listLock.ExitReadLock(); + } + return collisionObj; + }; IGameObj? collisionObj = null; foreach (var list in lists) @@ -62,51 +65,51 @@ namespace GameEngine /// /// 矩形的中心坐标 /// - //private double MaxMoveToSquare(IMoveable obj, IGameObj square) + // private double MaxMoveToSquare(IMoveable obj, IGameObj square) //{ - // double tmpMax; - // double angle = Math.Atan2(square.Position.y - obj.Position.y, square.Position.x - obj.Position.x); - // if (obj.WillCollideWith(square, obj.Position)) - // tmpMax = 0; - // else tmpMax = - // Math.Abs(XYPosition.Distance(obj.Position, square.Position) - obj.Radius - - // (square.Radius / Math.Min(Math.Abs(Math.Cos(angle)), Math.Abs(Math.Sin(angle))))); - // return tmpMax; - //} + // double tmpMax; + // double angle = Math.Atan2(square.Position.y - obj.Position.y, square.Position.x - obj.Position.x); + // if (obj.WillCollideWith(square, obj.Position)) + // tmpMax = 0; + // else tmpMax = + // Math.Abs(XYPosition.Distance(obj.Position, square.Position) - obj.Radius - + // (square.Radius / Math.Min(Math.Abs(Math.Cos(angle)), Math.Abs(Math.Sin(angle))))); + // return tmpMax; + // } - //private double FindMaxOnlyConsiderWall(IMoveable obj, Vector moveVec) + // private double FindMaxOnlyConsiderWall(IMoveable obj, Vector moveVec) //{ - // var desination = moveVec; - // double maxOnlyConsiderWall = moveVec.length; - // if (desination.length > 0) //如果length足够长,还是有可能穿墙的 - // { - // XYPosition nextXY = Vector.Vector2XY(desination) + obj.Position + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle)), (int)(obj.Radius * Math.Sin(moveVec.angle))); - // if (gameMap.IsWall(nextXY)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 - // { - // maxOnlyConsiderWall = MaxMoveToSquare(obj, gameMap.GetCell(nextXY)); - // } - // else //考虑物体宽度 - // { - // double dist = 0; - // XYPosition nextXYConsiderWidth; - // nextXYConsiderWidth = nextXY + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle + Math.PI / 4)), (int)(obj.Radius * Math.Sin(moveVec.angle + Math.PI / 4))); - // if (gameMap.IsWall(nextXYConsiderWidth)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 - // { - // dist = MaxMoveToSquare(obj, gameMap.GetCell(nextXYConsiderWidth)); - // if (dist < maxOnlyConsiderWall) - // maxOnlyConsiderWall = dist; - // } - // nextXYConsiderWidth = nextXY + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle - Math.PI / 4)), (int)(obj.Radius * Math.Sin(moveVec.angle - Math.PI / 4))); - // if (gameMap.IsWall(nextXYConsiderWidth)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 - // { - // dist = MaxMoveToSquare(obj, gameMap.GetCell(nextXYConsiderWidth)); - // if (dist < maxOnlyConsiderWall) - // maxOnlyConsiderWall = dist; - // } - // } - // } - // return maxOnlyConsiderWall; - //} + // var desination = moveVec; + // double maxOnlyConsiderWall = moveVec.length; + // if (desination.length > 0) //如果length足够长,还是有可能穿墙的 + // { + // XYPosition nextXY = Vector.Vector2XY(desination) + obj.Position + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle)), (int)(obj.Radius * Math.Sin(moveVec.angle))); + // if (gameMap.IsWall(nextXY)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 + // { + // maxOnlyConsiderWall = MaxMoveToSquare(obj, gameMap.GetCell(nextXY)); + // } + // else //考虑物体宽度 + // { + // double dist = 0; + // XYPosition nextXYConsiderWidth; + // nextXYConsiderWidth = nextXY + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle + Math.PI / 4)), (int)(obj.Radius * Math.Sin(moveVec.angle + Math.PI / 4))); + // if (gameMap.IsWall(nextXYConsiderWidth)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 + // { + // dist = MaxMoveToSquare(obj, gameMap.GetCell(nextXYConsiderWidth)); + // if (dist < maxOnlyConsiderWall) + // maxOnlyConsiderWall = dist; + // } + // nextXYConsiderWidth = nextXY + new XYPosition((int)(obj.Radius * Math.Cos(moveVec.angle - Math.PI / 4)), (int)(obj.Radius * Math.Sin(moveVec.angle - Math.PI / 4))); + // if (gameMap.IsWall(nextXYConsiderWidth)) //对下一步的位置进行检查,但这里只是考虑移动物体的宽度,只是考虑下一步能达到的最远位置 + // { + // dist = MaxMoveToSquare(obj, gameMap.GetCell(nextXYConsiderWidth)); + // if (dist < maxOnlyConsiderWall) + // maxOnlyConsiderWall = dist; + // } + // } + // } + // return maxOnlyConsiderWall; + // } /// /// 寻找最大可能移动距离 @@ -118,10 +121,10 @@ namespace GameEngine public double FindMax(IMoveable obj, XY nextPos, XY moveVec) { double maxLen = (double)uint.MaxValue; - double tmpMax = maxLen; //暂存最大值 + double tmpMax = maxLen; // 暂存最大值 // 先找只考虑墙的最大距离 - //double maxOnlyConsiderWall = FindMaxOnlyConsiderWall(obj, moveVec); + // double maxOnlyConsiderWall = FindMaxOnlyConsiderWall(obj, moveVec); double maxDistance = maxLen; foreach (var listWithLock in lists) { @@ -132,47 +135,48 @@ namespace GameEngine { foreach (IGameObj listObj in lst) { - //如果再走一步发生碰撞 + // 如果再走一步发生碰撞 if (obj.WillCollideWith(listObj, nextPos)) { { - switch (listObj.Shape) //默认obj为圆形 + switch (listObj.Shape) // 默认obj为圆形 { case ShapeType.Circle: { - //计算两者之间的距离 + // 计算两者之间的距离 double mod = XY.Distance(listObj.Position, obj.Position); int orgDeltaX = listObj.Position.x - obj.Position.x; int orgDeltaY = listObj.Position.y - obj.Position.y; - if (mod < listObj.Radius + obj.Radius) //如果两者已经重叠 + if (mod < listObj.Radius + obj.Radius) // 如果两者已经重叠 { tmpMax = 0; } else { double tmp = mod - obj.Radius - listObj.Radius; - //计算能走的最长距离,好像这么算有一点误差? + // 计算能走的最长距离,好像这么算有一点误差? tmp = tmp / Math.Cos(Math.Atan2(orgDeltaY, orgDeltaX) - moveVec.angle); if (tmp < 0 || tmp > uint.MaxValue || tmp == double.NaN) { tmpMax = uint.MaxValue; } - else tmpMax = tmp; + else + tmpMax = tmp; } break; } case ShapeType.Square: { - //if (obj.WillCollideWith(listObj, obj.Position)) - // tmpMax = 0; - //else tmpMax = MaxMoveToSquare(obj, listObj); - //break; + // if (obj.WillCollideWith(listObj, obj.Position)) + // tmpMax = 0; + // else tmpMax = MaxMoveToSquare(obj, listObj); + // break; if (obj.WillCollideWith(listObj, obj.Position)) tmpMax = 0; else { - //二分查找最大可能移动距离 + // 二分查找最大可能移动距离 int left = 0, right = (int)moveVec.length; while (left < right - 1) { @@ -181,7 +185,8 @@ namespace GameEngine { right = mid; } - else left = mid; + else + left = mid; } tmpMax = (uint)left; } @@ -199,11 +204,11 @@ namespace GameEngine } finally { - //maxLen = Math.Min(maxOnlyConsiderWall, maxDistance); //最大可能距离的最小值 + // maxLen = Math.Min(maxOnlyConsiderWall, maxDistance); //最大可能距离的最小值 listLock.ExitReadLock(); } } - //return maxLen; + // return maxLen; return maxDistance; } @@ -215,9 +220,9 @@ namespace GameEngine this.gameMap = gameMap; lists = new Tuple, ReaderWriterLockSlim>[gameMap.GameObjDict.Count]; int i = 0; - foreach(var keyValuePair in gameMap.GameObjDict) + foreach (var keyValuePair in gameMap.GameObjDict) { - lists[i++] = new Tuple, ReaderWriterLockSlim>(keyValuePair.Value as IList, gameMap.GameObjLockDict[keyValuePair.Key]); + lists[i++] = new Tuple, ReaderWriterLockSlim>(keyValuePair.Value as IList, gameMap.GameObjLockDict[keyValuePair.Key]); } } } diff --git a/logic/GameEngine/MoveEngine.cs b/logic/GameEngine/MoveEngine.cs index 0424397..867dae3 100644 --- a/logic/GameEngine/MoveEngine.cs +++ b/logic/GameEngine/MoveEngine.cs @@ -14,9 +14,9 @@ namespace GameEngine /// public enum AfterCollision { - ContinueCheck = 0, // 碰撞后继续检查其他碰撞 - MoveMax = 1, // 行走最远距离 - Destroyed = 2 // 物体已经毁坏 + ContinueCheck = 0, // 碰撞后继续检查其他碰撞 + MoveMax = 1, // 行走最远距离 + Destroyed = 2 // 物体已经毁坏 } private readonly ITimer gameTimer; @@ -29,12 +29,11 @@ namespace GameEngine /// 游戏地图 /// 发生碰撞时要做的事情,第一个参数为移动的物体,第二个参数为撞到的物体,第三个参数为移动的位移向量,返回值见AfterCollision的定义 /// 结束碰撞时要做的事情 - public MoveEngine - ( - IMap gameMap, - Func OnCollision, - Action EndMove - ) + public MoveEngine( + IMap gameMap, + Func OnCollision, + Action EndMove + ) { this.gameTimer = gameMap.Timer; this.EndMove = EndMove; @@ -59,7 +58,7 @@ namespace GameEngine public void MoveObj(IMoveable obj, int moveTime, double direction) { - if (obj.IsMoving) //已经移动的物体不能再移动 + if (obj.IsMoving) // 已经移动的物体不能再移动 return; new Thread ( @@ -67,28 +66,65 @@ namespace GameEngine { if (!obj.IsAvailable&&gameTimer.IsGaming) //不能动就直接return,后面都是能动的情况 return; - lock (obj.MoveLock) - obj.IsMoving = true; + lock (obj.MoveLock) + obj.IsMoving = true; - XY moveVec = new(direction, 0.0); - double deltaLen = moveVec.length - Math.Sqrt(obj.Move(moveVec)); //转向,并用deltaLen存储行走的误差 - IGameObj? collisionObj = null; - bool isDestroyed = false; - new FrameRateTaskExecutor - ( - () => gameTimer.IsGaming && obj.CanMove && !obj.IsResetting, - () => + XY moveVec = new(direction, 0.0); + double deltaLen = moveVec.length - Math.Sqrt(obj.Move(moveVec)); // 转向,并用deltaLen存储行走的误差 + IGameObj? collisionObj = null; + bool isDestroyed = false; + new FrameRateTaskExecutor( + () => gameTimer.IsGaming && obj.CanMove && !obj.IsResetting, + () => + { + moveVec.length = obj.MoveSpeed / GameData.numOfStepPerSecond; + + // 越界情况处理:如果越界,则与越界方块碰撞 + bool flag; // 循环标志 + do + { + flag = false; + collisionObj = collisionChecker.CheckCollision(obj, moveVec); + if (collisionObj == null) + break; + + switch (OnCollision(obj, collisionObj, moveVec)) { - moveVec.length = obj.MoveSpeed / GameData.numOfStepPerSecond; + case AfterCollision.ContinueCheck: + flag = true; + break; + case AfterCollision.Destroyed: + Debugger.Output(obj, " collide with " + collisionObj.ToString() + " and has been removed from the game."); + isDestroyed = true; + return false; + case AfterCollision.MoveMax: + MoveMax(obj, moveVec); + moveVec.length = 0; + break; + } + } while (flag); - //越界情况处理:如果越界,则与越界方块碰撞 - bool flag; //循环标志 - do - { - flag = false; - collisionObj = collisionChecker.CheckCollision(obj, moveVec); - if (collisionObj == null) break; + deltaLen += moveVec.length - Math.Sqrt(obj.Move(moveVec)); + return true; + }, + GameData.numOfPosGridPerCell / GameData.numOfStepPerSecond, + () => + { + int leftTime = moveTime % (GameData.numOfPosGridPerCell / GameData.numOfStepPerSecond); + bool flag; + do + { + flag = false; + if (!isDestroyed) + { + moveVec.length = deltaLen + leftTime * obj.MoveSpeed / GameData.numOfPosGridPerCell; + if ((collisionObj = collisionChecker.CheckCollision(obj, moveVec)) == null) + { + obj.Move(moveVec); + } + else + { switch (OnCollision(obj, collisionObj, moveVec)) { case AfterCollision.ContinueCheck: @@ -97,80 +133,43 @@ namespace GameEngine case AfterCollision.Destroyed: Debugger.Output(obj, " collide with " + collisionObj.ToString() + " and has been removed from the game."); isDestroyed = true; - return false; + break; case AfterCollision.MoveMax: MoveMax(obj, moveVec); moveVec.length = 0; break; } - } while (flag); - - deltaLen += moveVec.length - Math.Sqrt(obj.Move(moveVec)); - - return true; - }, - GameData.numOfPosGridPerCell / GameData.numOfStepPerSecond, - () => - { - int leftTime = moveTime % (GameData.numOfPosGridPerCell / GameData.numOfStepPerSecond); - bool flag; - do - { - flag = false; - if (!isDestroyed) - { - moveVec.length = deltaLen + leftTime * obj.MoveSpeed / GameData.numOfPosGridPerCell; - if ((collisionObj = collisionChecker.CheckCollision(obj, moveVec)) == null) - { - obj.Move(moveVec); - } - else - { - switch (OnCollision(obj, collisionObj, moveVec)) - { - case AfterCollision.ContinueCheck: - flag = true; - break; - case AfterCollision.Destroyed: - Debugger.Output(obj, " collide with " + collisionObj.ToString() + " and has been removed from the game."); - isDestroyed = true; - break; - case AfterCollision.MoveMax: - MoveMax(obj, moveVec); - moveVec.length = 0; - break; - } - } - } - } while (flag); - if (leftTime > 0) - { - Thread.Sleep(leftTime); //多移动的在这里补回来 } - lock(obj.MoveLock) - obj.IsMoving = false; //结束移动 - EndMove(obj); - return 0; - }, - maxTotalDuration: moveTime - ) + } + } while (flag); + if (leftTime > 0) { - AllowTimeExceed = true, - MaxTolerantTimeExceedCount = ulong.MaxValue, - TimeExceedAction = b => - { - if (b) Console.WriteLine("Fatal Error: The computer runs so slow that the object cannot finish moving during this time!!!!!!"); + Thread.Sleep(leftTime); // 多移动的在这里补回来 + } + lock (obj.MoveLock) + obj.IsMoving = false; // 结束移动 + EndMove(obj); + return 0; + }, + maxTotalDuration: moveTime + ) { + AllowTimeExceed = true, + MaxTolerantTimeExceedCount = ulong.MaxValue, + TimeExceedAction = b => + { + if (b) + Console.WriteLine("Fatal Error: The computer runs so slow that the object cannot finish moving during this time!!!!!!"); #if DEBUG - else - { - Console.WriteLine("Debug info: Object moving time exceed for once."); - } + else + { + Console.WriteLine("Debug info: Object moving time exceed for once."); + } #endif - } - }.Start(); } - ).Start(); + }.Start(); } + ).Start(); } } +} diff --git a/logic/Preparation/Interface/IMoveable.cs b/logic/Preparation/Interface/IMoveable.cs index e72e14e..ff23718 100644 --- a/logic/Preparation/Interface/IMoveable.cs +++ b/logic/Preparation/Interface/IMoveable.cs @@ -8,7 +8,7 @@ namespace Preparation.Interface object MoveLock { get; } public int MoveSpeed { get; } public long Move(XY moveVec); - protected bool IgnoreCollide(IGameObj targetObj); // 忽略碰撞,在具体类中实现 + protected bool IgnoreCollide(IGameObj targetObj); // 忽略碰撞,在具体类中实现 public bool WillCollideWith(IGameObj? targetObj, XY nextPos) // 检查下一位置是否会和目标物碰撞 { if (targetObj == null) diff --git a/logic/Preparation/Utility/XY.cs b/logic/Preparation/Utility/XY.cs index f7536a0..ff28482 100644 --- a/logic/Preparation/Utility/XY.cs +++ b/logic/Preparation/Utility/XY.cs @@ -16,7 +16,7 @@ namespace Preparation.Utility { return "(" + x.ToString() + "," + y.ToString() + ")"; } - public static int operator *(XY v1, XY v2) + public static int operator*(XY v1, XY v2) { return (v1.x * v2.x) + (v1.y * v2.y); }

QGD40m&EGUa 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 AFaQ7m 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 09/11] 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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