Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
        }
Beispiel #4
0
        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"));
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
 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();
     }
 }
Beispiel #7
0
        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;
                 }
             }
         }
     }
 }