mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-09-10 12:02:53 +02:00
Add Bitmap.next_frame + Bitmap.previous_frame
This commit is contained in:
parent
171147d4d0
commit
380bd1d249
3 changed files with 61 additions and 1 deletions
|
@ -581,6 +581,30 @@ RB_METHOD(bitmapRemoveFrame){
|
|||
return RUBY_Qnil;
|
||||
}
|
||||
|
||||
RB_METHOD(bitmapNextFrame){
|
||||
RB_UNUSED_PARAM;
|
||||
|
||||
rb_check_argc(argc, 0);
|
||||
|
||||
Bitmap *b = getPrivateData<Bitmap>(self);
|
||||
|
||||
b->nextFrame();
|
||||
|
||||
return INT2NUM(b->currentFrameI());
|
||||
}
|
||||
|
||||
RB_METHOD(bitmapPreviousFrame){
|
||||
RB_UNUSED_PARAM;
|
||||
|
||||
rb_check_argc(argc, 0);
|
||||
|
||||
Bitmap *b = getPrivateData<Bitmap>(self);
|
||||
|
||||
b->previousFrame();
|
||||
|
||||
return INT2NUM(b->currentFrameI());
|
||||
}
|
||||
|
||||
RB_METHOD(bitmapSetFPS){
|
||||
RB_UNUSED_PARAM;
|
||||
|
||||
|
@ -705,6 +729,8 @@ void bitmapBindingInit() {
|
|||
_rb_define_method(klass, "current_frame", bitmapCurrentFrame);
|
||||
_rb_define_method(klass, "add_frame", bitmapAddFrame);
|
||||
_rb_define_method(klass, "remove_frame", bitmapRemoveFrame);
|
||||
_rb_define_method(klass, "next_frame", bitmapNextFrame);
|
||||
_rb_define_method(klass, "previous_frame", bitmapPreviousFrame);
|
||||
_rb_define_method(klass, "frame_rate", bitmapGetFPS);
|
||||
_rb_define_method(klass, "frame_rate=", bitmapSetFPS);
|
||||
_rb_define_method(klass, "looping", bitmapGetLooping);
|
||||
|
|
|
@ -1883,6 +1883,38 @@ void Bitmap::removeFrame(int position) {
|
|||
}
|
||||
}
|
||||
|
||||
void Bitmap::nextFrame()
|
||||
{
|
||||
GUARD_UNANIMATED;
|
||||
|
||||
stop();
|
||||
if (p->animation.lastFrame >= p->animation.frames.size() - 1) {
|
||||
if (!p->animation.loop) return;
|
||||
p->animation.lastFrame = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
p->animation.lastFrame++;
|
||||
}
|
||||
|
||||
void Bitmap::previousFrame()
|
||||
{
|
||||
GUARD_UNANIMATED;
|
||||
|
||||
stop();
|
||||
|
||||
if (p->animation.lastFrame <= 0) {
|
||||
if (!p->animation.loop) {
|
||||
p->animation.lastFrame = 0;
|
||||
return;
|
||||
}
|
||||
p->animation.lastFrame = p->animation.frames.size() - 1;
|
||||
return;
|
||||
}
|
||||
|
||||
p->animation.lastFrame--;
|
||||
}
|
||||
|
||||
void Bitmap::setAnimationFPS(float FPS)
|
||||
{
|
||||
GUARD_MEGA;
|
||||
|
|
|
@ -130,9 +130,11 @@ public:
|
|||
int currentFrameI() const;
|
||||
|
||||
int addFrame(Bitmap &source, int position = -1);
|
||||
|
||||
void removeFrame(int position = -1);
|
||||
|
||||
void nextFrame();
|
||||
void previousFrame();
|
||||
|
||||
void setAnimationFPS(float FPS);
|
||||
float getAnimationFPS();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue