mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-26 06:52:40 -04:00
copy homebuttonLib from oot-vc (#2960)
* 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
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
|
||||
#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
|
||||
Reference in New Issue
Block a user