Add PrismaUI HTML server browser & integration
Integrate a PrismaUI_F4-based HTML server browser and related tooling. Adds a ThirdParty submodule (framework-F4-Conversion), UI views (CommonwealthOnline browser HTML/JS/CSS), and multiple plugin headers/sources to bridge PrismaUI/Scaleform, handle menu input, and manage server browser data and actions (mock server list, join/connect flow). Key changes: - New build/deploy scripts: build-prismaui.bat, build-all.bat, deploy-all.bat, deploy-ui.bat and a PowerShell helper for linking the Ultralight SDK (ULTRALIGHT_SDK_PATH, default F:\\UltralightSDK). - Plugin additions: F4TPrismaUI, F4TScaleformUI, F4TServerBrowserBridge, F4TServerBrowserData, F4TMenuInput, F4TDebugOverlay and implementations to create/show/hide the HTML view, forward controller input, register Scaleform functions (openManager/closeManager), and push UI events. - Networking: add ConnectToServer(host,port) and keep ConnectToLocalServer() as wrapper; update connection logs and error handling. - Main menu SWF/AS updates: updated MainMenu.swf and MainMenu.as to call closeManager() when leaving multiplayer and to integrate open/close hooks. - Documentation: plugin/setup.md updated with PrismaUI build/deploy instructions. - Removed Main_ModManager.swf (deleted). Primary intent: provide an in-game HTML server browser (toggleable with F9 or Scaleform calls), wire up controller input, and add build/deploy workflow for PrismaUI/Ultralight so developers can build and deploy the UI and plugin together. Mock server data is used for now; network join/connect plumbing is provided for local/dev servers.
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -82,7 +82,41 @@ Add **before** `case this.HELP_INDEX:` (or anywhere in the switch):
|
||||
break;
|
||||
```
|
||||
|
||||
Requires the C++ plugin to register `commonwealthOnline.openManager()` via F4SE Scaleform (not done yet). Until then, the button will play the OK sound and do nothing else — safe for SWF-only testing.
|
||||
Requires the C++ plugin to register `commonwealthOnline.openManager()` and `commonwealthOnline.closeManager()` via F4SE Scaleform.
|
||||
|
||||
### 4. Auto-close when leaving Multiplayer (~line 716 and ~onMainListItemPress)
|
||||
|
||||
Add a helper and call it when the main menu navigates to any other screen (Settings, Load, Continue, etc.):
|
||||
|
||||
```actionscript
|
||||
private function CloseMultiplayerBrowser() : *
|
||||
{
|
||||
if(root.f4se != null && root.f4se.plugins != null && root.f4se.plugins.commonwealthOnline != null)
|
||||
{
|
||||
root.f4se.plugins.commonwealthOnline.closeManager();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
In the `currentState` setter, after assigning `strCurrentState`:
|
||||
|
||||
```actionscript
|
||||
if(param1 != this.MAIN_STATE)
|
||||
{
|
||||
this.CloseMultiplayerBrowser();
|
||||
}
|
||||
```
|
||||
|
||||
At the start of `onMainListItemPress()` (after the cancel/reset loop), before the `switch`:
|
||||
|
||||
```actionscript
|
||||
if(this.MainPanel_mc.List_mc.selectedEntry.index != this.MULTIPLAYER_INDEX)
|
||||
{
|
||||
this.CloseMultiplayerBrowser();
|
||||
}
|
||||
```
|
||||
|
||||
This closes the HTML server browser when sub-menus open (Settings, Add-ons, etc.) and when any other main-menu item is selected.
|
||||
|
||||
## FFDec workflow
|
||||
|
||||
|
||||
@@ -716,6 +716,10 @@ package
|
||||
public function set currentState(param1:String) : *
|
||||
{
|
||||
this.strCurrentState = param1;
|
||||
if(param1 != this.MAIN_STATE)
|
||||
{
|
||||
this.CloseMultiplayerBrowser();
|
||||
}
|
||||
this.UpdateButtons(param1);
|
||||
this.UpdateStateFocus(param1);
|
||||
}
|
||||
@@ -799,6 +803,14 @@ package
|
||||
}
|
||||
}
|
||||
|
||||
private function CloseMultiplayerBrowser() : *
|
||||
{
|
||||
if(root.f4se != null && root.f4se.plugins != null && root.f4se.plugins.commonwealthOnline != null)
|
||||
{
|
||||
root.f4se.plugins.commonwealthOnline.closeManager();
|
||||
}
|
||||
}
|
||||
|
||||
private function onMainListItemPress() : *
|
||||
{
|
||||
if(Boolean(this.MainPanel_mc.List_mc.selectedEntry.disabled) || Boolean(this.Spinner_mc.visible == true) || this.bSettingsChanged)
|
||||
@@ -811,6 +823,10 @@ package
|
||||
{
|
||||
this.onCancelPress(true,false);
|
||||
}
|
||||
if(this.MainPanel_mc.List_mc.selectedEntry.index != this.MULTIPLAYER_INDEX)
|
||||
{
|
||||
this.CloseMultiplayerBrowser();
|
||||
}
|
||||
if(this.MainPanel_mc.List_mc.selectedEntry.index == this.CONTINUE_INDEX && this.PauseMode)
|
||||
{
|
||||
this.SaveLoadHolder_mc.visible = false;
|
||||
|
||||
Reference in New Issue
Block a user