public void OnInitTask(CSPkg pkg) { SCPKG_CMD_GAMELOGINRSP stGameLoginRsp = pkg.stPkgData.stGameLoginRsp; for (int i = 0; i < stGameLoginRsp.stLoginTaskInfo.dwCurtaskNum; i++) { COMDT_ACNT_CURTASK comdt_acnt_curtask = stGameLoginRsp.stLoginTaskInfo.astCurtask[i]; CTask task = TaskUT.Create_Task(comdt_acnt_curtask.dwBaseID); if (task != null) { task.SetState(comdt_acnt_curtask.bTaskState); TaskUT.Add_Task(task); for (int j = 0; j < comdt_acnt_curtask.bPrerequisiteNum; j++) { int bPosInArray = comdt_acnt_curtask.astPrerequisiteInfo[j].bPosInArray; bool flag = comdt_acnt_curtask.astPrerequisiteInfo[j].bIsReach > 0; if (flag) { task.m_prerequisiteInfo[bPosInArray].m_value = task.m_prerequisiteInfo[bPosInArray].m_valueTarget; } else { task.m_prerequisiteInfo[bPosInArray].m_value = (int)comdt_acnt_curtask.astPrerequisiteInfo[j].dwCnt; } task.m_prerequisiteInfo[bPosInArray].m_isReach = flag; } } } this.UpdateTaskState(); this.model.ParseCltCalcCompletedTasks(ref stGameLoginRsp.stLoginTaskInfo.MainTaskIDs); Singleton <EventRouter> .instance.BroadCastEvent("TaskUpdated"); if (this.m_taskView != null) { this.m_taskView.Refresh(); } }