public TaskItem()
 {
     State            = ETaskState.Idle;
     TaskId           = 0;
     m_threadHandle   = null;
     m_startTimestamp = DateTime.UtcNow;
 }
            public void Start(long taskID, object taskData, Action <long, object> action)
            {
                State            = ETaskState.Running;
                TaskId           = taskID;
                m_startTimestamp = DateTime.UtcNow;

                m_threadHandle = new Thread(() =>
                {
                    try
                    {
                        System.Diagnostics.Debug.WriteLine("Processing of task {0} started", taskID);
                        action(TaskId, taskData);
                        System.Diagnostics.Debug.WriteLine("Processing of task {0} ended", taskID);
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                    }
                    finally
                    {
                        m_threadHandle = null;
                        State          = ETaskState.Idle;
                    }
                })
                {
                    IsBackground = true
                };
                m_threadHandle.Start();
            }
Пример #3
0
        public void serializeFrom(UnityUtility.CStream stream)
        {
            m_taskTPID        = stream.ReadUInt();
            m_taskName        = stream.ReadString();
            m_taskType        = (EMainTaskType)stream.ReadByte();
            m_taskDescription = stream.ReadString();

            m_startNPC   = stream.ReadUInt();
            m_endNPC     = stream.ReadUInt();
            m_levelLimit = stream.ReadUInt();
            m_NPC.serializeFrom(stream);
            m_stageID      = stream.ReadUInt();
            m_monsterID    = stream.ReadUInt();
            m_dropItemTPID = stream.ReadUInt();
            m_needCount    = stream.ReadUInt();

            m_dialogStart       = stream.ReadString();
            m_dialogAfterAccept = stream.ReadString();
            m_dialogEnd         = stream.ReadString();
            m_dialogNPC         = stream.ReadString();
            m_dialogBeforeFight = stream.ReadString();
            m_dialogAfterBoss   = stream.ReadString();
            m_dialogAfterWin    = stream.ReadString();

            UInt16 count = stream.ReadUShort();

            for (UInt16 i = 0; i < count; ++i)
            {
                CPrizeItem prizeItem = new CPrizeItem();
                prizeItem.SerializeFrom(stream);
                m_listPrizeItems.Add(prizeItem);
            }
            m_curCount = stream.ReadUInt();
            m_state    = (ETaskState)stream.ReadByte();
        }
Пример #4
0
    private void ShowTaskState(ETaskState state)
    {
        switch (state)
        {
        case ETaskState.QUEST_DOING:
            btnGoto.SetActive(true);
            btnReceive.SetActive(false);
            break;

        case ETaskState.QUEST_CANSUBMIT:
            btnGoto.SetActive(false);
            btnReceive.SetActive(true);
            GTItemHelper.ShowImageBlack(btnReceive.GetComponent <UISprite>(), false);
            break;

        case ETaskState.QUEST_HASSUBMIT:
            btnGoto.SetActive(false);
            btnReceive.SetActive(true);
            GTItemHelper.ShowImageBlack(btnReceive.GetComponent <UISprite>(), true);
            break;

        default:
            btnGoto.SetActive(false);
            btnReceive.SetActive(false);
            break;
        }
    }
Пример #5
0
        public void serializeFrom(UnityUtility.CStream stream)
        {
            m_id               = stream.ReadUInt();
            m_name             = stream.ReadString();
            m_desc             = stream.ReadString();
            m_petID            = stream.ReadUInt();
            m_weight           = stream.ReadUInt();
            m_minRoleLevel     = stream.ReadUInt();
            m_maxRoleLevel     = stream.ReadUInt();
            m_type             = (EPetTaskType)stream.ReadByte();
            m_param1           = stream.ReadUInt();
            m_param2           = stream.ReadUInt();
            m_param3           = stream.ReadUInt();
            m_petFriendlyValue = stream.ReadUInt();
            UInt16 count = stream.ReadUShort();

            for (UInt16 i = 0; i < count; ++i)
            {
                CPrizeItem prizeItem = new CPrizeItem();
                prizeItem.SerializeFrom(stream);
                m_listPrizeItems.Add(prizeItem);
            }
            m_taskIndex = stream.ReadUInt();
            m_curCount  = stream.ReadUShort();
            m_state     = (ETaskState)stream.ReadByte();
            m_color     = (EPetTaskColor)stream.ReadByte();
        }
Пример #6
0
        /// <summary>
        /// 发送更新伙伴任务状态消息
        /// </summary>
        /// <param name="petTaskIndex"></param>
        /// <param name="state"></param>
        /// <param name="cb"></param>
        /// <returns></returns>
        public bool SendMsgTaskSystemGC2GMReqUpdatePetTaskState(UInt32 petTaskIndex, ETaskState state, UInt16 curCount, CBMsgTaskSystemGM2GCAckUpdatePetTaskState cb)
        {
            CMsgTaskSystemGC2GMReqUpdatePetTaskState req = new CMsgTaskSystemGC2GMReqUpdatePetTaskState(petTaskIndex, state, curCount);

            CMsgTaskSystemGM2GCAckUpdatePetTaskState.s_cb = cb;
            return(CGameClient.Singleton.SendMsg(req));
        }
Пример #7
0
 public CMsgTaskSystemGC2GMReqUpdatePetTaskState(UInt32 taskIndex, ETaskState state, UInt16 curCount)
     : base(CServerType.SRVTYPE_GAMESERVER, CFuncType.EFUNCTYPE_TASKSYSTEM, CTaskSystemMsgNumID.EMSGNUMID_TASKSYSTEM_GC2GM_REQ_UPDATE_PET_TASK_STATE)
 {
     m_taskIndex = taskIndex;
     m_state     = state;
     m_curCount  = curCount;
 }
Пример #8
0
        private IEnumerator <YieldInstruction> runToCompletion()
        {
            TaskState = ETaskState.Running;

            yield return(CoroutineManager.Instance.StartCoroutine(Task.Run(this)));

            TaskState = ETaskState.Complete;
        }
Пример #9
0
        protected override bool _SerializeFrom(UnityUtility.CStream msgStream)
        {
            m_mainTaskTPID = msgStream.ReadUInt();
            m_curCount     = msgStream.ReadUInt();
            m_state        = (ETaskState)msgStream.ReadByte();

            return(true);
        }
Пример #10
0
        public void PreviousState()
        {
            switch (_state)
            {
            case ETaskState.Todo:
                throw new NotSupportedException("Task is already on todo. Can't go to previous state.");

            case ETaskState.Active:
                _state = ETaskState.Todo;
                break;

            case ETaskState.Done:
                _state = ETaskState.Active;
                break;

            default:
                throw new NotSupportedException("Can't find state.");
            }
        }
Пример #11
0
        public void NextState()
        {
            switch (_state)
            {
            case ETaskState.Todo:
                _state = ETaskState.Active;
                break;

            case ETaskState.Active:
                _state = ETaskState.Done;
                break;

            case ETaskState.Done:
                throw new NotSupportedException("Task is already done. Can't go to next state");

            default:
                throw new NotSupportedException("Can't find state.");
            }
        }
Пример #12
0
        public HTTask(GameObject obj)
        {
            DisposeObj = obj;
            State      = ETaskState.Null;

            Renderer r = obj.GetComponent <Renderer>();

            if (r == null)
            {
                //Debug.Log(obj.name + "结点上没有Renderer组件");
            }
            else
            {
                OriginalShader = new Shader[r.materials.Length];
                for (int i = 0; i < r.materials.Length; i++)
                {
                    OriginalShader[i] = r.materials[i].shader;
                }
            }
        }
Пример #13
0
        /// <summary>
        /// Update tasks specifically.
        /// </summary>
        public virtual void UpdateTask()
        {
            if (Task == null)
            {
                return;
            }

            if (TaskState == ETaskState.None)
            {
                CoroutineManager.Instance.StartCoroutine(runToCompletion());
            }
            else if (TaskState == ETaskState.Complete)
            {
                TaskState = ETaskState.None;
            }

            if (Task.Finished())
            {
                Task = null;
            }
        }
Пример #14
0
        public void serializeFrom(UnityUtility.CStream stream)
        {
            m_TPID                 = stream.ReadUInt();
            m_taskName             = stream.ReadString();
            m_taskType             = (EDailyTaskType)stream.ReadByte();
            m_para1                = stream.ReadUInt();
            m_para2                = stream.ReadUInt();
            m_targetCount          = stream.ReadUShort();
            m_minRequiredRoleLevel = stream.ReadUInt();
            m_maxRequiredRoleLevel = stream.ReadUInt();
            m_icon                 = stream.ReadString();
            m_taskDescription      = stream.ReadString();
            m_jumpID               = stream.ReadUShort();
            UInt16 count = stream.ReadUShort();

            for (UInt16 i = 0; i < count; ++i)
            {
                CPrizeItem prizeItem = new CPrizeItem();
                prizeItem.SerializeFrom(stream);
                m_listPrizeItems.Add(prizeItem);
            }
            m_count = stream.ReadUShort();
            m_state = (ETaskState)stream.ReadByte();
        }
Пример #15
0
 public Task(string description, Person assignedPerson)
 {
     _description    = description;
     _assignedPerson = assignedPerson;
     _state          = ETaskState.Todo;
 }