예제 #1
0
        internal void _OnChildClosed(GameTask et)
        {
            int  num  = 0;
            int  num2 = 0;
            int  num3 = -1;
            bool flag = false;

            for (int i = 0; i < this._taskList.get_Count(); i++)
            {
                GameTaskGroup.TaskNode taskNode = this._taskList.get_Item(i);
                if (taskNode.task.Closed)
                {
                    num2++;
                    if (taskNode.task.Achieving == taskNode.achieve)
                    {
                        num++;
                    }
                }
                if (taskNode.task == et)
                {
                    num3 = i;
                    flag = (et.Achieving == taskNode.achieve);
                }
            }
            if (num3 != -1)
            {
                base.Current = num;
                if (!base.Closed)
                {
                    if (num2 >= this._taskList.get_Count() || (et.Closed && ((flag && this.CloseType == 1) || (!flag && this.CloseType == null))))
                    {
                        base.Close();
                    }
                    else if (this.StartType == null && ++num3 < this._taskList.get_Count())
                    {
                        this._taskList.get_Item(num3).task.Start();
                    }
                }
            }
        }
예제 #2
0
        internal void _OnChildClosed(GameTask et)
        {
            int  num  = 0;
            int  num2 = 0;
            int  num3 = -1;
            bool flag = false;

            for (int i = 0; i < this._taskList.Count; i++)
            {
                GameTaskGroup.TaskNode taskNode = this._taskList[i];
                if (taskNode.task.Closed)
                {
                    num2++;
                    if (taskNode.task.Achieving == taskNode.achieve)
                    {
                        num++;
                    }
                }
                if (taskNode.task == et)
                {
                    num3 = i;
                    flag = (et.Achieving == taskNode.achieve);
                }
            }
            if (num3 != -1)
            {
                base.Current = num;
                if (!base.Closed)
                {
                    if (num2 >= this._taskList.Count || (et.Closed && ((flag && this.CloseType == RES_GAME_TASK_GROUP_CLOSE_TYPE.ACHIEVE_ONE) || (!flag && this.CloseType == RES_GAME_TASK_GROUP_CLOSE_TYPE.ACHIEVE_ALL))))
                    {
                        base.Close();
                    }
                    else if (this.StartType == RES_GAME_TASK_GROUP_START_TYPE.ONEBYONE && ++num3 < this._taskList.Count)
                    {
                        this._taskList[num3].task.Start();
                    }
                }
            }
        }
예제 #3
0
        protected override void OnInitial()
        {
            ListView <ResGameTaskGroup> groupData = base.RootSys.GetGroupData(base.ID);

            DebugHelper.Assert(null != groupData, "GameTaskGroup.groupData must not be null!");
            this._taskList = new ListView <GameTaskGroup.TaskNode>();
            if (groupData != null)
            {
                for (int i = 0; i < groupData.get_Count(); i++)
                {
                    ResGameTaskGroup       resGameTaskGroup = groupData.get_Item(i);
                    GameTaskGroup.TaskNode taskNode         = default(GameTaskGroup.TaskNode);
                    taskNode.task    = base.RootSys.GetTask(resGameTaskGroup.dwChildTask, true);
                    taskNode.achieve = (resGameTaskGroup.bIsAchieve == 0);
                    this._taskList.Add(taskNode);
                    if (taskNode.task != null)
                    {
                        taskNode.task._AddOwnerGroup(this);
                    }
                }
            }
            DebugHelper.Assert(this._taskList.get_Count() > 0, "GameTaskGroup.taskList.Count must > 0!");
        }