public void AddBlankModule(int cur, StationInfo station, ModuleEnums.StationModuleType type) { this.App.UI.AddItem("stationModules", "", cur, ""); string itemGlobalId = this.App.UI.GetItemGlobalID("stationModules", "", cur, ""); this.App.UI.SetPropertyString(itemGlobalId, "id", "nullfun"); this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "huverbuttin"), "id", station.OrbitalObjectID.ToString() + "|" + (object)type); if (type == ModuleEnums.StationModuleType.AlienHabitation) { this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "module_label"), "text", App.Localize("@UI_STATIONDETAILS_ALIENHAB")); } else if (type == ModuleEnums.StationModuleType.LargeAlienHabitation) { this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "module_label"), "text", App.Localize("@UI_STATIONDETAILS_LGALIENHAB")); } this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "module_que_plus"), false); this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "module_que"), false); this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "module_up"), false); this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "module_down"), false); this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "module_max"), false); this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "module_built"), "text", ""); Dictionary <ModuleEnums.StationModuleType, int> requiredModules = new Dictionary <ModuleEnums.StationModuleType, int>(); double stationUpgradeProgress = (double)this.App.Game.GetStationUpgradeProgress(station, out requiredModules); string propertyValue = ""; List <KeyValuePair <ModuleEnums.StationModuleType, int> > list = requiredModules.Where <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, bool>)(x => x.Key.ToString() == type.ToString())).ToList <KeyValuePair <ModuleEnums.StationModuleType, int> >(); if (list.Count <KeyValuePair <ModuleEnums.StationModuleType, int> >() > 0) { propertyValue = string.Format("{0} req.", (object)list.ElementAt <KeyValuePair <ModuleEnums.StationModuleType, int> >(0).Value); } this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "module_req"), "text", propertyValue); }
public StationModule( string name, string desc, ModuleEnums.StationModuleType smtype, string slottype) { this.Name = name; this.Description = desc; this.SMType = smtype; this.SlotType = slottype; }
public static string GetModuleFactionDefault( ModuleEnums.StationModuleType type, Faction defaultFaction) { string str = AssetDatabase.GetModuleFactionName(type); if (str.Length == 0) { str = defaultFaction.Name; } return(str); }
protected void SyncBuildQueue() { this.App.UI.ClearItems("moduleQue"); StationInfo si = this.App.GameDatabase.GetStationInfo(this._selectedStation.OrbitalObjectID); List <DesignModuleInfo> list = this.App.GameDatabase.GetQueuedStationModules(si.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); int num = 0; foreach (DesignModuleInfo designModuleInfo in list) { DesignModuleInfo module = designModuleInfo; this.App.UI.AddItem("moduleQue", "", module.ID, ""); string itemGlobalId = this.App.UI.GetItemGlobalID("moduleQue", "", module.ID, ""); StationModules.StationModule stationModule = ((IEnumerable <StationModules.StationModule>)StationModules.Modules).Where <StationModules.StationModule>((Func <StationModules.StationModule, bool>)(x => { ModuleEnums.StationModuleType smType = x.SMType; ModuleEnums.StationModuleType?stationModuleType = module.StationModuleType; if (smType == stationModuleType.GetValueOrDefault()) { return(stationModuleType.HasValue); } return(false); })).First <StationModules.StationModule>(); StationModuleQueue.UpdateStationMapsForFaction(this.App.LocalPlayer.Faction.Name); LogicalModule logicalModule = this.App.AssetDatabase.Modules.First <LogicalModule>((Func <LogicalModule, bool>)(x => x.ModulePath == this.App.AssetDatabase.GetStationModuleAsset(module.StationModuleType.Value, StationModuleQueue.GetModuleFactionDefault(module.StationModuleType.Value, this.App.Game.GetPlayerObject(si.PlayerID).Faction)))); num += logicalModule.SavingsCost; this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "moduleName"), "text", stationModule.Name + " - $" + logicalModule.SavingsCost.ToString("N0")); this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "deleteButton"), true); this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "deleteButton"), "id", "modque|" + ((int)module.StationModuleType.Value).ToString()); this.App.UI.SetPropertyColor(this.App.UI.Path(itemGlobalId, "moduleName"), "color", new Vector3((float)byte.MaxValue, (float)byte.MaxValue, (float)byte.MaxValue)); } int userItemId = 999000; foreach (KeyValuePair <ModuleEnums.StationModuleType, int> keyValuePair in this._queuedItemMap.ToList <KeyValuePair <ModuleEnums.StationModuleType, int> >().Where <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, bool>)(x => x.Value > 0))) { KeyValuePair <ModuleEnums.StationModuleType, int> thing = keyValuePair; for (int index = 0; index < thing.Value; ++index) { this.App.UI.AddItem("moduleQue", "", userItemId, ""); string itemGlobalId = this.App.UI.GetItemGlobalID("moduleQue", "", userItemId, ""); StationModules.StationModule stationModule = ((IEnumerable <StationModules.StationModule>)StationModules.Modules).Where <StationModules.StationModule>((Func <StationModules.StationModule, bool>)(x => x.SMType == thing.Key)).First <StationModules.StationModule>(); StationModuleQueue.UpdateStationMapsForFaction(this.App.LocalPlayer.Faction.Name); LogicalModule logicalModule = this.App.AssetDatabase.Modules.First <LogicalModule>((Func <LogicalModule, bool>)(x => x.ModulePath == this.App.AssetDatabase.GetStationModuleAsset(thing.Key, StationModuleQueue.GetModuleFactionDefault(thing.Key, this.App.Game.GetPlayerObject(si.PlayerID).Faction)))); num += logicalModule.SavingsCost; this.App.UI.SetPropertyString(this.App.UI.Path(itemGlobalId, "moduleName"), "text", stationModule.Name + " - $" + logicalModule.SavingsCost.ToString("N0")); this.App.UI.SetPropertyColor(this.App.UI.Path(itemGlobalId, "moduleName"), "color", new Vector3((float)byte.MaxValue, 200f, 50f)); this.App.UI.SetVisible(this.App.UI.Path(itemGlobalId, "deleteButton"), false); ++userItemId; } } this.App.UI.SetText("queueCost", "$" + num.ToString("N0")); this.App.UI.SetText("turnsToComplete", list.Count.ToString() + " " + App.Localize("@UI_GENERAL_TURNS")); }
internal static void SyncStationModulesControl( GameSession game, string panelName, StationInfo station, string itemId = null) { foreach (KeyValuePair <StationType, string> stationModulePanel in StationUI.StationModulePanelMap) { game.UI.SetVisible(game.UI.Path(panelName, stationModulePanel.Value), (stationModulePanel.Key == station.DesignInfo.StationType ? 1 : 0) != 0); } string str1 = game.UI.Path(panelName, StationUI.StationModulePanelMap[station.DesignInfo.StationType]); List <LogicalModuleMount> list1 = ((IEnumerable <LogicalModuleMount>)game.AssetDatabase.ShipSections.First <ShipSectionAsset>((Func <ShipSectionAsset, bool>)(x => x.FileName == station.DesignInfo.DesignSections[0].FilePath)).Modules).ToList <LogicalModuleMount>(); List <DesignModuleInfo> builtModules = station.DesignInfo.DesignSections[0].Modules; List <DesignModuleInfo> queuedModules = game.GameDatabase.GetQueuedStationModules(station.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); foreach (string str2 in StationUI.StationModuleMap[station.DesignInfo.StationType]) { string s = str2; List <LogicalModuleMount> list2 = list1.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => x.ModuleType == StationUI.ModuleTypeMap[s])).ToList <LogicalModuleMount>(); List <LogicalModuleMount> list3 = list2.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => builtModules.Any <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(y => y.MountNodeName == x.NodeName)))).ToList <LogicalModuleMount>(); List <LogicalModuleMount> list4 = list2.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => queuedModules.Any <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(y => y.MountNodeName == x.NodeName)))).ToList <LogicalModuleMount>(); List <DesignModuleInfo> list5 = builtModules.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = StationUI.ModuleToStationModuleTypeMap[s]; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })).ToList <DesignModuleInfo>(); List <DesignModuleInfo> list6 = queuedModules.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = StationUI.ModuleToStationModuleTypeMap[s]; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })).ToList <DesignModuleInfo>(); int count1 = list5.Count; int count2 = list6.Count; int modulesAvailable = list2.Count - list3.Count - list4.Count; StationUI.SyncModuleItemControl(game, game.UI.Path(str1, s), count1, count2, modulesAvailable, itemId); } }
protected override void OnPanelMessage(string panelName, string msgType, string[] msgParams) { if (msgType == "button_clicked" && panelName == "okButton") { this._app.UI.CloseDialog((Dialog)this, true); } if (msgType == "mouse_enter") { string[] strArray = panelName.Split('|'); int orbitalObjectID = int.Parse(strArray[0]); ModuleEnums.StationModuleType type = (ModuleEnums.StationModuleType)Enum.Parse(typeof(ModuleEnums.StationModuleType), strArray[1]); StationInfo stationInfo = this.App.GameDatabase.GetStationInfo(orbitalObjectID); IEnumerable <StationModules.StationModule> source = ((IEnumerable <StationModules.StationModule>)StationModules.Modules).Where <StationModules.StationModule>((Func <StationModules.StationModule, bool>)(x => x.SMType == type)); if (source.Count <StationModules.StationModule>() > 0) { string upper = stationInfo.DesignInfo.StationType.ToDisplayText(this.App.GameDatabase.GetFactionName(this.App.GameDatabase.GetPlayerFactionID(stationInfo.PlayerID))).ToUpper(); this.App.UI.SetPropertyString("moduleDescriptionText", "text", App.Localize(string.Format(source.ElementAt <StationModules.StationModule>(0).Description, (object)upper))); } } else { int num1 = msgType == "mouse_leave" ? 1 : 0; } if (msgType == "list_sel_changed") { if (panelName == "station_list") { this.PopulateModulesList(this.App.GameDatabase.GetStationInfo(int.Parse(msgParams[0]))); } else if (panelName == "filterDropdown") { this._currentFilterMode = (StationType)int.Parse(msgParams[0]); this.SyncStationList(); } } if (!(msgType == "button_clicked")) { return; } if (panelName == "upgradeButton") { OrbitalObjectInfo orbitalObjectInfo = this._app.GameDatabase.GetOrbitalObjectInfo(this._selectedStation.OrbitalObjectID); this._starmap.GetUpgradeMissionOverlay().StartSelect = orbitalObjectInfo.ID; this._app.UI.CloseDialog((Dialog)this, true); this._starmap.ShowUpgradeMissionOverlay(orbitalObjectInfo.StarSystemID); } else if (panelName.StartsWith("modque")) { ModuleEnums.StationModuleType moduleID = (ModuleEnums.StationModuleType) int.Parse(panelName.Split('|')[1]); List <LogicalModuleMount> stationModuleMounts = this.App.Game.GetAvailableStationModuleMounts(this.App.GameDatabase.GetStationInfo(this._selectedStation.OrbitalObjectID)); List <DesignModuleInfo> queuedModules = this.App.GameDatabase.GetQueuedStationModules(this._selectedStation.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); stationModuleMounts.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => queuedModules.Any <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(y => y.MountNodeName == x.NodeName)))).ToList <LogicalModuleMount>(); DesignModuleInfo designModuleInfo = queuedModules.FirstOrDefault <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = moduleID; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })); if (designModuleInfo != null) { this.App.GameDatabase.RemoveQueuedStationModule(designModuleInfo.ID); } this.SyncModuleItems(); this.SyncBuildQueue(); } else if (panelName == "filterDiplomatic") { StationManagerDialog.StationViewFilter[StationType.DIPLOMATIC] = !StationManagerDialog.StationViewFilter[StationType.DIPLOMATIC]; this.SyncStationList(); } else if (panelName == "filterScience") { StationManagerDialog.StationViewFilter[StationType.SCIENCE] = !StationManagerDialog.StationViewFilter[StationType.SCIENCE]; this.SyncStationList(); } else if (panelName == "filterCivilian") { StationManagerDialog.StationViewFilter[StationType.CIVILIAN] = !StationManagerDialog.StationViewFilter[StationType.CIVILIAN]; this.SyncStationList(); } else if (panelName == "filterNaval") { StationManagerDialog.StationViewFilter[StationType.NAVAL] = !StationManagerDialog.StationViewFilter[StationType.NAVAL]; this.SyncStationList(); } else if (panelName == "filterMining") { StationManagerDialog.StationViewFilter[StationType.MINING] = !StationManagerDialog.StationViewFilter[StationType.MINING]; this.SyncStationList(); } else if (panelName == "filterSDS") { StationManagerDialog.StationViewFilter[StationType.DEFENCE] = !StationManagerDialog.StationViewFilter[StationType.DEFENCE]; this.SyncStationList(); } else if (panelName == "filterGate") { StationManagerDialog.StationViewFilter[StationType.GATE] = !StationManagerDialog.StationViewFilter[StationType.GATE]; this.SyncStationList(); } else if (panelName == "confirmOrderButton") { StationInfo stationInfo = this.App.GameDatabase.GetStationInfo(this._selectedStation.OrbitalObjectID); StationModuleQueue.UpdateStationMapsForFaction(this.App.LocalPlayer.Faction.Name); StationModuleQueue.ConfirmStationQueuedItems(this.App.Game, stationInfo, this._queuedItemMap); this.SyncModuleItems(); this.SyncBuildQueue(); } else if (panelName.EndsWith("module_up")) { string[] strArray = panelName.Split('|'); int orbitalObjectID = int.Parse(strArray[0]); ModuleEnums.StationModuleType type = (ModuleEnums.StationModuleType)Enum.Parse(typeof(ModuleEnums.StationModuleType), strArray[1]); StationInfo stationInfo = this.App.GameDatabase.GetStationInfo(orbitalObjectID); this.App.GameDatabase.GetModuleID(this.App.AssetDatabase.GetStationModuleAsset(type, this.App.Game.LocalPlayer.Faction.Name), this.App.Game.LocalPlayer.ID); List <LogicalModuleMount> stationModuleMounts = this.App.Game.GetAvailableStationModuleMounts(stationInfo); List <DesignModuleInfo> list = this.App.GameDatabase.GetQueuedStationModules(this._selectedStation.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); list.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = type; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })).ToList <DesignModuleInfo>(); int num2 = list.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => AssetDatabase.StationModuleTypeToMountTypeMap[x.StationModuleType.Value] == AssetDatabase.StationModuleTypeToMountTypeMap[type])).Count <DesignModuleInfo>(); if (this._queuedItemMap.Where <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, bool>)(x => AssetDatabase.StationModuleTypeToMountTypeMap[x.Key] == AssetDatabase.StationModuleTypeToMountTypeMap[type])).Sum <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, int>)(x => x.Value)) >= stationModuleMounts.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => x.ModuleType == AssetDatabase.StationModuleTypeToMountTypeMap[type].ToString())).Count <LogicalModuleMount>() - num2) { return; } Dictionary <ModuleEnums.StationModuleType, int> queuedItemMap; ModuleEnums.StationModuleType index; (queuedItemMap = this._queuedItemMap)[index = type] = queuedItemMap[index] + 1; this.SyncModuleItems(); } else if (panelName.EndsWith("module_down")) { string[] strArray = panelName.Split('|'); int.Parse(strArray[0]); ModuleEnums.StationModuleType index1 = (ModuleEnums.StationModuleType)Enum.Parse(typeof(ModuleEnums.StationModuleType), strArray[1]); if (this._queuedItemMap[index1] <= 0) { return; } Dictionary <ModuleEnums.StationModuleType, int> queuedItemMap; ModuleEnums.StationModuleType index2; (queuedItemMap = this._queuedItemMap)[index2 = index1] = queuedItemMap[index2] - 1; this.SyncModuleItems(); } else if (panelName.EndsWith("module_max")) { string[] strArray = panelName.Split('|'); int orbitalObjectID = int.Parse(strArray[0]); ModuleEnums.StationModuleType type = (ModuleEnums.StationModuleType)Enum.Parse(typeof(ModuleEnums.StationModuleType), strArray[1]); StationInfo stationInfo = this.App.GameDatabase.GetStationInfo(orbitalObjectID); this.App.GameDatabase.GetModuleID(this.App.AssetDatabase.GetStationModuleAsset(type, this.App.Game.LocalPlayer.Faction.Name), this.App.Game.LocalPlayer.ID); List <LogicalModuleMount> stationModuleMounts = this.App.Game.GetAvailableStationModuleMounts(stationInfo); List <DesignModuleInfo> list = this.App.GameDatabase.GetQueuedStationModules(this._selectedStation.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); list.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = type; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })).ToList <DesignModuleInfo>(); int num2 = list.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => AssetDatabase.StationModuleTypeToMountTypeMap[x.StationModuleType.Value] == AssetDatabase.StationModuleTypeToMountTypeMap[type])).Count <DesignModuleInfo>(); int num3 = stationModuleMounts.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => x.ModuleType == AssetDatabase.StationModuleTypeToMountTypeMap[type].ToString())).Count <LogicalModuleMount>(); int num4 = this._queuedItemMap.Where <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, bool>)(x => AssetDatabase.StationModuleTypeToMountTypeMap[x.Key] == AssetDatabase.StationModuleTypeToMountTypeMap[type])).Sum <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, int>)(x => x.Value)); if (num4 >= num3 - num2) { return; } Dictionary <ModuleEnums.StationModuleType, int> queuedItemMap; ModuleEnums.StationModuleType index; (queuedItemMap = this._queuedItemMap)[index = type] = queuedItemMap[index] + (num3 - num2 - num4); this.SyncModuleItems(); } else { if (!(panelName == "autoUpgradeButton")) { return; } this.AutoFillModules(); } }
protected void SyncModuleItems() { List <LogicalModuleMount> list1 = ((IEnumerable <LogicalModuleMount>) this.App.AssetDatabase.ShipSections.First <ShipSectionAsset>((Func <ShipSectionAsset, bool>)(x => x.FileName == this._selectedStation.DesignInfo.DesignSections[0].FilePath)).Modules).ToList <LogicalModuleMount>(); List <DesignModuleInfo> builtModules = this._selectedStation.DesignInfo.DesignSections[0].Modules; List <DesignModuleInfo> queuedModules = this.App.GameDatabase.GetQueuedStationModules(this._selectedStation.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); StationInfo stationInfo = this.App.GameDatabase.GetStationInfo(this._selectedStation.OrbitalObjectID); Dictionary <ModuleEnums.StationModuleType, int> requiredModules = new Dictionary <ModuleEnums.StationModuleType, int>(); double stationUpgradeProgress = (double)this.App.Game.GetStationUpgradeProgress(stationInfo, out requiredModules); int num1 = 0; int num2 = 0; for (int index = 0; index < 70; ++index) { ModuleEnums.StationModuleType type = (ModuleEnums.StationModuleType)index; if (this._queuedItemMap.ContainsKey(type)) { List <StationModules.StationModule> matchingModules = ((IEnumerable <StationModules.StationModule>)StationModules.Modules).Where <StationModules.StationModule>((Func <StationModules.StationModule, bool>)(val => val.SMType == type)).ToList <StationModules.StationModule>(); if (matchingModules.Count > 0) { List <LogicalModuleMount> list2 = list1.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => x.ModuleType == matchingModules[0].SlotType)).ToList <LogicalModuleMount>(); if (list2.Count > 0) { num1 += list2.Count <LogicalModuleMount>(); List <LogicalModuleMount> list3 = list2.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => builtModules.Any <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(y => y.MountNodeName == x.NodeName)))).ToList <LogicalModuleMount>(); List <LogicalModuleMount> list4 = list2.Where <LogicalModuleMount>((Func <LogicalModuleMount, bool>)(x => queuedModules.Any <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(y => y.MountNodeName == x.NodeName)))).ToList <LogicalModuleMount>(); List <DesignModuleInfo> list5 = builtModules.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = type; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })).ToList <DesignModuleInfo>(); List <DesignModuleInfo> list6 = queuedModules.Where <DesignModuleInfo>((Func <DesignModuleInfo, bool>)(x => { ModuleEnums.StationModuleType?stationModuleType1 = x.StationModuleType; ModuleEnums.StationModuleType stationModuleType2 = type; if (stationModuleType1.GetValueOrDefault() == stationModuleType2) { return(stationModuleType1.HasValue); } return(false); })).ToList <DesignModuleInfo>(); int num3 = this._queuedItemMap.Where <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, bool>)(x => { if (AssetDatabase.StationModuleTypeToMountTypeMap[x.Key] == AssetDatabase.StationModuleTypeToMountTypeMap[type]) { return(x.Key != type); } return(false); })).Sum <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, int>)(x => x.Value)); int count1 = list5.Count; num2 += count1; int count2 = list6.Count; int num4 = list2.Count - list3.Count - list4.Count - num3; if (count2 + count1 + num4 >= 0) { string propertyValue1 = count2.ToString(); if (this._queuedItemMap[type] > 0) { string propertyValue2 = propertyValue1 + "~0,255,0,255|+" + this._queuedItemMap[type].ToString() + "~"; this.App.UI.SetPropertyString(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_que_plus"), "text", propertyValue2); this.App.UI.SetVisible(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_que_plus"), true); this.App.UI.SetVisible(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_que"), false); } else { this.App.UI.SetPropertyString(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_que"), "text", propertyValue1); this.App.UI.SetVisible(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_que_plus"), false); this.App.UI.SetVisible(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_que"), true); } this.App.UI.SetPropertyString(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_built"), "text", string.Format("{0}/{1}", (object)count1, (object)(count2 + count1 + num4))); string propertyValue3 = ""; if (count2 + count1 + num4 > 0) { List <KeyValuePair <ModuleEnums.StationModuleType, int> > list7 = requiredModules.Where <KeyValuePair <ModuleEnums.StationModuleType, int> >((Func <KeyValuePair <ModuleEnums.StationModuleType, int>, bool>)(x => x.Key.ToString() == AssetDatabase.StationModuleTypeToMountTypeMap[type].ToString())).ToList <KeyValuePair <ModuleEnums.StationModuleType, int> >(); if (list7.Count <KeyValuePair <ModuleEnums.StationModuleType, int> >() > 0) { propertyValue3 = string.Format("{0} req.", (object)list7.ElementAt <KeyValuePair <ModuleEnums.StationModuleType, int> >(0).Value); } } this.App.UI.SetPropertyString(this.App.UI.Path("module" + ((ModuleEnums.StationModuleType)index).ToString(), "module_req"), "text", propertyValue3); } } } } } this.SyncBuildQueue(); }
internal static void AutoFillModules(GameSession game, StationInfo station, Dictionary <ModuleEnums.StationModuleType, int> queuedItemMap) { if (queuedItemMap.Count > 0) { ShipSectionAsset shipSectionAsset = game.AssetDatabase.ShipSections.First((ShipSectionAsset x) => x.FileName == station.DesignInfo.DesignSections[0].FilePath); shipSectionAsset.Modules.ToList <LogicalModuleMount>(); List <DesignModuleInfo> modules = station.DesignInfo.DesignSections[0].Modules; List <DesignModuleInfo> source = game.GameDatabase.GetQueuedStationModules(station.DesignInfo.DesignSections[0]).ToList <DesignModuleInfo>(); StationInfo stationInfo = game.GameDatabase.GetStationInfo(station.OrbitalObjectID); StationModuleQueue.ModuleRequirements source2 = new StationModuleQueue.ModuleRequirements(game, stationInfo, queuedItemMap); Player playerObject = game.GetPlayerObject(stationInfo.PlayerID); foreach (KeyValuePair <ModuleEnums.StationModuleType, KeyValuePair <IEnumerable <ModuleEnums.StationModuleType>, int> > keyValuePair in from x in source2 where x.Value.Value > 0 select x) { KeyValuePair <IEnumerable <ModuleEnums.StationModuleType>, int> req = keyValuePair.Value; int i = req.Value - source.Where((DesignModuleInfo x) => req.Key.Any((ModuleEnums.StationModuleType y) => y == x.StationModuleType.Value)).Count <DesignModuleInfo>() - queuedItemMap.Where((KeyValuePair <ModuleEnums.StationModuleType, int> x) => req.Key.Any((ModuleEnums.StationModuleType y) => y == x.Key)).Sum((KeyValuePair <ModuleEnums.StationModuleType, int> x) => x.Value); while (i > 0) { int num = i; List <ModuleEnums.StationModuleType> list = req.Key.ToList <ModuleEnums.StationModuleType>(); if (list.Count == 0) { break; } list.Shuffle <ModuleEnums.StationModuleType>(); if (keyValuePair.Key == ModuleEnums.StationModuleType.Lab) { int playerResearchingTechID = game.GameDatabase.GetPlayerResearchingTechID(playerObject.ID); if (playerResearchingTechID != 0) { string stringTechId = game.GameDatabase.GetTechFileID(playerResearchingTechID); Tech tech = game.AssetDatabase.MasterTechTree.Technologies.First((Tech x) => x.Id == stringTechId); ModuleEnums.StationModuleType item; if (list.ExistsFirst((ModuleEnums.StationModuleType x) => x.ToString().Contains(tech.Family), out item)) { list.Remove(item); list.Insert(0, item); } } } using (List <ModuleEnums.StationModuleType> .Enumerator enumerator2 = list.GetEnumerator()) { while (enumerator2.MoveNext()) { ModuleEnums.StationModuleType moduleType = enumerator2.Current; int num2 = req.Value - source.Where((DesignModuleInfo x) => moduleType == x.StationModuleType.Value).Count <DesignModuleInfo>() - queuedItemMap.Where((KeyValuePair <ModuleEnums.StationModuleType, int> x) => moduleType == x.Key).Sum((KeyValuePair <ModuleEnums.StationModuleType, int> x) => x.Value); if (num2 > 0) { ModuleEnums.StationModuleType moduleType2; queuedItemMap[moduleType2 = moduleType] = queuedItemMap[moduleType2] + 1; i--; if (i <= 0) { break; } } } } if (i >= num) { break; } } } } }