/* * Newer Super Mario Bros. Wii * World Maps * * Wish me luck. That's all I'm saying. --Treeki * Started: 03/06/2010; 11:52pm */ // TODO: add Save Error state #ifndef __NEWER_WORLDMAP_H #define __NEWER_WORLDMAP_H #define WM_DEBUGGING #define WM_SPAMMY_DEBUGGING #include #include #include #include "fileload.h" #include "levelinfo.h" #include "worldmapdata.h" #include "wmresourcemng.h" #include "wm_map.h" enum WMDirection { LEFT, RIGHT, UP, DOWN }; #ifdef WM_DEBUGGING #define MapReport OSReport #else inline void MapReport(const char *str, ...) { } #endif #ifdef WM_SPAMMY_DEBUGGING #define SpammyReport OSReport #else inline void SpammyReport(const char *str, ...) { } #endif void NewerMapDrawFunc(); // Replacing some process IDs #define WM_HUD WM_ANTLION class dWMHud_c : public dBase_c { public: dWMHud_c(); int onCreate(); int onDelete(); int onExecute(); int onDraw(); bool layoutLoaded; m2d::EmbedLayout_c layout; static dWMHud_c *build(); static dWMHud_c *instance; }; class dWorldCamera_c : public dBase_c { public: int onCreate(); int onDelete(); int onExecute(); int onDraw(); Point3d camPos; Vec camRotate; float camDist; float targetDist; float camY; float targetY; static dWorldCamera_c *build(); static dWorldCamera_c *instance; }; class daWMPlayer_c : public dActor_c { public: dPlayerModelHandler_c *modelHandler; int onCreate(); int onDelete(); int onExecute(); int onDraw(); int current_param; int currentAnim; float currentFrame; float currentUnk; float currentUpdateRate; void startAnimation(int id, float frame, float unk, float updateRate); static daWMPlayer_c *build(); static daWMPlayer_c *instance; }; // WORLD MAP CLASS LAYOUT class dScNewerWorldMap_c : public dScene_c { public: dScNewerWorldMap_c(); FunctionChain initChain; int state; void *csMenu; void *selectCursor; void *numPeopleChange; void *yesNoWindow; void *continueObj; void *stockItem; void *stockItemShadow; void *easyPairing; File levelInfoFile; LevelInfo levelInfo; dWMResourceMng_c resMng; dWMPathData_c pathData; daWMPlayer_c *player; dWMMap_c *map; dWMHud_c *hud; bool isMoving; WMPathPoint *currentPoint; WMPathPoint *nextPoint; WMPathDef *currentPath; WMPathSegment *currentSegment; int currentSegmentID; bool reverseThroughPath; // direction we are going through the path void HandleMovement(); void StartMovementTo(WMDirection direction); void MoveToSegment(int id); void MoveThroughPath(); void ActivatePoint(); void StartLevel(LevelInfo::Entry *entry); int onCreate(); int onDelete(); int onExecute(); static dScNewerWorldMap_c *build(); static dScNewerWorldMap_c *instance; }; #endif