diff options
| author | Colin Noga <Tempus@chronometry.ca> | 2012-09-26 11:51:03 -0500 | 
|---|---|---|
| committer | Colin Noga <Tempus@chronometry.ca> | 2012-09-26 11:51:03 -0500 | 
| commit | f9afbf1109b30bbc6011e81109b7e11961a4361a (patch) | |
| tree | 46883b3ccd9ab82b439c192a657e0632414e906a /include | |
| parent | 3268b1fab87a34897289faa8a1f5ee0679f74e19 (diff) | |
| parent | 46b65dfd76411bec6f8356c581f337f8a1944013 (diff) | |
| download | kamek-f9afbf1109b30bbc6011e81109b7e11961a4361a.tar.gz kamek-f9afbf1109b30bbc6011e81109b7e11961a4361a.zip | |
Merge remote-tracking branch 'origin/new-hud' into level-select
Diffstat (limited to 'include')
| -rwxr-xr-x | include/game.h | 205 | ||||
| -rw-r--r-- | include/newer.h | 1 | 
2 files changed, 187 insertions, 19 deletions
| diff --git a/include/game.h b/include/game.h index 4695ea6..e31e675 100755 --- a/include/game.h +++ b/include/game.h @@ -80,9 +80,60 @@ struct StartLevelInfo {  	unsigned char level2; // 0x0F
  };
 -extern void *GameMgr;
 +class GMgr8 {
 +	public:
 +		virtual ~GMgr8();
 +
 +		int _4;
 +		float _8, _C;
 +		u32 _10, _14;
 +		u8 _18, _19, _1A, _1B, _1C;
 +		u32 _20, _24, _28, _2C, _30;
 +};
 +
 +struct GMgrA0 {
 +	u32 _0, _4, _8;
 +	u8 _C;
 +};
 +
 +class GameMgr {
 +	public:
 +		virtual ~GameMgr();
 +
 +		u32 _4;
 +		GMgr8 eight;
 +		u32 _3C, _40, _44, _48, _4C, _50, _54, _58;
 +		u32 _5C, _60, _64, _68, _6C;
 +		u32 _70[10];
 +		u8 _98;
 +		u32 _9C;
 +		GMgrA0 _A0[40];
 +		u32 _320[10], _348[10];
 +		u32 _370, _374, _378, _37C;
 +		u8 switchPalaceFlag;
 +		u32 CharIDs[4];
 +		u8 _394;
 +		u8 _395[10];
 +		u8 _39F[10];
 +		u8 _3A9[10];
 +		u8 _3B3;
 +		u32 numberToInsertInThing[7];
 +		u32 msgCategory, msgID;
 +		u8 _3D8;
 +		u8 currentControllerType, layoutShadowFlag;
 +		u32 numberToInsertInThing10, numberToInsertInThing11;
 +		u32 _3E4, _3E8, _3EC, _3F0, _3F4, _3F8;
 +		// unmapped data from 3FC..AEC (0x6F0)
 +		u8 _3FC[0x6F0];
 +		u32 _AEC, _AF0, _AF4, _AF8;
 +		u8 _AFC, _AFD, _AFE[88];
 +		u8 _B56[4];
 +		u8 _B5A, _B5B;
 +};
 +
 +extern GameMgr *GameMgrP;
  inline void *GetGameMgr() {
 -	return GameMgr;
 +	return GameMgrP;
  }
  bool QueryPlayerAvailability(int id);
 @@ -219,9 +270,31 @@ inline SaveHandler *GetSaveHandler() {  #define WPAD_MINUS	0x1000
  #define WPAD_HOME	0x8000
 +struct Remocon {
 +	virtual ~Remocon();
 +	int id;
 +	int controllerType;
 +	u32 untouchedButtons;
 +	u32 lastUntouchedButtons;
 +	u32 heldButtons;
 +	u32 lastHeldButtons;
 +	u32 nowPressed;
 +	u32 _20, _24, _28, _2C, _30;
 +	Vec acc, lastAcc;
 +	Vec2 accVertical, lastAccVertical;
 +	Vec2 vec_5C, lastVec_5C;
 +	Vec2 vec_6C;
 +	Vec2 vec_74, lastVec_74;
 +	float wiimoteMoveDistanceOrSomething;
 +	float lastWiimoteMoveDistanceOrSomething;
 +	u8 isShaking, _8D;
 +	u16 tiltAmount;
 +	u8 _90, _91, _92;
 +};
 +
  struct RemoconMngClass {
  	void *vtable;
 -	void *controllers[4];
 +	Remocon *controllers[4];
  };
  /*
 @@ -246,7 +319,7 @@ inline int GetActiveWiimoteID() {  	return ActiveWiimoteID;
  }
 -inline void *GetActiveRemocon() {
 +inline Remocon *GetActiveRemocon() {
  	return GetRemoconMng()->controllers[GetActiveWiimoteID()];
  }
 @@ -254,11 +327,11 @@ inline void *GetActiveWiimote() {  	return ActiveWiimote;
  }
 -inline unsigned int Remocon_GetButtons(void *self) {
 +inline unsigned int Remocon_GetButtons(Remocon *self) {
  	return *((unsigned int*)((u32)self+0x18));
  }
 -inline unsigned int Remocon_GetPressed(void *self) {
 +inline unsigned int Remocon_GetPressed(Remocon *self) {
  	return *((unsigned int*)((u32)self+0x1C));
  }
 @@ -505,6 +578,20 @@ namespace lyt {  	class Group;
  	class GroupContainer;
 +	namespace detail {
 +		class TexCoordAry {
 +			public:
 +				TexCoordAry();
 +				void Free();
 +				void Reserve(u8 count);
 +				void SetSize(u8 count);
 +				void Copy(const void *source, u8 count);
 +
 +				u8 reservedSize, usedSize;
 +				void *data;
 +		};
 +	}
 +
  	class Layout {
  	public:
  		Layout();
 @@ -636,11 +723,17 @@ namespace lyt {  		u8 flag;
  		char name[0x11];
 -		char userdata[8];
 +		char userdata[9];
 -		u8 _D5;
  		u8 paneIsOwnedBySomeoneElse;
  		u8 _D7;
 +
 +		void SetVisible(bool value) {
 +			if (value)
 +				flag |= 1;
 +			else
 +				flag &= ~1;
 +		}
  	};
  	class TextBox : public Pane {
 @@ -657,7 +750,7 @@ namespace lyt {  		uchar GetVtxColorElement(ulong id) const;
  		void SetVtxColorElement(ulong id, uchar value);
 -		virtual void LoadMtx(const DrawInfo &info);
 +		void LoadMtx(const DrawInfo &info);
  		virtual void AllocStringBuffer(u16 size);
  		virtual void FreeStringBuffer();
 @@ -681,6 +774,26 @@ namespace lyt {  		u8 alignment;
  		u8 flags;
  	};
 +
 +	class Picture : public Pane {
 +	public:
 +		Picture(void *, void *); // todo: Picture((res::Picture const *,ResBlockSet const &))
 +		~Picture();
 +
 +		void *GetRuntimeTypeInfo() const;
 +
 +		void DrawSelf(const DrawInfo &info);
 +
 +		ut::Color GetVtxColor(ulong id) const;
 +		void SetVtxColor(ulong id, ut::Color color);
 +		uchar GetVtxColorElement(ulong id) const;
 +		void SetVtxColorElement(ulong id, uchar value);
 +
 +		virtual void Append(const GXTexObj &obj);
 +
 +		ut::Color colours[4];
 +		detail::TexCoordAry texCoords;
 +	};
  }
 @@ -2487,7 +2600,10 @@ namespace nw4r {  				void SetupGXWithColorMapping(Color c1, Color c2);
  			public:
 -				Color colors[8]; // todo: document
 +				Color minColMapping, maxColMapping;
 +				Color vtxColours[4];
 +				Color topColour, bottomColour;
 +
  				u32 modeOfSomeKind;
  				float scaleX;
  				float scaleY;
 @@ -2522,12 +2638,12 @@ namespace nw4r {  				bool IsDrawFlagSet(ulong, ulong) const;
 -				float _4C;
 +				float widthLimit;
  				float charSpace;
 -				float somethingRelatedToLineHeight;
 -				u32 _58;
 +				float lineSpace;
 +				u32 tabWidth;
  				u32 drawFlag;
 -				void *tagProcessorMaybe;
 +				void *tagProcessor;
  		};
  	}
  }
 @@ -2667,7 +2783,7 @@ namespace m2d {  		nw4r::lyt::Pane *getRootPane();
  		nw4r::lyt::Pane *findPaneByName(const char *name) const;
  		nw4r::lyt::TextBox *findTextBoxByName(const char *name) const;
 -		nw4r::lyt::Pane *findPictureByName(const char *name) const; // TODO: change to others
 +		nw4r::lyt::Picture *findPictureByName(const char *name) const;
  		nw4r::lyt::Pane *findWindowByName(const char *name) const;
  		void animate();
 @@ -2705,10 +2821,10 @@ namespace m2d {  		// does NSMBW even use consts? I have no idea. maybe not
 -		void getPanes(const char **names, nw4r::lyt::Pane *output, int count) const;
 -		void getWindows(const char **names, nw4r::lyt::Pane *output, int count) const; // TODO: change to others
 -		void getPictures(const char **names, nw4r::lyt::Pane *output, int count) const;
 -		void getTextBoxes(const char **names, nw4r::lyt::TextBox *output, int count) const;
 +		void getPanes(const char **names, nw4r::lyt::Pane **output, int count) const;
 +		void getWindows(const char **names, nw4r::lyt::Pane **output, int count) const; // TODO: change to others
 +		void getPictures(const char **names, nw4r::lyt::Picture **output, int count) const;
 +		void getTextBoxes(const char **names, nw4r::lyt::TextBox **output, int count) const;
  		void setLangStrings(const char **names, const int *msgIDs, int category, int count);
 @@ -3072,6 +3188,57 @@ namespace mHeap {  };
  void WriteNumberToTextBox(int *number, const int *fieldLength, nw4r::lyt::TextBox *textBox, bool unk); // 800B3B60
 +
 +namespace EGG {
 +	class MsgRes {
 +		private:
 +			const u8 *bmg, *INF1, *DAT1, *STR1, *MID1, *FLW1, *FLI1;
 +		public:
 +			MsgRes(const u8 *bmgFile, u32 unusedParam); // 802D7970
 +			virtual ~MsgRes();
 +
 +			static void parseFormatCode(wchar_t initialTag, const wchar_t *string, u8 *outArgsSize, u32 *outCmd, const wchar_t **args); // 802D7B10
 +
 +			const wchar_t *findStringForMessageID(int category, int message) const; // 0x802D7B50
 +
 +		private:
 +			void setBMG(const u8 *ptr); // 802D7B90
 +			void setINF(const u8 *ptr); // 802D7BA0
 +			void setDAT(const u8 *ptr); // 802D7BB0
 +			void setSTR(const u8 *ptr); // 802D7BC0
 +			void setMID(const u8 *ptr); // 802D7BD0
 +			void setFLW(const u8 *ptr); // 802D7BE0
 +			void setFLI(const u8 *ptr); // 802D7BF0
 +			int identifySectionByMagic(u32 magic) const; // 802D7C00
 +
 +		protected:
 +			struct INFEntry {
 +				u32 stringOffset;
 +			};
 +			const INFEntry *findINFForMessageID(int category, int message) const; // 802D7C90
 +			u32 getEntryFromMID(int index) const; // 802D7D70
 +	};
 +}
 +namespace dScript {
 +	class Res_c : public EGG::MsgRes {
 +		public:
 +			Res_c(const u8 *bmgFile, u32 unusedParam); // 800CE7F0
 +			~Res_c();
 +
 +			u16 getCharScaleForMessageID(int category, int message) const; // 800CE890
 +			u8 getFontIDForMessageID(int category, int message) const; // 800CE8C0
 +	};
 +}
 +class MessageClass {
 +	public:
 +		dDvdLoader_c loader;
 +		void *rawBmgPointer;
 +		dScript::Res_c *msgRes;
 +};
 +
 +dScript::Res_c *GetBMG(); // 800CDD50
 +void WriteBMGToTextBox(nw4r::lyt::TextBox *textBox, dScript::Res_c *res, int category, int message, int argCount, ...); // 0x800C9B50
 +
  extern "C" dAc_Py_c* GetSpecificPlayerActor(int number);
  extern "C" dStageActor_c *CreateActor(u16 classID, int settings, Vec pos, char rot, char layer);
  extern "C" dStageActor_c *Actor_SearchByID(u32 actorID);
 diff --git a/include/newer.h b/include/newer.h index 4f34f81..d98f290 100644 --- a/include/newer.h +++ b/include/newer.h @@ -27,5 +27,6 @@ enum NWRWorld {  NWRWorld NewerWorldForLevelID(int world, int level);  const wchar_t *NewerWorldName(NWRWorld world); +int getStarCoinCount();  #endif /* NEWER_H */ | 
