From 5566c5b00296aaf6bdbb1c1afe2aa8820d523bce Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Mon, 14 Mar 2016 18:55:57 -1000 Subject: [PATCH] More CGuiFrame imps --- Runtime/Audio/dsp.h | 2 +- Runtime/Graphics/CGraphics.cpp | 24 ++- Runtime/Graphics/CGraphics.hpp | 23 ++- Runtime/Graphics/CMoviePlayer.cpp | 24 +-- Runtime/GuiSys/CGuiControllerInfo.hpp | 10 +- Runtime/GuiSys/CGuiFrame.cpp | 205 +++++++++++++++++++++++++- Runtime/GuiSys/CGuiFrame.hpp | 21 ++- Runtime/GuiSys/CGuiFuncParm.hpp | 4 +- Runtime/GuiSys/CGuiLight.cpp | 5 + Runtime/GuiSys/CGuiLight.hpp | 5 + Runtime/GuiSys/CGuiMessage.hpp | 5 +- Runtime/GuiSys/CGuiWidget.hpp | 10 +- Runtime/Input/CFinalInput.hpp | 2 +- Runtime/Particle/CElementGen.hpp | 2 +- 14 files changed, 294 insertions(+), 48 deletions(-) diff --git a/Runtime/Audio/dsp.h b/Runtime/Audio/dsp.h index bbcf2f47b..21c1fb263 100644 --- a/Runtime/Audio/dsp.h +++ b/Runtime/Audio/dsp.h @@ -7,7 +7,7 @@ extern "C" { #include -static inline short DSPSampClamp(int32_t val) +static inline int16_t DSPSampClamp(int32_t val) { if (val < -32768) val = -32768; else if (val > 32767) val = 32767; diff --git a/Runtime/Graphics/CGraphics.cpp b/Runtime/Graphics/CGraphics.cpp index 9ec45f335..a12a444a8 100644 --- a/Runtime/Graphics/CGraphics.cpp +++ b/Runtime/Graphics/CGraphics.cpp @@ -1,4 +1,5 @@ #include "Graphics/CGraphics.hpp" +#include "Graphics/CLight.hpp" #include "zeus/Math.hpp" #undef near @@ -14,8 +15,8 @@ u32 CGraphics::g_NumBreakpointsWaiting = 0; u32 CGraphics::g_FlippingState; bool CGraphics::g_LastFrameUsedAbove = false; bool CGraphics::g_InterruptLastFrameUsedAbove = false; -ERglLight CGraphics::g_LightActive = ERglLight::None; -ERglLight CGraphics::g_LightsWereOn = ERglLight::None; +ERglLightBits CGraphics::g_LightActive = ERglLightBits::None; +ERglLightBits CGraphics::g_LightsWereOn = ERglLightBits::None; zeus::CTransform CGraphics::g_GXModelView; zeus::CTransform CGraphics::g_GXModelMatrix; zeus::CTransform CGraphics::g_ViewMatrix; @@ -30,28 +31,39 @@ bool CGraphics::g_IsGXModelMatrixIdentity; void CGraphics::DisableAllLights() { g_NumLightsActive = 0; - g_LightActive = ERglLight::None; + g_LightActive = ERglLightBits::None; // TODO: turn lights off for real } +void CGraphics::LoadLight(ERglLight light, const CLight& info) +{ + // TODO: load light for real +} + void CGraphics::EnableLight(ERglLight light) { - if ((light & g_LightActive) == ERglLight::None) + ERglLightBits lightBit = ERglLightBits(1 << int(light)); + if ((lightBit & g_LightActive) == ERglLightBits::None) { - g_LightActive |= light; + g_LightActive |= lightBit; ++g_NumLightsActive; // TODO: turn light on for real } g_LightsWereOn = g_LightActive; } -void CGraphics::SetLightState(ERglLight lightState) +void CGraphics::SetLightState(ERglLightBits lightState) { // TODO: set state for real g_LightActive = lightState; g_NumLightsActive = zeus::PopCount(lightState); } +void CGraphics::SetAmbientColor(const zeus::CColor& col) +{ + // TODO: set for real +} + void CGraphics::SetDepthWriteMode(bool test, ERglEnum comp, bool write) { diff --git a/Runtime/Graphics/CGraphics.hpp b/Runtime/Graphics/CGraphics.hpp index 9e08a36e0..2291a31c3 100644 --- a/Runtime/Graphics/CGraphics.hpp +++ b/Runtime/Graphics/CGraphics.hpp @@ -10,8 +10,21 @@ namespace urde { +class CLight; enum class ERglLight : u8 +{ + Zero = 0, + One, + Two, + Three, + Four, + Five, + Six, + Seven +}; + +enum class ERglLightBits : u8 { None = 0, Zero = 1, @@ -23,7 +36,7 @@ enum class ERglLight : u8 Six = 1 << 6, Seven = 1 << 7 }; -ENABLE_BITWISE_ENUM(ERglLight) +ENABLE_BITWISE_ENUM(ERglLightBits) enum class ERglEnum { @@ -154,8 +167,8 @@ public: static u32 g_FlippingState; static bool g_LastFrameUsedAbove; static bool g_InterruptLastFrameUsedAbove; - static ERglLight g_LightActive; - static ERglLight g_LightsWereOn; + static ERglLightBits g_LightActive; + static ERglLightBits g_LightsWereOn; static zeus::CTransform g_GXModelView; static zeus::CTransform g_GXModelMatrix; static zeus::CTransform g_ViewMatrix; @@ -168,8 +181,10 @@ public: static bool g_IsGXModelMatrixIdentity; static void DisableAllLights(); + static void LoadLight(ERglLight light, const CLight& info); static void EnableLight(ERglLight light); - static void SetLightState(ERglLight lightState); + static void SetLightState(ERglLightBits lightState); + static void SetAmbientColor(const zeus::CColor& col); static void SetDepthWriteMode(bool test, ERglEnum comp, bool write); static void SetBlendMode(ERglBlendMode, ERglBlendFactor, ERglBlendFactor, ERglLogicOp); static void SetCullMode(ERglCullMode); diff --git a/Runtime/Graphics/CMoviePlayer.cpp b/Runtime/Graphics/CMoviePlayer.cpp index 725030a65..4a6fdf4d4 100644 --- a/Runtime/Graphics/CMoviePlayer.cpp +++ b/Runtime/Graphics/CMoviePlayer.cpp @@ -547,9 +547,9 @@ void CMoviePlayer::MixAudio(s16* out, const s16* in, u32 samples) for (u32 i=0 ; iaudioBuf[(i+tex->playedSamples)*2]) * 0x50F4 / 0x8000)); + s32(tex->audioBuf[(i+tex->playedSamples)*2]) * 0x50F4 / 0x8000); out[1] = DSPSampClamp(in[1] + - s16(s32(tex->audioBuf[(i+tex->playedSamples)*2+1]) * 0x50F4 / 0x8000)); + s32(tex->audioBuf[(i+tex->playedSamples)*2+1]) * 0x50F4 / 0x8000); } } else @@ -557,9 +557,9 @@ void CMoviePlayer::MixAudio(s16* out, const s16* in, u32 samples) for (u32 i=0 ; iaudioBuf[(i+tex->playedSamples)*2]) * 0x50F4 / 0x8000)); + s32(tex->audioBuf[(i+tex->playedSamples)*2]) * 0x50F4 / 0x8000); out[1] = DSPSampClamp( - s16(s32(tex->audioBuf[(i+tex->playedSamples)*2+1]) * 0x50F4 / 0x8000)); + s32(tex->audioBuf[(i+tex->playedSamples)*2+1]) * 0x50F4 / 0x8000); } } tex->playedSamples += thisSamples; @@ -594,13 +594,13 @@ void CMoviePlayer::MixStaticAudio(s16* out, const s16* in, u32 samples) for (u32 i=0 ; i> 4 & 0xf, &StaticStateLeft) * StaticVolumeAtten / 0x8000))); + s32(g721_decoder(thisOffsetLeft[0] >> 4 & 0xf, &StaticStateLeft) * StaticVolumeAtten / 0x8000)); out[3] = DSPSampClamp(in[3] + - s16(s32(g721_decoder(thisOffsetRight[0] >> 4 & 0xf, &StaticStateRight) * StaticVolumeAtten / 0x8000))); + s32(g721_decoder(thisOffsetRight[0] >> 4 & 0xf, &StaticStateRight) * StaticVolumeAtten / 0x8000)); thisOffsetLeft += 1; thisOffsetRight += 1; out += 4; @@ -612,13 +612,13 @@ void CMoviePlayer::MixStaticAudio(s16* out, const s16* in, u32 samples) for (u32 i=0 ; i> 4 & 0xf, &StaticStateLeft) * StaticVolumeAtten / 0x8000))); + s32(g721_decoder(thisOffsetLeft[0] >> 4 & 0xf, &StaticStateLeft) * StaticVolumeAtten / 0x8000)); out[3] = DSPSampClamp( - s16(s32(g721_decoder(thisOffsetRight[0] >> 4 & 0xf, &StaticStateRight) * StaticVolumeAtten / 0x8000))); + s32(g721_decoder(thisOffsetRight[0] >> 4 & 0xf, &StaticStateRight) * StaticVolumeAtten / 0x8000)); thisOffsetLeft += 1; thisOffsetRight += 1; out += 4; diff --git a/Runtime/GuiSys/CGuiControllerInfo.hpp b/Runtime/GuiSys/CGuiControllerInfo.hpp index aa160e4c2..48045b954 100644 --- a/Runtime/GuiSys/CGuiControllerInfo.hpp +++ b/Runtime/GuiSys/CGuiControllerInfo.hpp @@ -1,17 +1,21 @@ #ifndef __URDE_CGUICONTROLLERINFO_HPP__ #define __URDE_CGUICONTROLLERINFO_HPP__ +#include "RetroTypes.hpp" + namespace urde { -class CGuiControllerInfo +struct CGuiControllerInfo { public: struct CGuiControllerStateInfo { - char cIdx; - char lx, ly, rx, ry; + char cIdx = 0; + char lx = 0, ly = 0, rx = 0, ry = 0; }; + u32 x0_ = 0; + CGuiControllerStateInfo x4_stateInfo; }; } diff --git a/Runtime/GuiSys/CGuiFrame.cpp b/Runtime/GuiSys/CGuiFrame.cpp index aa892e08d..4e5630cf2 100644 --- a/Runtime/GuiSys/CGuiFrame.cpp +++ b/Runtime/GuiSys/CGuiFrame.cpp @@ -4,6 +4,9 @@ #include "CGuiHeadWidget.hpp" #include "CGuiAnimController.hpp" #include "CGuiMessage.hpp" +#include "CGuiLight.hpp" +#include "CGuiCamera.hpp" +#include "Graphics/CGraphics.hpp" #include "Input/CFinalInput.hpp" #include "zeus/CColor.hpp" @@ -12,7 +15,7 @@ namespace urde CGuiFrame::CGuiFrame(TResId id, const std::string& name, CGuiSys& sys, int a, int b, int c) : x4_name(name), x14_id(id), x1c_transitionOpts(EFrameTransitionOptions::Zero), - x3c_guiSys(sys), xb0_a(a), xb4_b(b), xb8_c(c), xbc_24_flag1(false) + x3c_guiSys(sys), xb0_a(a), xb4_b(b), xb8_c(c), xbc_24_loaded(false) { xa0_lights.resize(8); x48_rootWidget.reset(new CGuiWidget( @@ -293,8 +296,8 @@ bool CGuiFrame::SendWidgetMessage(s16 id, for (std::unique_ptr& node : list) { CGuiMessage msg(CGuiMessage::Type(node->GetTrigger().GetTriggerId()), - reinterpret_cast(&state), - reinterpret_cast(&csInfo)); + reinterpret_cast(&state), + reinterpret_cast(&csInfo)); if (!widget->Message(msg)) return false; } @@ -345,13 +348,66 @@ void CGuiFrame::SortDrawOrder() }); } +void CGuiFrame::EnableLights(u32 lights) const +{ + CGraphics::DisableAllLights(); + zeus::CColor accumColor(zeus::CColor::skBlack); + ERglLight lightId = ERglLight::Zero; + for (CGuiLight* light : xa0_lights) + { + // accumulate color + CGraphics::LoadLight(lightId, light->BuildLight()); + CGraphics::EnableLight(lightId); + ++reinterpret_cast&>(lightId); + } + if (xa0_lights.empty()) + CGraphics::SetAmbientColor(zeus::CColor::skWhite); + else + CGraphics::SetAmbientColor(accumColor); +} + +void CGuiFrame::DisableLights() const +{ + CGraphics::DisableAllLights(); +} + +void CGuiFrame::RemoveLight(CGuiLight* light) +{ + xa0_lights[light->GetLoadedIdx()] = nullptr; +} + +void CGuiFrame::AddLight(CGuiLight* light) +{ + xa0_lights[light->GetLoadedIdx()] = light; +} + +bool CGuiFrame::GetIsFinishedLoading() const +{ + if (xbc_24_loaded) + return true; + for (const CGuiWidget* widget : x90_widgets) + { + if (widget->GetIsFinishedLoading()) + continue; + return false; + } + ((CGuiFrame*)this)->xbc_24_loaded = true; + return true; +} + +void CGuiFrame::Touch() const +{ + for (const CGuiWidget* widget : x90_widgets) + widget->Touch(); +} + void CGuiFrame::ProcessControllerInput(const CFinalInput& input) { - if (x18_ & 0x4 && input.controllerIdx() == 0) + if (x18_ & 0x4 && input.ControllerIdx() == 0) { CGuiPhysicalMsg::PhysicalMap state; CGuiControllerInfo::CGuiControllerStateInfo stateInfo; - stateInfo.cIdx = input.controllerIdx(); + stateInfo.cIdx = input.ControllerIdx(); InterpretGUIControllerState(input, state, stateInfo.lx, stateInfo.ly, stateInfo.rx, stateInfo.ry); float eventTime = std::chrono::duration_cast( std::chrono::steady_clock::now() - x3c_guiSys.x40_constructTime).count() / 1000.f; @@ -360,16 +416,16 @@ void CGuiFrame::ProcessControllerInput(const CFinalInput& input) { auto search = x3c_guiSys.GetRepeatMap().find(newPair.first); if (search != x3c_guiSys.GetRepeatMap().end()) - search->second.SetActive(input.controllerIdx(), eventTime); + search->second.SetActive(input.ControllerIdx(), eventTime); } for (std::pair& pair : x3c_guiSys.GetRepeatMap()) { - pair.second.AddAutoEvent(input.controllerIdx(), state, eventTime); + pair.second.AddAutoEvent(input.ControllerIdx(), state, eventTime); } CGuiPhysicalMsg msg(state); - SetControllerStatus(input.controllerIdx(), true); + SetControllerStatus(input.ControllerIdx(), true); for (std::pair>& outer : x7c_messageMap) { @@ -390,6 +446,139 @@ void CGuiFrame::ProcessControllerInput(const CFinalInput& input) } } +bool CGuiFrame::Update(float dt) +{ + if (x34_ != EFrameStates::Four) + return false; + if (x18_ & 2) + { + EGuiAnimBehListID listId = EGuiAnimBehListID::NegOne; + bool something = true; + x44_headWidget->InitializeRGBAFactor(); + x44_headWidget->Update(dt); + x44_headWidget->RecalculateAllRGBA(); + switch (x34_) + { + case EFrameStates::One: + if (!xbd_flag2) + { + CGuiControllerInfo cInfo; + x44_headWidget->BroadcastMessage(0, &cInfo); + xbd_flag2 = true; + } + break; + case EFrameStates::Three: + listId = EGuiAnimBehListID::One; + break; + default: + break; + } + + if (listId != EGuiAnimBehListID::NegOne) + x44_headWidget->IsAllAnimsDone(listId, something, ETraversalMode::Zero); + + if (something) + { + switch (x34_) + { + case EFrameStates::One: + { + x34_ = x38_; + x44_headWidget->SetAnimUpdateState(EGuiAnimBehListID::Zero, false, ETraversalMode::NonRecursive); + x44_headWidget->InitializeAnimControllers(EGuiAnimBehListID::Two, 0.f, false, + EGuiAnimInitMode::Five, ETraversalMode::NonRecursive); + CGuiWidget* camSib = static_cast(x4c_camera->GetNextSibling()); + if (camSib) + { + camSib->SetAnimUpdateState(EGuiAnimBehListID::Zero, false, ETraversalMode::Zero); + camSib->InitializeAnimControllers(EGuiAnimBehListID::Two, 0.f, false, + EGuiAnimInitMode::Five, ETraversalMode::Zero); + } + xbd_flag2 = false; + break; + } + case EFrameStates::Three: + { + CGuiControllerInfo cInfo; + x44_headWidget->BroadcastMessage(1, &cInfo); + ClearAllMessageMap(); + x18_ &= ~0x3; + x44_headWidget->ResetAllAnimUpdateState(); + xbd_flag2 = false; + break; + } + default: + break; + } + } + + return x34_ != EFrameStates::Zero; + } + + return false; +} + +void CGuiFrame::Draw(const CGuiWidgetDrawParms& parms) const +{ + if (x18_) + { + CGraphics::SetCullMode(ERglCullMode::None); + CGraphics::SetAmbientColor(zeus::CColor::skWhite); + DisableLights(); + x4c_camera->Draw(parms); + // Set one-stage modulate + CGraphics::SetBlendMode(ERglBlendMode::Blend, ERglBlendFactor::SrcAlpha, + ERglBlendFactor::InvSrcAlpha, ERglLogicOp::Clear); + if (x50_background) + x50_background->Draw(parms); + + for (const CGuiWidget* widget : x90_widgets) + if (widget->GetIsVisible()) + widget->Draw(parms); + } + CGraphics::SetCullMode(ERglCullMode::Front); +} + +void CGuiFrame::Stop(const CGuiFrameTransitionOptions& transOpts, EFrameStates states, bool flag) +{ + x18_ &= 0xFFFFFFFB; + x38_ = states; + if (flag) + x34_ = x38_; + else + { + x44_headWidget->InitializeAnimControllers(EGuiAnimBehListID::One, transOpts.xc_, true, + EGuiAnimInitMode::Two, ETraversalMode::NonRecursive); + CGuiWidget* camSib = static_cast(x4c_camera->GetNextSibling()); + if (camSib) + { + camSib->InitializeAnimControllers(EGuiAnimBehListID::One, transOpts.xc_, true, + EGuiAnimInitMode::Two, ETraversalMode::Zero); + } + } +} + +void CGuiFrame::Run(CGuiFrame* frame, const CGuiFrameTransitionOptions& transOpts, + EFrameStates states, bool flag) +{ + ResetControllerStatus(); + x34_ = EFrameStates::One; + x38_ = EFrameStates::Two; + float len = 0.f; + x4c_camera->GetBranchAnimLen(EGuiAnimBehListID::Zero, len, ETraversalMode::NonRecursive); + len += transOpts.xc_ + transOpts.x10_ + transOpts.x14_; + x44_headWidget->InitializeAnimControllers(EGuiAnimBehListID::Zero, len, true, + EGuiAnimInitMode::One, ETraversalMode::NonRecursive); + CGuiWidget* camSib = static_cast(x4c_camera->GetNextSibling()); + if (camSib) + { + camSib->InitializeAnimControllers(EGuiAnimBehListID::Zero, len, true, + EGuiAnimInitMode::One, ETraversalMode::Zero); + } + x18_ |= 0x7; + x44_headWidget->RegisterEventHandler(ETraversalMode::Zero); +} + void CGuiFrame::Initialize() { SortDrawOrder(); diff --git a/Runtime/GuiSys/CGuiFrame.hpp b/Runtime/GuiSys/CGuiFrame.hpp index 971ddef80..b47d19267 100644 --- a/Runtime/GuiSys/CGuiFrame.hpp +++ b/Runtime/GuiSys/CGuiFrame.hpp @@ -22,12 +22,14 @@ enum class EFrameTransitionOptions Zero }; -class CGuiFrameTransitionOptions +struct CGuiFrameTransitionOptions { EFrameTransitionOptions x0_opts; bool x4_ = true; float x8_ = 1.f; - zeus::CVector3f xc_; + float xc_ = 0.f; + float x10_ = 0.f; + float x14_ = 0.f; public: CGuiFrameTransitionOptions(EFrameTransitionOptions opts) : x0_opts(opts) {} @@ -47,6 +49,11 @@ class CGuiFrame public: enum class EFrameStates { + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4 }; private: bool x0_controllerStatus[4] = {}; @@ -54,8 +61,8 @@ private: TResId x14_id; u32 x18_ = 0; CGuiFrameTransitionOptions x1c_transitionOpts; - u32 x34_ = 0; - u32 x38_ = 0; + EFrameStates x34_ = EFrameStates::Zero; + EFrameStates x38_ = EFrameStates::Zero; CGuiSys& x3c_guiSys; u32 x40_ = 0; CGuiHeadWidget* x44_headWidget = nullptr; @@ -73,7 +80,7 @@ private: int xb0_a; int xb4_b; int xb8_c; - bool xbc_24_flag1 : 1; + bool xbc_24_loaded : 1; bool xbd_flag2 = false; static void InterpretGUIControllerState(const CFinalInput& input, @@ -103,7 +110,7 @@ public: void ClearMessageMap(const CGuiLogicalEventTrigger* trigger, s16 id); void AddMessageMap(const CGuiLogicalEventTrigger* trigger, s16 id); void SortDrawOrder(); - void EnableLights(u32) const; + void EnableLights(u32 lights) const; void DisableLights() const; void RemoveLight(CGuiLight* light); void AddLight(CGuiLight* light); @@ -111,7 +118,7 @@ public: void Touch() const; void ProcessControllerInput(const CFinalInput& input); - void Update(float dt); + bool Update(float dt); void Draw(const CGuiWidgetDrawParms& parms) const; void Stop(const CGuiFrameTransitionOptions&, EFrameStates, bool); void Run(CGuiFrame*, const CGuiFrameTransitionOptions&, EFrameStates, bool); diff --git a/Runtime/GuiSys/CGuiFuncParm.hpp b/Runtime/GuiSys/CGuiFuncParm.hpp index ae07915c4..d3b3cb47e 100644 --- a/Runtime/GuiSys/CGuiFuncParm.hpp +++ b/Runtime/GuiSys/CGuiFuncParm.hpp @@ -22,14 +22,14 @@ private: Type x0_type = Type::Null; union { - uintptr_t x4_int; + intptr_t x4_int; float x4_float; void* x4_ptr = nullptr; }; public: CGuiFuncParm() = default; - CGuiFuncParm(uintptr_t arg) : x0_type(Type::Int), x4_int(arg) {} + CGuiFuncParm(intptr_t arg) : x0_type(Type::Int), x4_int(arg) {} CGuiFuncParm(float arg) : x0_type(Type::Float), x4_float(arg) {} CGuiFuncParm(void* arg) : x0_type(Type::IntrusivePointer), x4_ptr(arg) {} ~CGuiFuncParm() diff --git a/Runtime/GuiSys/CGuiLight.cpp b/Runtime/GuiSys/CGuiLight.cpp index c9658a62f..4d9ee1d77 100644 --- a/Runtime/GuiSys/CGuiLight.cpp +++ b/Runtime/GuiSys/CGuiLight.cpp @@ -10,6 +10,11 @@ CGuiLight::CGuiLight(const CGuiWidgetParms& parms, const CLight& light) { } +CLight CGuiLight::BuildLight() const +{ + return {}; +} + CGuiLight* CGuiLight::Create(CGuiFrame* frame, CInputStream& in, bool flag) { CGuiWidgetParms parms = ReadWidgetHeader(frame, in, flag); diff --git a/Runtime/GuiSys/CGuiLight.hpp b/Runtime/GuiSys/CGuiLight.hpp index 18cf39b2d..c576aa40a 100644 --- a/Runtime/GuiSys/CGuiLight.hpp +++ b/Runtime/GuiSys/CGuiLight.hpp @@ -9,8 +9,13 @@ namespace urde class CGuiLight : public CGuiWidget { + u32 x118_loadedIdx = 0; public: CGuiLight(const CGuiWidgetParms& parms, const CLight& light); + + CLight BuildLight() const; + u32 GetLoadedIdx() const {return x118_loadedIdx;} + static CGuiLight* Create(CGuiFrame* frame, CInputStream& in, bool); }; diff --git a/Runtime/GuiSys/CGuiMessage.hpp b/Runtime/GuiSys/CGuiMessage.hpp index 69ef58dca..f1f71eea6 100644 --- a/Runtime/GuiSys/CGuiMessage.hpp +++ b/Runtime/GuiSys/CGuiMessage.hpp @@ -20,9 +20,10 @@ private: CGuiFuncParm x8_a; CGuiFuncParm x10_b; public: - CGuiMessage(Type type, uintptr_t a, uintptr_t b) + CGuiMessage(Type type, intptr_t a, intptr_t b) : x4_type(type), x8_a(a), x10_b(b) {} - uintptr_t GetInt(u32 val) const + Type GetType() const {return x4_type;} + intptr_t GetInt(u32 val) const { if (val == 0x60EF4DB0) return x8_a.x4_int; diff --git a/Runtime/GuiSys/CGuiWidget.hpp b/Runtime/GuiSys/CGuiWidget.hpp index 022756051..f715d7ebe 100644 --- a/Runtime/GuiSys/CGuiWidget.hpp +++ b/Runtime/GuiSys/CGuiWidget.hpp @@ -16,16 +16,24 @@ class CGuiLogicalEventTrigger; enum class EGuiAnimBehListID { + NegOne = -1, + Zero = 0, + One = 1, + Two = 2 }; enum class ETraversalMode { + Zero = 0, Recursive = 1, NonRecursive = 2 }; enum class EGuiAnimInitMode { + One = 1, + Two = 2, + Five = 5 }; enum class EGuiTextureClampModeHorz @@ -109,7 +117,7 @@ public: virtual void GetKFAMAssets() const; virtual void Initialize(); virtual void Touch() const; - virtual void GetIsVisible() const; + virtual bool GetIsVisible() const; virtual bool GetIsActive() const; virtual void TextSupport(); virtual void GetTextSupport() const; diff --git a/Runtime/Input/CFinalInput.hpp b/Runtime/Input/CFinalInput.hpp index 720c8a91c..446739682 100644 --- a/Runtime/Input/CFinalInput.hpp +++ b/Runtime/Input/CFinalInput.hpp @@ -74,7 +74,7 @@ public: CFinalInput& operator|=(const CFinalInput& other); bool operator==(const CFinalInput& other) { return memcmp(this, &other, sizeof(CFinalInput)) == 0; } - u32 controllerIdx() const {return x4_controllerIdx;} + u32 ControllerIdx() const {return x4_controllerIdx;} bool PStart() const {return x2e_b31_PStart;} bool PR() const {return x2e_b26_PR;} diff --git a/Runtime/Particle/CElementGen.hpp b/Runtime/Particle/CElementGen.hpp index a33876591..a7939130b 100644 --- a/Runtime/Particle/CElementGen.hpp +++ b/Runtime/Particle/CElementGen.hpp @@ -121,7 +121,7 @@ private: bool x225_29_modelsUseLights = false; bool x226_enableOPTS; int x228_MBSP = 0; int m_maxMBSP = 0; - ERglLight x22c_backupLightActive = ERglLight::None; + ERglLightBits x22c_backupLightActive = ERglLightBits::None; CRandom16 x230_randState; std::vector> x234_activePartChildren; int x244_CSSD = 0;