FRESH AND RAW
[potpourri.git] / src / SDLAnimation / SDLAnimation.h
blob2aa81ddbf87993a5d5b0bc51d4fd9160a77200e5
1 // Copyright 2008 Brian Caine
3 // This file is part of Potpourri.
5 // Potpourri is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
10 // Potpourri is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTIBILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with Potpourri. If not, see <http://www.gnu.org/licenses/>.
19 // NOTES:
20 // A drawable thing
22 #ifndef __SDLANIMATION_H
23 #define __SDLANIMATION_H
25 #include <SDL/SDL.h>
27 #include "../../include/plugins/graphics/Graphics.h"
28 #include "../../include/plugins/input/InputManager.h"
29 #include "../../include/core/Game.h"
30 #include "../SDLPlugin/SDLSurface.h"
32 namespace fragrant
34 const std::string ANIMATION_LOOP_EVENT = "SDLAnimation_Loop";
36 struct SDLAnimationFrame
38 SDL_Surface* image;
39 Pair<int> offset;
42 struct SDLAnimationData
44 std::vector<SDLAnimationFrame> images;
45 std::vector<Pair<int> > frames; // Pair.x = frame; .y = duration
47 std::vector<SDL_Surface*> root_surfaces;
48 InputManager* input_manager;
49 std::string id;
52 class SDLAnimation : public Drawable, public ScriptedClass
54 public:
55 SDLAnimation(SDLAnimationData ndata);
56 ~SDLAnimation();
58 void draw(Target* target, GraphicsRect* destrect,
59 GraphicsPair* srcrect, float angle);
60 ScriptedClass* getScriptObject();
61 void destroy();
63 // script stuff
65 func getConstructor();
67 std::string getClassName();
68 std::vector<std::string> getClassFunctions();
70 Variant* callFunction(std::string funcname,
71 std::vector<Variant*> params, ScriptVM* script_vm);
73 protected:
74 SDLAnimationData data;
76 int cur_frame;
77 int time;
78 int ticks_left;
82 #endif