예제 #1
0
        /// <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));
        }
예제 #2
0
 /// <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));
 }
예제 #3
0
        /// <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));
        }
예제 #4
0
 /// <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)));
 }