/// <summary> /// Versucht ein Gebäude auf dem aktuell-angewählten Planeten auszubauen /// </summary> /// <param name="building">gebäude id</param> public void UpgradeBuilding(SupplyBuildings building) { Logger.Log(LoggingCategories.NavigationAction, "UpgradeBuilding(" + building.ToString() + ")"); //Falls Token nicht gefunden wird zur entsprechenden Seite navigieren if (this._lastResult.ResponseUrl.ToString() != _stringManager.GetIndexPageUrl(IndexPages.Resources)) { Logger.Log(LoggingCategories.NavigationAction, "UpgradeBuilding: Wir sind noch nicht auf der Bau-Seite"); NagivateToIndexPage(IndexPages.Resources); } else { Logger.Log(LoggingCategories.NavigationAction, "UpgradeBuilding: Wir sind bereits auf der Bau-Seite"); } HttpResult tmp = NavigateBuildingAjax(1, building); HtmlAgilityPack.HtmlDocument tmpDoc = new HtmlAgilityPack.HtmlDocument(); tmpDoc.LoadHtml(tmp.ResponseContent); int neededMetal = GetMetalFromAjax(tmp.ResponseContent); int neededCrystal = GetCrystalFromAjax(tmp.ResponseContent); int neededDeuterium = GetDeuteriumFromAjax(tmp.ResponseContent); int currentLevel = GetBuildingLevelFromAjax(tmpDoc); //abgleichen mit aktuellen ressies if (this.Metal < neededMetal) { throw new NotEnoughMetalException("Nicht genug Metall zum bau von " + building.ToString()); } else if (this.Crystal < neededCrystal) { Mathemathics.CalcMaxTimeForRes(this.Metal, this.Crystal, this.Deuterium, neededMetal, neededCrystal, neededDeuterium, MetalPerHour, CrystalPerHour, DeuteriumPerHour); throw new NotEnoughCrystalException("Nicht genug Kristall zum bau von " + building.ToString()); } else if (this.Deuterium < neededDeuterium) { throw new NotEnoughDeuteriumException("Nicht genug Deuterium zum bau von " + building.ToString()); } HttpHandler.Post(_stringManager.GetIndexPageUrl(IndexPages.Resources), _stringManager.GetUpgradeBuildingSubmitParameter(this.Token, building)); }
/// <summary> /// Öffnet den Ajax Javascript kram vom Gebäude-Baucenter /// </summary> /// <param name="ajaxIndex">immer 1 setzen vorerst (nochnicht herrausgefunden, was der parameter bringt)</param> /// <param name="ajaxParam">gebäude id</param> /// <returns>Http Ergebnis</returns> HttpResult NavigateBuildingAjax(int ajaxIndex, SupplyBuildings ajaxParam) { Logger.Log (LoggingCategories.NavigationAction, "NavigateBuildingAjax(" + ajaxIndex.ToString () + ", " + ajaxParam.ToString () + ")"); return this._httpHandler.Post (_stringManager.GetAjaxUrl (_stringManager.IndexPageNames [IndexPages.Resources], ajaxIndex), _stringManager.GetAjaxParameter (ajaxParam)); }
/// <summary> /// Versucht ein Gebäude auf dem aktuell-angewählten Planeten auszubauen /// </summary> /// <param name="building">gebäude id</param> public void UpgradeBuilding(SupplyBuildings building) { Logger.Log (LoggingCategories.NavigationAction, "UpgradeBuilding(" + building.ToString () + ")"); //Falls Token nicht gefunden wird zur entsprechenden Seite navigieren if (this._lastResult.ResponseUrl.ToString () != _stringManager.GetIndexPageUrl (IndexPages.Resources)) { Logger.Log (LoggingCategories.NavigationAction, "UpgradeBuilding: Wir sind noch nicht auf der Bau-Seite"); NagivateToIndexPage (IndexPages.Resources); } else { Logger.Log (LoggingCategories.NavigationAction, "UpgradeBuilding: Wir sind bereits auf der Bau-Seite"); } HttpResult tmp = NavigateBuildingAjax (1, building); HtmlAgilityPack.HtmlDocument tmpDoc = new HtmlAgilityPack.HtmlDocument (); tmpDoc.LoadHtml (tmp.ResponseContent); int neededMetal = GetMetalFromAjax (tmp.ResponseContent); int neededCrystal = GetCrystalFromAjax (tmp.ResponseContent); int neededDeuterium = GetDeuteriumFromAjax (tmp.ResponseContent); int currentLevel = GetBuildingLevelFromAjax (tmpDoc); //abgleichen mit aktuellen ressies if (this.Metal < neededMetal) { throw new NotEnoughMetalException ("Nicht genug Metall zum bau von " + building.ToString ()); } else if (this.Crystal < neededCrystal) { Mathemathics.CalcMaxTimeForRes (this.Metal, this.Crystal, this.Deuterium, neededMetal, neededCrystal, neededDeuterium, MetalPerHour, CrystalPerHour, DeuteriumPerHour); throw new NotEnoughCrystalException ("Nicht genug Kristall zum bau von " + building.ToString ()); } else if (this.Deuterium < neededDeuterium) { throw new NotEnoughDeuteriumException ("Nicht genug Deuterium zum bau von " + building.ToString ()); } HttpHandler.Post (_stringManager.GetIndexPageUrl (IndexPages.Resources), _stringManager.GetUpgradeBuildingSubmitParameter (this.Token, building)); }
/// <summary> /// Öffnet den Ajax Javascript kram vom Gebäude-Baucenter /// </summary> /// <param name="ajaxIndex">immer 1 setzen vorerst (nochnicht herrausgefunden, was der parameter bringt)</param> /// <param name="ajaxParam">gebäude id</param> /// <returns>Http Ergebnis</returns> HttpResult NavigateBuildingAjax(int ajaxIndex, SupplyBuildings ajaxParam) { Logger.Log(LoggingCategories.NavigationAction, "NavigateBuildingAjax(" + ajaxIndex.ToString() + ", " + ajaxParam.ToString() + ")"); return(this._httpHandler.Post(_stringManager.GetAjaxUrl(_stringManager.IndexPageNames [IndexPages.Resources], ajaxIndex), _stringManager.GetAjaxParameter(ajaxParam))); }