mirror of
https://github.com/zeldaret/tmc
synced 2026-05-30 17:06:15 -04:00
51 lines
1.7 KiB
C
51 lines
1.7 KiB
C
/**
|
|
* @file animatedBackgroundManager.c
|
|
* @ingroup Managers
|
|
*
|
|
* @brief Set up bg3 for cloud tops, vaati2 and some beanstalks.
|
|
*/
|
|
#include "manager/animatedBackgroundManager.h"
|
|
#include "room.h"
|
|
#include "screen.h"
|
|
|
|
void AnimatedBackgroundManager_Init(AnimatedBackgroundManager*);
|
|
void AnimatedBackgroundManager_Action1(AnimatedBackgroundManager*);
|
|
|
|
void AnimatedBackgroundManager_Main(AnimatedBackgroundManager* this) {
|
|
static void (*const AnimatedBackgroundManager_Actions[])(AnimatedBackgroundManager*) = {
|
|
AnimatedBackgroundManager_Init,
|
|
AnimatedBackgroundManager_Action1,
|
|
};
|
|
AnimatedBackgroundManager_Actions[super->action](this);
|
|
}
|
|
|
|
void AnimatedBackgroundManager_Init(AnimatedBackgroundManager* this) {
|
|
static const u16 gUnk_08108C88[] = { 0x1e07, 0x1e07 };
|
|
super->action = 1;
|
|
|
|
gScreen.lcd.displayControl |= DISPCNT_BG3_ON;
|
|
gScreen.bg3.control = gUnk_08108C88[super->type];
|
|
gRoomControls.bg3OffsetY.WORD = 0;
|
|
gRoomControls.bg3OffsetX.WORD = 0;
|
|
|
|
switch (super->type) {
|
|
case 0:
|
|
default:
|
|
gScreen.bg3.yOffset = 0;
|
|
gScreen.bg3.xOffset = 0;
|
|
break;
|
|
case 1:
|
|
gScreen.bg3.xOffset = gRoomControls.scroll_x + gRoomControls.bg3OffsetX.HALF.HI;
|
|
gScreen.bg3.yOffset = gRoomControls.scroll_y + gRoomControls.bg3OffsetY.HALF.HI;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AnimatedBackgroundManager_Action1(AnimatedBackgroundManager* this) {
|
|
if (super->type == 1) {
|
|
gRoomControls.bg3OffsetX.WORD = gRoomControls.bg3OffsetX.WORD + 0x2000;
|
|
gScreen.bg3.xOffset = gRoomControls.scroll_x + gRoomControls.bg3OffsetX.HALF.HI;
|
|
gScreen.bg3.yOffset = gRoomControls.scroll_y + gRoomControls.bg3OffsetY.HALF.HI;
|
|
}
|
|
}
|