/// <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; }
/// <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; }
/// <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; }
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; }