Пример #1
0
        /// <summary>
        /// 创建帮会数组
        /// </summary>
        /// <returns>帮会数组</returns>
        private TongGroup[] CreateTongGroup()
        {
            TongGroup[] newTongGroupArray = new TongGroup[16];

            TongGroup tongLeader = new TongGroup();
            tongLeader.InitAsLeader();
            newTongGroupArray[0] = tongLeader;

            for (int i = 1; i < newTongGroupArray.Length; i++)
            {
                newTongGroupArray[i] = new TongGroup();
            }

            return newTongGroupArray;
        }
Пример #2
0
        /// <summary>
        /// 获取帮会模板数据
        /// </summary>
        /// <param name="byteList">数据字节链表</param>
        /// <returns>帮会模板数据</returns>
        private TongTemplate GetTongTemplate(List<byte> byteList)
        {
            int masterGroup = 0;
            int defaultGroup = 0;            
            TongGroup[] tArray = new TongGroup[16];

            byte[] buffer;
            int currentIndex = 0;

            // 读取领队索引
            buffer = new byte[4];
            for (int i = 0; i < 4; i++)
            {
                buffer[i] = byteList[currentIndex + i];
            }
            masterGroup = BitConverter.ToInt32(buffer, 0);
            currentIndex += 4;

            // 读取默认成员索引            
            buffer = new byte[4];
            for (int i = 0; i < 4; i++)
            {
                buffer[i] = byteList[currentIndex + i];
            }
            defaultGroup = BitConverter.ToInt32(buffer, 0);
            currentIndex += 4;

            // 读取分组
            for (int i = 0; i < 16; i++)
            {
                TongGroup tongGroup = new TongGroup();

                // 读取分组名
                List<byte> tempByteList = new List<byte>();
                for (int j = 0; j < 32; j++)
                {
                    byte b = byteList[currentIndex + j];
                    char c = Convert.ToChar(b);

                    if (c == '\0')
                    {
                        break;
                    }
                    else
                    {
                        tempByteList.Add(b);
                    }
                }

                string groupName = Encoding.GetEncoding("gb2312").GetString(tempByteList.ToArray());
                tongGroup.GroupName = groupName;
                currentIndex += 32;

                // 读取是否开启
                bool enable = Convert.ToBoolean(byteList[currentIndex]);
                tongGroup.Enable = enable;
                currentIndex += 1;

                // 读取工资额度
                if (fileVersion < 3)
                {
                    buffer = new byte[4];
                    for (int j = 0; j < 4; j++)
                    {
                        buffer[j] = byteList[currentIndex + j];
                    }
                    int wage = BitConverter.ToInt32(buffer, 0);
                    // tongGroup.Wage = wage;
                    currentIndex += 4;
                }
                
                // 读取基本操作权限
                byte bMask = byteList[currentIndex];
                currentIndex += 1;
                bool[] boolArray = ConvertByteToBooleanArray(bMask);
                
                for (int j = 0; j < 8; j++)
                {
                    tongGroup.BaseOperationMask[j] = boolArray[j];
                }                

                // 读取高级操作权限
                for (int j = 0; j < 16; j++)
                {
                    bMask = byteList[currentIndex];
                    currentIndex += 1;
                    boolArray = ConvertByteToBooleanArray(bMask);

                    for (int k = 0; k < 8; k++)
                    {
                        tongGroup.AdvanceOperationMask[j, k] = boolArray[k];
                    }                                       
                }

                // 读取基本授权
                for (int j = 0; j < 16; j++)
                {
                    bMask = byteList[currentIndex];
                    currentIndex += 1;
                    boolArray = ConvertByteToBooleanArray(bMask);

                    for (int k = 0; k < 8; k++)
                    {
                        tongGroup.BaseGrantmask[j, k] = boolArray[k];
                    }
                }

                // 读取高级授权
                for (int j = 0; j < 16; j++)
                {
                    for (int k = 0; k < 16; k++)
                    {
                        bMask = byteList[currentIndex];
                        currentIndex += 1;
                        boolArray = ConvertByteToBooleanArray(bMask);

                        for (int l = 0; l < 8; l++)
                        {
                            tongGroup.AdvanceGrantMask[j, k, l] = boolArray[l];
                        }
                    }                                           
                }

                tArray[i] = tongGroup;
            }

            TongTemplate tongTemplate = new TongTemplate(masterGroup, defaultGroup, tArray);
            return tongTemplate;
        }
Пример #3
0
        /// <summary>
        /// 获取帮会数组数据字节链表
        /// </summary>
        /// <param name="tongGroupArray">帮会数组</param>
        /// <return>帮会数组数据字节链表</return>
        private List<byte> GetTongGroupByteList(TongGroup[] tongGroupArray)
        {
            List<byte> byteList = new List<byte>();
            byte[] buffer;            

            // 转换分组
            foreach (TongGroup tongGroup in tongGroupArray)
            {
                // 分组名需要补充满32字节
                string groupName = tongGroup.GroupName;
                buffer = Encoding.GetEncoding("gb2312").GetBytes(groupName);                
                
                byte[] groupNameBuffer = new byte[32];
                for (int i = 0; i < buffer.Length; i++)
                {
                    groupNameBuffer[i] = buffer[i];
                }
                byteList.AddRange(groupNameBuffer);

                // 转换是否开启
                buffer = BitConverter.GetBytes(tongGroup.Enable);
                byteList.AddRange(buffer);

                // 转换基本操作权限
                string tempString = ConvertBooleanArrayToString(tongGroup.BaseOperationMask);
                byte tempByte = byte.Parse(tempString);
                byteList.Add(tempByte);

                // 转换高级操作权限
                bool[] tempArray = new bool[8];
                for (int i = 0; i < 16; i++)
                {
                    for (int j = 0; j < 8; j++)
                    {
                        tempArray[j] = tongGroup.AdvanceOperationMask[i, j];
                    }

                    tempString = ConvertBooleanArrayToString(tempArray);
                    tempByte = byte.Parse(tempString);
                    byteList.Add(tempByte);
                }

                // 转换基本授权
                for (int i = 0; i < 16; i++)
                {
                    for (int j = 0; j < 8; j++)
                    {
                        tempArray[j] = tongGroup.BaseGrantmask[i, j];
                    }

                    tempString = ConvertBooleanArrayToString(tempArray);
                    tempByte = byte.Parse(tempString);
                    byteList.Add(tempByte);
                }

                // 转换高级授权
                for (int i = 0; i < 16; i++)
                {
                    for (int j = 0; j < 16; j++)
                    {
                        for (int k = 0; k < 8; k++)
                        {
                            tempArray[k] = tongGroup.AdvanceGrantMask[i, j, k];
                        }

                        tempString = ConvertBooleanArrayToString(tempArray);
                        tempByte = byte.Parse(tempString);
                        byteList.Add(tempByte);
                    }
                }
            }

            return byteList;
        }        
Пример #4
0
            private TongGroup[] tongGroupArray = new TongGroup[16]; // 成员数据

            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="masterGroup">领队编号</param>
            /// <param name="defaultGroup">默认成员编号</param>
            /// <param name="tongGroupArray">成员数据</param>
            public TongTemplate(int masterGroup, int defaultGroup, TongGroup[] tongGroupArray)
            {
                this.masterGroup = masterGroup;
                this.defaultGroup = defaultGroup;
                this.tongGroupArray = tongGroupArray;
            }