summaryrefslogtreecommitdiff
path: root/src/koopatlas/hud.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/koopatlas/hud.cpp')
-rw-r--r--src/koopatlas/hud.cpp50
1 files changed, 42 insertions, 8 deletions
diff --git a/src/koopatlas/hud.cpp b/src/koopatlas/hud.cpp
index c9124d2..4f4ce2f 100644
--- a/src/koopatlas/hud.cpp
+++ b/src/koopatlas/hud.cpp
@@ -84,6 +84,9 @@ int dWMHud_c::onCreate() {
layoutLoaded = true;
willShowHeader = false;
+ willShowFooter = false;
+
+ loadFooterInfo();
if (!dScKoopatlas_c::instance->pathManager.isMoving)
enteredNode();
@@ -110,7 +113,13 @@ int dWMHud_c::onExecute() {
if (willShowHeader && (!(layout.isAnimOn(SHOW_HEADER)))) {
willShowHeader = false;
loadHeaderInfo();
- playShowHeaderAnim();
+ playShowAnim(SHOW_HEADER);
+ }
+
+ if (willShowFooter && (!(layout.isAnimOn(SHOW_FOOTER)))) {
+ willShowFooter = false;
+ loadFooterInfo();
+ playShowAnim(SHOW_FOOTER);
}
updatePressableButtonThingies();
@@ -134,19 +143,19 @@ int dWMHud_c::onDraw() {
-void dWMHud_c::playShowHeaderAnim() {
+void dWMHud_c::playShowAnim(int id) {
if (!this || !this->layoutLoaded) return;
- layout.enableNonLoopAnim(SHOW_HEADER);
+ layout.enableNonLoopAnim(id);
}
-void dWMHud_c::playHideHeaderAnim() {
+void dWMHud_c::playHideAnim(int id) {
if (!this || !this->layoutLoaded) return;
- if (!layout.isAnimOn(SHOW_HEADER)) {
- layout.enableNonLoopAnim(SHOW_HEADER, true);
+ if (!layout.isAnimOn(id)) {
+ layout.enableNonLoopAnim(id, true);
}
- layout.grpHandlers[SHOW_HEADER].frameCtrl.flags = 3; // NO_LOOP | REVERSE
+ layout.grpHandlers[id].frameCtrl.flags = 3; // NO_LOOP | REVERSE
}
@@ -222,6 +231,26 @@ void dWMHud_c::loadHeaderInfo() {
}
+void dWMHud_c::loadFooterInfo() {
+ SaveBlock *save = GetSaveFile()->GetBlock(-1);
+
+ wchar_t convertedWorldName[36];
+ int i;
+ for (i = 0; i < 36; i++) {
+ convertedWorldName[i] = save->newerWorldName[i];
+ if (convertedWorldName[i] == 0)
+ break;
+ }
+ convertedWorldName[35] = 0;
+
+ WorldName->SetString(convertedWorldName);
+ WorldNameS->SetString(convertedWorldName);
+
+ WorldName->colour1 = save->hudTextColour[0];
+ WorldName->colour2 = save->hudTextColour[1];
+}
+
+
void dWMHud_c::enteredNode(dKPNode_s *node) {
if (node == 0)
@@ -240,12 +269,17 @@ void dWMHud_c::leftNode() {
if ((layout.isAnimOn(SHOW_HEADER) && (layout.grpHandlers[SHOW_HEADER].frameCtrl.flags & 2))
|| (!layout.isAnimOn(SHOW_HEADER))) {
// currently being shown, OR fully shown already
- playHideHeaderAnim();
+ playHideAnim(SHOW_HEADER);
}
}
}
+void dWMHud_c::hideAndShowFooter() {
+ willShowFooter = true;
+ playHideAnim(SHOW_FOOTER);
+}
+
void dWMHud_c::setupLives() {
static const int LogicalPlayerIDs[] = {0,1,3,2};