]> git.jsancho.org Git - lugaru.git/blob - Source/Sprite.h
major refactor of texture system
[lugaru.git] / Source / Sprite.h
1 /*
2 Copyright (C) 2003, 2010 - Wolfire Games
3
4 This file is part of Lugaru.
5
6 Lugaru is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
14
15 See the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 */
21
22 #ifndef _SPRITE_H_
23 #define _SPRITE_H_
24
25 #include "Quaternions.h"
26 #include "gamegl.h"
27 #include "TGALoader.h"
28 #include "Quaternions.h"
29 #include "Frustum.h"
30 #include "Lights.h"
31 #include "Terrain.h"
32 #include "Objects.h"
33 #include "Texture.h"
34
35 #include <vector>
36
37 #define max_sprites 20000
38
39 enum {
40         cloudsprite = 0,
41         bloodsprite,
42         flamesprite,
43         smoketype,
44         weaponflamesprite,
45         cloudimpactsprite,
46         snowsprite,
47         weaponshinesprite,
48         bloodflamesprite,
49         breathsprite,
50         splintersprite,
51         spritenumber
52 };
53
54 class Sprite{
55         private:
56                 XYZ oldposition;
57                 XYZ position;
58                 XYZ velocity;
59                 float size;
60                 float initialsize;
61                 int type;
62                 int special;
63                 float color[3];
64                 float opacity;
65                 float rotation;
66                 float alivetime;
67                 float speed;
68                 float rotatespeed;
69                 
70                 static float checkdelay;
71         
72                 static vector<Sprite*> sprites;
73         
74         public:
75                 static void DeleteSprite(int which);
76                 static void MakeSprite(int atype, XYZ where, XYZ avelocity, float red, float green, float blue, float asize, float aopacity);
77                 static void Draw();
78                 static void deleteSprites() {
79                         sprites.clear();
80                 }
81                 static void setLastSpriteSpecial(int s) {
82                         sprites.back()->special = s;
83                 }
84                 static void setLastSpriteSpeed(int s) {
85                         sprites.back()->speed = s;
86                 }
87                 static void setLastSpriteAlivetime(float al) {
88                         sprites.back()->alivetime = al;
89                 }
90                 static void clearTextures();
91                 
92                 static Texture cloudtexture;
93                 static Texture bloodtexture;
94                 static Texture flametexture;
95                 static Texture smoketexture;
96                 
97                 static Texture cloudimpacttexture;
98                 static Texture snowflaketexture;
99                 static Texture shinetexture;
100                 static Texture bloodflametexture;
101                 
102                 static Texture splintertexture;
103                 
104                 static Texture leaftexture;
105                 static Texture toothtexture;
106
107                 Sprite();
108                 ~Sprite();
109 };
110
111 #endif