WARNING_OBJ_INTERFACE.cs 5.52 KB
Newer Older
潘栩锋's avatar
潘栩锋 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FObjBase;
using FLY.Thick.Base.Common;

namespace FLY.Thick.Base.OBJ_INTERFACE
{
    public class WARNING_OBJ_INTERFACE
    {
        public const UInt32 ID = OBJ_INTERFACE_ID.WARNING_ID;
        #region Pack
        public class Pack_Params : IPack
        {
            public int outIdxOfWarning;
            public int duration;
            public bool enable;
            public bool enSave;
            public int[] whitelist;
            public int[] blacklist;

            /// <summary>
            /// 转换为8个bytes
            /// </summary>
            /// <returns></returns>
            public byte[] ToBytes()
            {
                List<byte> buf = new List<byte>();

                buf.AddRange(BitConverter.GetBytes(outIdxOfWarning));
                buf.AddRange(BitConverter.GetBytes(duration));
                buf.AddRange(BitConverter.GetBytes(enable));
                buf.AddRange(BitConverter.GetBytes(enSave));
                buf.AddRange(BitConverter.GetBytes(whitelist.Count()));
                for (int i = 0; i < whitelist.Count(); i++)
                {
                    buf.AddRange(BitConverter.GetBytes(whitelist[i]));
                }
                buf.AddRange(BitConverter.GetBytes(whitelist.Count()));
                for (int i = 0; i < blacklist.Count(); i++)
                {
                    buf.AddRange(BitConverter.GetBytes(blacklist[i]));
                }
                
                return buf.ToArray();
            }
            /// <summary>
            /// 由8个bytes 转换为 CustomBolt
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public bool TryParse(byte[] value)
            {
                if (value.Length < (4 + 4 + 1 + 1 + 4 + 4))
                    return false;
                int idx = 0;
                outIdxOfWarning = BitConverter.ToInt32(value, idx);
                idx += 4;
                duration = BitConverter.ToInt32(value, idx);
                idx += 4;
                enable = BitConverter.ToBoolean(value, idx);
                idx++;
                enSave = BitConverter.ToBoolean(value, idx);
                idx++;
                int len;
                len = BitConverter.ToInt32(value, idx);
                idx += 4;
                if (value.Length < (4 + 4 + 1 + 1 + 4 + 4+len))
                    return false;
                whitelist = new int[len];
                for (int i = 0; i < len; i++)
                {
                    whitelist[i] = BitConverter.ToInt32(value, idx);
                    idx += 4;
                }

                int len2;
                len2 = BitConverter.ToInt32(value, idx);
                idx += 4;
                if (value.Length < (4 + 4 + 1 + 1 + 4 + 4 + len+len2))
                    return false;
                blacklist = new int[len2];
                for (int i = 0; i < len2; i++)
                {
                    blacklist[i] = BitConverter.ToInt32(value, idx);
                    idx += 4;
                }

                return true;
            }
        }
        public class Pack_ReasonList : IPack
        {
            public FlyData_WarningHistory[] list;

            #region IPack 成员

            public byte[] ToBytes()
            {
                List<byte> buf = new List<byte>();

                buf.AddRange(BitConverter.GetBytes(list.Count()));
                for (int i = 0; i < list.Count(); i++)
                {
                    buf.AddRange(list[i].ToBytes());
                }
                return buf.ToArray();
            }

            public bool TryParse(byte[] value)
            {
                int cnt = 4;
                if (value.Length < cnt)
                    return false;

                int idx = 0;
                int len = BitConverter.ToInt32(value, idx);
                idx += 4;
                cnt += len * 14;
                if (value.Length < cnt)
                    return false;

                list = new FlyData_WarningHistory[len];
                for (int i = 0; i < len; i++)
                {
                    int c;
                    list[i] = new FlyData_WarningHistory();
                    if (!list[i].TryParse(value, idx, out c))
                        return false;
                    idx += c;
                }
                return true;
            }
            #endregion

        }

        #endregion

        #region GetValue
        /// <summary>
        /// Pack_Params
        /// </summary>
        public const UInt16 GET_PARAMS = 0;
        /// <summary>
        /// Pack_ReasonList
        /// </summary>
        public const UInt16 GET_REASONLIST = 1;
        /// <summary>
        /// FlyData_WarningHistory
        /// </summary>
        public const UInt16 GET_CURR = 2;
        #endregion
        #region SetValue
        /// <summary>
        /// Pack_Params
        /// </summary>
        public const UInt16 SET_PARAMS = 0;
        #endregion
        #region PushMsg
        /// <summary>
        /// Pack_Params
        /// </summary>
        public const UInt16 PUSH_PARAMS = 0;
        public const UInt16 PUSH_REASONLIST = 1;
        public const UInt16 PUSH_CURR = 2;
        #endregion
        #region CallFunction
        public const UInt16 CALL_RESET = 0;
        /// <summary>
        /// FlyData_WarningHistory
        /// </summary>
        public const UInt16 CALL_ADD = 1;

        public const UInt16 CALL_QUIET= 2;
        #endregion
    }

}