aboutsummaryrefslogtreecommitdiff
path: root/archive/hgehelp/hgeanim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archive/hgehelp/hgeanim.cpp')
-rw-r--r--archive/hgehelp/hgeanim.cpp165
1 files changed, 0 insertions, 165 deletions
diff --git a/archive/hgehelp/hgeanim.cpp b/archive/hgehelp/hgeanim.cpp
deleted file mode 100644
index 0e370db..0000000
--- a/archive/hgehelp/hgeanim.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-** Haaf's Game Engine 1.7
-** Copyright (C) 2003-2007, Relish Games
-** hge.relishgames.com
-**
-** hgeAnimation helper class implementation
-*/
-
-
-#include "hgeanim.h"
-
-
-hgeAnimation::hgeAnimation(HTEXTURE tex, int nframes, float FPS, float x, float y, float w, float h)
- : hgeSprite(tex, x, y, w, h)
-{
- orig_width = hge->Texture_GetWidth(tex, true);
-
- fSinceLastFrame=-1.0f;
- fSpeed=1.0f/FPS;
- bPlaying=false;
- nFrames=nframes;
-
- Mode=HGEANIM_FWD | HGEANIM_LOOP;
- nDelta=1;
- SetFrame(0);
-}
-
-hgeAnimation::hgeAnimation(const hgeAnimation & anim)
-: hgeSprite(anim)
-{
- // Copy hgeAnimation parameters:
- this->orig_width = anim.orig_width;
- this->bPlaying = anim.bPlaying;
- this->fSpeed = anim.fSpeed;
- this->fSinceLastFrame = anim.fSinceLastFrame;
- this->Mode = anim.Mode;
- this->nDelta = anim.nDelta;
- this->nFrames = anim.nFrames;
- this->nCurFrame = anim.nCurFrame;
-}
-
-void hgeAnimation::SetMode(int mode)
-{
- Mode=mode;
-
- if(mode & HGEANIM_REV)
- {
- nDelta = -1;
- SetFrame(nFrames-1);
- }
- else
- {
- nDelta = 1;
- SetFrame(0);
- }
-}
-
-
-void hgeAnimation::Play()
-{
- bPlaying=true;
- fSinceLastFrame=-1.0f;
- if(Mode & HGEANIM_REV)
- {
- nDelta = -1;
- SetFrame(nFrames-1);
- }
- else
- {
- nDelta = 1;
- SetFrame(0);
- }
-}
-
-
-void hgeAnimation::Update(float fDeltaTime)
-{
- if(!bPlaying) return;
-
- if(fSinceLastFrame == -1.0f)
- fSinceLastFrame=0.0f;
- else
- fSinceLastFrame += fDeltaTime;
-
- while(fSinceLastFrame >= fSpeed)
- {
- fSinceLastFrame -= fSpeed;
-
- if(nCurFrame + nDelta == nFrames)
- {
- switch(Mode)
- {
- case HGEANIM_FWD:
- case HGEANIM_REV | HGEANIM_PINGPONG:
- bPlaying = false;
- break;
-
- case HGEANIM_FWD | HGEANIM_PINGPONG:
- case HGEANIM_FWD | HGEANIM_PINGPONG | HGEANIM_LOOP:
- case HGEANIM_REV | HGEANIM_PINGPONG | HGEANIM_LOOP:
- nDelta = -nDelta;
- break;
- }
- }
- else if(nCurFrame + nDelta < 0)
- {
- switch(Mode)
- {
- case HGEANIM_REV:
- case HGEANIM_FWD | HGEANIM_PINGPONG:
- bPlaying = false;
- break;
-
- case HGEANIM_REV | HGEANIM_PINGPONG:
- case HGEANIM_REV | HGEANIM_PINGPONG | HGEANIM_LOOP:
- case HGEANIM_FWD | HGEANIM_PINGPONG | HGEANIM_LOOP:
- nDelta = -nDelta;
- break;
- }
- }
-
- if(bPlaying) SetFrame(nCurFrame+nDelta);
- }
-}
-
-void hgeAnimation::SetFrame(int n)
-{
- float tx1, ty1, tx2, ty2;
- bool bX, bY, bHS;
- int ncols = int(orig_width) / int(width);
-
-
- n = n % nFrames;
- if(n < 0) n = nFrames + n;
- nCurFrame = n;
-
- // calculate texture coords for frame n
- ty1 = ty;
- tx1 = tx + n*width;
-
- if(tx1 > orig_width-width)
- {
- n -= int(orig_width-tx) / int(width);
- tx1 = width * (n%ncols);
- ty1 += height * (1 + n/ncols);
- }
-
- tx2 = tx1 + width;
- ty2 = ty1 + height;
-
- tx1 /= tex_width;
- ty1 /= tex_height;
- tx2 /= tex_width;
- ty2 /= tex_height;
-
- quad.v[0].tx=tx1; quad.v[0].ty=ty1;
- quad.v[1].tx=tx2; quad.v[1].ty=ty1;
- quad.v[2].tx=tx2; quad.v[2].ty=ty2;
- quad.v[3].tx=tx1; quad.v[3].ty=ty2;
-
- bX=bXFlip; bY=bYFlip; bHS=bHSFlip;
- bXFlip=false; bYFlip=false;
- SetFlip(bX,bY,bHS);
-}
-