diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-12-16 06:55:07 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-16 16:55:07 +0200 |
| commit | 8185d87f855baff0d55d0e3ffc1a3cbdcfc4b5e2 (patch) | |
| tree | 2a3c01f1a2a8b81de5a0748a5bcb187a97e7a114 /src/revolution/homebuttonLib/HBMFrameController.cpp | |
| parent | c8104b6d62cc424318c7e0c44c92d94234bfef15 (diff) | |
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
Diffstat (limited to 'src/revolution/homebuttonLib/HBMFrameController.cpp')
| -rw-r--r-- | src/revolution/homebuttonLib/HBMFrameController.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/revolution/homebuttonLib/HBMFrameController.cpp b/src/revolution/homebuttonLib/HBMFrameController.cpp new file mode 100644 index 0000000000..dccaf15996 --- /dev/null +++ b/src/revolution/homebuttonLib/HBMFrameController.cpp @@ -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 |
