mirror of https://github.com/AxioDL/metaforce.git
More GuiSys stubs
This commit is contained in:
parent
9726682939
commit
1908ac111b
|
@ -11,7 +11,6 @@
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
class IObjectStore;
|
class IObjectStore;
|
||||||
class IObj;
|
|
||||||
|
|
||||||
/** Shared data-structure for CToken references, analogous to std::shared_ptr */
|
/** Shared data-structure for CToken references, analogous to std::shared_ptr */
|
||||||
class CObjectReference
|
class CObjectReference
|
||||||
|
@ -86,7 +85,7 @@ public:
|
||||||
/** Pointer-synchronized object-destructor, another building Lock cycle may be performed after */
|
/** Pointer-synchronized object-destructor, another building Lock cycle may be performed after */
|
||||||
void Unload()
|
void Unload()
|
||||||
{
|
{
|
||||||
delete x10_object;
|
std::default_delete<IObj>()(x10_object);
|
||||||
x10_object = nullptr;
|
x10_object = nullptr;
|
||||||
x3_loading = false;
|
x3_loading = false;
|
||||||
}
|
}
|
||||||
|
@ -109,7 +108,7 @@ public:
|
||||||
~CObjectReference()
|
~CObjectReference()
|
||||||
{
|
{
|
||||||
if (x10_object)
|
if (x10_object)
|
||||||
delete x10_object;
|
std::default_delete<IObj>()(x10_object);
|
||||||
else if (x3_loading)
|
else if (x3_loading)
|
||||||
xC_objectStore->GetFactory().CancelBuild(x4_objTag);
|
xC_objectStore->GetFactory().CancelBuild(x4_objTag);
|
||||||
}
|
}
|
||||||
|
@ -145,7 +144,7 @@ public:
|
||||||
{
|
{
|
||||||
if (x0_objRef && x0_objRef->RemoveReference() == 0)
|
if (x0_objRef && x0_objRef->RemoveReference() == 0)
|
||||||
{
|
{
|
||||||
delete x0_objRef;
|
std::default_delete<CObjectReference>()(x0_objRef);
|
||||||
x0_objRef = nullptr;
|
x0_objRef = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -183,7 +182,8 @@ public:
|
||||||
CToken(const CToken& other)
|
CToken(const CToken& other)
|
||||||
: x0_objRef(other.x0_objRef)
|
: x0_objRef(other.x0_objRef)
|
||||||
{
|
{
|
||||||
++x0_objRef->x0_refCount;
|
if (x0_objRef)
|
||||||
|
++x0_objRef->x0_refCount;
|
||||||
}
|
}
|
||||||
CToken(CToken&& other)
|
CToken(CToken&& other)
|
||||||
: x0_objRef(other.x0_objRef), x4_lockHeld(other.x4_lockHeld)
|
: x0_objRef(other.x0_objRef), x4_lockHeld(other.x4_lockHeld)
|
||||||
|
@ -230,8 +230,7 @@ public:
|
||||||
TToken() = default;
|
TToken() = default;
|
||||||
TToken(const CToken& other) : CToken(other) {}
|
TToken(const CToken& other) : CToken(other) {}
|
||||||
TToken(CToken&& other) : CToken(std::move(other)) {}
|
TToken(CToken&& other) : CToken(std::move(other)) {}
|
||||||
TToken(T* obj)
|
TToken(T* obj) : CToken(GetIObjObjectFor(std::unique_ptr<T>(obj))) {}
|
||||||
: CToken(GetIObjObjectFor(std::unique_ptr<T>(obj))) {}
|
|
||||||
TToken& operator=(T* obj) {*this = CToken(GetIObjObjectFor(obj)); return this;}
|
TToken& operator=(T* obj) {*this = CToken(GetIObjObjectFor(obj)); return this;}
|
||||||
T* GetObj()
|
T* GetObj()
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include "CAuiMeter.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef bool(CAuiMeter::*FMAF)(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
static std::unordered_map<u32, FMAF> WidgetFnMap;
|
||||||
|
|
||||||
|
void CAuiMeter::LoadWidgetFnMap()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -8,6 +8,8 @@ namespace urde
|
||||||
|
|
||||||
class CAuiMeter : public CGuiCompoundWidget
|
class CAuiMeter : public CGuiCompoundWidget
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
static void LoadWidgetFnMap();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef __URDE_CDRAWSTRINGOPTIONS_HPP__
|
||||||
|
#define __URDE_CDRAWSTRINGOPTIONS_HPP__
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include "RetroTypes.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
class CDrawStringOptions
|
||||||
|
{
|
||||||
|
u32 x0_ = 0;
|
||||||
|
std::vector<u32> x4_vec;
|
||||||
|
public:
|
||||||
|
CDrawStringOptions()
|
||||||
|
{
|
||||||
|
x4_vec.resize(16);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CDRAWSTRINGOPTIONS_HPP__
|
|
@ -4,6 +4,52 @@
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
|
||||||
|
enum class EPhysicalControllerID
|
||||||
|
{
|
||||||
|
Seventeen = 17,
|
||||||
|
Eighteen = 18,
|
||||||
|
Nineteen = 19,
|
||||||
|
Twenty = 20,
|
||||||
|
TwentyOne = 21,
|
||||||
|
TwentyTwo = 22,
|
||||||
|
TwentyThree = 23,
|
||||||
|
TwentyFour = 24,
|
||||||
|
ThirtyThree = 33,
|
||||||
|
ThirtyFour = 34,
|
||||||
|
ThirtyFive = 35,
|
||||||
|
ThirtySix = 36,
|
||||||
|
ThirtySeven = 37,
|
||||||
|
ThirtyEight = 38,
|
||||||
|
ThirtyNine = 39,
|
||||||
|
Forty = 40,
|
||||||
|
FortyOne = 41,
|
||||||
|
FortyTwo = 42,
|
||||||
|
FortyThree = 43,
|
||||||
|
FortyFour = 44,
|
||||||
|
FortyFive = 45,
|
||||||
|
FortySix = 46,
|
||||||
|
FortySeven = 47,
|
||||||
|
FortyEight = 48,
|
||||||
|
TwentyFive = 25,
|
||||||
|
TwentySix = 26,
|
||||||
|
TwentySeven = 27,
|
||||||
|
TwentyEight = 28,
|
||||||
|
TwentyNine = 29,
|
||||||
|
Thirty = 30,
|
||||||
|
ThirtyOne = 31,
|
||||||
|
ThirtyTwo = 32
|
||||||
|
};
|
||||||
|
|
||||||
|
class CGuiAutoRepeatData
|
||||||
|
{
|
||||||
|
EPhysicalControllerID x0_a;
|
||||||
|
EPhysicalControllerID x4_b;
|
||||||
|
float x8_[8] = {0.f, 0.f, 0.f, 0.f, 0.2f, 0.2f, 0.2f, 0.2f};
|
||||||
|
bool x28_[8] = {};
|
||||||
|
public:
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID a, EPhysicalControllerID b)
|
||||||
|
: x0_a(a), x4_b(b) {}
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "CGuiGroup.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
void CGuiGroup::LoadWidgetFnMap()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef __URDE_CGUIGROUP_HPP__
|
||||||
|
#define __URDE_CGUIGROUP_HPP__
|
||||||
|
|
||||||
|
#include "CGuiCompoundWidget.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
class CGuiGroup : public CGuiCompoundWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void LoadWidgetFnMap();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CGUIGROUP_HPP__
|
|
@ -0,0 +1,18 @@
|
||||||
|
#include "CGuiMenuRadial.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef bool(CGuiMenuRadial::*FMAF)(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
static std::unordered_map<u32, FMAF> WidgetFnMap;
|
||||||
|
|
||||||
|
void CGuiMenuRadial::LoadWidgetFnMap()
|
||||||
|
{
|
||||||
|
WidgetFnMap.emplace(std::make_pair(34, &CGuiMenuRadial::MAF_SelectWithStick));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiMenuRadial::MAF_SelectWithStick(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef __URDE_CGUIMENURADIAL_HPP__
|
||||||
|
#define __URDE_CGUIMENURADIAL_HPP__
|
||||||
|
|
||||||
|
#include "CGuiTableGroup.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
class CGuiMenuRadial : public CGuiTableGroup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void LoadWidgetFnMap();
|
||||||
|
|
||||||
|
bool MAF_SelectWithStick(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CGUIMENURADIAL_HPP__
|
|
@ -4,6 +4,12 @@
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
|
||||||
|
CGuiObject::~CGuiObject()
|
||||||
|
{
|
||||||
|
delete x74_child;
|
||||||
|
delete x78_nextSibling;
|
||||||
|
}
|
||||||
|
|
||||||
void CGuiObject::Update(float dt)
|
void CGuiObject::Update(float dt)
|
||||||
{
|
{
|
||||||
if (x74_child)
|
if (x74_child)
|
||||||
|
@ -31,18 +37,24 @@ void CGuiObject::MoveInWorld(const zeus::CVector3f& vec)
|
||||||
|
|
||||||
void CGuiObject::RotateReset()
|
void CGuiObject::RotateReset()
|
||||||
{
|
{
|
||||||
|
x4_localXF.m_basis = zeus::CMatrix3f::skIdentityMatrix3f;
|
||||||
|
Reorthogonalize();
|
||||||
|
RecalculateTransforms();
|
||||||
}
|
}
|
||||||
|
|
||||||
zeus::CVector3f CGuiObject::RotateW2O(const zeus::CVector3f& vec) const
|
zeus::CVector3f CGuiObject::RotateW2O(const zeus::CVector3f& vec) const
|
||||||
{
|
{
|
||||||
|
return x34_worldXF.transposeRotate(vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
zeus::CVector3f CGuiObject::RotateO2P(const zeus::CVector3f& vec) const
|
zeus::CVector3f CGuiObject::RotateO2P(const zeus::CVector3f& vec) const
|
||||||
{
|
{
|
||||||
|
return x4_localXF.rotate(vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
zeus::CVector3f CGuiObject::RotateTranslateW2O(const zeus::CVector3f& vec) const
|
zeus::CVector3f CGuiObject::RotateTranslateW2O(const zeus::CVector3f& vec) const
|
||||||
{
|
{
|
||||||
|
return x34_worldXF.transposeRotate(vec - x34_worldXF.m_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGuiObject::MultiplyO2P(const zeus::CTransform& xf)
|
void CGuiObject::MultiplyO2P(const zeus::CTransform& xf)
|
||||||
|
@ -54,7 +66,7 @@ void CGuiObject::MultiplyO2P(const zeus::CTransform& xf)
|
||||||
RecalculateTransforms();
|
RecalculateTransforms();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGuiObject::AddChildObject(CGuiObject* obj, bool calcChildWorld, bool atEnd)
|
void CGuiObject::AddChildObject(CGuiObject* obj, bool makeWorldLocal, bool atEnd)
|
||||||
{
|
{
|
||||||
obj->x70_parent = this;
|
obj->x70_parent = this;
|
||||||
|
|
||||||
|
@ -76,9 +88,15 @@ void CGuiObject::AddChildObject(CGuiObject* obj, bool calcChildWorld, bool atEnd
|
||||||
x74_child = obj;
|
x74_child = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (calcChildWorld)
|
if (makeWorldLocal)
|
||||||
{
|
{
|
||||||
// TODO: do
|
zeus::CVector3f negParentWorld = -x34_worldXF.m_origin;
|
||||||
|
zeus::CMatrix3f basisMat(
|
||||||
|
x34_worldXF.m_basis[0] / x34_worldXF.m_basis[0].magnitude(),
|
||||||
|
x34_worldXF.m_basis[1] / x34_worldXF.m_basis[1].magnitude(),
|
||||||
|
x34_worldXF.m_basis[2] / x34_worldXF.m_basis[2].magnitude());
|
||||||
|
zeus::CVector3f xfWorld = basisMat * negParentWorld;
|
||||||
|
obj->x4_localXF = zeus::CTransform(basisMat, xfWorld) * obj->x34_worldXF;
|
||||||
}
|
}
|
||||||
|
|
||||||
RecalculateTransforms();
|
RecalculateTransforms();
|
||||||
|
|
|
@ -8,6 +8,9 @@
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
class CGuiWidgetDrawParms;
|
class CGuiWidgetDrawParms;
|
||||||
|
class CGuiMessage;
|
||||||
|
class CGuiFunctionDef;
|
||||||
|
class CGuiControllerInfo;
|
||||||
|
|
||||||
class CGuiObject
|
class CGuiObject
|
||||||
{
|
{
|
||||||
|
@ -18,9 +21,10 @@ class CGuiObject
|
||||||
CGuiObject* x74_child = nullptr;
|
CGuiObject* x74_child = nullptr;
|
||||||
CGuiObject* x78_nextSibling = nullptr;
|
CGuiObject* x78_nextSibling = nullptr;
|
||||||
public:
|
public:
|
||||||
virtual ~CGuiObject() = default;
|
virtual ~CGuiObject();
|
||||||
virtual void Update(float dt);
|
virtual void Update(float dt);
|
||||||
virtual void Draw(const CGuiWidgetDrawParms& parms) const;
|
virtual void Draw(const CGuiWidgetDrawParms& parms) const;
|
||||||
|
virtual void Message(const CGuiMessage& msg)=0;
|
||||||
|
|
||||||
void MoveInWorld(const zeus::CVector3f& vec);
|
void MoveInWorld(const zeus::CVector3f& vec);
|
||||||
const zeus::CVector3f& GetLocalPosition() const {return x4_localXF.m_origin;}
|
const zeus::CVector3f& GetLocalPosition() const {return x4_localXF.m_origin;}
|
||||||
|
@ -31,7 +35,7 @@ public:
|
||||||
zeus::CVector3f RotateO2P(const zeus::CVector3f& vec) const;
|
zeus::CVector3f RotateO2P(const zeus::CVector3f& vec) const;
|
||||||
zeus::CVector3f RotateTranslateW2O(const zeus::CVector3f& vec) const;
|
zeus::CVector3f RotateTranslateW2O(const zeus::CVector3f& vec) const;
|
||||||
void MultiplyO2P(const zeus::CTransform& xf);
|
void MultiplyO2P(const zeus::CTransform& xf);
|
||||||
void AddChildObject(CGuiObject* obj, bool, bool);
|
void AddChildObject(CGuiObject* obj, bool makeWorldLocal, bool atEnd);
|
||||||
CGuiObject* RemoveChildObject(CGuiObject* obj, bool makeWorldLocal);
|
CGuiObject* RemoveChildObject(CGuiObject* obj, bool makeWorldLocal);
|
||||||
CGuiObject* GetParent() {return x70_parent;}
|
CGuiObject* GetParent() {return x70_parent;}
|
||||||
CGuiObject* GetChildObject() {return x74_child;}
|
CGuiObject* GetChildObject() {return x74_child;}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "CGuiSliderGroup.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef bool(CGuiSliderGroup::*FMAF)(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
static std::unordered_map<u32, FMAF> WidgetFnMap;
|
||||||
|
|
||||||
|
void CGuiSliderGroup::LoadWidgetFnMap()
|
||||||
|
{
|
||||||
|
WidgetFnMap.emplace(std::make_pair(18, &CGuiSliderGroup::MAF_Increment));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(19, &CGuiSliderGroup::MAF_Decrement));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiSliderGroup::MAF_Increment(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiSliderGroup::MAF_Decrement(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,19 @@
|
||||||
#ifndef __URDE_CGUISLIDERGROUP_HPP__
|
#ifndef __URDE_CGUISLIDERGROUP_HPP__
|
||||||
#define __URDE_CGUISLIDERGROUP_HPP__
|
#define __URDE_CGUISLIDERGROUP_HPP__
|
||||||
|
|
||||||
#include "CGuiWidget.hpp"
|
#include "CGuiCompoundWidget.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class CGuiSliderGroup : public CGuiCompoundWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void LoadWidgetFnMap();
|
||||||
|
|
||||||
|
bool MAF_Increment(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_Decrement(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
#include "CGuiSys.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
void CGuiSys::AddFactories(EUsageMode /* mode */)
|
||||||
|
{
|
||||||
|
x8_factoryMgr.m_factories.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGuiSys::LoadWidgetFunctions()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CGuiSys::CGuiSys(IFactory& resFactory, CSimplePool& resStore, EUsageMode mode)
|
||||||
|
: x0_resFactory(resFactory), x4_resStore(resStore), x2c_mode(mode),
|
||||||
|
x38_frameFactoryParams(new TObjOwnerParam<CGuiResFrameData>(CGuiResFrameData(*this))),
|
||||||
|
x40_constructTime(std::chrono::steady_clock::now())
|
||||||
|
{
|
||||||
|
AddFactories(mode);
|
||||||
|
LoadWidgetFunctions();
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::Seventeen,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::Seventeen, EPhysicalControllerID::Eighteen)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::Nineteen,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::Nineteen, EPhysicalControllerID::Twenty)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::TwentyOne,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::TwentyOne, EPhysicalControllerID::TwentyTwo)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::TwentyThree,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::TwentyThree, EPhysicalControllerID::TwentyFour)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::ThirtyFive,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::ThirtyFive, EPhysicalControllerID::ThirtySix)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::ThirtySeven,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::ThirtySeven, EPhysicalControllerID::ThirtyEight)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::ThirtyNine,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::ThirtyNine, EPhysicalControllerID::Forty)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::FortyOne,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::FortyOne, EPhysicalControllerID::FortyTwo)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::FortyThree,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::FortyThree, EPhysicalControllerID::FortyFour)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::FortyFive,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::FortyFive, EPhysicalControllerID::FortySix)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::FortySeven,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::FortySeven, EPhysicalControllerID::FortyEight)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::TwentyFive,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::TwentyFive, EPhysicalControllerID::TwentySix)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::TwentySeven,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::TwentySeven, EPhysicalControllerID::TwentyEight)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::TwentyNine,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::TwentyNine, EPhysicalControllerID::Thirty)));
|
||||||
|
|
||||||
|
x18_repeatMap.emplace(std::make_pair(EPhysicalControllerID::ThirtyOne,
|
||||||
|
CGuiAutoRepeatData(EPhysicalControllerID::ThirtyOne, EPhysicalControllerID::ThirtyTwo)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,71 @@
|
||||||
#ifndef __URDE_CGUISYS_HPP__
|
#ifndef __URDE_CGUISYS_HPP__
|
||||||
#define __URDE_CGUISYS_HPP__
|
#define __URDE_CGUISYS_HPP__
|
||||||
|
|
||||||
|
#include "hecl/hecl.hpp"
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <vector>
|
||||||
|
#include <stack>
|
||||||
|
#include <chrono>
|
||||||
|
#include "CGuiAutoRepeatData.hpp"
|
||||||
|
#include "CSaveableState.hpp"
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
template <> struct hash<urde::EPhysicalControllerID>
|
||||||
|
{
|
||||||
|
size_t operator() (const urde::EPhysicalControllerID& id) const NOEXCEPT {return size_t(id);}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
class CGuiObject;
|
||||||
|
class CVParamTransfer;
|
||||||
|
class SObjectTag;
|
||||||
|
class IFactory;
|
||||||
|
class CSimplePool;
|
||||||
|
|
||||||
|
typedef CGuiObject*(*FGuiFactoryFunc)(const SObjectTag&, const CVParamTransfer&);
|
||||||
|
|
||||||
|
class CGuiFactoryMgr
|
||||||
|
{
|
||||||
|
friend class CGuiSys;
|
||||||
|
std::unordered_map<hecl::FourCC, FGuiFactoryFunc> m_factories;
|
||||||
|
public:
|
||||||
|
void AddFactory(hecl::FourCC key, FGuiFactoryFunc func)
|
||||||
|
{
|
||||||
|
m_factories[key] = func;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class CGuiSys
|
class CGuiSys
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
enum class EUsageMode
|
||||||
|
{
|
||||||
|
Zero
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
IFactory& x0_resFactory;
|
||||||
|
CSimplePool& x4_resStore;
|
||||||
|
CGuiFactoryMgr x8_factoryMgr;
|
||||||
|
std::unordered_map<EPhysicalControllerID, CGuiAutoRepeatData> x18_repeatMap;
|
||||||
|
EUsageMode x2c_mode;
|
||||||
|
std::stack<CSaveableState, std::vector<CSaveableState>> x28_saveStack;
|
||||||
|
CVParamTransfer x38_frameFactoryParams;
|
||||||
|
std::chrono::time_point<std::chrono::steady_clock> x40_constructTime;
|
||||||
|
|
||||||
|
void AddFactories(EUsageMode mode);
|
||||||
|
void LoadWidgetFunctions();
|
||||||
|
public:
|
||||||
|
CGuiSys(IFactory& resFactory, CSimplePool& resStore, EUsageMode mode);
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Parameter pack for FRME factory */
|
||||||
|
struct CGuiResFrameData
|
||||||
|
{
|
||||||
|
CGuiSys& x0_guiSys;
|
||||||
|
CGuiResFrameData(CGuiSys& guiSys) : x0_guiSys(guiSys) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
#include "CGuiTableGroup.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef bool(CGuiTableGroup::*FMAF)(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
static std::unordered_map<u32, FMAF> WidgetFnMap;
|
||||||
|
|
||||||
|
void CGuiTableGroup::LoadWidgetFnMap()
|
||||||
|
{
|
||||||
|
WidgetFnMap.emplace(std::make_pair(21, &CGuiTableGroup::MAF_SelectNextColumn));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(22, &CGuiTableGroup::MAF_SelectPrevColumn));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(23, &CGuiTableGroup::MAF_SelectNextRow));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(24, &CGuiTableGroup::MAF_SelectPrevRow));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(25, &CGuiTableGroup::MAF_SelectNextColumnSkipUnActivated));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(26, &CGuiTableGroup::MAF_SelectPrevColumnSkipUnActivated));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(27, &CGuiTableGroup::MAF_SelectNextRowSkipUnActivated));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(28, &CGuiTableGroup::MAF_SelectPrevRowSkipUnActivated));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(29, &CGuiTableGroup::MAF_SelectColumnAtIndex));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(30, &CGuiTableGroup::MAF_SelectRowAtIndex));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(31, &CGuiTableGroup::MAF_InitializeTable));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(32, &CGuiTableGroup::MAF_MenuAdvance));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(33, &CGuiTableGroup::MAF_MenuCancel));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectNextColumn(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectPrevColumn(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectNextRow(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectPrevRow(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectNextColumnSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectPrevColumnSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectNextRowSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectPrevRowSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectColumnAtIndex(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_SelectRowAtIndex(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_InitializeTable(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_MenuAdvance(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiTableGroup::MAF_MenuCancel(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,30 @@
|
||||||
#ifndef __URDE_CGUITABLEGROUP_HPP__
|
#ifndef __URDE_CGUITABLEGROUP_HPP__
|
||||||
#define __URDE_CGUITABLEGROUP_HPP__
|
#define __URDE_CGUITABLEGROUP_HPP__
|
||||||
|
|
||||||
#include "CGuiWidget.hpp"
|
#include "CGuiCompoundWidget.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class CGuiTableGroup : public CGuiCompoundWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void LoadWidgetFnMap();
|
||||||
|
|
||||||
|
bool MAF_SelectNextColumn(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectPrevColumn(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectNextRow(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectPrevRow(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectNextColumnSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectPrevColumnSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectNextRowSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectPrevRowSkipUnActivated(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectColumnAtIndex(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SelectRowAtIndex(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_InitializeTable(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_MenuAdvance(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_MenuCancel(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,4 +3,41 @@
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
|
||||||
|
typedef bool(CGuiWidget::*FMAF)(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
static std::unordered_map<u32, FMAF> WidgetFnMap;
|
||||||
|
|
||||||
|
void CGuiWidget::LoadWidgetFnMap()
|
||||||
|
{
|
||||||
|
WidgetFnMap.emplace(std::make_pair(2, &CGuiWidget::MAF_StartAnimationSet));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(3, &CGuiWidget::MAF_SendMessage));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(6, &CGuiWidget::MAF_PauseAnim));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(7, &CGuiWidget::MAF_ResumeAnim));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(11, &CGuiWidget::MAF_SetState));
|
||||||
|
WidgetFnMap.emplace(std::make_pair(12, &CGuiWidget::MAF_SetStateOfWidget));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiWidget::MAF_StartAnimationSet(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiWidget::MAF_SendMessage(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiWidget::MAF_PauseAnim(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiWidget::MAF_ResumeAnim(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiWidget::MAF_SetState(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGuiWidget::MAF_SetStateOfWidget(CGuiFunctionDef* def, CGuiControllerInfo* info)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ public:
|
||||||
struct CGuiWidgetParms
|
struct CGuiWidgetParms
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
static void LoadWidgetFnMap();
|
||||||
private:
|
private:
|
||||||
public:
|
public:
|
||||||
virtual void Message(const CGuiMessage& msg);
|
virtual void Message(const CGuiMessage& msg);
|
||||||
|
@ -49,6 +50,13 @@ public:
|
||||||
virtual void OnDeActivate();
|
virtual void OnDeActivate();
|
||||||
virtual void DoRegisterEventHandler();
|
virtual void DoRegisterEventHandler();
|
||||||
virtual void DoUnregisterEventHandler();
|
virtual void DoUnregisterEventHandler();
|
||||||
|
|
||||||
|
bool MAF_StartAnimationSet(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SendMessage(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_PauseAnim(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_ResumeAnim(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SetState(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
|
bool MAF_SetStateOfWidget(CGuiFunctionDef* def, CGuiControllerInfo* info);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,4 +51,14 @@ add_library(RuntimeCommonGuiSys
|
||||||
CSplashScreen.cpp
|
CSplashScreen.cpp
|
||||||
CSplashScreen.hpp
|
CSplashScreen.hpp
|
||||||
CGuiCompoundWidget.cpp
|
CGuiCompoundWidget.cpp
|
||||||
CGuiCompoundWidget.hpp)
|
CGuiCompoundWidget.hpp
|
||||||
|
CSaveableState.cpp
|
||||||
|
CSaveableState.hpp
|
||||||
|
CDrawStringOptions.cpp
|
||||||
|
CDrawStringOptions.hpp
|
||||||
|
CRasterFont.cpp
|
||||||
|
CRasterFont.hpp
|
||||||
|
CGuiGroup.cpp
|
||||||
|
CGuiGroup.hpp
|
||||||
|
CGuiMenuRadial.cpp
|
||||||
|
CGuiMenuRadial.hpp)
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#ifndef __URDE_CRASTERFONT_HPP__
|
||||||
|
#define __URDE_CRASTERFONT_HPP__
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
class CRasterFont
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CRASTERFONT_HPP__
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "CSaveableState.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
#ifndef __URDE_CSAVEABLESTATE_HPP__
|
||||||
|
#define __URDE_CSAVEABLESTATE_HPP__
|
||||||
|
|
||||||
|
#include "CDrawStringOptions.hpp"
|
||||||
|
#include "CToken.hpp"
|
||||||
|
|
||||||
|
namespace urde
|
||||||
|
{
|
||||||
|
class CRasterFont;
|
||||||
|
|
||||||
|
class CSaveableState
|
||||||
|
{
|
||||||
|
CDrawStringOptions x0_drawStrOpts;
|
||||||
|
TToken<CRasterFont> x14_token;
|
||||||
|
struct VecElem
|
||||||
|
{
|
||||||
|
u8 a = 0;
|
||||||
|
u8 b = 0;
|
||||||
|
u8 c = 0;
|
||||||
|
u8 d = 0xff;
|
||||||
|
};
|
||||||
|
std::vector<VecElem> x20_;
|
||||||
|
std::vector<u8> x30_;
|
||||||
|
float x40_ = 1.f;
|
||||||
|
u32 x44_ = 0;
|
||||||
|
bool x48_ = false;
|
||||||
|
u32 x4c_ = 0;
|
||||||
|
u32 x50_ = 0;
|
||||||
|
|
||||||
|
CSaveableState()
|
||||||
|
{
|
||||||
|
x20_.resize(3);
|
||||||
|
x30_.resize(16);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __URDE_CSAVEABLESTATE_HPP__
|
|
@ -145,7 +145,8 @@ public:
|
||||||
CGameArchitectureSupport()
|
CGameArchitectureSupport()
|
||||||
: m_audioSys(0,0,0,0,0),
|
: m_audioSys(0,0,0,0,0),
|
||||||
m_inputGenerator(0.0f /*g_tweakPlayer->GetLeftLogicalThreshold()*/,
|
m_inputGenerator(0.0f /*g_tweakPlayer->GetLeftLogicalThreshold()*/,
|
||||||
0.0f /*g_tweakPlayer->GetRightLogicalThreshold()*/)
|
0.0f /*g_tweakPlayer->GetRightLogicalThreshold()*/),
|
||||||
|
m_guiSys(*g_ResFactory, *g_SimplePool, CGuiSys::EUsageMode::Zero)
|
||||||
{
|
{
|
||||||
m_inputGenerator.startScanning();
|
m_inputGenerator.startScanning();
|
||||||
}
|
}
|
||||||
|
|
2
specter
2
specter
|
@ -1 +1 @@
|
||||||
Subproject commit 0b750609a665a47afc959ae58613703a689e91f2
|
Subproject commit ce321d80fe2b8d5d20a8f4bfce7718700c7e2809
|
Loading…
Reference in New Issue