Esempio n. 1
0
        public void ReadBook()
        {
            // Check permission to access bookshelf if inside a guild or temple
            PlayerGPS.DiscoveredBuilding buildingData = GameManager.Instance.PlayerEnterExit.BuildingDiscoveryData;
            // TODO: Faction membership check here when implemented, just check building type for now..
            int factionID = buildingData.factionID;

            Debug.Log("Faction ID = " + factionID);
            if (buildingData.buildingType == DFLocation.BuildingTypes.GuildHall ||
                buildingData.buildingType == DFLocation.BuildingTypes.Temple)
            {
                DaggerfallUI.MessageBox(HardStrings.serviceDenied);
            }
            else
            {
                // Show book picker loaded with list of books on this shelf
                IUserInterfaceManager      uiManager  = DaggerfallUI.UIManager;
                DaggerfallListPickerWindow bookPicker = new DaggerfallListPickerWindow(uiManager, uiManager.TopWindow);
                bookPicker.OnItemPicked += BookShelf_OnItemPicked;

                foreach (int bookNum in books)
                {
                    string bookName = DaggerfallUnity.Instance.ItemHelper.getBookNameByID(bookNum, string.Empty);
                    if (bookName != string.Empty)
                    {
                        bookPicker.ListBox.AddItem(bookName);
                    }
                }

                uiManager.PushWindow(bookPicker);
            }
        }
Esempio n. 2
0
        public void ReadBook()
        {
            // Check permission to access bookshelf if inside a guild or temple
            PlayerGPS.DiscoveredBuilding buildingData = GameManager.Instance.PlayerEnterExit.BuildingDiscoveryData;
            int factionID = buildingData.factionID;

            Debug.Log("Bookshelf access, Faction ID = " + factionID);
            Guild guild = GameManager.Instance.GuildManager.GetGuild(factionID);

            if ((buildingData.buildingType == DFLocation.BuildingTypes.GuildHall ||
                 buildingData.buildingType == DFLocation.BuildingTypes.Temple) &&
                !guild.CanAccessLibrary())
            {
                DaggerfallUI.MessageBox(HardStrings.accessMembersOnly);
            }
            else
            {
                // Show book picker loaded with list of books on this shelf
                IUserInterfaceManager      uiManager  = DaggerfallUI.UIManager;
                DaggerfallListPickerWindow bookPicker = new DaggerfallListPickerWindow(uiManager, uiManager.TopWindow);
                bookPicker.OnItemPicked += BookShelf_OnItemPicked;

                foreach (int bookNum in books)
                {
                    string bookName = DaggerfallUnity.Instance.ItemHelper.getBookNameByID(bookNum, string.Empty);
                    if (bookName != string.Empty)
                    {
                        bookPicker.ListBox.AddItem(bookName);
                    }
                }

                uiManager.PushWindow(bookPicker);
            }
        }
        protected override void TrainingService()
        {
            // Check enough time has passed since last trained
            DaggerfallDateTime now = DaggerfallUnity.Instance.WorldTime.Now;

            if ((now.ToClassicDaggerfallTime() - playerEntity.TimeOfLastSkillTraining) < 720)
            {
                TextFile.Token[]     tokens     = DaggerfallUnity.Instance.TextProvider.GetRandomTokens(TrainingToSoonId);
                DaggerfallMessageBox messageBox = new DaggerfallMessageBox(uiManager, uiManager.TopWindow);
                messageBox.SetTextTokens(tokens);
                messageBox.ClickAnywhereToClose = true;
                messageBox.Show();
            }
            else
            {
                // Show skill picker loaded with guild training skills
                DaggerfallListPickerWindow skillPicker = new DaggerfallListPickerWindow(uiManager, this);
                skillPicker.OnItemPicked += TrainingSkillPicker_OnItemPicked;

                foreach (DFCareer.Skills skill in GetTrainingSkills())
                {
                    skillPicker.ListBox.AddItem(DaggerfallUnity.Instance.TextProvider.GetSkillName(skill));
                }

                uiManager.PushWindow(skillPicker);
            }
        }
Esempio n. 4
0
 public CreateItem()
 {
     // Setup item picker for effect selection
     UserInterface.UserInterfaceManager uiManager = DaggerfallUI.Instance.UserInterfaceManager;
     itemPicker = new DaggerfallListPickerWindow(uiManager);
     itemPicker.OnItemPicked += ItemPicker_OnItemPicked;
     itemPicker.AllowCancel   = false;
     foreach (CreateItemSelection item in Enum.GetValues(typeof(CreateItemSelection)))
     {
         itemPicker.ListBox.AddItem(TextManager.Instance.GetText(textDatabase, item.ToString()));
     }
 }
Esempio n. 5
0
 public CreateItem()
 {
     // Setup item picker for effect selection
     UserInterface.UserInterfaceManager uiManager = DaggerfallUI.Instance.UserInterfaceManager;
     itemPicker = new DaggerfallListPickerWindow(uiManager);
     itemPicker.OnItemPicked += ItemPicker_OnItemPicked;
     itemPicker.AllowCancel   = false;
     foreach (CreateItemSelection item in Enum.GetValues(typeof(CreateItemSelection)))
     {
         itemPicker.ListBox.AddItem(TextManager.Instance.GetLocalizedText(item.ToString()));
     }
     itemPicker.ListBox.SelectIndex(lastSelectedIndex);
     itemPicker.ListBox.ScrollToSelected();
 }
        // Depending on which Repair Tool was used, creates the appropriate list of items to display and be picked from.
        public override bool UseItem(ItemCollection collection)
        {
            if (GameManager.Instance.AreEnemiesNearby())
            {
                DaggerfallUI.MessageBox("Can't use that with enemies around.");
                return(true);
            }
            PlayerEntity playerEntity = GameManager.Instance.PlayerEntity;

            if (playerEntity.CurrentFatigue <= (20 * DaggerfallEntity.FatigueMultiplier))
            {
                DaggerfallUI.MessageBox("You are too exhausted to do that.");
                return(true);
            }

            repairItemCollection = collection;

            DaggerfallListPickerWindow validItemPicker = new DaggerfallListPickerWindow(uiManager, uiManager.TopWindow);

            validItemPicker.OnItemPicked += RepairItem_OnItemPicked;
            validRepairItems.Clear(); // Clears the valid item list before every repair tool use.
            int itemCount = playerEntity.Items.Count;
            int luckMod   = (int)Mathf.Round((playerEntity.Stats.LiveLuck - 50f) / 10);
            int endurMod  = (int)Mathf.Round((playerEntity.Stats.LiveEndurance - 50f) / 10);

            for (int i = 0; i < playerEntity.Items.Count; i++)
            {
                DaggerfallUnityItem item = playerEntity.Items.GetItem(i);
                //int percentReduce = (int)Mathf.Floor(item.maxCondition * 0.15f); // For Testing Purposes right now.
                //item.LowerCondition(percentReduce); // For Testing Purposes right now.
                if (item.ConditionPercentage < 80 && IsValidForRepair(item))
                {
                    validRepairItems.Add(item);
                    string validItemName = item.ConditionPercentage + "%" + "      " + item.LongName;
                    validItemPicker.ListBox.AddItem(validItemName);
                }
            }

            if (validItemPicker.ListBox.Count > 0)
            {
                uiManager.PushWindow(validItemPicker);
            }
            else
            {
                DaggerfallUI.MessageBox("You have no valid items in need of repair.");
            }

            return(true);
        }
        private void ModSettingsWindowOption_OnClick()
        {
            var modTitles = ModManager.Instance.Mods
                            .Where(x => x.HasSettings && x.LoadSettingsCallback != null)
                            .Select(x => x.Title)
                            .ToArray();

            var listPicker = new DaggerfallListPickerWindow(uiManager);

            listPicker.ListBox.AddItems(modTitles);
            listPicker.OnItemPicked += (index, modTitle) =>
            {
                listPicker.PopWindow();
                uiManager.PushWindow(new ModSettingsWindow(uiManager, ModManager.Instance.GetMod(modTitle), true));
            };

            uiManager.PushWindow(listPicker);
        }
Esempio n. 8
0
        protected void DoDrinks()
        {
            CloseWindow();

            if (drunk > (playerEntity.Stats.LiveEndurance + playerEntity.Stats.LiveWillpower + playerEntity.Stats.LivePersonality) / 2)
            {
                DaggerfallUI.MessageBox("I think you've had enough.");
            }
            else
            {
                int  tavernQuality = playerEnterExit.Interior.BuildingData.Quality;
                uint gameMinutes   = DaggerfallUnity.Instance.WorldTime.DaggerfallDateTime.ToClassicDaggerfallTime();

                DaggerfallListPickerWindow foodAndDrinkPicker = new DaggerfallListPickerWindow(uiManager, this);
                foodAndDrinkPicker.OnItemPicked += Drinks_OnItemPicked;

                string   menu = regionMenu();
                string[] tavernMenu;
                if (tavernQuality < 5)
                {
                    if (menu == "s")
                    {
                        tavernMenu = sLowDrinks;
                    }
                    else if (menu == "se")
                    {
                        tavernMenu = sLowDrinks;
                    }
                    else if (menu == "ne")
                    {
                        tavernMenu = neLowDrinks;
                    }
                    else if (menu == "b")
                    {
                        tavernMenu = neLowDrinks;
                    }
                    else if (menu == "o")
                    {
                        tavernMenu = woLowDrinks;
                    }
                    else
                    {
                        tavernMenu = nLowDrinks;
                    }
                }
                else if (tavernQuality < 13)
                {
                    if (menu == "s")
                    {
                        tavernMenu = sMidDrinks;
                    }
                    else if (menu == "se")
                    {
                        tavernMenu = sMidDrinks;
                    }
                    else if (menu == "ne")
                    {
                        tavernMenu = neMidDrinks;
                    }
                    else if (menu == "b")
                    {
                        tavernMenu = neMidDrinks;
                    }
                    else if (menu == "o")
                    {
                        tavernMenu = woMidDrinks;
                    }
                    else
                    {
                        tavernMenu = nMidDrinks;
                    }
                }
                else
                {
                    if (menu == "s")
                    {
                        tavernMenu = sHighDrinks;
                    }
                    else if (menu == "se")
                    {
                        tavernMenu = sHighDrinks;
                    }
                    else if (menu == "ne")
                    {
                        tavernMenu = neHighDrinks;
                    }
                    else if (menu == "b")
                    {
                        tavernMenu = neHighDrinks;
                    }
                    else if (menu == "o")
                    {
                        tavernMenu = neHighDrinks;
                    }
                    else
                    {
                        tavernMenu = nHighDrinks;
                    }
                }

                foreach (string menuItem in tavernMenu)
                {
                    foodAndDrinkPicker.ListBox.AddItem(menuItem);
                }

                uiManager.PushWindow(foodAndDrinkPicker);
            }
        }
Esempio n. 9
0
        protected void DoFood()
        {
            CloseWindow();
            int hour = DaggerfallUnity.Instance.WorldTime.Now.Hour;

            if ((hour >= DaggerfallDateTime.MidnightHour) && (hour < DaggerfallDateTime.DawnHour))
            {
                DaggerfallUI.MessageBox("Sorry, the kitchen is closed for the night.");
                return;
            }

            int tavernQuality = playerEnterExit.Interior.BuildingData.Quality;

            uint gameMinutes = DaggerfallUnity.Instance.WorldTime.DaggerfallDateTime.ToClassicDaggerfallTime();

            DaggerfallListPickerWindow foodAndDrinkPicker = new DaggerfallListPickerWindow(uiManager, this);

            foodAndDrinkPicker.OnItemPicked += Food_OnItemPicked;

            string menu = regionMenu();

            string[] tavernMenu;
            if (tavernQuality < 5)
            {
                if (menu == "s")
                {
                    tavernMenu = sLow;
                }
                else if (menu == "se")
                {
                    tavernMenu = seLow;
                }
                else if (menu == "ne")
                {
                    tavernMenu = neLow;
                }
                else if (menu == "b")
                {
                    tavernMenu = neLow;
                }
                else if (menu == "o")
                {
                    tavernMenu = neLow;
                }
                else
                {
                    tavernMenu = nLow;
                }
            }
            else if (tavernQuality < 13)
            {
                if (menu == "s")
                {
                    tavernMenu = sMid;
                }
                else if (menu == "se")
                {
                    tavernMenu = seMid;
                }
                else if (menu == "ne")
                {
                    tavernMenu = neMid;
                }
                else if (menu == "b")
                {
                    tavernMenu = neMid;
                }
                else if (menu == "o")
                {
                    tavernMenu = woMid;
                }
                else
                {
                    tavernMenu = nMid;
                }
            }
            else
            {
                if (menu == "s")
                {
                    tavernMenu = sHigh;
                }
                else if (menu == "se")
                {
                    tavernMenu = seHigh;
                }
                else if (menu == "ne")
                {
                    tavernMenu = neHigh;
                }
                else if (menu == "b")
                {
                    tavernMenu = balHigh;
                }
                else if (menu == "o")
                {
                    tavernMenu = neHigh;
                }
                else
                {
                    tavernMenu = nHigh;
                }
            }

            foreach (string menuItem in tavernMenu)
            {
                foodAndDrinkPicker.ListBox.AddItem(menuItem);
            }

            uiManager.PushWindow(foodAndDrinkPicker);
        }
Esempio n. 10
0
        /// <summary>
        /// Open preset listbox on preset button.
        /// </summary>
        private void PresetButton_OnMouseClick(BaseScreenComponent sender, Vector2 position)
        {
            // Create presets listbox
            presetPicker = new DaggerfallListPickerWindow(uiManager, this);
            presetPicker.ListBox.MaxCharacters = 30;
            presetPicker.OnItemPicked         += HandlePresetPickEvent;

            foreach (IniData presetData in presets)
            {
                string presetName;

                try
                {
                    var section = presetData[ModSettingsReader.internalSection];

                    // Get Name
                    string name = section["PresetName"];
                    if (string.IsNullOrEmpty(name))
                    {
                        name = "Unknown preset";
                        Debug.LogError("A preset for mod " + mod.Title + " is missing the key 'PresetName'");
                    }
                    presetName = name;

                    // Get Author (if present)
                    string author = section["PresetAuthor"];
                    if (!string.IsNullOrEmpty(author))
                    {
                        presetName += " by " + author;
                    }

                    // Check Version
                    string presetVersion   = section["SettingsVersion"];
                    string settingsVersion = data[ModSettingsReader.internalSection]["SettingsVersion"];
                    if (string.IsNullOrEmpty(presetVersion))
                    {
                        presetName = "[?] " + presetName;
                        Debug.LogError("Preset " + presetName + " for mod " + mod.Title + " is missing the key 'SettingsVersion'");
                    }
                    else if (presetVersion != settingsVersion)
                    {
                        presetName = "[!] " + presetName;
                        Debug.Log("Preset " + presetName + " was made for version " + presetVersion + " but " +
                                  mod.Title + " has settings version " + settingsVersion);
                    }
                }
                catch
                {
                    presetName = "[Unknown preset]";
                    Debug.LogError("Failed to read the header from a preset for mod " + mod.Title);
                }

                if (presetName.Length > 30)
                {
                    presetName  = presetName.Substring(0, 27);
                    presetName += "...";
                }

                // Add preset to listbox
                presetPicker.ListBox.AddItem(presetName);
            }

            uiManager.PushWindow(presetPicker);
        }