コード例 #1
0
        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;
                    }
                }
            }
        }
コード例 #2
0
ファイル: Hall.cs プロジェクト: ingex0/smarttank
        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;
            }
        }