]> git.jsancho.org Git - lugaru.git/blob - Source/Sprite.h
bdffb692266f36d56a2f5ccb7ad01cd9ba8ddff9
[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 {
56 private:
57     XYZ oldposition;
58     XYZ position;
59     XYZ velocity;
60     float size;
61     float initialsize;
62     int type;
63     int special;
64     float color[3];
65     float opacity;
66     float rotation;
67     float alivetime;
68     float speed;
69     float rotatespeed;
70
71     static float checkdelay;
72
73     static vector<Sprite*> sprites;
74
75 public:
76     static void DeleteSprite(int which);
77     static void MakeSprite(int atype, XYZ where, XYZ avelocity, float red, float green, float blue, float asize, float aopacity);
78     static void Draw();
79     static void deleteSprites() {
80         sprites.clear();
81     }
82     static void setLastSpriteSpecial(int s) {
83         sprites.back()->special = s;
84     }
85     static void setLastSpriteSpeed(int s) {
86         sprites.back()->speed = s;
87     }
88     static void setLastSpriteAlivetime(float al) {
89         sprites.back()->alivetime = al;
90     }
91     static void clearTextures();
92
93     static Texture cloudtexture;
94     static Texture bloodtexture;
95     static Texture flametexture;
96     static Texture smoketexture;
97
98     static Texture cloudimpacttexture;
99     static Texture snowflaketexture;
100     static Texture shinetexture;
101     static Texture bloodflametexture;
102
103     static Texture splintertexture;
104
105     static Texture leaftexture;
106     static Texture toothtexture;
107
108     Sprite();
109     ~Sprite();
110 };
111
112 #endif