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); } }
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); } }
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())); } }
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); }
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); } }
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); }
/// <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); }