#include "worldmap.h" dWMHud_c *dWMHud_c::instance = 0; dWMHud_c *dWMHud_c::build() { OSReport("Creating WM_Hud\n"); void *buffer = AllocFromGameHeap1(sizeof(dWMHud_c)); dWMHud_c *c = new(buffer) dWMHud_c; OSReport("Created WM_Hud @ %p\n", c); instance = c; return c; } dWMHud_c::dWMHud_c() { layoutLoaded = false; } int dWMHud_c::onCreate() { if (!layoutLoaded) { bool gotFile = layout.loadArc("maphud.arc", false); if (!gotFile) return false; static const char *brlanNames[3] = {"maphud_hitbutton.brlan", "maphud_in.brlan", "maphud_out.brlan"}; static const char *groupNames[4] = {"B01_Button", "B02_Button", "A00_Window", "A00_Window"}; OSReport("Going to build\n"); bool output = layout.build("maphud.brlyt"); OSReport("Returned %d\n", output); layout.loadAnimations(brlanNames, 3); OSReport("Animations loaded\n"); layout.loadGroups(groupNames, (int[4]){0, 0, 1, 2}, 4); OSReport("Groups loaded\n"); layout.disableAllAnimations(); OSReport("Animations disabled\n"); layout.enableNonLoopAnim(2); //layout.findTextBoxByName("T_area_01")->AllocStringBuffer(100); layoutLoaded = true; } return true; } int dWMHud_c::onDelete() { return layout.free(); } int dWMHud_c::onExecute() { layout.execAnimations(); layout.update(); return true; } int dWMHud_c::onDraw() { layout.scheduleForDrawing(); return true; } void dWMHud_c::updateText() { u16 newPointName[120]; OSReport("Updating text.\n"); // figure this out... WMPathPoint *point = dScNewerWorldMap_c::instance->currentPoint; OSReport("Obtained point: %p\n", point); if (point->type == WMPathPoint::LEVEL_TYPE) { OSReport("It's a level: %d, %d\n", point->params[0], point->params[1]); LevelInfo *li = &dScNewerWorldMap_c::instance->levelInfo; LevelInfo::Entry *entry = li->search(point->params[0] - 1, point->params[1] - 1); OSReport("Got entry: %p\n", entry); char *levelName = li->getNameForLevel(entry); OSReport("Got name: %s\n", levelName); OSReport("Length: %d\n", entry->nameLength); // copy it // I need to make this into a function. for (int i = 0; i < 120 && i < entry->nameLength; i++) { newPointName[i] = levelName[i]; } newPointName[entry->nameLength] = 0; } else { OSReport("No name!\n"); newPointName[0] = 0; } nw4r::lyt::TextBox *t = layout.findTextBoxByName("T_area_01"); OSReport("TextBox: %p\n", t); layout.findTextBoxByName("T_area_01")->SetString((wchar_t*)newPointName); OSReport("Set it to T_area_01\n"); }