00001 /*************************************************************************** 00002 * NGT (Neopontec Gaming Toolkit * 00003 * Distributed under the terms of the GNU LGPL License * 00004 * Copyright (C) 2005 by Hector Blanco de Frutos * 00005 * hectorblanco@neopontec.com * 00006 * Refer to the LICENSE file to read the full license agreement * 00007 ***************************************************************************/ 00008 00009 /************************************************************************** 00010 * This code part was originaly taken from the SDL GFX tutorials at 00011 * http://cone3d.gamedev.net , developed by Marius Andra 00012 **************************************************************************/ 00013 00014 #ifndef _SPRITES_H_ 00015 #define _SPRITES_H_ 00016 // The sprite helper structure 00017 struct NGT_SpriteFrame 00018 { 00019 SDL_Surface *image; 00020 int pause; 00021 }; 00022 00023 // The base structure for sprites 00025 00028 class NGT_SpriteBase 00029 { 00030 public: 00032 int init(char *dir); 00033 00034 NGT_SpriteFrame *mAnim; 00035 int mBuilt; 00037 int mNumframes; 00039 int mW; 00041 int mH; 00042 }; 00043 00045 00048 class NGT_Sprite 00049 { 00050 public: 00051 NGT_Sprite() {} 00052 ~NGT_Sprite() {}; 00054 int init(NGT_SpriteBase *base, SDL_Surface *screen); 00056 void draw(); 00057 void clearBG(); 00058 void updateBG(); 00060 void setFrame(int nr) { mFrame = nr; } 00062 int getFrame() { return mFrame; } 00063 00065 void setSpeed(float nr) { mSpeed = nr; } 00067 float getSpeed() { return mSpeed; } 00068 00070 void toggleAnim() { mAnimating = !mAnimating; } 00072 void startAnim() { mAnimating = 1; } 00074 void stopAnim() { mAnimating = 0; } 00076 void rewind() { mFrame = 0; } 00077 00079 void xadd(int nr) { mX+=nr; } 00081 void yadd(int nr) { mY+=nr; } 00083 void xset(int nr) { mX=nr; } 00085 void yset(int nr) { mY=nr; } 00087 void set(int xx, int yy) { mX=xx; mY=yy; } 00088 00090 float getx() {return mX;} 00092 float gety() {return mY;} 00094 int getw() {return mSpriteBase->mAnim[0].image->w;} 00096 int geth() {return mSpriteBase->mAnim[0].image->h;} 00097 00098 private: 00099 int mFrame; 00100 int mX, mY, mOldX, mOldY; 00101 int mAnimating; 00102 int mDrawn; 00103 float mSpeed; 00104 long mLastupdate; 00105 NGT_SpriteBase *mSpriteBase; 00106 SDL_Surface *mBackreplacement; 00107 SDL_Surface *mScreen; 00108 }; 00109 00111 00114 short int Sprite_Collide(NGT_Sprite &object1, NGT_Sprite &object2); 00115 00116 #endif //_SPRITES_H_ 00117