public void Do_Tasks() { bool NeedDorf1 = false; int[] Remove = new int[] { 0, 0 }; try { foreach (TravianTaskBuild task in TaskBuildBuildList) { if (TaskBusyBool[task.villageId - 1, task.IsResource ? 1 : 0]) { continue; } TravianTaskAdded result = tb.DoBuildUpgrade(task); switch (result.Status) { case "Done": Remove[0] = task.villageId; Remove[1] = TaskBuildBuildList.IndexOf(task); NeedDorf1 = true; break; case "Busy": task.Status = "Busy"; TaskBusyBool[task.villageId - 1, task.IsResource ? 1 : 0] = true; NeedDorf1 = true; continue; case "Doing": task.Status = "Doing"; TravianDoingTaskBuild tdtb = new TravianDoingTaskBuild(TimeSpan.Parse(result.Time), result.level, task.villageId, task.name, task.IsResource, task.href); try { TaskBusyBool[task.villageId - 1, task.IsResource ? 1 : 0] = true; } catch { ErrorConsole.Text += "Error freezing buildspace in vil: " + task.villageId + "Resource: " + task.IsResource; } DoingTaskBuildList.Add(tdtb); //TODO: FIX THIS< SO VILLAGE COMES FROM INDEX OF TASK -> REFRESH HIS RESOURCES VillageList[tdtb.VillageId - 1] = tb.resources(VillageList[tdtb.VillageId - 1]); NeedDorf1 = false; break; case "Need Resources": task.Status = "Need Resources"; TaskBusyBool[task.villageId - 1, task.IsResource ? 1 : 0] = true; NeedDorf1 = true; continue; default: task.Status = "ERROR XD"; break; } } if (Remove[0] != 0) { TaskBuildBuildList.RemoveAt(Remove[1]); } // TODO: JEIGU PASKUTINIS INDEXAS TAI TIK TADA LEIDZIA DORF1 if (NeedDorf1) { tb.dorf1(); } return; } catch (Exception ex) { ErrorConsole.Invoke((MethodInvoker) delegate { ErrorConsole.Invoke((MethodInvoker) delegate { ErrorConsole.Text += "\n\nERROR IN DO TASKS" + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace; }); }); try { ErrorConsole.Invoke((MethodInvoker) delegate { ErrorConsole.Text += "\n\n TRYING LOGIN"; }); tb.LoginTravian(); } catch { ErrorConsole.Invoke((MethodInvoker) delegate { ErrorConsole.Text += "\n\nERROR LOL UR FKED" + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace; }); } return; } }
private void Tasks_Timer_Tick(object sender, EventArgs e) { SysTimeLabel.Text = SysTime.ToString(@"hh\:mm\:ss"); SysTime = SysTime.Add(new TimeSpan(0, 0, 1)); forcerefreshtimer--; BuildingNow.Items.Clear(); int[] Remove = new int[] { 0, 0 }; try { foreach (TravianDoingTaskBuild item in DoingTaskBuildList) { item.TimeLeft = item.TimeLeft.Subtract(new TimeSpan(0, 0, 1)); int compare = TimeSpan.Compare(item.TimeLeft, new TimeSpan(0, 0, -1)); if (compare < 0) { Remove[0] = 1; Remove[1] = DoingTaskBuildList.IndexOf(item); } } if (Remove[0] == 1) { TravianDoingTaskBuild DoneTask = DoingTaskBuildList.ElementAt(Remove[1]); TaskBusyBool[DoneTask.VillageId - 1, DoneTask.IsResource? 1 : 0] = false; var task = TaskBuildBuildList.Find(t => t.href == DoneTask.url); try { task.level++; } catch { } var village = VillageList.Find(vil => vil.Number == DoneTask.VillageId); var item = (village.Buildings.Concat(village.ResourceFields)).SingleOrDefault(x => x.href == DoneTask.url); try { item.level++; } catch { if (DoneTask.IsResource) { tb.Navigate(VillageList[DoneTask.VillageId - 1].Url); VillageList[DoneTask.VillageId - 1].ResourceFields = tb.RefreshResourceAreas(); } else { tb.Navigate(VillageList[DoneTask.VillageId - 1].Url); VillageList[DoneTask.VillageId - 1].ResourceFields = tb.RefreshBuildingAreas(); } } DoingTaskBuildList.RemoveAt(Remove[1]); } } catch (Exception ex) { ErrorConsole.Text += "\n\nERROR IN TASKS_TIMEER_TICK" + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace; } finally { RefreshBuildingNowList(); } try { if (forcerefreshtimer < 0) { forcerefreshtimer = 300; for (int j = 0; j < TaskBusyBool.GetLength(0); j++) { for (int k = 0; k < (TaskBusyBool.GetLength(1) - 1); k++) { TaskBusyBool[j, k] = false; } } } } catch (Exception ex) { ErrorConsole.Text += "\n\nERROR IN TRYING TO FORCE REFRESH: " + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace; } }