mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-26 06:52:40 -04:00
08f0789ae7
* initial copy of hbm from sdk_2009-12-11 * some more nw4hbm cleanup * nw4hbm db mostly done * nw4hbm snd copied from oot-vc * nw4hbm ut copied * nw4hbm lyt copied * nw4hbm copied, mostly matching usa 1.0 * setup nw4hbm debug define * fix HBMDataInfo struct * add rvl sdk card lib
69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
|
|
#include "HBMFrameController.h"
|
|
|
|
namespace homebutton {
|
|
|
|
void FrameController::init(int anm_type, f32 max_frame, f32 min_frame, f32 delta) {
|
|
mAnmType = anm_type;
|
|
mMaxFrame = max_frame;
|
|
mMinFrame = min_frame;
|
|
|
|
mDelta = delta;
|
|
mState = ANIM_STATE_STOP;
|
|
mbAlternateBack = false;
|
|
|
|
initFrame();
|
|
}
|
|
|
|
void FrameController::initFrame() {
|
|
mFrame = mAnmType == ANIM_TYPE_BACKWARD ? mMaxFrame : mMinFrame;
|
|
}
|
|
|
|
void FrameController::calc() {
|
|
if (mState != ANIM_STATE_PLAY) {
|
|
return;
|
|
}
|
|
|
|
switch (mAnmType) {
|
|
case ANIM_TYPE_FORWARD:
|
|
if ((mFrame += mDelta) >= getLastFrame()) {
|
|
mFrame = getLastFrame();
|
|
stop();
|
|
}
|
|
|
|
break;
|
|
|
|
case ANIM_TYPE_BACKWARD:
|
|
if ((mFrame -= mDelta) <= mMinFrame) {
|
|
mFrame = mMinFrame;
|
|
stop();
|
|
}
|
|
|
|
break;
|
|
|
|
case ANIM_TYPE_LOOP:
|
|
if ((mFrame += mDelta) >= mMaxFrame) {
|
|
mFrame -= mMaxFrame - mMinFrame;
|
|
}
|
|
|
|
break;
|
|
|
|
case ANIM_TYPE_ALTERNATE:
|
|
if (!mbAlternateBack) {
|
|
if ((mFrame += mDelta) >= getLastFrame()) {
|
|
mFrame = getLastFrame();
|
|
mbAlternateBack = true;
|
|
}
|
|
} else {
|
|
if ((mFrame -= mDelta) <= mMinFrame) {
|
|
mFrame = mMinFrame;
|
|
mbAlternateBack = false;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
} // namespace homebutton
|