Add ListShops action to MCM menu

Very bare-bones and expiremental right now as I figure out the best UI for choosing shops.
This commit is contained in:
Tyler Hallada 2020-10-19 01:13:18 -04:00
parent e6a4b19f5a
commit 388fd7b7e0
3 changed files with 52 additions and 1 deletions

View File

@ -46,6 +46,7 @@ event OnPageReset(string page)
SetCursorPosition(20)
AddTextOptionST("SAVE_REFS", "Save current shop state", "")
AddTextOptionST("LOAD_REFS", "Load saved shop state", "")
AddTextOptionST("LIST_SHOPS", "List shops", "")
endif
endEvent
@ -241,3 +242,26 @@ state LOAD_SHOP_CONFIG
SetInfoText("Overwrites the shop name and description with values saved on the server. Run this after updating any of your shop config values on the website.")
endEvent
endState
state LIST_SHOPS
event OnSelectST()
SetTextOptionValueST("Fetching...")
BR.ListShops()
int attempts = 0
while !BR.ListShopsComplete && attempts < 100
attempts += 1
Utility.WaitMenuMode(0.1)
endWhile
if attempts >= 100
Debug.Trace("BRMCMConfigMenu BR.ListShops failed. BR.ListShopsComplete still unset after 100 polls (10 seconds)")
endif
ForcePageReset()
endEvent
event OnHighlightST()
SetInfoText("Displays a list of shops on the server.")
endEvent
endState

View File

@ -16,6 +16,7 @@ ObjectReference property ShopXMarker auto
bool property StartModFailed = false auto
bool property UpdateShopComplete = false auto
bool property GetShopComplete = false auto
bool property ListShopsComplete = false auto
UILIB_1 property UILib auto
string property BugReportCopy = "Please submit a bug on Nexus Mods with the contents of BazaarRealmPlugin.log and BazaarRealmClient.log usually located in C:\\Users\\<your user>\\Documents\\My Games\\Skyrim Special Edition\\SKSE." auto
@ -214,3 +215,28 @@ event OnGetShopFail(string error)
Debug.MessageBox("Failed to get shop.\n\n" + error + "\n\n" + BugReportCopy)
GetShopComplete = true
endEvent
function ListShops()
Debug.Trace("BRQuestScript ListShops")
ListShopsComplete = false
bool result = BRShop.List(ApiUrl, ApiKey, self)
if !result
Debug.MessageBox("Failed to list shops.\n\n" + BugReportCopy)
ListShopsComplete = true
endif
endFunction
event OnListShopsSuccess(int[] ids, string[] names, string[] descriptions)
Debug.Trace("BRQuestScript OnListShopsSuccess ids.length: " + ids.Length + " names.length: " + names.Length + " descriptions.length: " + descriptions.Length)
int index = 0
int selectedIndex = UILib.ShowList("Shop Merchandise", names, 0, 0)
Debug.MessageBox(names[selectedIndex] + " (ID: " + ids[selectedIndex] + ")\n\n" + descriptions[selectedIndex])
UILib.ShowNotification("Chose " + names[selectedIndex] + ". Id: " + ids[selectedIndex], "#74C56D")
ListShopsComplete = true
endEvent
event OnListShopsFail(string error)
Debug.Trace("BRQuestScript OnListShopsFail error: " + error)
Debug.MessageBox("Failed to list shops.\n\n" + error + "\n\n" + BugReportCopy)
ListShopsComplete = true
endEvent

View File

@ -3,3 +3,4 @@ scriptname BRShop
bool function Create(string apiUrl, string apiKey, string name, string description = "", quest quest) global native
bool function Update(string apiUrl, string apiKey, int id, string name, string description = "", quest quest) global native
bool function Get(string apiUrl, string apiKey, int id, quest quest) global native
bool function List(string apiUrl, string apiKey, quest quest) global native