public void UpdateBuildList(object basePlanetInfo) { Planet currentPlanet = (Planet)((Planet)basePlanetInfo).Clone(); if (formMain.InvokeRequired) { callbackSingle inv = new callbackSingle(this.UpdateBuildList); formMain.Invoke(inv, new object[] { basePlanetInfo }); } else { string toTranslate; Type type = Type.GetType("OGPB.Planet"); FieldInfo field; lstToBuild.Items.Clear(); for (int i = 0; i < currentPlanet.buildList.Length; i++) { toTranslate = currentPlanet.buildList[i].ToString(); if (toTranslate.Contains("#") == true) { lstToBuild.Items.Insert(i, toTranslate.Substring(toTranslate.IndexOf("#") + 1) + " " + translate.GetString(toTranslate.Substring(0, toTranslate.IndexOf("#")))); } else { field = type.GetField(toTranslate.Substring(0, 1).ToLower() + toTranslate.Substring(1)); field.SetValue(currentPlanet, (Convert.ToInt32(field.GetValue(currentPlanet)) + 1)); lstToBuild.Items.Insert(i, translate.GetString(toTranslate) + " " + field.GetValue(currentPlanet)); } } } }
public void RunBot() { string toWorkOn; while (true) { foreach (Planet loopPlanet in planets) { gui.ChangeStatus("Running bot on planet " + currentPlanet.planetName); while (loopPlanet.buildList.Length > 0) { // Calculate the resources! toWorkOn = currentPlanet.buildList[0].ToString(); if (toWorkOn.StartsWith("Resources") == true) { if (DateTime.Now.CompareTo(loopPlanet.timeTillBuilding) >= 0) { lstToBuildTrue.Items.RemoveAt(0); loopPlanet.UpdateBuildList(lstToBuildTrue.Items); if (currentPlanet.planetID == loopPlanet.planetID) { currentPlanet = loopPlanet; gui.UpdateBuildList(currentPlanet); } gui.ChangeStatus("Building " + translate.GetString(toWorkOn)); loopPlanet.BuildResource(toWorkOn); } } Thread.Sleep(15000); } } } }