76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#include "skse64/CustomMenu.h"
|
|
|
|
std::string CustomMenuCreator::swfPath_;
|
|
|
|
IMenu* CustomMenuCreator::Create(void)
|
|
{
|
|
void* p = ScaleformHeap_Allocate(sizeof(CustomMenu));
|
|
if (p)
|
|
{
|
|
IMenu* menu = new (p) CustomMenu(swfPath_.c_str());
|
|
return menu;
|
|
}
|
|
else
|
|
{
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
void CustomMenuCreator::SetSwfPath(const char* path)
|
|
{
|
|
swfPath_ = path;
|
|
}
|
|
|
|
CustomMenu::CustomMenu(const char* swfPath)
|
|
{
|
|
CALL_MEMBER_FN(GFxLoader::GetSingleton(), LoadMovie)(this, &view, swfPath, GFxMovieView::ScaleModeType::kNoBorder, 0.0);
|
|
|
|
flags = IMenu::kFlag_Modal | IMenu::kFlag_PausesGame;
|
|
unk0C = 0xA;
|
|
unk14 = 1;
|
|
|
|
if(!InputEventDispatcher::GetSingleton()->IsGamepadEnabled())
|
|
flags |= IMenu::kFlag_UpdateUsesCursor | IMenu::kFlag_UsesCursor; // Shows the cursor when no gamepad is enabled
|
|
|
|
#ifdef _CUSTOMMENU_ITEMDISPLAY
|
|
flags |= IMenu::kFlag_RendersOffscreenTargets;
|
|
#endif
|
|
}
|
|
#ifdef _CUSTOMMENU_ITEMDISPLAY
|
|
void UpdateItem3D(const FxDelegateArgs & params)
|
|
{
|
|
if(params.menu) {
|
|
UInt32 formId = (UInt32)params.args->GetNumber();
|
|
if(formId) {
|
|
TESForm * form = LookupFormByID(formId);
|
|
if(form) {
|
|
CALL_MEMBER_FN(Inventory3DManager::GetSingleton(), UpdateMagic3D)(form, 0);
|
|
}
|
|
} else {
|
|
CALL_MEMBER_FN(Inventory3DManager::GetSingleton(), Clear3D)();
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
void CustomMenu::Accept(CallbackProcessor * processor)
|
|
{
|
|
GString playSound("PlaySound");
|
|
processor->Process(playSound, PlaySoundCallback);
|
|
|
|
#ifdef _CUSTOMMENU_ITEMDISPLAY
|
|
GString renderItem("UpdateItem3D");
|
|
processor->Process(renderItem, UpdateItem3D);
|
|
#endif
|
|
}
|
|
|
|
|
|
void CustomMenu::Render()
|
|
{
|
|
if(view) {
|
|
view->Render();
|
|
#ifdef _CUSTOMMENU_ITEMDISPLAY
|
|
CALL_MEMBER_FN(Inventory3DManager::GetSingleton(), Render)();
|
|
#endif
|
|
}
|
|
}
|