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); }
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); }
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); }