Exemplo n.º 1
0
 private void HandleEraTaskAccident()
 {
     if (this.EraDataDict.Count > 0)
     {
         this.RuntimeData.CurFastEraStage        = 1;
         this.RuntimeData.CurFastEraStateProcess = 0;
         foreach (KuaFuData <KFEraData> item_era in this.EraDataDict.Values)
         {
             int calProcess = 0;
             foreach (EraTaskData item_task in item_era.V.EraTaskList)
             {
                 EraTaskConfig taskConfig = null;
                 lock (this.RuntimeData.Mutex)
                 {
                     if (!this.RuntimeData.EraTaskConfigDict.TryGetValue(item_task.TaskID, out taskConfig))
                     {
                         continue;
                     }
                 }
                 if (taskConfig.EraStage == (int)item_era.V.EraStage)
                 {
                     if (this.CheckTaskComplete(item_task, taskConfig))
                     {
                         calProcess += taskConfig.Reward;
                     }
                 }
             }
             if (calProcess != item_era.V.EraStageProcess || item_era.V.EraStageProcess > 100)
             {
                 LogManager.WriteLog(LogTypes.Analysis, string.Format("HandleEraTaskAccident JunTuanId:{0} Stage:{1} BeforeProcess:{2} AfterProcess:{3}", new object[]
                 {
                     item_era.V.JunTuanID,
                     item_era.V.EraStage,
                     item_era.V.EraStageProcess,
                     calProcess
                 }), null, true);
                 item_era.V.EraStageProcess = Math.Min(calProcess, 100);
                 this.SaveEraData(item_era.V, false);
             }
             this.HandleFastEraStage(item_era.V);
         }
     }
 }
Exemplo n.º 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);
        }
Exemplo n.º 3
0
 public void InitConfig()
 {
     try
     {
         lock (this.RuntimeData.Mutex)
         {
             string fileName         = "Config/EraUI.xml";
             string fullPathFileName = KuaFuServerManager.GetResourcePath(fileName, KuaFuServerManager.ResourcePathTypes.GameRes);
             this.RuntimeData.EraUIConfigDict.Load(fullPathFileName, null);
             fileName         = "Config/EraTask.xml";
             fullPathFileName = KuaFuServerManager.GetResourcePath(fileName, KuaFuServerManager.ResourcePathTypes.GameRes);
             this.RuntimeData.EraTaskConfigDict.Clear();
             XElement xml = ConfigHelper.Load(fullPathFileName);
             IEnumerable <XElement> xmlItems = xml.Elements();
             foreach (XElement xmlItem in xmlItems)
             {
                 EraTaskConfig data = new EraTaskConfig();
                 data.ID       = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "ID", 0L);
                 data.EraID    = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "EraID", 0L);
                 data.EraStage = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "EraStage", 0L);
                 data.Reward   = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "Reward", 0L);
                 string   tempValue  = ConfigHelper.GetElementAttributeValue(xmlItem, "CompletionCondition", "");
                 string[] tempFields = tempValue.Split(new char[]
                 {
                     '|'
                 });
                 foreach (string item in tempFields)
                 {
                     string[] strkvp = item.Split(new char[]
                     {
                         ','
                     });
                     if (strkvp.Length == 2)
                     {
                         int goodsid = Convert.ToInt32(strkvp[0]);
                         int num     = Convert.ToInt32(strkvp[1]);
                         data.CompletionCondition.Add(new KeyValuePair <int, int>(goodsid, num));
                     }
                 }
                 this.RuntimeData.EraTaskConfigDict[data.ID] = data;
             }
             fileName         = "Config/EraReward.xml";
             fullPathFileName = KuaFuServerManager.GetResourcePath(fileName, KuaFuServerManager.ResourcePathTypes.GameRes);
             this.RuntimeData.EraAwardConfigDict.Clear();
             xml      = ConfigHelper.Load(fullPathFileName);
             xmlItems = xml.Elements();
             foreach (XElement xmlItem in xmlItems)
             {
                 EraAwardConfigBase data2 = new EraAwardConfigBase();
                 data2.ID        = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "ID", 0L);
                 data2.EraID     = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "EraID", 0L);
                 data2.AwardType = (int)ConfigHelper.GetElementAttributeValueLong(xmlItem, "Type", 0L);
                 string StartTime = ConfigHelper.GetElementAttributeValue(xmlItem, "StartTime", "");
                 if (!string.IsNullOrEmpty(StartTime))
                 {
                     DateTime.TryParse(StartTime, out data2.StartTime);
                 }
                 string EndTime = ConfigHelper.GetElementAttributeValue(xmlItem, "EndTime", "");
                 if (!string.IsNullOrEmpty(EndTime))
                 {
                     DateTime.TryParse(EndTime, out data2.EndTime);
                 }
                 this.RuntimeData.EraAwardConfigDict[data2.ID] = data2;
             }
         }
     }
     catch (Exception ex)
     {
         LogManager.WriteExceptionUseCache(ex.ToString());
     }
 }
Exemplo n.º 4
0
        private bool HandleAddEraProcess(KuaFuData <KFEraData> data, EraTaskConfig taskConfig)
        {
            bool result;

            if (taskConfig.EraStage != (int)data.V.EraStage)
            {
                result = false;
            }
            else
            {
                int oldEraStageProcess = data.V.EraStageProcess;
                int oldEraStage        = (int)data.V.EraStage;
                data.V.EraStageProcess = Math.Min(data.V.EraStageProcess + taskConfig.Reward, 100);
                if (data.V.EraStageProcess == 100 && data.V.EraStage < 4)
                {
                    data.V.EraStage        = (byte)Math.Min((int)(data.V.EraStage + 1), 4);
                    data.V.EraStageProcess = 0;
                    AsyncDataItem evItem = new AsyncDataItem(KuaFuEventTypes.JunTuanEraStage, new object[]
                    {
                        data.V.JunTuanID
                    });
                    ClientAgentManager.Instance().BroadCastAsyncEvent(GameTypes.JunTuan, evItem, 0);
                    data.V.EraTimePointList.Add(TimeUtil.NowDateTime());
                }
                if (data.V.EraStageProcess == oldEraStageProcess && (int)data.V.EraStage == oldEraStage)
                {
                    result = false;
                }
                else
                {
                    if (data.V.EraStageProcess == 100 && data.V.EraStage == 4)
                    {
                        data.V.EraTimePointList.Add(TimeUtil.NowDateTime());
                    }
                    this.HandleFastEraStage(data.V);
                    bool          needSort = false;
                    KFEraRankData rankData = this.EraRankList.V.Find((KFEraRankData x) => x.JunTuanID == data.V.JunTuanID);
                    if (null != rankData)
                    {
                        needSort                 = true;
                        rankData.JunTuanID       = data.V.JunTuanID;
                        rankData.EraStage        = data.V.EraStage;
                        rankData.EraStageProcess = data.V.EraStageProcess;
                        rankData.RankTime        = TimeUtil.NowDateTime();
                    }
                    else if (this.EraRankList.V.Count < 5)
                    {
                        needSort                 = true;
                        rankData                 = new KFEraRankData();
                        rankData.JunTuanID       = data.V.JunTuanID;
                        rankData.EraStage        = data.V.EraStage;
                        rankData.EraStageProcess = data.V.EraStageProcess;
                        rankData.RankTime        = TimeUtil.NowDateTime();
                        this.EraRankList.V.Add(rankData);
                    }
                    else
                    {
                        KFEraRankData minRankData = this.EraRankList.V[this.EraRankList.V.Count - 1];
                        if (data.V.EraStage > minRankData.EraStage || (data.V.EraStage == minRankData.EraStage && data.V.EraStageProcess > minRankData.EraStageProcess))
                        {
                            needSort = true;
                            minRankData.JunTuanID       = data.V.JunTuanID;
                            minRankData.EraStage        = data.V.EraStage;
                            minRankData.EraStageProcess = data.V.EraStageProcess;
                            minRankData.RankTime        = TimeUtil.NowDateTime();
                        }
                    }
                    if (needSort)
                    {
                        this.EraRankList.V.Sort(delegate(KFEraRankData left, KFEraRankData right)
                        {
                            int result2;
                            if (left.EraStage > right.EraStage)
                            {
                                result2 = -1;
                            }
                            else if (left.EraStage < right.EraStage)
                            {
                                result2 = 1;
                            }
                            else if (left.EraStageProcess > right.EraStageProcess)
                            {
                                result2 = -1;
                            }
                            else if (left.EraStageProcess < right.EraStageProcess)
                            {
                                result2 = 1;
                            }
                            else if (left.RankTime < right.RankTime)
                            {
                                result2 = -1;
                            }
                            else if (left.RankTime > right.RankTime)
                            {
                                result2 = 1;
                            }
                            else
                            {
                                result2 = 0;
                            }
                            return(result2);
                        });
                        for (int loop = 0; loop < this.EraRankList.V.Count; loop++)
                        {
                            this.EraRankList.V[loop].RankValue = loop + 1;
                        }
                        TimeUtil.AgeByNow(ref this.EraRankList.Age);
                    }
                    result = true;
                }
            }
            return(result);
        }
Exemplo n.º 5
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);
        }