#pragma once #include "CGuiWidget.hpp" #include "CToken.hpp" #include "Graphics/Shaders/CTexturedQuadFilter.hpp" namespace urde { class CSimplePool; class CTexture; class CAuiImagePane : public CGuiWidget { TLockedToken xb8_tex0Tok; // Used to be optional CAssetId xc8_tex0; CAssetId xcc_tex1; zeus::CVector2f xd0_uvBias0; zeus::CVector2f xd8_uvBias1; rstl::reserved_vector xe0_coords; rstl::reserved_vector x114_uvs; zeus::CVector2f x138_tileSize; float x140_interval = 0.f; float x144_frameTimer = 0.f; float x148_fadeDuration = 0.f; float x14c_deResFactor = 0.f; float x150_flashFactor = 0.f; struct Filters { CAssetId m_texId; CTexturedQuadFilterAlpha m_darkenerQuad; CTexturedQuadFilterAlpha m_flashQuad[2]; CTexturedQuadFilterAlpha m_alphaQuad[2]; CTexturedQuadFilterAlpha m_addQuad[2]; Filters(TLockedToken& tex); }; std::experimental::optional m_filters; void DoDrawImagePane(const zeus::CColor& color, const CTexture& tex, int frame, float blurAmt, bool noBlur, CTexturedQuadFilterAlpha& quad) const; public: CAuiImagePane(const CGuiWidgetParms& parms, CSimplePool* sp, CAssetId, CAssetId, rstl::reserved_vector&& coords, rstl::reserved_vector&& uvs, bool initTex); FourCC GetWidgetTypeID() const { return FOURCC('IMGP'); } static std::shared_ptr Create(CGuiFrame* frame, CInputStream& in, CSimplePool* sp); void Update(float dt); void Draw(const CGuiWidgetDrawParms& params) const; bool GetIsFinishedLoadingWidgetSpecific() const; void SetTextureID0(CAssetId tex, CSimplePool* sp); void SetAnimationParms(const zeus::CVector2f& vec, float interval, float duration); void SetDeResFactor(float d) { x14c_deResFactor = d; } void SetFlashFactor(float t) { x150_flashFactor = t; } }; }