using LightProto;
using System;
using MemoryPack;
using System.Collections.Generic;
using Fantasy;
using Fantasy.Pool;
using Fantasy.Network.Interface;
using Fantasy.Serialize;

#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
#pragma warning disable CS8618
// ReSharper disable InconsistentNaming
// ReSharper disable CollectionNeverUpdated.Global
// ReSharper disable RedundantTypeArgumentsOfMethod
// ReSharper disable PartialTypeWithSinglePart
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable PreferConcreteValueOverDefault
// ReSharper disable RedundantNameQualifier
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable CheckNamespace
// ReSharper disable FieldCanBeMadeReadOnly.Global
// ReSharper disable RedundantUsingDirective
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
namespace Fantasy
{
    /// <summary>
    /// 请求背包列表
    /// </summary>
////////// ********  物品信息 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Game_GetItemsRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_GetItemsRequest Create(bool autoReturn = true)
        {
            var c2Game_GetItemsRequest = MessageObjectPool<C2Game_GetItemsRequest>.Rent();
            c2Game_GetItemsRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_GetItemsRequest.SetIsPool(false);
            }
            
            return c2Game_GetItemsRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MessageObjectPool<C2Game_GetItemsRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_GetItemsRequest; } 
        [ProtoIgnore]
        public Game2C_GetItemsResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
    }
    /// <summary>
    /// 请求背包列表响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_GetItemsResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_GetItemsResponse Create(bool autoReturn = true)
        {
            var game2C_GetItemsResponse = MessageObjectPool<Game2C_GetItemsResponse>.Rent();
            game2C_GetItemsResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_GetItemsResponse.SetIsPool(false);
            }
            
            return game2C_GetItemsResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Items.Clear();
            Rigs.Clear();
            Slots.Clear();
            MessageObjectPool<Game2C_GetItemsResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_GetItemsResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<ItemInfo> Items { get; set; } = new List<ItemInfo>();
        [ProtoMember(3)]
        public List<ItemBindInfo> Rigs { get; set; } = new List<ItemBindInfo>();
        [ProtoMember(4)]
        public List<long> Slots { get; set; } = new List<long>();
    }
    /// <summary>
    /// 请求使用物品
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2Game_UseItemRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_UseItemRequest Create(bool autoReturn = true)
        {
            var c2Game_UseItemRequest = MessageObjectPool<C2Game_UseItemRequest>.Rent();
            c2Game_UseItemRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_UseItemRequest.SetIsPool(false);
            }
            
            return c2Game_UseItemRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ItemId = default;
            MessageObjectPool<C2Game_UseItemRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_UseItemRequest; } 
        [ProtoIgnore]
        public Game2C_UseItemResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long ItemId { get; set; }
    }
    /// <summary>
    /// 请求使用物品响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_UseItemResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_UseItemResponse Create(bool autoReturn = true)
        {
            var game2C_UseItemResponse = MessageObjectPool<Game2C_UseItemResponse>.Rent();
            game2C_UseItemResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_UseItemResponse.SetIsPool(false);
            }
            
            return game2C_UseItemResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<Game2C_UseItemResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_UseItemResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    /// <summary>
    /// 物品变化
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_ItemChange : AMessage, ICustomRouteMessage
    {
        public static Game2C_ItemChange Create(bool autoReturn = true)
        {
            var game2C_ItemChange = MessageObjectPool<Game2C_ItemChange>.Rent();
            game2C_ItemChange.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_ItemChange.SetIsPool(false);
            }
            
            return game2C_ItemChange;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Type = default;
            Items.Clear();
            Removes.Clear();
            MessageObjectPool<Game2C_ItemChange>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_ItemChange; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public int Type { get; set; }
        [ProtoMember(2)]
        public List<ItemInfo> Items { get; set; } = new List<ItemInfo>();
        [ProtoMember(3)]
        public List<long> Removes { get; set; } = new List<long>();
    }
    /// <summary>
    /// 请求安装或取下配件
    /// </summary>
////////// ********  钓组 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Game_RigChangeRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_RigChangeRequest Create(bool autoReturn = true)
        {
            var c2Game_RigChangeRequest = MessageObjectPool<C2Game_RigChangeRequest>.Rent();
            c2Game_RigChangeRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_RigChangeRequest.SetIsPool(false);
            }
            
            return c2Game_RigChangeRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ItemId = default;
            RigId = default;
            OldRigId = default;
            IsAdd = default;
            MessageObjectPool<C2Game_RigChangeRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_RigChangeRequest; } 
        [ProtoIgnore]
        public Game2C_RigChangeResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long ItemId { get; set; }
        [ProtoMember(2)]
        public long RigId { get; set; }
        [ProtoMember(3)]
        public long OldRigId { get; set; }
        [ProtoMember(4)]
        public bool IsAdd { get; set; }
    }
    /// <summary>
    /// 请求安装配件响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_RigChangeResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_RigChangeResponse Create(bool autoReturn = true)
        {
            var game2C_RigChangeResponse = MessageObjectPool<Game2C_RigChangeResponse>.Rent();
            game2C_RigChangeResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_RigChangeResponse.SetIsPool(false);
            }
            
            return game2C_RigChangeResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            if (Rigs != null)
            {
                Rigs.Dispose();
                Rigs = null;
            }
            MessageObjectPool<Game2C_RigChangeResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_RigChangeResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public ItemBindInfo Rigs { get; set; }
    }
    /// <summary>
    /// 请求设置快速使用
    /// </summary>
////////// ********  快速使用插槽 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Game_SetSlotRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_SetSlotRequest Create(bool autoReturn = true)
        {
            var c2Game_SetSlotRequest = MessageObjectPool<C2Game_SetSlotRequest>.Rent();
            c2Game_SetSlotRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_SetSlotRequest.SetIsPool(false);
            }
            
            return c2Game_SetSlotRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Index = default;
            Id = default;
            MessageObjectPool<C2Game_SetSlotRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_SetSlotRequest; } 
        [ProtoIgnore]
        public Game2C_SetSlotResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public int Index { get; set; }
        [ProtoMember(2)]
        public long Id { get; set; }
    }
    /// <summary>
    /// 请求设置快速使用响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_SetSlotResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_SetSlotResponse Create(bool autoReturn = true)
        {
            var game2C_SetSlotResponse = MessageObjectPool<Game2C_SetSlotResponse>.Rent();
            game2C_SetSlotResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_SetSlotResponse.SetIsPool(false);
            }
            
            return game2C_SetSlotResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Slots.Clear();
            MessageObjectPool<Game2C_SetSlotResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_SetSlotResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<long> Slots { get; set; } = new List<long>();
    }
    /// <summary>
    /// 请求鱼护列表
    /// </summary>
////////// ********  鱼护 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Game_GetFishsRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_GetFishsRequest Create(bool autoReturn = true)
        {
            var c2Game_GetFishsRequest = MessageObjectPool<C2Game_GetFishsRequest>.Rent();
            c2Game_GetFishsRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_GetFishsRequest.SetIsPool(false);
            }
            
            return c2Game_GetFishsRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MessageObjectPool<C2Game_GetFishsRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_GetFishsRequest; } 
        [ProtoIgnore]
        public Game2C_GetFishsResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
    }
    /// <summary>
    /// 请求鱼护列表响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_GetFishsResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_GetFishsResponse Create(bool autoReturn = true)
        {
            var game2C_GetFishsResponse = MessageObjectPool<Game2C_GetFishsResponse>.Rent();
            game2C_GetFishsResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_GetFishsResponse.SetIsPool(false);
            }
            
            return game2C_GetFishsResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Fishs.Clear();
            MessageObjectPool<Game2C_GetFishsResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_GetFishsResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<FishInfo> Fishs { get; set; } = new List<FishInfo>();
    }
    /// <summary>
    /// 鱼护变化
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_FishChange : AMessage, ICustomRouteMessage
    {
        public static Game2C_FishChange Create(bool autoReturn = true)
        {
            var game2C_FishChange = MessageObjectPool<Game2C_FishChange>.Rent();
            game2C_FishChange.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_FishChange.SetIsPool(false);
            }
            
            return game2C_FishChange;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Type = default;
            Fishs.Clear();
            Removes.Clear();
            MessageObjectPool<Game2C_FishChange>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_FishChange; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public int Type { get; set; }
        [ProtoMember(2)]
        public List<FishInfo> Fishs { get; set; } = new List<FishInfo>();
        [ProtoMember(3)]
        public List<long> Removes { get; set; } = new List<long>();
    }
    /// <summary>
    /// 请求出售
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2Game_SellFishRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_SellFishRequest Create(bool autoReturn = true)
        {
            var c2Game_SellFishRequest = MessageObjectPool<C2Game_SellFishRequest>.Rent();
            c2Game_SellFishRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_SellFishRequest.SetIsPool(false);
            }
            
            return c2Game_SellFishRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Ids.Clear();
            MessageObjectPool<C2Game_SellFishRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_SellFishRequest; } 
        [ProtoIgnore]
        public Game2C_SellFishResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public List<long> Ids { get; set; } = new List<long>();
    }
    /// <summary>
    /// 请求出售响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_SellFishResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_SellFishResponse Create(bool autoReturn = true)
        {
            var game2C_SellFishResponse = MessageObjectPool<Game2C_SellFishResponse>.Rent();
            game2C_SellFishResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_SellFishResponse.SetIsPool(false);
            }
            
            return game2C_SellFishResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Awards.Clear();
            MessageObjectPool<Game2C_SellFishResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_SellFishResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<AwardInfo> Awards { get; set; } = new List<AwardInfo>();
    }
    /// <summary>
    /// 请求商店商品列表
    /// </summary>
////////// ********  商店 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Game_GetShopItemsRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_GetShopItemsRequest Create(bool autoReturn = true)
        {
            var c2Game_GetShopItemsRequest = MessageObjectPool<C2Game_GetShopItemsRequest>.Rent();
            c2Game_GetShopItemsRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_GetShopItemsRequest.SetIsPool(false);
            }
            
            return c2Game_GetShopItemsRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Shop = default;
            MessageObjectPool<C2Game_GetShopItemsRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_GetShopItemsRequest; } 
        [ProtoIgnore]
        public Game2C_GetShopItemsResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public uint Shop { get; set; }
    }
    /// <summary>
    /// 请求商店商品列表响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_GetShopItemsResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_GetShopItemsResponse Create(bool autoReturn = true)
        {
            var game2C_GetShopItemsResponse = MessageObjectPool<Game2C_GetShopItemsResponse>.Rent();
            game2C_GetShopItemsResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_GetShopItemsResponse.SetIsPool(false);
            }
            
            return game2C_GetShopItemsResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Items.Clear();
            MessageObjectPool<Game2C_GetShopItemsResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_GetShopItemsResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<ShopItemInfo> Items { get; set; } = new List<ShopItemInfo>();
    }
    /// <summary>
    /// 请求购买
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2Game_BuyRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_BuyRequest Create(bool autoReturn = true)
        {
            var c2Game_BuyRequest = MessageObjectPool<C2Game_BuyRequest>.Rent();
            c2Game_BuyRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_BuyRequest.SetIsPool(false);
            }
            
            return c2Game_BuyRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            BuyId = default;
            MessageObjectPool<C2Game_BuyRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_BuyRequest; } 
        [ProtoIgnore]
        public Game2C_GetFishsResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public uint BuyId { get; set; }
    }
    /// <summary>
    /// 请求购买响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_BuyResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_BuyResponse Create(bool autoReturn = true)
        {
            var game2C_BuyResponse = MessageObjectPool<Game2C_BuyResponse>.Rent();
            game2C_BuyResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_BuyResponse.SetIsPool(false);
            }
            
            return game2C_BuyResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<Game2C_BuyResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_BuyResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    /// <summary>
    /// 活动奖励推送
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_RewardNotify : AMessage, ICustomRouteMessage
    {
        public static Game2C_RewardNotify Create(bool autoReturn = true)
        {
            var game2C_RewardNotify = MessageObjectPool<Game2C_RewardNotify>.Rent();
            game2C_RewardNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_RewardNotify.SetIsPool(false);
            }
            
            return game2C_RewardNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Awards.Clear();
            MessageObjectPool<Game2C_RewardNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_RewardNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public List<AwardInfo> Awards { get; set; } = new List<AwardInfo>();
    }
    /// <summary>
    /// 请求执行GM
    /// </summary>
////////// ********  GM *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Game_GMRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_GMRequest Create(bool autoReturn = true)
        {
            var c2Game_GMRequest = MessageObjectPool<C2Game_GMRequest>.Rent();
            c2Game_GMRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_GMRequest.SetIsPool(false);
            }
            
            return c2Game_GMRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Cmd = default;
            Args = default;
            MessageObjectPool<C2Game_GMRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_GMRequest; } 
        [ProtoIgnore]
        public Game2C_GMResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public string Cmd { get; set; }
        [ProtoMember(2)]
        public string Args { get; set; }
    }
    /// <summary>
    /// 执行GM返回
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Game2C_GMResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_GMResponse Create(bool autoReturn = true)
        {
            var game2C_GMResponse = MessageObjectPool<Game2C_GMResponse>.Rent();
            game2C_GMResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_GMResponse.SetIsPool(false);
            }
            
            return game2C_GMResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<Game2C_GMResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_GMResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    /// <summary>
    /// 请求创建房间
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2Map_CreateRoomRequest : AMessage, ICustomRouteRequest
    {
        public static C2Map_CreateRoomRequest Create(bool autoReturn = true)
        {
            var c2Map_CreateRoomRequest = MessageObjectPool<C2Map_CreateRoomRequest>.Rent();
            c2Map_CreateRoomRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Map_CreateRoomRequest.SetIsPool(false);
            }
            
            return c2Map_CreateRoomRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MapId = default;
            MessageObjectPool<C2Map_CreateRoomRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Map_CreateRoomRequest; } 
        [ProtoIgnore]
        public Map2C_CreateRoomResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public int MapId { get; set; }
    }
    /// <summary>
    /// 请求创建房间成功
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_CreateRoomResponse : AMessage, ICustomRouteResponse
    {
        public static Map2C_CreateRoomResponse Create(bool autoReturn = true)
        {
            var map2C_CreateRoomResponse = MessageObjectPool<Map2C_CreateRoomResponse>.Rent();
            map2C_CreateRoomResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_CreateRoomResponse.SetIsPool(false);
            }
            
            return map2C_CreateRoomResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            RoomCode = default;
            Units.Clear();
            MessageObjectPool<Map2C_CreateRoomResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_CreateRoomResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public string RoomCode { get; set; }
        [ProtoMember(3)]
        public List<MapUnitInfo> Units { get; set; } = new List<MapUnitInfo>();
    }
    /// <summary>
    /// 请求网关离开房间（离开房间，但是不离开地图）
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2G_ExitRoomRequest : AMessage, IRequest
    {
        public static C2G_ExitRoomRequest Create(bool autoReturn = true)
        {
            var c2G_ExitRoomRequest = MessageObjectPool<C2G_ExitRoomRequest>.Rent();
            c2G_ExitRoomRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2G_ExitRoomRequest.SetIsPool(false);
            }
            
            return c2G_ExitRoomRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            RoomCode = default;
            MessageObjectPool<C2G_ExitRoomRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2G_ExitRoomRequest; } 
        [ProtoIgnore]
        public G2C_ExitRoomResponse ResponseType { get; set; }
        [ProtoMember(1)]
        public string RoomCode { get; set; }
    }
    /// <summary>
    /// 请求网关进入离开响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class G2C_ExitRoomResponse : AMessage, IResponse
    {
        public static G2C_ExitRoomResponse Create(bool autoReturn = true)
        {
            var g2C_ExitRoomResponse = MessageObjectPool<G2C_ExitRoomResponse>.Rent();
            g2C_ExitRoomResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                g2C_ExitRoomResponse.SetIsPool(false);
            }
            
            return g2C_ExitRoomResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            RoomCode = default;
            MessageObjectPool<G2C_ExitRoomResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.G2C_ExitRoomResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public string RoomCode { get; set; }
    }
    /// <summary>
    /// 请求网关进入地图
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2G_EnterMapRequest : AMessage, IRequest
    {
        public static C2G_EnterMapRequest Create(bool autoReturn = true)
        {
            var c2G_EnterMapRequest = MessageObjectPool<C2G_EnterMapRequest>.Rent();
            c2G_EnterMapRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2G_EnterMapRequest.SetIsPool(false);
            }
            
            return c2G_EnterMapRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            RoomCode = default;
            MapId = default;
            MessageObjectPool<C2G_EnterMapRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2G_EnterMapRequest; } 
        [ProtoIgnore]
        public G2C_EnterMapResponse ResponseType { get; set; }
        [ProtoMember(1)]
        public string RoomCode { get; set; }
        [ProtoMember(2)]
        public int MapId { get; set; }
    }
    /// <summary>
    /// 请求网关进入房间响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class G2C_EnterMapResponse : AMessage, IResponse
    {
        public static G2C_EnterMapResponse Create(bool autoReturn = true)
        {
            var g2C_EnterMapResponse = MessageObjectPool<G2C_EnterMapResponse>.Rent();
            g2C_EnterMapResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                g2C_EnterMapResponse.SetIsPool(false);
            }
            
            return g2C_EnterMapResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MapId = default;
            RoomCode = default;
            Units.Clear();
            MessageObjectPool<G2C_EnterMapResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.G2C_EnterMapResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public int MapId { get; set; }
        [ProtoMember(3)]
        public string RoomCode { get; set; }
        [ProtoMember(4)]
        public List<MapUnitInfo> Units { get; set; } = new List<MapUnitInfo>();
    }
    /// <summary>
    /// 通知客户端切换地图
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_ChangeMap : AMessage, ICustomRouteMessage
    {
        public static Map2C_ChangeMap Create(bool autoReturn = true)
        {
            var map2C_ChangeMap = MessageObjectPool<Map2C_ChangeMap>.Rent();
            map2C_ChangeMap.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_ChangeMap.SetIsPool(false);
            }
            
            return map2C_ChangeMap;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MapId = default;
            Node = default;
            MessageObjectPool<Map2C_ChangeMap>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_ChangeMap; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public int MapId { get; set; }
        [ProtoMember(2)]
        public int Node { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class C2A_LoginRequest : AMessage, IRequest
    {
        public static C2A_LoginRequest Create(bool autoReturn = true)
        {
            var c2A_LoginRequest = MessageObjectPool<C2A_LoginRequest>.Rent();
            c2A_LoginRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2A_LoginRequest.SetIsPool(false);
            }
            
            return c2A_LoginRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Username = default;
            Password = default;
            LoginType = default;
            Region = default;
            MessageObjectPool<C2A_LoginRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2A_LoginRequest; } 
        [ProtoIgnore]
        public A2C_LoginResponse ResponseType { get; set; }
        [ProtoMember(1)]
        public string Username { get; set; }
        [ProtoMember(2)]
        public string Password { get; set; }
        [ProtoMember(3)]
        public int LoginType { get; set; }
        [ProtoMember(4)]
        public int Region { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class A2C_LoginResponse : AMessage, IResponse
    {
        public static A2C_LoginResponse Create(bool autoReturn = true)
        {
            var a2C_LoginResponse = MessageObjectPool<A2C_LoginResponse>.Rent();
            a2C_LoginResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                a2C_LoginResponse.SetIsPool(false);
            }
            
            return a2C_LoginResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            ToKen = default;
            MessageObjectPool<A2C_LoginResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.A2C_LoginResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public string ToKen { get; set; }
    }
    /// <summary>
    /// 客户端登录到Gate服务器
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2G_LoginRequest : AMessage, IRequest
    {
        public static C2G_LoginRequest Create(bool autoReturn = true)
        {
            var c2G_LoginRequest = MessageObjectPool<C2G_LoginRequest>.Rent();
            c2G_LoginRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2G_LoginRequest.SetIsPool(false);
            }
            
            return c2G_LoginRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ToKen = default;
            MessageObjectPool<C2G_LoginRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2G_LoginRequest; } 
        [ProtoIgnore]
        public G2C_LoginResponse ResponseType { get; set; }
        [ProtoMember(1)]
        public string ToKen { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class G2C_LoginResponse : AMessage, IResponse
    {
        public static G2C_LoginResponse Create(bool autoReturn = true)
        {
            var g2C_LoginResponse = MessageObjectPool<G2C_LoginResponse>.Rent();
            g2C_LoginResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                g2C_LoginResponse.SetIsPool(false);
            }
            
            return g2C_LoginResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            RoleId = default;
            MessageObjectPool<G2C_LoginResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.G2C_LoginResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public long RoleId { get; set; }
    }
    /// <summary>
    /// 通知客户端重复登录
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class G2C_RepeatLogin : AMessage, IMessage
    {
        public static G2C_RepeatLogin Create(bool autoReturn = true)
        {
            var g2C_RepeatLogin = MessageObjectPool<G2C_RepeatLogin>.Rent();
            g2C_RepeatLogin.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                g2C_RepeatLogin.SetIsPool(false);
            }
            
            return g2C_RepeatLogin;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MessageObjectPool<G2C_RepeatLogin>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.G2C_RepeatLogin; } 
    }
    [Serializable]
    [ProtoContract]
    public partial class C2Game_GetRoleInfoRequest : AMessage, ICustomRouteRequest
    {
        public static C2Game_GetRoleInfoRequest Create(bool autoReturn = true)
        {
            var c2Game_GetRoleInfoRequest = MessageObjectPool<C2Game_GetRoleInfoRequest>.Rent();
            c2Game_GetRoleInfoRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Game_GetRoleInfoRequest.SetIsPool(false);
            }
            
            return c2Game_GetRoleInfoRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MessageObjectPool<C2Game_GetRoleInfoRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Game_GetRoleInfoRequest; } 
        [ProtoIgnore]
        public Game2C_GetRoleInfoResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
    }
    [Serializable]
    [ProtoContract]
    public partial class Game2C_GetRoleInfoResponse : AMessage, ICustomRouteResponse
    {
        public static Game2C_GetRoleInfoResponse Create(bool autoReturn = true)
        {
            var game2C_GetRoleInfoResponse = MessageObjectPool<Game2C_GetRoleInfoResponse>.Rent();
            game2C_GetRoleInfoResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                game2C_GetRoleInfoResponse.SetIsPool(false);
            }
            
            return game2C_GetRoleInfoResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            if (RoleInfo != null)
            {
                RoleInfo.Dispose();
                RoleInfo = null;
            }
            RoomCode = default;
            MessageObjectPool<Game2C_GetRoleInfoResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Game2C_GetRoleInfoResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public RoleInfo RoleInfo { get; set; }
        [ProtoMember(3)]
        public string RoomCode { get; set; }
    }
    /// <summary>
    /// 用户进入地图
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_RoleEnterRoomNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_RoleEnterRoomNotify Create(bool autoReturn = true)
        {
            var map2C_RoleEnterRoomNotify = MessageObjectPool<Map2C_RoleEnterRoomNotify>.Rent();
            map2C_RoleEnterRoomNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_RoleEnterRoomNotify.SetIsPool(false);
            }
            
            return map2C_RoleEnterRoomNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Info != null)
            {
                Info.Dispose();
                Info = null;
            }
            MessageObjectPool<Map2C_RoleEnterRoomNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_RoleEnterRoomNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public MapUnitInfo Info { get; set; }
    }
    /// <summary>
    /// 用户离开地图
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_RoleExitRoomNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_RoleExitRoomNotify Create(bool autoReturn = true)
        {
            var map2C_RoleExitRoomNotify = MessageObjectPool<Map2C_RoleExitRoomNotify>.Rent();
            map2C_RoleExitRoomNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_RoleExitRoomNotify.SetIsPool(false);
            }
            
            return map2C_RoleExitRoomNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            MessageObjectPool<Map2C_RoleExitRoomNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_RoleExitRoomNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
    }
    /// <summary>
    /// 请求拿起物品
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2Map_TakeItemRequest : AMessage, ICustomRouteRequest
    {
        public static C2Map_TakeItemRequest Create(bool autoReturn = true)
        {
            var c2Map_TakeItemRequest = MessageObjectPool<C2Map_TakeItemRequest>.Rent();
            c2Map_TakeItemRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Map_TakeItemRequest.SetIsPool(false);
            }
            
            return c2Map_TakeItemRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            Task = default;
            MessageObjectPool<C2Map_TakeItemRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Map_TakeItemRequest; } 
        [ProtoIgnore]
        public Map2C_TakeItemResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public int Id { get; set; }
        [ProtoMember(2)]
        public bool Task { get; set; }
    }
    /// <summary>
    /// 请求拿起物品响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_TakeItemResponse : AMessage, ICustomRouteResponse
    {
        public static Map2C_TakeItemResponse Create(bool autoReturn = true)
        {
            var map2C_TakeItemResponse = MessageObjectPool<Map2C_TakeItemResponse>.Rent();
            map2C_TakeItemResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_TakeItemResponse.SetIsPool(false);
            }
            
            return map2C_TakeItemResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Id = default;
            Task = default;
            MessageObjectPool<Map2C_TakeItemResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_TakeItemResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public int Id { get; set; }
        [ProtoMember(3)]
        public bool Task { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class C2Map_RolePropertyChange : AMessage, ICustomRouteMessage
    {
        public static C2Map_RolePropertyChange Create(bool autoReturn = true)
        {
            var c2Map_RolePropertyChange = MessageObjectPool<C2Map_RolePropertyChange>.Rent();
            c2Map_RolePropertyChange.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Map_RolePropertyChange.SetIsPool(false);
            }
            
            return c2Map_RolePropertyChange;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Propertys.Clear();
            MessageObjectPool<C2Map_RolePropertyChange>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Map_RolePropertyChange; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public List<KeyValueInt64> Propertys { get; set; } = new List<KeyValueInt64>();
    }
    /// <summary>
    /// 玩家状态变化同步
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_RoleStateNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_RoleStateNotify Create(bool autoReturn = true)
        {
            var map2C_RoleStateNotify = MessageObjectPool<Map2C_RoleStateNotify>.Rent();
            map2C_RoleStateNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_RoleStateNotify.SetIsPool(false);
            }
            
            return map2C_RoleStateNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            if (State != null)
            {
                State.Dispose();
                State = null;
            }
            MessageObjectPool<Map2C_RoleStateNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_RoleStateNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public UnitStateInfo State { get; set; }
    }
    /// <summary>
    /// 玩家钓组变化
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_RoleGearChangeNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_RoleGearChangeNotify Create(bool autoReturn = true)
        {
            var map2C_RoleGearChangeNotify = MessageObjectPool<Map2C_RoleGearChangeNotify>.Rent();
            map2C_RoleGearChangeNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_RoleGearChangeNotify.SetIsPool(false);
            }
            
            return map2C_RoleGearChangeNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            Gears.Clear();
            MessageObjectPool<Map2C_RoleGearChangeNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_RoleGearChangeNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public List<GearInfo> Gears { get; set; } = new List<GearInfo>();
    }
    [Serializable]
    [ProtoContract]
    public partial class Map2C_RolePropertyChangeNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_RolePropertyChangeNotify Create(bool autoReturn = true)
        {
            var map2C_RolePropertyChangeNotify = MessageObjectPool<Map2C_RolePropertyChangeNotify>.Rent();
            map2C_RolePropertyChangeNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_RolePropertyChangeNotify.SetIsPool(false);
            }
            
            return map2C_RolePropertyChangeNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            Propertys.Clear();
            MessageObjectPool<Map2C_RolePropertyChangeNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_RolePropertyChangeNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public List<KeyValueInt64> Propertys { get; set; } = new List<KeyValueInt64>();
    }
    [Serializable]
    [ProtoContract]
    public partial class C2Map_Move : AMessage, ICustomRouteMessage
    {
        public static C2Map_Move Create(bool autoReturn = true)
        {
            var c2Map_Move = MessageObjectPool<C2Map_Move>.Rent();
            c2Map_Move.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Map_Move.SetIsPool(false);
            }
            
            return c2Map_Move;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Position != null)
            {
                Position.Dispose();
                Position = null;
            }
            if (Rotation != null)
            {
                Rotation.Dispose();
                Rotation = null;
            }
            if (Direction != null)
            {
                Direction.Dispose();
                Direction = null;
            }
            IsStop = default;
            IsRun = default;
            Timestamp = default;
            MessageObjectPool<C2Map_Move>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Map_Move; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public Vector3Info Position { get; set; }
        [ProtoMember(2)]
        public Vector3Info Rotation { get; set; }
        [ProtoMember(3)]
        public Vector3Info Direction { get; set; }
        [ProtoMember(4)]
        public bool IsStop { get; set; }
        [ProtoMember(5)]
        public bool IsRun { get; set; }
        [ProtoMember(6)]
        public long Timestamp { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class C2Map_Look : AMessage, ICustomRouteMessage
    {
        public static C2Map_Look Create(bool autoReturn = true)
        {
            var c2Map_Look = MessageObjectPool<C2Map_Look>.Rent();
            c2Map_Look.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Map_Look.SetIsPool(false);
            }
            
            return c2Map_Look;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Rotation != null)
            {
                Rotation.Dispose();
                Rotation = null;
            }
            Timestamp = default;
            MessageObjectPool<C2Map_Look>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Map_Look; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public Vector3Info Rotation { get; set; }
        [ProtoMember(2)]
        public long Timestamp { get; set; }
    }
    /// <summary>
    /// 玩家移动推送
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_MoveNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_MoveNotify Create(bool autoReturn = true)
        {
            var map2C_MoveNotify = MessageObjectPool<Map2C_MoveNotify>.Rent();
            map2C_MoveNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_MoveNotify.SetIsPool(false);
            }
            
            return map2C_MoveNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            if (Position != null)
            {
                Position.Dispose();
                Position = null;
            }
            if (Rotation != null)
            {
                Rotation.Dispose();
                Rotation = null;
            }
            if (Direction != null)
            {
                Direction.Dispose();
                Direction = null;
            }
            IsStop = default;
            IsRun = default;
            Timestamp = default;
            MessageObjectPool<Map2C_MoveNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_MoveNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public Vector3Info Position { get; set; }
        [ProtoMember(3)]
        public Vector3Info Rotation { get; set; }
        [ProtoMember(4)]
        public Vector3Info Direction { get; set; }
        [ProtoMember(5)]
        public bool IsStop { get; set; }
        [ProtoMember(6)]
        public bool IsRun { get; set; }
        [ProtoMember(7)]
        public long Timestamp { get; set; }
    }
    /// <summary>
    /// 玩家旋转推送
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class Map2C_LookeNotify : AMessage, ICustomRouteMessage
    {
        public static Map2C_LookeNotify Create(bool autoReturn = true)
        {
            var map2C_LookeNotify = MessageObjectPool<Map2C_LookeNotify>.Rent();
            map2C_LookeNotify.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                map2C_LookeNotify.SetIsPool(false);
            }
            
            return map2C_LookeNotify;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            if (Rotation != null)
            {
                Rotation.Dispose();
                Rotation = null;
            }
            Timestamp = default;
            MessageObjectPool<Map2C_LookeNotify>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Map2C_LookeNotify; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.GameRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public Vector3Info Rotation { get; set; }
        [ProtoMember(3)]
        public long Timestamp { get; set; }
    }
    /// <summary>
    /// 会话信息
    /// </summary>
////////// ********  私聊/邮件 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class ConversationInfo : AMessage, IDisposable
    {
        public static ConversationInfo Create(bool autoReturn = true)
        {
            var conversationInfo = MessageObjectPool<ConversationInfo>.Rent();
            conversationInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                conversationInfo.SetIsPool(false);
            }
            
            return conversationInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (RoleInfo != null)
            {
                RoleInfo.Dispose();
                RoleInfo = null;
            }
            List.Clear();
            MessageObjectPool<ConversationInfo>.Return(this);
        }
        [ProtoMember(1)]
        public RoleSimpleInfo RoleInfo { get; set; }
        [ProtoMember(2)]
        public List<MailInfo> List { get; set; } = new List<MailInfo>();
    }
    [Serializable]
    [ProtoContract]
    public partial class MailInfo : AMessage, IDisposable
    {
        public static MailInfo Create(bool autoReturn = true)
        {
            var mailInfo = MessageObjectPool<MailInfo>.Rent();
            mailInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                mailInfo.SetIsPool(false);
            }
            
            return mailInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            Sender = default;
            Content = default;
            CreateTime = default;
            MailType = default;
            MailState = default;
            Items.Clear();
            MessageObjectPool<MailInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public long Sender { get; set; }
        [ProtoMember(3)]
        public string Content { get; set; }
        [ProtoMember(4)]
        public long CreateTime { get; set; }
        [ProtoMember(5)]
        public int MailType { get; set; }
        [ProtoMember(6)]
        public int MailState { get; set; }
        [ProtoMember(7)]
        public List<AwardInfo> Items { get; set; } = new List<AwardInfo>();
    }
    /// <summary>
    /// 请求会话列表
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_GetConversationsRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_GetConversationsRequest Create(bool autoReturn = true)
        {
            var c2S_GetConversationsRequest = MessageObjectPool<C2S_GetConversationsRequest>.Rent();
            c2S_GetConversationsRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_GetConversationsRequest.SetIsPool(false);
            }
            
            return c2S_GetConversationsRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MessageObjectPool<C2S_GetConversationsRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_GetConversationsRequest; } 
        [ProtoIgnore]
        public S2C_GetConversationsResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
    }
    /// <summary>
    /// 请求会话列表响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_GetConversationsResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_GetConversationsResponse Create(bool autoReturn = true)
        {
            var s2C_GetConversationsResponse = MessageObjectPool<S2C_GetConversationsResponse>.Rent();
            s2C_GetConversationsResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_GetConversationsResponse.SetIsPool(false);
            }
            
            return s2C_GetConversationsResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            List.Clear();
            MessageObjectPool<S2C_GetConversationsResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_GetConversationsResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<ConversationInfo> List { get; set; } = new List<ConversationInfo>();
    }
    /// <summary>
    /// 发送邮件消息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_SendMailRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_SendMailRequest Create(bool autoReturn = true)
        {
            var c2S_SendMailRequest = MessageObjectPool<C2S_SendMailRequest>.Rent();
            c2S_SendMailRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_SendMailRequest.SetIsPool(false);
            }
            
            return c2S_SendMailRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Target = default;
            Content = default;
            Items.Clear();
            MessageObjectPool<C2S_SendMailRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_SendMailRequest; } 
        [ProtoIgnore]
        public S2C_SendMailResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long Target { get; set; }
        [ProtoMember(2)]
        public string Content { get; set; }
        [ProtoMember(3)]
        public List<AwardInfo> Items { get; set; } = new List<AwardInfo>();
    }
    /// <summary>
    /// 发送邮件消息响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_SendMailResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_SendMailResponse Create(bool autoReturn = true)
        {
            var s2C_SendMailResponse = MessageObjectPool<S2C_SendMailResponse>.Rent();
            s2C_SendMailResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_SendMailResponse.SetIsPool(false);
            }
            
            return s2C_SendMailResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<S2C_SendMailResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_SendMailResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    /// <summary>
    /// 发送删除会话消息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_DeleteMailRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_DeleteMailRequest Create(bool autoReturn = true)
        {
            var c2S_DeleteMailRequest = MessageObjectPool<C2S_DeleteMailRequest>.Rent();
            c2S_DeleteMailRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_DeleteMailRequest.SetIsPool(false);
            }
            
            return c2S_DeleteMailRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            MessageObjectPool<C2S_DeleteMailRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_DeleteMailRequest; } 
        [ProtoIgnore]
        public S2C_DeleteMailResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long Id { get; set; }
    }
    /// <summary>
    /// 发送删除会话消息响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_DeleteMailResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_DeleteMailResponse Create(bool autoReturn = true)
        {
            var s2C_DeleteMailResponse = MessageObjectPool<S2C_DeleteMailResponse>.Rent();
            s2C_DeleteMailResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_DeleteMailResponse.SetIsPool(false);
            }
            
            return s2C_DeleteMailResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Id = default;
            MessageObjectPool<S2C_DeleteMailResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_DeleteMailResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public long Id { get; set; }
    }
    /// <summary>
    /// 新邮件推送
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_HaveMail : AMessage, ICustomRouteMessage
    {
        public static S2C_HaveMail Create(bool autoReturn = true)
        {
            var s2C_HaveMail = MessageObjectPool<S2C_HaveMail>.Rent();
            s2C_HaveMail.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_HaveMail.SetIsPool(false);
            }
            
            return s2C_HaveMail;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Mail != null)
            {
                Mail.Dispose();
                Mail = null;
            }
            Key = default;
            MessageObjectPool<S2C_HaveMail>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_HaveMail; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public MailInfo Mail { get; set; }
        [ProtoMember(2)]
        public string Key { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class S2C_MailState : AMessage, ICustomRouteMessage
    {
        public static S2C_MailState Create(bool autoReturn = true)
        {
            var s2C_MailState = MessageObjectPool<S2C_MailState>.Rent();
            s2C_MailState.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_MailState.SetIsPool(false);
            }
            
            return s2C_MailState;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MailState = default;
            MailId = default;
            MessageObjectPool<S2C_MailState>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_MailState; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public int MailState { get; set; }
        [ProtoMember(2)]
        public long MailId { get; set; }
    }
    /// <summary>
    /// 发送一个聊天消息给Chat服务器，中间是经过Gate中转的
    /// </summary>
////////// ********  频道聊天 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class C2Chat_SendMessageRequest : AMessage, ICustomRouteRequest
    {
        public static C2Chat_SendMessageRequest Create(bool autoReturn = true)
        {
            var c2Chat_SendMessageRequest = MessageObjectPool<C2Chat_SendMessageRequest>.Rent();
            c2Chat_SendMessageRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2Chat_SendMessageRequest.SetIsPool(false);
            }
            
            return c2Chat_SendMessageRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (ChatInfoTree != null)
            {
                ChatInfoTree.Dispose();
                ChatInfoTree = null;
            }
            MessageObjectPool<C2Chat_SendMessageRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2Chat_SendMessageRequest; } 
        [ProtoIgnore]
        public Chat2C_SendMessageResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public ChatInfoTree ChatInfoTree { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class Chat2C_SendMessageResponse : AMessage, ICustomRouteResponse
    {
        public static Chat2C_SendMessageResponse Create(bool autoReturn = true)
        {
            var chat2C_SendMessageResponse = MessageObjectPool<Chat2C_SendMessageResponse>.Rent();
            chat2C_SendMessageResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chat2C_SendMessageResponse.SetIsPool(false);
            }
            
            return chat2C_SendMessageResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<Chat2C_SendMessageResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Chat2C_SendMessageResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class Chat2C_Message : AMessage, ICustomRouteMessage
    {
        public static Chat2C_Message Create(bool autoReturn = true)
        {
            var chat2C_Message = MessageObjectPool<Chat2C_Message>.Rent();
            chat2C_Message.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chat2C_Message.SetIsPool(false);
            }
            
            return chat2C_Message;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (ChatInfoTree != null)
            {
                ChatInfoTree.Dispose();
                ChatInfoTree = null;
            }
            MessageObjectPool<Chat2C_Message>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.Chat2C_Message; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public ChatInfoTree ChatInfoTree { get; set; }
    }
    /// <summary>
    /// 聊天消息树
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ChatInfoTree : AMessage, IDisposable
    {
        public static ChatInfoTree Create(bool autoReturn = true)
        {
            var chatInfoTree = MessageObjectPool<ChatInfoTree>.Rent();
            chatInfoTree.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatInfoTree.SetIsPool(false);
            }
            
            return chatInfoTree;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ChatChannelType = default;
            ChatChannelId = default;
            UnitId = default;
            UserName = default;
            Target.Clear();
            Node.Clear();
            MessageObjectPool<ChatInfoTree>.Return(this);
        }
        [ProtoMember(1)]
        public int ChatChannelType { get; set; }
        [ProtoMember(2)]
        public long ChatChannelId { get; set; }
        [ProtoMember(3)]
        public long UnitId { get; set; }
        [ProtoMember(4)]
        public string UserName { get; set; }
        [ProtoMember(5)]
        public List<long> Target { get; set; } = new List<long>();
        [ProtoMember(6)]
        public List<ChatInfoNode> Node { get; set; } = new List<ChatInfoNode>();
    }
    /// <summary>
    /// 聊天信息节点
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ChatInfoNode : AMessage, IDisposable
    {
        public static ChatInfoNode Create(bool autoReturn = true)
        {
            var chatInfoNode = MessageObjectPool<ChatInfoNode>.Rent();
            chatInfoNode.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatInfoNode.SetIsPool(false);
            }
            
            return chatInfoNode;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ChatNodeType = default;
            ChatNodeEvent = default;
            Content = default;
            Color = default;
            Data = null;
            MessageObjectPool<ChatInfoNode>.Return(this);
        }
        [ProtoMember(1)]
        public int ChatNodeType { get; set; }
        [ProtoMember(2)]
        public int ChatNodeEvent { get; set; }
        [ProtoMember(3)]
        public string Content { get; set; }
        [ProtoMember(4)]
        public string Color { get; set; }
        [ProtoMember(5)]
        public byte[] Data { get; set; }
    }
    /// <summary>
    /// 聊天位置信息节点
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ChatPositionNode : AMessage, IDisposable
    {
        public static ChatPositionNode Create(bool autoReturn = true)
        {
            var chatPositionNode = MessageObjectPool<ChatPositionNode>.Rent();
            chatPositionNode.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatPositionNode.SetIsPool(false);
            }
            
            return chatPositionNode;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MapName = default;
            PosX = default;
            PosY = default;
            PosZ = default;
            MessageObjectPool<ChatPositionNode>.Return(this);
        }
        [ProtoMember(1)]
        public string MapName { get; set; }
        [ProtoMember(2)]
        public float PosX { get; set; }
        [ProtoMember(3)]
        public float PosY { get; set; }
        [ProtoMember(4)]
        public float PosZ { get; set; }
    }
    /// <summary>
    /// 聊天位置信息节点
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ChatOpenUINode : AMessage, IDisposable
    {
        public static ChatOpenUINode Create(bool autoReturn = true)
        {
            var chatOpenUINode = MessageObjectPool<ChatOpenUINode>.Rent();
            chatOpenUINode.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatOpenUINode.SetIsPool(false);
            }
            
            return chatOpenUINode;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            UIName = default;
            MessageObjectPool<ChatOpenUINode>.Return(this);
        }
        [ProtoMember(1)]
        public string UIName { get; set; }
    }
    /// <summary>
    /// 聊天连接信息节点
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ChatLinkNode : AMessage, IDisposable
    {
        public static ChatLinkNode Create(bool autoReturn = true)
        {
            var chatLinkNode = MessageObjectPool<ChatLinkNode>.Rent();
            chatLinkNode.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatLinkNode.SetIsPool(false);
            }
            
            return chatLinkNode;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Link = default;
            MessageObjectPool<ChatLinkNode>.Return(this);
        }
        [ProtoMember(1)]
        public string Link { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class ChatUserInfo : AMessage, IDisposable
    {
        public static ChatUserInfo Create(bool autoReturn = true)
        {
            var chatUserInfo = MessageObjectPool<ChatUserInfo>.Rent();
            chatUserInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatUserInfo.SetIsPool(false);
            }
            
            return chatUserInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            Name = default;
            MessageObjectPool<ChatUserInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public long Name { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class ChatMessageInfo : AMessage, IDisposable
    {
        public static ChatMessageInfo Create(bool autoReturn = true)
        {
            var chatMessageInfo = MessageObjectPool<ChatMessageInfo>.Rent();
            chatMessageInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                chatMessageInfo.SetIsPool(false);
            }
            
            return chatMessageInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Type = default;
            Source = default;
            if (Trigger != null)
            {
                Trigger.Dispose();
                Trigger = null;
            }
            Content = default;
            SendTime = default;
            MessageObjectPool<ChatMessageInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int Type { get; set; }
        [ProtoMember(2)]
        public long Source { get; set; }
        [ProtoMember(3)]
        public ChatUserInfo Trigger { get; set; }
        [ProtoMember(4)]
        public string Content { get; set; }
        [ProtoMember(5)]
        public long SendTime { get; set; }
    }
    /// <summary>
    /// 创建频道
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_CreateChannelRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_CreateChannelRequest Create(bool autoReturn = true)
        {
            var c2S_CreateChannelRequest = MessageObjectPool<C2S_CreateChannelRequest>.Rent();
            c2S_CreateChannelRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_CreateChannelRequest.SetIsPool(false);
            }
            
            return c2S_CreateChannelRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Name = default;
            MessageObjectPool<C2S_CreateChannelRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_CreateChannelRequest; } 
        [ProtoIgnore]
        public S2C_CreateChannelResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public string Name { get; set; }
    }
    /// <summary>
    /// 创建频道响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_CreateChannelResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_CreateChannelResponse Create(bool autoReturn = true)
        {
            var s2C_CreateChannelResponse = MessageObjectPool<S2C_CreateChannelResponse>.Rent();
            s2C_CreateChannelResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_CreateChannelResponse.SetIsPool(false);
            }
            
            return s2C_CreateChannelResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            ChannelId = default;
            MessageObjectPool<S2C_CreateChannelResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_CreateChannelResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public long ChannelId { get; set; }
    }
    /// <summary>
    /// 请求进入频道
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_JoinChannelRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_JoinChannelRequest Create(bool autoReturn = true)
        {
            var c2S_JoinChannelRequest = MessageObjectPool<C2S_JoinChannelRequest>.Rent();
            c2S_JoinChannelRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_JoinChannelRequest.SetIsPool(false);
            }
            
            return c2S_JoinChannelRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Target = default;
            MessageObjectPool<C2S_JoinChannelRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_JoinChannelRequest; } 
        [ProtoIgnore]
        public S2C_JoinChannelResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long Target { get; set; }
    }
    /// <summary>
    /// 进入频道响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_JoinChannelResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_JoinChannelResponse Create(bool autoReturn = true)
        {
            var s2C_JoinChannelResponse = MessageObjectPool<S2C_JoinChannelResponse>.Rent();
            s2C_JoinChannelResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_JoinChannelResponse.SetIsPool(false);
            }
            
            return s2C_JoinChannelResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<S2C_JoinChannelResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_JoinChannelResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    /// <summary>
    /// 发送消息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_SendMessageRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_SendMessageRequest Create(bool autoReturn = true)
        {
            var c2S_SendMessageRequest = MessageObjectPool<C2S_SendMessageRequest>.Rent();
            c2S_SendMessageRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_SendMessageRequest.SetIsPool(false);
            }
            
            return c2S_SendMessageRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Message = default;
            Target = default;
            MessageObjectPool<C2S_SendMessageRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_SendMessageRequest; } 
        [ProtoIgnore]
        public S2C_SendMessageResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public string Message { get; set; }
        [ProtoMember(2)]
        public long Target { get; set; }
    }
    /// <summary>
    /// 发送消息响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_SendMessageResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_SendMessageResponse Create(bool autoReturn = true)
        {
            var s2C_SendMessageResponse = MessageObjectPool<S2C_SendMessageResponse>.Rent();
            s2C_SendMessageResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_SendMessageResponse.SetIsPool(false);
            }
            
            return s2C_SendMessageResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            MessageObjectPool<S2C_SendMessageResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_SendMessageResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
    }
    /// <summary>
    /// 推送消息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_Message : AMessage, ICustomRouteMessage
    {
        public static S2C_Message Create(bool autoReturn = true)
        {
            var s2C_Message = MessageObjectPool<S2C_Message>.Rent();
            s2C_Message.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_Message.SetIsPool(false);
            }
            
            return s2C_Message;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Msg != null)
            {
                Msg.Dispose();
                Msg = null;
            }
            MessageObjectPool<S2C_Message>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_Message; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public ChatMessageInfo Msg { get; set; }
    }
////////// ********  工会 *******/////////////
    [Serializable]
    [ProtoContract]
    public partial class ClubInfo : AMessage, IDisposable
    {
        public static ClubInfo Create(bool autoReturn = true)
        {
            var clubInfo = MessageObjectPool<ClubInfo>.Rent();
            clubInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                clubInfo.SetIsPool(false);
            }
            
            return clubInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            Name = default;
            CreateTime = default;
            OwnerId = default;
            MemberCount = default;
            MessageObjectPool<ClubInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public string Name { get; set; }
        [ProtoMember(3)]
        public long CreateTime { get; set; }
        [ProtoMember(4)]
        public long OwnerId { get; set; }
        [ProtoMember(5)]
        public int MemberCount { get; set; }
    }
    /// <summary>
    /// 请求创建工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_CreateClubRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_CreateClubRequest Create(bool autoReturn = true)
        {
            var c2S_CreateClubRequest = MessageObjectPool<C2S_CreateClubRequest>.Rent();
            c2S_CreateClubRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_CreateClubRequest.SetIsPool(false);
            }
            
            return c2S_CreateClubRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Name = default;
            MessageObjectPool<C2S_CreateClubRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_CreateClubRequest; } 
        [ProtoIgnore]
        public S2C_CreateClubResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public string Name { get; set; }
    }
    /// <summary>
    /// 创建工会响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_CreateClubResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_CreateClubResponse Create(bool autoReturn = true)
        {
            var s2C_CreateClubResponse = MessageObjectPool<S2C_CreateClubResponse>.Rent();
            s2C_CreateClubResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_CreateClubResponse.SetIsPool(false);
            }
            
            return s2C_CreateClubResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            if (Club != null)
            {
                Club.Dispose();
                Club = null;
            }
            MessageObjectPool<S2C_CreateClubResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_CreateClubResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public ClubInfo Club { get; set; }
    }
    /// <summary>
    /// 请求工会信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_GetClubInfoRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_GetClubInfoRequest Create(bool autoReturn = true)
        {
            var c2S_GetClubInfoRequest = MessageObjectPool<C2S_GetClubInfoRequest>.Rent();
            c2S_GetClubInfoRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_GetClubInfoRequest.SetIsPool(false);
            }
            
            return c2S_GetClubInfoRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ClubId = default;
            MessageObjectPool<C2S_GetClubInfoRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_GetClubInfoRequest; } 
        [ProtoIgnore]
        public S2C_GetClubInfoResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 响应工会信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_GetClubInfoResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_GetClubInfoResponse Create(bool autoReturn = true)
        {
            var s2C_GetClubInfoResponse = MessageObjectPool<S2C_GetClubInfoResponse>.Rent();
            s2C_GetClubInfoResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_GetClubInfoResponse.SetIsPool(false);
            }
            
            return s2C_GetClubInfoResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Name = default;
            MessageObjectPool<S2C_GetClubInfoResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_GetClubInfoResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public string Name { get; set; }
    }
    /// <summary>
    /// 请求工会成员列表
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_GetMemberListRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_GetMemberListRequest Create(bool autoReturn = true)
        {
            var c2S_GetMemberListRequest = MessageObjectPool<C2S_GetMemberListRequest>.Rent();
            c2S_GetMemberListRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_GetMemberListRequest.SetIsPool(false);
            }
            
            return c2S_GetMemberListRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ClubId = default;
            MessageObjectPool<C2S_GetMemberListRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_GetMemberListRequest; } 
        [ProtoIgnore]
        public S2C_GetMemberListResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 响应工会成员列表
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_GetMemberListResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_GetMemberListResponse Create(bool autoReturn = true)
        {
            var s2C_GetMemberListResponse = MessageObjectPool<S2C_GetMemberListResponse>.Rent();
            s2C_GetMemberListResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_GetMemberListResponse.SetIsPool(false);
            }
            
            return s2C_GetMemberListResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Members.Clear();
            MessageObjectPool<S2C_GetMemberListResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_GetMemberListResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<RoleSimpleInfo> Members { get; set; } = new List<RoleSimpleInfo>();
    }
    /// <summary>
    /// 获取工会列表请求
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_GetClubListRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_GetClubListRequest Create(bool autoReturn = true)
        {
            var c2S_GetClubListRequest = MessageObjectPool<C2S_GetClubListRequest>.Rent();
            c2S_GetClubListRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_GetClubListRequest.SetIsPool(false);
            }
            
            return c2S_GetClubListRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            MessageObjectPool<C2S_GetClubListRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_GetClubListRequest; } 
        [ProtoIgnore]
        public S2C_GetClubListResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
    }
    /// <summary>
    /// 获取工会列表响应
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_GetClubListResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_GetClubListResponse Create(bool autoReturn = true)
        {
            var s2C_GetClubListResponse = MessageObjectPool<S2C_GetClubListResponse>.Rent();
            s2C_GetClubListResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_GetClubListResponse.SetIsPool(false);
            }
            
            return s2C_GetClubListResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            Clubs.Clear();
            MessageObjectPool<S2C_GetClubListResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_GetClubListResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public List<ClubInfo> Clubs { get; set; } = new List<ClubInfo>();
    }
    /// <summary>
    /// 请求加入工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_JoinClubRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_JoinClubRequest Create(bool autoReturn = true)
        {
            var c2S_JoinClubRequest = MessageObjectPool<C2S_JoinClubRequest>.Rent();
            c2S_JoinClubRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_JoinClubRequest.SetIsPool(false);
            }
            
            return c2S_JoinClubRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ClubId = default;
            MessageObjectPool<C2S_JoinClubRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_JoinClubRequest; } 
        [ProtoIgnore]
        public S2C_JoinClubResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 响应加入工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_JoinClubResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_JoinClubResponse Create(bool autoReturn = true)
        {
            var s2C_JoinClubResponse = MessageObjectPool<S2C_JoinClubResponse>.Rent();
            s2C_JoinClubResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_JoinClubResponse.SetIsPool(false);
            }
            
            return s2C_JoinClubResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            if (Club != null)
            {
                Club.Dispose();
                Club = null;
            }
            MessageObjectPool<S2C_JoinClubResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_JoinClubResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public ClubInfo Club { get; set; }
    }
    /// <summary>
    /// 请求退出工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_LeaveClubRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_LeaveClubRequest Create(bool autoReturn = true)
        {
            var c2S_LeaveClubRequest = MessageObjectPool<C2S_LeaveClubRequest>.Rent();
            c2S_LeaveClubRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_LeaveClubRequest.SetIsPool(false);
            }
            
            return c2S_LeaveClubRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ClubId = default;
            MessageObjectPool<C2S_LeaveClubRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_LeaveClubRequest; } 
        [ProtoIgnore]
        public S2C_LeaveClubResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 响应退出工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_LeaveClubResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_LeaveClubResponse Create(bool autoReturn = true)
        {
            var s2C_LeaveClubResponse = MessageObjectPool<S2C_LeaveClubResponse>.Rent();
            s2C_LeaveClubResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_LeaveClubResponse.SetIsPool(false);
            }
            
            return s2C_LeaveClubResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            ClubId = default;
            MessageObjectPool<S2C_LeaveClubResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_LeaveClubResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 请求解散工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_DissolveClubRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_DissolveClubRequest Create(bool autoReturn = true)
        {
            var c2S_DissolveClubRequest = MessageObjectPool<C2S_DissolveClubRequest>.Rent();
            c2S_DissolveClubRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_DissolveClubRequest.SetIsPool(false);
            }
            
            return c2S_DissolveClubRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ClubId = default;
            MessageObjectPool<C2S_DissolveClubRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_DissolveClubRequest; } 
        [ProtoIgnore]
        public S2C_DissolveClubResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 响应解散工会
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_DissolveClubResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_DissolveClubResponse Create(bool autoReturn = true)
        {
            var s2C_DissolveClubResponse = MessageObjectPool<S2C_DissolveClubResponse>.Rent();
            s2C_DissolveClubResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_DissolveClubResponse.SetIsPool(false);
            }
            
            return s2C_DissolveClubResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            ClubId = default;
            MessageObjectPool<S2C_DissolveClubResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_DissolveClubResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public long ClubId { get; set; }
    }
    /// <summary>
    /// 请求操作申请
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class C2S_DisposeJoinRequest : AMessage, ICustomRouteRequest
    {
        public static C2S_DisposeJoinRequest Create(bool autoReturn = true)
        {
            var c2S_DisposeJoinRequest = MessageObjectPool<C2S_DisposeJoinRequest>.Rent();
            c2S_DisposeJoinRequest.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                c2S_DisposeJoinRequest.SetIsPool(false);
            }
            
            return c2S_DisposeJoinRequest;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ClubId = default;
            ApplicantId = default;
            Agree = default;
            MessageObjectPool<C2S_DisposeJoinRequest>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.C2S_DisposeJoinRequest; } 
        [ProtoIgnore]
        public S2C_DisposeJoinResponse ResponseType { get; set; }
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public long ClubId { get; set; }
        [ProtoMember(2)]
        public long ApplicantId { get; set; }
        [ProtoMember(3)]
        public int Agree { get; set; }
    }
    /// <summary>
    /// 响应操作申请
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_DisposeJoinResponse : AMessage, ICustomRouteResponse
    {
        public static S2C_DisposeJoinResponse Create(bool autoReturn = true)
        {
            var s2C_DisposeJoinResponse = MessageObjectPool<S2C_DisposeJoinResponse>.Rent();
            s2C_DisposeJoinResponse.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_DisposeJoinResponse.SetIsPool(false);
            }
            
            return s2C_DisposeJoinResponse;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ErrorCode = 0;
            ClubId = default;
            ApplicantId = default;
            Agree = default;
            MessageObjectPool<S2C_DisposeJoinResponse>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_DisposeJoinResponse; } 
        [ProtoMember(1)]
        public uint ErrorCode { get; set; }
        [ProtoMember(2)]
        public long ClubId { get; set; }
        [ProtoMember(3)]
        public long ApplicantId { get; set; }
        [ProtoMember(4)]
        public int Agree { get; set; }
    }
    /// <summary>
    /// 推送消息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class S2C_ClubChange : AMessage, ICustomRouteMessage
    {
        public static S2C_ClubChange Create(bool autoReturn = true)
        {
            var s2C_ClubChange = MessageObjectPool<S2C_ClubChange>.Rent();
            s2C_ClubChange.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                s2C_ClubChange.SetIsPool(false);
            }
            
            return s2C_ClubChange;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Club != null)
            {
                Club.Dispose();
                Club = null;
            }
            ChangeType = default;
            MessageObjectPool<S2C_ClubChange>.Return(this);
        }
        public uint OpCode() { return OuterOpcode.S2C_ClubChange; } 
        [ProtoIgnore]
        public int RouteType => Fantasy.RouteType.SocialRoute;
        [ProtoMember(1)]
        public ClubInfo Club { get; set; }
        [ProtoMember(2)]
        public int ChangeType { get; set; }
    }
    /// <summary>
    /// 角色基础信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class RoleBaseInfo : AMessage, IDisposable
    {
        public static RoleBaseInfo Create(bool autoReturn = true)
        {
            var roleBaseInfo = MessageObjectPool<RoleBaseInfo>.Rent();
            roleBaseInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                roleBaseInfo.SetIsPool(false);
            }
            
            return roleBaseInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            NickName = default;
            Head = default;
            Country = default;
            Level = default;
            Exp = default;
            if (VipInfo != null)
            {
                VipInfo.Dispose();
                VipInfo = null;
            }
            MessageObjectPool<RoleBaseInfo>.Return(this);
        }
        [ProtoMember(1)]
        public string NickName { get; set; }
        [ProtoMember(2)]
        public string Head { get; set; }
        [ProtoMember(3)]
        public string Country { get; set; }
        [ProtoMember(4)]
        public int Level { get; set; }
        [ProtoMember(5)]
        public int Exp { get; set; }
        [ProtoMember(6)]
        public VipInfo VipInfo { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class KeyValueInt64 : AMessage, IDisposable
    {
        public static KeyValueInt64 Create(bool autoReturn = true)
        {
            var keyValueInt64 = MessageObjectPool<KeyValueInt64>.Rent();
            keyValueInt64.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                keyValueInt64.SetIsPool(false);
            }
            
            return keyValueInt64;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Key = default;
            Value = default;
            MessageObjectPool<KeyValueInt64>.Return(this);
        }
        [ProtoMember(1)]
        public int Key { get; set; }
        [ProtoMember(2)]
        public long Value { get; set; }
    }
    /// <summary>
    /// 角色信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class RoleInfo : AMessage, IDisposable
    {
        public static RoleInfo Create(bool autoReturn = true)
        {
            var roleInfo = MessageObjectPool<RoleInfo>.Rent();
            roleInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                roleInfo.SetIsPool(false);
            }
            
            return roleInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (BaseInfo != null)
            {
                BaseInfo.Dispose();
                BaseInfo = null;
            }
            RoleId = default;
            Items.Clear();
            ItemBinds.Clear();
            Fishs.Clear();
            Activities.Clear();
            Currency.Clear();
            Slots.Clear();
            Skills.Clear();
            MapId = default;
            MessageObjectPool<RoleInfo>.Return(this);
        }
        [ProtoMember(1)]
        public RoleBaseInfo BaseInfo { get; set; }
        [ProtoMember(2)]
        public long RoleId { get; set; }
        [ProtoMember(3)]
        public List<ItemInfo> Items { get; set; } = new List<ItemInfo>();
        [ProtoMember(4)]
        public List<ItemBindInfo> ItemBinds { get; set; } = new List<ItemBindInfo>();
        [ProtoMember(5)]
        public List<FishInfo> Fishs { get; set; } = new List<FishInfo>();
        [ProtoMember(6)]
        public List<ActivityInfo> Activities { get; set; } = new List<ActivityInfo>();
        [ProtoMember(7)]
        public List<KeyValueInt64> Currency { get; set; } = new List<KeyValueInt64>();
        [ProtoMember(8)]
        public List<KeyValueInt64> Slots { get; set; } = new List<KeyValueInt64>();
        [ProtoMember(9)]
        public List<SkillInfo> Skills { get; set; } = new List<SkillInfo>();
        [ProtoMember(10)]
        public int MapId { get; set; }
    }
    /// <summary>
    /// 角色信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class RoleSimpleInfo : AMessage, IDisposable
    {
        public static RoleSimpleInfo Create(bool autoReturn = true)
        {
            var roleSimpleInfo = MessageObjectPool<RoleSimpleInfo>.Rent();
            roleSimpleInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                roleSimpleInfo.SetIsPool(false);
            }
            
            return roleSimpleInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            RoleId = default;
            NickName = default;
            Head = default;
            Country = default;
            Level = default;
            Vip = default;
            MapId = default;
            MessageObjectPool<RoleSimpleInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long RoleId { get; set; }
        [ProtoMember(2)]
        public string NickName { get; set; }
        [ProtoMember(3)]
        public string Head { get; set; }
        [ProtoMember(4)]
        public string Country { get; set; }
        [ProtoMember(5)]
        public int Level { get; set; }
        [ProtoMember(6)]
        public int Vip { get; set; }
        [ProtoMember(7)]
        public int MapId { get; set; }
    }
    /// <summary>
    /// VIP信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class VipInfo : AMessage, IDisposable
    {
        public static VipInfo Create(bool autoReturn = true)
        {
            var vipInfo = MessageObjectPool<VipInfo>.Rent();
            vipInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                vipInfo.SetIsPool(false);
            }
            
            return vipInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Level = default;
            OpenTime = default;
            ExpirationTime = default;
            MessageObjectPool<VipInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int Level { get; set; }
        [ProtoMember(2)]
        public long OpenTime { get; set; }
        [ProtoMember(3)]
        public long ExpirationTime { get; set; }
    }
    /// <summary>
    /// 奖励信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class AwardInfo : AMessage, IDisposable
    {
        public static AwardInfo Create(bool autoReturn = true)
        {
            var awardInfo = MessageObjectPool<AwardInfo>.Rent();
            awardInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                awardInfo.SetIsPool(false);
            }
            
            return awardInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ConfigId = default;
            Count = default;
            MessageObjectPool<AwardInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long ConfigId { get; set; }
        [ProtoMember(2)]
        public int Count { get; set; }
    }
    /// <summary>
    /// 玩家当前使用钓组信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ItemBindInfo : AMessage, IDisposable
    {
        public static ItemBindInfo Create(bool autoReturn = true)
        {
            var itemBindInfo = MessageObjectPool<ItemBindInfo>.Rent();
            itemBindInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                itemBindInfo.SetIsPool(false);
            }
            
            return itemBindInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Item = default;
            BindItems.Clear();
            MessageObjectPool<ItemBindInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long Item { get; set; }
        [ProtoMember(2)]
        public List<long> BindItems { get; set; } = new List<long>();
    }
    /// <summary>
    /// 物品信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ItemInfo : AMessage, IDisposable
    {
        public static ItemInfo Create(bool autoReturn = true)
        {
            var itemInfo = MessageObjectPool<ItemInfo>.Rent();
            itemInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                itemInfo.SetIsPool(false);
            }
            
            return itemInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ConfigId = default;
            Id = default;
            Count = default;
            ExpirationTime = default;
            GetTime = default;
            Abrasion = default;
            MessageObjectPool<ItemInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int ConfigId { get; set; }
        [ProtoMember(2)]
        public long Id { get; set; }
        [ProtoMember(3)]
        public int Count { get; set; }
        [ProtoMember(4)]
        public long ExpirationTime { get; set; }
        [ProtoMember(5)]
        public long GetTime { get; set; }
        [ProtoMember(6)]
        public int Abrasion { get; set; }
    }
    /// <summary>
    /// 商店物品信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class ShopItemInfo : AMessage, IDisposable
    {
        public static ShopItemInfo Create(bool autoReturn = true)
        {
            var shopItemInfo = MessageObjectPool<ShopItemInfo>.Rent();
            shopItemInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                shopItemInfo.SetIsPool(false);
            }
            
            return shopItemInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ConfigId = default;
            Price1 = default;
            Price2 = default;
            Sort = default;
            Tag = default;
            MessageObjectPool<ShopItemInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int ConfigId { get; set; }
        [ProtoMember(2)]
        public uint Price1 { get; set; }
        [ProtoMember(3)]
        public uint Price2 { get; set; }
        [ProtoMember(4)]
        public uint Sort { get; set; }
        [ProtoMember(5)]
        public uint Tag { get; set; }
    }
    /// <summary>
    /// fish信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class FishInfo : AMessage, IDisposable
    {
        public static FishInfo Create(bool autoReturn = true)
        {
            var fishInfo = MessageObjectPool<FishInfo>.Rent();
            fishInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                fishInfo.SetIsPool(false);
            }
            
            return fishInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ConfigId = default;
            Id = default;
            Weight = default;
            GetTime = default;
            ExpirationTime = default;
            MessageObjectPool<FishInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int ConfigId { get; set; }
        [ProtoMember(2)]
        public long Id { get; set; }
        [ProtoMember(3)]
        public int Weight { get; set; }
        [ProtoMember(4)]
        public long GetTime { get; set; }
        [ProtoMember(5)]
        public long ExpirationTime { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class ActivityInfo : AMessage, IDisposable
    {
        public static ActivityInfo Create(bool autoReturn = true)
        {
            var activityInfo = MessageObjectPool<ActivityInfo>.Rent();
            activityInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                activityInfo.SetIsPool(false);
            }
            
            return activityInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            StartTime = default;
            EndTime = default;
            Data.Clear();
            MessageObjectPool<ActivityInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public long StartTime { get; set; }
        [ProtoMember(3)]
        public long EndTime { get; set; }
        [ProtoMember(4)]
        public List<KeyValueInt64> Data { get; set; } = new List<KeyValueInt64>();
    }
    /// <summary>
    /// 技能情况
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class SkillInfo : AMessage, IDisposable
    {
        public static SkillInfo Create(bool autoReturn = true)
        {
            var skillInfo = MessageObjectPool<SkillInfo>.Rent();
            skillInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                skillInfo.SetIsPool(false);
            }
            
            return skillInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            ConfigId = default;
            Level = default;
            Exp = default;
            MessageObjectPool<SkillInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int ConfigId { get; set; }
        [ProtoMember(2)]
        public int Level { get; set; }
        [ProtoMember(3)]
        public int Exp { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class Vector3Info : AMessage, IDisposable
    {
        public static Vector3Info Create(bool autoReturn = true)
        {
            var vector3Info = MessageObjectPool<Vector3Info>.Rent();
            vector3Info.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                vector3Info.SetIsPool(false);
            }
            
            return vector3Info;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            x = default;
            y = default;
            z = default;
            MessageObjectPool<Vector3Info>.Return(this);
        }
        [ProtoMember(1)]
        public float x { get; set; }
        [ProtoMember(2)]
        public float y { get; set; }
        [ProtoMember(3)]
        public float z { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class Vector2Info : AMessage, IDisposable
    {
        public static Vector2Info Create(bool autoReturn = true)
        {
            var vector2Info = MessageObjectPool<Vector2Info>.Rent();
            vector2Info.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                vector2Info.SetIsPool(false);
            }
            
            return vector2Info;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            x = default;
            y = default;
            MessageObjectPool<Vector2Info>.Return(this);
        }
        [ProtoMember(1)]
        public float x { get; set; }
        [ProtoMember(2)]
        public float y { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class QuaternionInfo : AMessage, IDisposable
    {
        public static QuaternionInfo Create(bool autoReturn = true)
        {
            var quaternionInfo = MessageObjectPool<QuaternionInfo>.Rent();
            quaternionInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                quaternionInfo.SetIsPool(false);
            }
            
            return quaternionInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            x = default;
            y = default;
            z = default;
            w = default;
            MessageObjectPool<QuaternionInfo>.Return(this);
        }
        [ProtoMember(1)]
        public float x { get; set; }
        [ProtoMember(2)]
        public float y { get; set; }
        [ProtoMember(3)]
        public float z { get; set; }
        [ProtoMember(4)]
        public float w { get; set; }
    }
    /// <summary>
    /// 玩家当前使用钓组信息
    /// </summary>
    [Serializable]
    [ProtoContract]
    public partial class GearInfo : AMessage, IDisposable
    {
        public static GearInfo Create(bool autoReturn = true)
        {
            var gearInfo = MessageObjectPool<GearInfo>.Rent();
            gearInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                gearInfo.SetIsPool(false);
            }
            
            return gearInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            if (Item != null)
            {
                Item.Dispose();
                Item = null;
            }
            Binds.Clear();
            if (Position != null)
            {
                Position.Dispose();
                Position = null;
            }
            if (Rotation != null)
            {
                Rotation.Dispose();
                Rotation = null;
            }
            Propertys.Clear();
            InUse = default;
            InHand = default;
            MessageObjectPool<GearInfo>.Return(this);
        }
        [ProtoMember(1)]
        public ItemInfo Item { get; set; }
        [ProtoMember(2)]
        public List<ItemInfo> Binds { get; set; } = new List<ItemInfo>();
        [ProtoMember(3)]
        public Vector3Info Position { get; set; }
        [ProtoMember(4)]
        public Vector3Info Rotation { get; set; }
        [ProtoMember(5)]
        public List<KeyValueInt64> Propertys { get; set; } = new List<KeyValueInt64>();
        [ProtoMember(6)]
        public bool InUse { get; set; }
        [ProtoMember(7)]
        public bool InHand { get; set; }
    }
    [Serializable]
    [ProtoContract]
    public partial class UnitStateInfo : AMessage, IDisposable
    {
        public static UnitStateInfo Create(bool autoReturn = true)
        {
            var unitStateInfo = MessageObjectPool<UnitStateInfo>.Rent();
            unitStateInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                unitStateInfo.SetIsPool(false);
            }
            
            return unitStateInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            State = default;
            Propertys.Clear();
            MessageObjectPool<UnitStateInfo>.Return(this);
        }
        [ProtoMember(1)]
        public int State { get; set; }
        [ProtoMember(2)]
        public List<KeyValueInt64> Propertys { get; set; } = new List<KeyValueInt64>();
    }
    [Serializable]
    [ProtoContract]
    public partial class MapUnitInfo : AMessage, IDisposable
    {
        public static MapUnitInfo Create(bool autoReturn = true)
        {
            var mapUnitInfo = MessageObjectPool<MapUnitInfo>.Rent();
            mapUnitInfo.AutoReturn = autoReturn;
            
            if (!autoReturn)
            {
                mapUnitInfo.SetIsPool(false);
            }
            
            return mapUnitInfo;
        }
        
        public void Return()
        {
            if (!AutoReturn)
            {
                SetIsPool(true);
                AutoReturn = true;
            }
            else if (!IsPool())
            {
                return;
            }
            Dispose();
        }

        public void Dispose()
        {
            if (!IsPool()) return; 
            Id = default;
            if (RoleInfo != null)
            {
                RoleInfo.Dispose();
                RoleInfo = null;
            }
            if (Position != null)
            {
                Position.Dispose();
                Position = null;
            }
            if (Rotation != null)
            {
                Rotation.Dispose();
                Rotation = null;
            }
            if (State != null)
            {
                State.Dispose();
                State = null;
            }
            Gears.Clear();
            Propertys.Clear();
            MessageObjectPool<MapUnitInfo>.Return(this);
        }
        [ProtoMember(1)]
        public long Id { get; set; }
        [ProtoMember(2)]
        public RoleSimpleInfo RoleInfo { get; set; }
        [ProtoMember(3)]
        public Vector3Info Position { get; set; }
        [ProtoMember(4)]
        public Vector3Info Rotation { get; set; }
        [ProtoMember(5)]
        public UnitStateInfo State { get; set; }
        [ProtoMember(6)]
        public List<GearInfo> Gears { get; set; } = new List<GearInfo>();
        [ProtoMember(7)]
        public List<KeyValueInt64> Propertys { get; set; } = new List<KeyValueInt64>();
    }
}