2016-03-10 03:47:37 +00:00
|
|
|
#ifndef __URDE_CGUIFRAME_HPP__
|
|
|
|
#define __URDE_CGUIFRAME_HPP__
|
|
|
|
|
|
|
|
#include "CGuiWidget.hpp"
|
2016-03-11 22:50:15 +00:00
|
|
|
#include "CGuiWidgetIdDB.hpp"
|
2016-03-16 20:49:35 +00:00
|
|
|
#include "IObj.hpp"
|
2016-03-10 03:47:37 +00:00
|
|
|
|
|
|
|
namespace urde
|
|
|
|
{
|
2016-03-11 05:32:18 +00:00
|
|
|
class CGuiSys;
|
2016-03-11 22:50:15 +00:00
|
|
|
class CLight;
|
|
|
|
class CGuiCamera;
|
|
|
|
class CGuiHeadWidget;
|
|
|
|
class CFinalInput;
|
|
|
|
class CGuiLight;
|
2016-03-16 20:49:35 +00:00
|
|
|
class CVParamTransfer;
|
2016-09-02 19:32:57 +00:00
|
|
|
class CObjectReference;
|
2016-12-15 22:37:34 +00:00
|
|
|
class CSimplePool;
|
2016-03-11 22:50:15 +00:00
|
|
|
|
2016-03-11 05:32:18 +00:00
|
|
|
class CGuiFrame
|
|
|
|
{
|
2016-03-11 22:50:15 +00:00
|
|
|
private:
|
2016-12-15 22:37:34 +00:00
|
|
|
ResId x0_id;
|
|
|
|
u32 x4_ = 0;
|
|
|
|
CGuiSys& x8_guiSys;
|
|
|
|
CGuiHeadWidget* xc_headWidget = nullptr;
|
|
|
|
std::unique_ptr<CGuiWidget> x10_rootWidget;
|
|
|
|
CGuiCamera* x14_camera = nullptr;
|
|
|
|
CGuiWidgetIdDB x18_idDB;
|
|
|
|
std::vector<CGuiWidget*> x2c_widgets;
|
|
|
|
std::vector<CGuiLight*> x3c_lights;
|
|
|
|
int x4c_a;
|
|
|
|
int x50_b;
|
|
|
|
int x54_c;
|
|
|
|
bool x58_24_loaded : 1;
|
2016-03-14 23:32:44 +00:00
|
|
|
|
2016-03-11 05:32:18 +00:00
|
|
|
public:
|
2016-12-15 22:37:34 +00:00
|
|
|
CGuiFrame(ResId id, CGuiSys& sys, int a, int b, int c, CSimplePool* sp);
|
2016-03-11 22:50:15 +00:00
|
|
|
|
2016-12-15 22:37:34 +00:00
|
|
|
CGuiSys& GetGuiSys() {return x8_guiSys;}
|
2016-03-12 04:58:56 +00:00
|
|
|
|
2016-12-15 22:37:34 +00:00
|
|
|
CGuiLight* GetFrameLight(int idx) {return x3c_lights[idx];}
|
2016-03-11 22:50:15 +00:00
|
|
|
CGuiWidget* FindWidget(const std::string& name) const;
|
|
|
|
CGuiWidget* FindWidget(s16 id) const;
|
2016-12-15 22:37:34 +00:00
|
|
|
void SetFrameCamera(CGuiCamera* camr) {x14_camera = camr;}
|
|
|
|
void SetHeadWidget(CGuiHeadWidget* hwig) {xc_headWidget = hwig;}
|
2016-03-11 22:50:15 +00:00
|
|
|
void SortDrawOrder();
|
2016-03-15 04:55:57 +00:00
|
|
|
void EnableLights(u32 lights) const;
|
2016-03-11 22:50:15 +00:00
|
|
|
void DisableLights() const;
|
|
|
|
void RemoveLight(CGuiLight* light);
|
|
|
|
void AddLight(CGuiLight* light);
|
|
|
|
bool GetIsFinishedLoading() const;
|
|
|
|
void Touch() const;
|
|
|
|
|
2016-12-15 22:37:34 +00:00
|
|
|
void Update(float dt);
|
2016-03-11 22:50:15 +00:00
|
|
|
void Draw(const CGuiWidgetDrawParms& parms) const;
|
|
|
|
void Initialize();
|
|
|
|
void LoadWidgetsInGame(CInputStream& in);
|
2016-12-16 04:35:49 +00:00
|
|
|
void ProcessUserInput(const CFinalInput& input) const;
|
2016-03-11 22:50:15 +00:00
|
|
|
|
2016-12-15 22:37:34 +00:00
|
|
|
CGuiWidgetIdDB& GetWidgetIdDB() {return x18_idDB;}
|
2016-03-11 22:50:15 +00:00
|
|
|
|
2016-12-15 22:37:34 +00:00
|
|
|
static CGuiFrame* CreateFrame(ResId frmeId, CGuiSys& sys, CInputStream& in, CSimplePool* sp);
|
2016-03-11 05:32:18 +00:00
|
|
|
};
|
2016-03-10 03:47:37 +00:00
|
|
|
|
2016-03-16 20:49:35 +00:00
|
|
|
std::unique_ptr<IObj> RGuiFrameFactoryInGame(const SObjectTag& tag, CInputStream& in,
|
2016-09-02 19:32:57 +00:00
|
|
|
const CVParamTransfer& vparms,
|
|
|
|
CObjectReference* selfRef);
|
2016-03-16 20:49:35 +00:00
|
|
|
|
2016-03-10 03:47:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __URDE_CGUIFRAME_HPP__
|