protected void UICommChannel_OnPanelMessage( string panelName, string msgType, string[] msgParams) { if (msgType == "slider_value") { if (!panelName.StartsWith("__")) { return; } string[] strArray = panelName.Split('|'); if (int.Parse(strArray[1]) != this._widgetID) { return; } ColonyInfo colonyInfo = this.App.GameDatabase.GetColonyInfo(int.Parse(strArray[2])); if (colonyInfo == null) { return; } if (PlanetWidget.IsOutputRateSlider(panelName)) { StarSystemDetailsUI.SetOutputRateNew(this.App, colonyInfo.OrbitalObjectID, panelName, msgParams[0]); StarSystemUI.SyncColonyDetailsControlNew(this.App.Game, this._rootPanel, colonyInfo.ID, this._widgetID, panelName); } if (strArray[0].Contains("partOverharvestSlider")) { colonyInfo.OverharvestRate = StarSystemDetailsUI.SliderValueToOutputRate(int.Parse(msgParams[0])); this.App.GameDatabase.UpdateColony(colonyInfo); StarSystemUI.SyncColonyDetailsControlNew(this.App.Game, this._rootPanel, colonyInfo.ID, this._widgetID, panelName); } else if (strArray[0].Contains("partCivSlider")) { colonyInfo.CivilianWeight = StarSystemDetailsUI.SliderValueToOutputRate(int.Parse(msgParams[0])); this.App.GameDatabase.UpdateColony(colonyInfo); StarSystemUI.SyncColonyDetailsControlNew(this.App.Game, this._rootPanel, colonyInfo.ID, this._widgetID, panelName); } else { if (!strArray[0].Contains("partPopSlider")) { return; } int lockedVar = int.Parse(strArray[3]); Dictionary <int, float> ratios = new Dictionary <int, float>(); foreach (ColonyFactionInfo faction in colonyInfo.Factions) { ratios.Add(faction.FactionID, faction.CivPopWeight); } AlgorithmExtensions.DistributePercentages <int>(ref ratios, lockedVar, StarSystemDetailsUI.SliderValueToOutputRate(int.Parse(msgParams[0]))); foreach (ColonyFactionInfo faction in colonyInfo.Factions) { faction.CivPopWeight = ratios[faction.FactionID]; this.App.GameDatabase.UpdateCivilianPopulation(faction); } this.App.GameDatabase.UpdateColony(colonyInfo); StarSystemUI.SyncColonyDetailsControlNew(this.App.Game, this._rootPanel, colonyInfo.ID, this._widgetID, panelName); } } else { if (!(msgType == "slider_notched") || !panelName.StartsWith("__")) { return; } string[] strArray = panelName.Split('|'); if (int.Parse(strArray[1]) != this._widgetID) { return; } ColonyInfo colonyInfo = this.App.GameDatabase.GetColonyInfo(int.Parse(strArray[2])); if (colonyInfo == null || !panelName.Contains("partTradeSlider")) { return; } PlanetWidget.UpdateTradeSliderNotchInfo(this.App, colonyInfo.ID, int.Parse(msgParams[0])); } }