From 5829b09fbbf9aab0332421180ebd047045c2a43f Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Mon, 27 May 2024 17:22:36 -0400 Subject: [PATCH] lyt_window templated --- config/SOUE01/splits.txt | 7 + config/SOUE01/symbols.txt | 20 +-- configure.py | 1 + include/nw4r/lyt/lyt_pane.h | 4 +- include/nw4r/lyt/lyt_resources.h | 13 ++ include/nw4r/lyt/lyt_window.h | 57 ++++++-- src/nw4r/lyt/lyt_window.cpp | 231 +++++++++++++++++++++++++++++++ 7 files changed, 307 insertions(+), 26 deletions(-) diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 5c8a14e5..bb8bd418 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -353,6 +353,13 @@ nw4r/lyt/lyt_textBox.cpp: .sbss start:0x80576708 end:0x8057670C .sdata2 start:0x8057F250 end:0x8057F268 +nw4r/lyt/lyt_window.cpp: + .text start:0x8048B170 end:0x8048D6FC + .ctors start:0x804DB980 end:0x804DB984 + .data start:0x8056E5F8 end:0x8056E6C0 + .sbss start:0x80576710 end:0x80576714 + .sdata2 start:0x8057F268 end:0x8057F280 + nw4r/lyt/lyt_resourceAccessor.cpp: .text start:0x80492000 end:0x80492058 .data start:0x8056E7E0 end:0x8056E7F8 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index b97b3b4a..71a2567a 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -2880,7 +2880,7 @@ fn_80065E70 = .text:0x80065E70; // type:function size:0xC4 fn_80065F40 = .text:0x80065F40; // type:function size:0x28 fn_80065F70 = .text:0x80065F70; // type:function size:0x328 fn_800662A0 = .text:0x800662A0; // type:function size:0xD4 -GetRuntimeTypeInfo__Q34nw4r3lyt4PaneCFv = .text:0x80066380; // type:function size:0x8 +GetRuntimeTypeInfo__Q34nw4r3lyt4PaneCFv = .text:0x80066380; // type:function size:0x8 scope:weak fn_80066390 = .text:0x80066390; // type:function size:0xE8 fn_80066480 = .text:0x80066480; // type:function size:0xC fn_80066490 = .text:0x80066490; // type:function size:0x40 @@ -25162,7 +25162,7 @@ DetachGeneralHandle__Q44nw4r3snd6detail10BasicSoundFv = .text:0x8046A2B0; // typ DetachTempGeneralHandle__Q44nw4r3snd6detail10BasicSoundFv = .text:0x8046A2C0; // type:function size:0x8 SetId__Q44nw4r3snd6detail10BasicSoundFUl = .text:0x8046A2D0; // type:function size:0x40 __dt__Q44nw4r3snd6detail10BasicSoundFv = .text:0x8046A310; // type:function size:0x40 -GetRuntimeTypeInfo__Q44nw4r3snd6detail10BasicSoundCFv = .text:0x8046A350; // type:function size:0x8 +GetRuntimeTypeInfo__Q44nw4r3snd6detail10BasicSoundCFv = .text:0x8046A350; // type:function size:0x8 scope:weak __sinit_\snd_BasicSound_cpp = .text:0x8046A360; // type:function size:0xC scope:local GetCoef__Q44nw4r3snd6detail15BiquadFilterLpfCFifPQ44nw4r3snd20BiquadFilterCallback10BiquadCoef = .text:0x8046A370; // type:function size:0x88 GetCoef__Q44nw4r3snd6detail15BiquadFilterHpfCFifPQ44nw4r3snd20BiquadFilterCallback10BiquadCoef = .text:0x8046A400; // type:function size:0x88 @@ -25411,7 +25411,7 @@ OnCancel__Q54nw4r3snd6detail8SeqSound11SeqLoadTaskFv = .text:0x804730F0; // type GetBasicPlayer__Q44nw4r3snd6detail8SeqSoundFv = .text:0x80473120; // type:function size:0x8 GetBasicPlayer__Q44nw4r3snd6detail8SeqSoundCFv = .text:0x80473130; // type:function size:0x8 IsPrepared__Q44nw4r3snd6detail8SeqSoundCFv = .text:0x80473140; // type:function size:0x8 -GetRuntimeTypeInfo__Q44nw4r3snd6detail8SeqSoundCFv = .text:0x80473150; // type:function size:0x8 +GetRuntimeTypeInfo__Q44nw4r3snd6detail8SeqSoundCFv = .text:0x80473150; // type:function size:0x8 scope:weak __sinit_snd_SeqSound_cpp = .text:0x80473160; // type:function size:0xC __ct__Q34nw4r3snd14SeqSoundHandleFPQ34nw4r3snd11SoundHandle = .text:0x80473170; // type:function size:0xF4 DetachSound__Q34nw4r3snd14SeqSoundHandleFv = .text:0x80473270; // type:function size:0x38 @@ -25711,7 +25711,7 @@ DetachTempSpecialHandle__Q44nw4r3snd6detail9StrmSoundFv = .text:0x80480D30; // t GetBasicPlayer__Q44nw4r3snd6detail9StrmSoundFv = .text:0x80480D40; // type:function size:0x8 GetBasicPlayer__Q44nw4r3snd6detail9StrmSoundCFv = .text:0x80480D50; // type:function size:0x8 IsPrepared__Q44nw4r3snd6detail9StrmSoundCFv = .text:0x80480D60; // type:function size:0x8 -GetRuntimeTypeInfo__Q44nw4r3snd6detail9StrmSoundCFv = .text:0x80480D70; // type:function size:0x8 +GetRuntimeTypeInfo__Q44nw4r3snd6detail9StrmSoundCFv = .text:0x80480D70; // type:function size:0x8 scope:weak __sinit_snd_StrmSound_cpp = .text:0x80480D80; // type:function size:0xC __ct__Q34nw4r3snd15StrmSoundHandleFPQ34nw4r3snd11SoundHandle = .text:0x80480D90; // type:function size:0xF4 DetachSound__Q34nw4r3snd15StrmSoundHandleFv = .text:0x80480E90; // type:function size:0x38 @@ -25814,7 +25814,7 @@ DetachTempSpecialHandle__Q44nw4r3snd6detail9WaveSoundFv = .text:0x804852C0; // t GetBasicPlayer__Q44nw4r3snd6detail9WaveSoundFv = .text:0x804852D0; // type:function size:0x8 GetBasicPlayer__Q44nw4r3snd6detail9WaveSoundCFv = .text:0x804852E0; // type:function size:0x8 IsPrepared__Q44nw4r3snd6detail9WaveSoundCFv = .text:0x804852F0; // type:function size:0x8 -GetRuntimeTypeInfo__Q44nw4r3snd6detail9WaveSoundCFv = .text:0x80485300; // type:function size:0x8 +GetRuntimeTypeInfo__Q44nw4r3snd6detail9WaveSoundCFv = .text:0x80485300; // type:function size:0x8 scope:weak __sinit_snd_WaveSound_cpp = .text:0x80485310; // type:function size:0xC detail_AttachSoundAsTempHandle__Q34nw4r3snd15WaveSoundHandleFPQ44nw4r3snd6detail9WaveSound = .text:0x80485320; // type:function size:0xF4 DetachSound__Q34nw4r3snd15WaveSoundHandleFv = .text:0x80485420; // type:function size:0x38 @@ -25921,7 +25921,7 @@ SetVtxColor__Q34nw4r3lyt7PictureFUlQ34nw4r2ut5Color = .text:0x80489690; // type: GetVtxColorElement__Q34nw4r3lyt7PictureCFUl = .text:0x804896C0; // type:function size:0x18 SetVtxColorElement__Q34nw4r3lyt7PictureFUlUc = .text:0x804896E0; // type:function size:0x18 DrawSelf__Q34nw4r3lyt7PictureFRCQ34nw4r3lyt8DrawInfo = .text:0x80489700; // type:function size:0xDC -GetRuntimeTypeInfo__Q34nw4r3lyt7PictureCFv = .text:0x804897E0; // type:function size:0x8 +GetRuntimeTypeInfo__Q34nw4r3lyt7PictureCFv = .text:0x804897E0; // type:function size:0x8 scope:weak __sinit_\lyt_picture_cpp = .text:0x804897F0; // type:function size:0xC scope:local __ct__Q34nw4r3lyt7TextBoxFPCQ44nw4r3lyt3res7TextBoxRCQ34nw4r3lyt11ResBlockSet = .text:0x80489800; // type:function size:0x2EC __dt__Q34nw4r3lyt7TextBoxFv = .text:0x80489AF0; // type:function size:0x1A0 @@ -25963,11 +25963,11 @@ GetMaterialNum__Q34nw4r3lyt6WindowCFv = .text:0x8048D670; // type:function size: GetMaterial__Q34nw4r3lyt6WindowCFUl = .text:0x8048D680; // type:function size:0x2C GetFrameMaterial__Q34nw4r3lyt6WindowCFUl = .text:0x8048D6B0; // type:function size:0x28 GetContentMaterial__Q34nw4r3lyt6WindowCFv = .text:0x8048D6E0; // type:function size:0x10 -__sinit_lyt_window_cpp = .text:0x8048D6F0; // type:function size:0xC +__sinit_\lyt_window_cpp = .text:0x8048D6F0; // type:function size:0xC scope:local __ct__Q34nw4r3lyt8BoundingFPCQ44nw4r3lyt3res8BoundingRCQ34nw4r3lyt11ResBlockSet = .text:0x8048D700; // type:function size:0x3C __dt__Q34nw4r3lyt8BoundingFv = .text:0x8048D740; // type:function size:0x58 DrawSelf__Q34nw4r3lyt8BoundingFRCQ34nw4r3lyt8DrawInfo = .text:0x8048D7A0; // type:function size:0x4 -GetRuntimeTypeInfo__Q34nw4r3lyt8BoundingCFv = .text:0x8048D7B0; // type:function size:0x8 +GetRuntimeTypeInfo__Q34nw4r3lyt8BoundingCFv = .text:0x8048D7B0; // type:function size:0x8 scope:weak __sinit_lyt_bounding_cpp = .text:0x8048D7C0; // type:function size:0xC CalcTextureMtx__Q34nw4r3lyt26@unnamed@lyt_material_cpp@FPQ34nw4r4math5MTX34RCQ34nw4r3lyt6TexSRT = .text:0x8048D7D0; // type:function size:0x108 SetIndTexMtx__Q34nw4r3lyt26@unnamed@lyt_material_cpp@F14_GXIndTexMtxIDPA3_Cf = .text:0x8048D8E0; // type:function size:0x200 @@ -40879,8 +40879,8 @@ typeInfo__Q34nw4r3lyt4Pane = .sbss:0x805766F0; // type:object size:0x4 data:4byt mspAllocator__Q34nw4r3lyt6Layout = .sbss:0x805766F8; // type:object size:0x4 data:4byte typeInfo__Q34nw4r3lyt7Picture = .sbss:0x80576700; // type:object size:0x4 data:4byte typeInfo__Q34nw4r3lyt7TextBox = .sbss:0x80576708; // type:object size:0x4 data:4byte -lbl_80576710 = .sbss:0x80576710; // type:object size:0x8 data:4byte -lbl_80576718 = .sbss:0x80576718; // type:object size:0x8 data:4byte +typeInfo__Q34nw4r3lyt6Window = .sbss:0x80576710; // type:object size:0x4 data:4byte +lbl_80576718 = .sbss:0x80576718; // type:object size:0x4 data:4byte @GUARD@SetSize__Q44nw4r3lyt6detail11TexCoordAryFUc@texCoords = .sbss:0x80576720; // type:object size:0x1 data:byte lbl_80576728 = .sbss:0x80576728; // type:object size:0x8 data:byte lbl_80576730 = .sbss:0x80576730; // type:object size:0x8 data:byte diff --git a/configure.py b/configure.py index ab74faa9..caea4da1 100644 --- a/configure.py +++ b/configure.py @@ -357,6 +357,7 @@ config.libs = [ Object(Matching, "nw4r/lyt/lyt_layout.cpp"), Object(Matching, "nw4r/lyt/lyt_picture.cpp"), Object(Matching, "nw4r/lyt/lyt_textBox.cpp"), + Object(NonMatching, "nw4r/lyt/lyt_window.cpp"), Object(Matching, "nw4r/lyt/lyt_resourceAccessor.cpp"), Object(Matching, "nw4r/lyt/lyt_arcResourceAccessor.cpp"), Object(Matching, "nw4r/lyt/lyt_common.cpp"), diff --git a/include/nw4r/lyt/lyt_pane.h b/include/nw4r/lyt/lyt_pane.h index 37d9dbaf..cdbce93c 100644 --- a/include/nw4r/lyt/lyt_pane.h +++ b/include/nw4r/lyt/lyt_pane.h @@ -107,8 +107,8 @@ public: virtual ~Pane(); // at 0x8 NW4R_UT_RTTI_DECL(Pane); // at 0x0C virtual void CalculateMtx(const DrawInfo &drawInfo); // at 0x10 - virtual void Draw(const DrawInfo &); // at 0x14 - virtual void DrawSelf(const DrawInfo &); // at 0x18 + virtual void Draw(const DrawInfo &drawInfo); // at 0x14 + virtual void DrawSelf(const DrawInfo &drawInfo); // at 0x18 virtual void Animate(u32); // at 0x1C virtual void AnimateSelf(u32); // at 0x20 virtual ut::Color GetVtxColor(u32 idx) const; // at 0x24 diff --git a/include/nw4r/lyt/lyt_resources.h b/include/nw4r/lyt/lyt_resources.h index 03c6ea73..a5687948 100644 --- a/include/nw4r/lyt/lyt_resources.h +++ b/include/nw4r/lyt/lyt_resources.h @@ -155,6 +155,19 @@ struct Window : Pane { u32 frameOffsetTableOffset; // at 0x64 }; +struct WindowFrame { + u16 materialIdx; // at 0x0 + u8 textureFlip; // at 0x2 + u8 padding1; // at 0x3 +}; + +struct WindowContent { + u32 vtxCols[4]; // at 0x00 + u16 materialIdx; // at 0x10 + u8 texCoordNum; // at 0x12 + u8 padding[1]; // at 0x13 +}; + struct AnimationBlock { DataBlockHeader blockHeader; // at 0x00 u16 frameSize; // at 0x08 diff --git a/include/nw4r/lyt/lyt_window.h b/include/nw4r/lyt/lyt_window.h index 3b41dad8..a13133d6 100644 --- a/include/nw4r/lyt/lyt_window.h +++ b/include/nw4r/lyt/lyt_window.h @@ -10,17 +10,7 @@ namespace nw4r { namespace lyt { -struct Content { - ut::Color vtxColors[4]; // at 0x00 - detail::TexCoordAry texCoordAry; // at 0x10 -}; - -struct Frame { - bool textureFlip; // at 0x00 - Material *pMaterial; // at 0x04 -}; - -struct WindowFramSize { +struct WindowFrameSize { f32 l; // at 0x00 f32 r; // at 0x04 f32 t; // at 0x08 @@ -29,9 +19,48 @@ struct WindowFramSize { class Window : public Pane { public: - Window(const res::Window *, const ResBlockSet &ResBlockSet); - virtual ~Window(); - NW4R_UT_RTTI_DECL(Window); + struct Content { + Content() {} + + ut::Color vtxColors[4]; // at 0x00 + detail::TexCoordAry texCoordAry; // at 0x10 + }; + struct Frame { + bool textureFlip; // at 0x00 + Material *pMaterial; // at 0x04 + }; + + Window(const res::Window *pBlock, const ResBlockSet &ResBlockSet); + + void InitContent(u8 texNum); + void InitFrame(u8 frameNum); + void ReserveTexCoord(u8 num); + AnimationLink *FindAnimationLink(AnimTransform *pAnimTrans); + void SetAnimationEnable(AnimTransform *pAnimTrans, bool, bool); + + static WindowFrameSize GetFrameSize(u8 frameNum, const Frame *frames); + Material *GetFrameMaterial(u32 frameIdx) const; + Material *GetContentMaterial() const; + + virtual ~Window(); // at 0x08 + NW4R_UT_RTTI_DECL(Window); // at 0x0C + virtual void DrawSelf(const DrawInfo &drawInfo); // at 0x18 + virtual void AnimateSelf(u32 option); // at 0x20 + virtual ut::Color GetVtxColor(u32 idx) const; // at 0x24 + virtual void SetVtxColor(u32 idx, ut::Color value); // at 0x28 + virtual u8 GetVtxColorElement(u32 idx) const; // at 0x34 + virtual void SetVtxColorElement(u32 idx, u8 value); // at 0x38 + virtual Material *FindMaterialByName(const char *findName, bool bRecursive); // at 0x40 + virtual void UnbindAnimationSelf(AnimTransform *pAnimTrans); // at 0x50 + virtual u8 GetMaterialNum() const; // at 0x64 + virtual Material *GetMaterial(u32 idx) const; // at 0x6C + virtual void DrawContent(const math::VEC2 &basePt, const WindowFrameSize &frameSize, u8 alpha); // at 0x74 + virtual void DrawFrame(const math::VEC2 &basePt, const Frame &frame, const WindowFrameSize &frameSize, // + u8 alpha); // at 0x78 + virtual void DrawFrame4(const math::VEC2 &basePt, const Frame *frame, const WindowFrameSize &frameSize, // + u8 alpha); // at 0x7C + virtual void DrawFrame8(const math::VEC2 &basePt, const Frame *frame, const WindowFrameSize &frameSize, // + u8 alpha); // at 0x80 private: res::InflationLRTB mContentInflation; // at 0x0D8 diff --git a/src/nw4r/lyt/lyt_window.cpp b/src/nw4r/lyt/lyt_window.cpp index e69de29b..728c461d 100644 --- a/src/nw4r/lyt/lyt_window.cpp +++ b/src/nw4r/lyt/lyt_window.cpp @@ -0,0 +1,231 @@ +#include +#include + +namespace nw4r { +namespace lyt { + +// TODO: Find Place +struct TextureFlipInfo { + u8 coords[2][4]; // at 0x00 + u8 idx[2]; // at 0x8 +}; + +TextureFlipInfo flipInfos[6] = {}; + +namespace { +// GetTexutreFlipInfo__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FUc +// GetTexutreFlipInfo__24@unnamed@lyt_window_cpp@FUc +TextureFlipInfo &GetTextureFlipInfo(u8 textureFlip) {} + +// GetLTFrameSize__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +// GetLTFrameSize__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +void GetLTFrameSize(math::VEC2 *pPt, Size *pSize, const math::VEC2 &basePt, const Size &windSize, + const WindowFrameSize &frameSize) {} + +// GetLTTexCoord__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +// GetLTTexCoord__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +void GetLTTexCoord(math::VEC2 *texCds, const Size &polSize, const Size &texSize, u8 textureFlip) { + const TextureFlipInfo &flipInfo = flipInfo; + int ix; + int iy; + math::VEC2 tSz; +} + +// GetRTFrameSize__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +// GetRTFrameSize__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +void GetRTFrameSize(math::VEC2 *pPt, Size *pSize, const math::VEC2 &basePt, const Size &windSize, + const WindowFrameSize &frameSize) {} + +// GetRTTexCoord__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +// GetRTTexCoord__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +void GetRTTexCoord(math::VEC2 *texCds, const Size &polSize, const Size &texSize, u8 textureFlip) { + const TextureFlipInfo &flipInfo = flipInfo; + int ix; + int iy; + math::VEC2 tSz; +} + +// GetLBFrameSize__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +// GetLBFrameSize__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +void GetLBFrameSize(math::VEC2 *pPt, Size *pSize, const math::VEC2 &basePt, const Size &windSize, + const WindowFrameSize &frameSize) {} + +// GetLBTexCoord__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +// GetLBTexCoord__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +void GetLBTexCoord(math::VEC2 *texCds, const Size &polSize, const Size &texSize, u8 textureFlip) { + const TextureFlipInfo &flipInfo = flipInfo; + int ix; + int iy; + math::VEC2 tSz; +} + +// GetRBFrameSize__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +// GetRBFrameSize__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2PQ34nw4r3lyt4SizeRCQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt15WindowFrameSize +void GetRBFrameSize(math::VEC2 *pPt, Size *pSize, const math::VEC2 &basePt, const Size &windSize, + const WindowFrameSize &frameSize) {} + +// GetRBTexCoord__Q34nw4r3lyt24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +// GetRBTexCoord__24@unnamed@lyt_window_cpp@FPQ34nw4r4math4VEC2RCQ34nw4r3lyt4SizeRCQ34nw4r3lyt4SizeUc +void GetRBTexCoord(math::VEC2 *texCds, const Size &polSize, const Size &texSize, u8 textureFlip) { + const TextureFlipInfo &flipInfo = flipInfo; + int ix; + int iy; + math::VEC2 tSz; +} +} // namespace + +NW4R_UT_RTTI_DEF_DERIVED(Window, Pane); + +// __dt__Q44nw4r3lyt6Window5FrameFv + +// __ct__Q34nw4r3lyt6WindowFPCQ44nw4r3lyt3res6WindowRCQ34nw4r3lyt11ResBlockSet +Window::Window(const res::Window *pBlock, const ResBlockSet &ResBlockSet) { + const res::WindowContent *pResContent; + u8 texCoordNum; + const u32 *matOffsTbl; + { + int i; + const res::Material *pResMaterial; + } + + const u32 *frameOffsetTable; + { + int i; + const res::WindowFrame *pResWindowFrame; + } +} + +// InitContent__Q34nw4r3lyt6WindowFUc +void Window::InitContent(u8 texNum) {} + +// InitFrame__Q34nw4r3lyt6WindowFUc +void Window::InitFrame(u8 frameNum) {} + +// __dt__Q44nw4r3lyt6Window7ContentFv + +// __dt__Q34nw4r3lyt6WindowFv +Window::~Window() {} + +// ReserveTexCoord__Q34nw4r3lyt6WindowFUc +void Window::ReserveTexCoord(u8 num) {} + +// FindMaterialByName__Q34nw4r3lyt6WindowFPCcb +Material *Window::FindMaterialByName(const char *findName, bool bRecursive) { + int i; + // ut::LinkList<>::Iterator it + Material *pMat; +} + +// FindAnimationLink__Q34nw4r3lyt6WindowFPQ34nw4r3lyt13AnimTransform +AnimationLink *Window::FindAnimationLink(AnimTransform *pAnimTrans) { + // TOOD +} + +// SetAnimationEnable__Q34nw4r3lyt6WindowFPQ34nw4r3lyt13AnimTransformbb +void Window::SetAnimationEnable(AnimTransform *pAnimTrans, bool, bool) { + // TOOD +} + +// GetVtxColor__Q34nw4r3lyt6WindowCFUl +ut::Color Window::GetVtxColor(u32 idx) const {} + +// SetVtxColor__Q34nw4r3lyt6WindowFUlQ34nw4r2ut5Color +void Window::SetVtxColor(u32, ut::Color) {} + +// GetVtxColorElement__Q34nw4r3lyt6WindowCFUl +u8 Window::GetVtxColorElement(u32 idx) const {} + +// SetVtxColorElement__Q34nw4r3lyt6WindowFUlUc +void Window::SetVtxColorElement(u32 idx, u8 value) {} + +// DrawSelf__Q34nw4r3lyt6WindowFRCQ34nw4r3lyt8DrawInfo +void Window::DrawSelf(const DrawInfo &drawInfo) { + WindowFrameSize frameSize; + math::VEC2 bastPt; +} + +// AnimateSelf__Q34nw4r3lyt6WindowFUl +void Window::AnimateSelf(u32 option) { + int i; +} + +// UnbindAnimationSelf__Q34nw4r3lyt6WindowFPQ34nw4r3lyt13AnimTransform +void Window::UnbindAnimationSelf(AnimTransform *pAnimTrans) { + int i; +} + +// DrawContent__Q34nw4r3lyt6WindowFRCQ34nw4r4math4VEC2RCQ34nw4r3lyt15WindowFrameSizeUc +void Window::DrawContent(const math::VEC2 &basePt, const WindowFrameSize &frameSize, u8 alpha) { + bool bUseVtxCol; +} + +// DrawFrame__Q34nw4r3lyt6WindowFRCQ34nw4r4math4VEC2RCQ44nw4r3lyt6Window5FrameRCQ34nw4r3lyt15WindowFrameSizeUc +void Window::DrawFrame(const math::VEC2 &basePt, const Frame &frame, const WindowFrameSize &frameSize, u8 alpha) { + bool bUseVtxCol; + Size texSize; + ut::Color vtxColors[4]; + detail::TexCoordData texCds[1]; + math::VEC2 polPt; + Size polSize; +} + +// DrawFrame4__Q34nw4r3lyt6WindowFRCQ34nw4r4math4VEC2PCQ44nw4r3lyt6Window5FrameRCQ34nw4r3lyt15WindowFrameSizeUc +void Window::DrawFrame4(const math::VEC2 &basePt, const Frame *frame, const WindowFrameSize &frameSize, u8 alpha) { + ut::Color vtxColors[4]; + detail::TexCoordData texCds[1]; + math::VEC2 polPt; + Size polSize; + bool bModVtxCol; + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } +} + +// DrawFrame8__Q34nw4r3lyt6WindowFRCQ34nw4r4math4VEC2PCQ44nw4r3lyt6Window5FrameRCQ34nw4r3lyt15WindowFrameSizeUc +void Window::DrawFrame8(const math::VEC2 &basePt, const Frame *frame, const WindowFrameSize &frameSize, u8 alpha) { + ut::Color vtxColors[4]; + detail::TexCoordData texCds[1]; + math::VEC2 polPt; + Size polSize; + bool bModVtxCol; + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } + { bool bUseVtxCol; } +} + +// GetFrameSize__Q34nw4r3lyt6WindowFUcPCQ44nw4r3lyt6Window5Frame +WindowFrameSize Window::GetFrameSize(u8 frameNum, const Frame *frames) { + { Size texSize; } + { Size texSize; } +} + +// GetMaterialNum__Q34nw4r3lyt6WindowCFv +u8 Window::GetMaterialNum() const {} + +// GetMaterial__Q34nw4r3lyt6WindowCFUl +Material *Window::GetMaterial(u32 idx) const {} + +// GetFrameMaterial__Q34nw4r3lyt6WindowCFUl +Material *Window::GetFrameMaterial(u32 frameIdx) const {} + +// GetContentMaterial__Q34nw4r3lyt6WindowCFv +Material *Window::GetContentMaterial() const {} + +} // namespace lyt + +} // namespace nw4r + +// HEADER STUFF +// ConvertOffsToPtr +// ConvertOffsToPtr +// __as__Q34nw4r3lyt13InflationLRTBFRCQ34nw4r3lyt13InflationLRTB + +// texCoordNum .sdata +// flipInfos . data +// ut::Min