public void Display(Task[] tasks) { var currentTaskId = (string)_lstTasks.CurrentItem?.Attachment; Display_items(); Set_current_item(); void Display_items() { _lstTasks.Clear(); foreach (var t in tasks) { var item = _lstTasks.Add(Format_task_info(t)); Embelish_item(item, t); } } void Set_current_item() { if (_lstTasks.Items.Length == 0) { return; } if (currentTaskId == null) { _lstTasks.CurrentItemIndex = 0; } else { var taskEntry = Locate_task_entry(currentTaskId); if (taskEntry.item == null) { _lstTasks.CurrentItemIndex = 0; } else { _lstTasks.CurrentItemIndex = taskEntry.index; } } } }
void OnReceivePack(stPkgHead head, byte[] data) { if (head.iSytle == 40) { head.iSytle = 40; } if (head.iSytle == 33) { //刷房间列表成功 string str; RoomInfo room; byte[] tmpData; roomList.Clear(); tmpData = new byte[head.dataSize]; for (int i = 0; i < head.dataSize; i += 36) { str = ""; //data.Read(roomBuffer, 0, 32); for (int k = 0; k < 36; ++k) { tmpData[k] = data[i + k]; } room = (RoomInfo)SocketMgr.BytesToStuct(tmpData, typeof(RoomInfo)); for (int j = 0; room.name[j] != '\0'; ++j) { str += room.name[j]; } roomList.AddItem(" " + str + " ( " + room.players + " / 2 )", room.id); } } else if (head.iSytle == 35) { //创建房间成功 bWaitEnter = false; headSend = new stPkgHead(); Stream = new MemoryStream(); headSend.dataSize = 0; headSend.iSytle = 33; SocketMgr.SendCommonPackge(headSend, Stream); Stream.Close(); bInRoom = true; headSend = new stPkgHead(); Stream = new MemoryStream(); headSend.dataSize = 0; headSend.iSytle = 34; SocketMgr.SendCommonPackge(headSend, Stream); Stream.Close(); } else if (head.iSytle == 36) { //创建房间失败 bWaitEnter = false; bInRoom = false; bIsHost = false; } else if (head.iSytle == 37) { //加入房间成功 bWaitEnter = false; headSend = new stPkgHead(); Stream = new MemoryStream(); headSend.dataSize = 0; headSend.iSytle = 33; SocketMgr.SendCommonPackge(headSend, Stream); Stream.Close(); bInRoom = true; headSend = new stPkgHead(); Stream = new MemoryStream(); headSend.dataSize = 0; headSend.iSytle = 34; SocketMgr.SendCommonPackge(headSend, Stream); Stream.Close(); } else if (head.iSytle == 38) { //加入房间失败 bWaitEnter = false; bInRoom = false; bIsHost = false; } else if (head.iSytle == 34) { //列举用户信息 string str; UserInfo player; byte[] tmpData; Monitor.Enter(heads); Monitor.Enter(ranks); Monitor.Enter(scores); heads.Clear(); ranks.Clear(); scores.Clear(); tmpData = new byte[head.dataSize]; bIsHost = false; string[] tmpNames = new string[6]; int playerNum = 0; for (int i = 0; i < head.dataSize; i += 56) { str = ""; //data.Read(roomBuffer, 0, 32); for (int k = 0; k < 56; ++k) { tmpData[k] = data[i + k]; } player = (UserInfo)SocketMgr.BytesToStuct(tmpData, typeof(UserInfo)); for (int j = 0; player.name[j] != '\0'; ++j) { str += player.name[j]; } if (str == myName && player.state == 1) { bIsHost = true; } tmpNames[playerNum] = str;//, Font font) ranks.Add(player.rank); scores.Add(player.score); Texture2D tex; if (devHeads.Contains(str)) { tex = BaseGame.ContentMgr.Load <Texture2D>(Path.Combine(Directories.UIContent, str)); } else { tex = BaseGame.ContentMgr.Load <Texture2D>(Path.Combine(Directories.UIContent, "head")); } if (tex == null) { throw new Exception(""); } heads.Add(tex); playerNum++; //roomList.AddItem("room 1" + " ( " + room.players + " / 6 )", room.id); } playerCount = playerNum; userNames = new string[playerNum]; for (int i = 0; i < playerNum; i++) { userNames[i] = tmpNames[i]; } Monitor.Exit(scores); Monitor.Exit(ranks); Monitor.Exit(heads); headSend = new stPkgHead(); Stream = new MemoryStream(); headSend.dataSize = 0; headSend.iSytle = 33; SocketMgr.SendCommonPackge(headSend, Stream); Stream.Close(); } else if (head.iSytle == 70) { //开始游戏 bWaitEnter = false; if (bIsHost) { GameManager.AddGameScreen(new StarwarLogic(0, userNames)); } else { for (int i = 0; i < playerCount; i++) { if (userNames[i] == myName) { GameManager.AddGameScreen(new StarwarLogic(i, userNames)); } } } } else if (head.iSytle == 71) { bWaitEnter = false; } }