using GameMessage;
using MessagePack;
#if GameClient
using GameFramework;
#endif

namespace GameMessage
{
    [Message(MessageCode.BugReportRequest)]
    [MessagePackObject()]
    public class BugReportRequest : MessageData
    {
        /// <summary>
        /// 联系方式
        /// </summary>
        [Key(0)] public string Phone;

        /// <summary>
        /// bug描述
        /// </summary>
        [Key(1)] public string Description;

        /// <summary>
        /// 当前游戏的状态
        /// </summary>
        [Key(2)] public string GameState;

        /// <summary>
        /// 当前所在的游戏名称
        /// </summary>
        [Key(3)] public string GameName;

        /// <summary>
        /// 当前所在的游戏页面
        /// </summary>
        [Key(4)] public string GamePage;

        /// <summary>
        /// App版本
        /// </summary>
        [Key(5)] public string AppVer;

        /// <summary>
        /// 版本描述
        /// </summary>
        [Key(6)] public string VerCode;

        /// <summary>
        /// 资源版本
        /// </summary>
        [Key(7)] public string ResVer;

        /// <summary>
        /// 平台名称
        /// </summary>
        [Key(8)] public string PlatName;

        /// <summary>
        /// 设备系统
        /// </summary>
        [Key(9)] public string DeviceSystem;

        /// <summary>
        /// 是否是测试模式
        /// </summary>
        [Key(10)] public bool IsTestModel;

        /// <summary>
        /// 商店类型
        /// </summary>
        [Key(11)] public string StoreType;

#if GameClient
        public static BugReportRequest Create()
        {
            return ReferencePool.Acquire<BugReportRequest>();
        }

        public override void Clear()
        {
            Phone = null;
            Description = null;
            GameState = null;
            GameName = null;
            GamePage = null;
            AppVer = null;
            VerCode = null;
            ResVer = null;
            PlatName = null;
            DeviceSystem = null;
            IsTestModel = false;
            StoreType = null;
        }
#endif
    }

    [Message(MessageCode.BugReportResponse)]
    [MessagePackObject()]
    public class BugReportResponse : MessageData
    {
        /// <summary>
        /// 结果类型
        /// </summary>
        [Key(0)] public int ResultCode;

        /// <summary>
        /// 日志提交的地址
        /// </summary>
        [Key(1)] public string ReportUrl;

        /// <summary>
        /// 提交的日志长度
        /// </summary>
        [Key(2)] public int LogLength;
    }
}