示例#1
0
        private void SaveEraTaskData(int junTuanId, EraTaskData data)
        {
            string sql = string.Format("INSERT INTO `t_juntuan_era_task` (`eraid`,`juntuanid`,`taskid`,`taskv1`,`taskv2`,`taskv3`) VALUES ({0},{1},{2},{3},{4},{5})\r\n                                ON DUPLICATE KEY UPDATE `taskv1`={3}, `taskv2`={4}, `taskv3`={5};", new object[]
            {
                this.RuntimeData.CurrentEraID,
                junTuanId,
                data.TaskID,
                data.TaskVal1,
                data.TaskVal2,
                data.TaskVal3
            });

            this.ExecuteSqlNoQuery(sql);
        }
示例#2
0
        private bool CheckTaskComplete(EraTaskData taskData, EraTaskConfig taskConfig)
        {
            bool taskcomplete = true;

            for (int dataidx = 0; dataidx < taskConfig.CompletionCondition.Count; dataidx++)
            {
                int conditionNum = taskConfig.CompletionCondition[dataidx].Value;
                switch (dataidx)
                {
                case 0:
                    taskcomplete &= (taskData.TaskVal1 >= conditionNum);
                    break;

                case 1:
                    taskcomplete &= (taskData.TaskVal2 >= conditionNum);
                    break;

                case 2:
                    taskcomplete &= (taskData.TaskVal3 >= conditionNum);
                    break;
                }
            }
            return(taskcomplete);
        }
示例#3
0
        public bool EraDonate(int juntuanid, int taskid, int var1, int var2, int var3)
        {
            bool result;

            lock (this.Mutex)
            {
                if (0 == this.RuntimeData.CurrentEraID)
                {
                    result = false;
                }
                else
                {
                    KuaFuData <KFEraData> data = null;
                    if (!this.EraDataDict.TryGetValue(juntuanid, out data))
                    {
                        result = false;
                    }
                    else
                    {
                        EraTaskConfig taskConfig = null;
                        lock (this.RuntimeData.Mutex)
                        {
                            if (!this.RuntimeData.EraTaskConfigDict.TryGetValue(taskid, out taskConfig))
                            {
                                return(false);
                            }
                        }
                        if (taskConfig.EraID != this.RuntimeData.CurrentEraID)
                        {
                            result = false;
                        }
                        else
                        {
                            EraTaskData taskData = data.V.EraTaskList.Find((EraTaskData x) => x.TaskID == taskid);
                            if (null == taskData)
                            {
                                taskData        = new EraTaskData();
                                taskData.TaskID = taskid;
                                data.V.EraTaskList.Add(taskData);
                            }
                            if (this.CheckTaskComplete(taskData, taskConfig))
                            {
                                result = true;
                            }
                            else
                            {
                                for (int dataidx = 0; dataidx < taskConfig.CompletionCondition.Count; dataidx++)
                                {
                                    int conditionNum = taskConfig.CompletionCondition[dataidx].Value;
                                    switch (dataidx)
                                    {
                                    case 0:
                                        taskData.TaskVal1 = Math.Min(taskData.TaskVal1 + var1, conditionNum);
                                        break;

                                    case 1:
                                        taskData.TaskVal2 = Math.Min(taskData.TaskVal2 + var2, conditionNum);
                                        break;

                                    case 2:
                                        taskData.TaskVal3 = Math.Min(taskData.TaskVal3 + var3, conditionNum);
                                        break;
                                    }
                                }
                                if (this.CheckTaskComplete(taskData, taskConfig))
                                {
                                    if (this.HandleAddEraProcess(data, taskConfig))
                                    {
                                        this.SaveEraData(data.V, true);
                                    }
                                }
                                else
                                {
                                    this.SaveEraData(data.V, false);
                                }
                                this.SaveEraTaskData(juntuanid, taskData);
                                TimeUtil.AgeByNow(ref data.Age);
                                result = true;
                            }
                        }
                    }
                }
            }
            return(result);
        }