using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FLY.Thick.Base.Common;

namespace FLY.Thick.Base.OBJ_INTERFACE
{
    public class PASSWORD_OBJ_INTERFACE
    {
        public const UInt32 ID = OBJ_INTERFACE_ID.PASSWORD_ID;
        #region Pack
        public class Pack_List 
        {
            public List<PasswordCell> 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 count = 4;
                if (value.Length < count)
                    return false;
                int idx = 0;
                int len = BitConverter.ToInt32(value, idx);
                idx += 4;
                if (list == null)
                    list = new List<PasswordCell>();
                else
                    list.Clear();

                for (int i = 0; i < len; i++) 
                {
                    int cnt;
                    PasswordCell p = new PasswordCell();
                    if (!p.TryParse(value, idx, out cnt))
                        return false;
                    list.Add(p);
                    count += cnt;
                    idx += cnt;
                }
                return true;
            }

            #endregion
        }
        #endregion

        #region GetValue
        public const UInt16 GET_PWLIST = 1;
        #endregion
        #region SetValue
        public const UInt16 SET_PWLIST = 1;
        #endregion
        #region PushMsg
        public const UInt16 PUSH_PWLIST = 1;
        #endregion
    }
}