mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-02 08:11:58 -04:00
4df8ccc871
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}
* Update configure.py and project.py for new libs structure
* Refactor `#include <dolphin/x.h>` -> `<x.h>`
* Remove `__REVOLUTION_SDK__` forwards from dolphin
* Fix dolphin/ references in revolution
* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`
* Always build TRK against dolphin headers
* Resolve revolution SDK header resolution issues
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
|