1 /* 2 Copyright (C) 2003, 2010 - Wolfire Games 3 Copyright (C) 2010-2017 - Lugaru contributors (see AUTHORS file) 4 5 This file is part of Lugaru. 6 7 Lugaru is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 2 of the License, or 10 (at your option) any later version. 11 12 Lugaru is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Lugaru. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #ifndef _SPRITE_HPP_ 22 #define _SPRITE_HPP_ 23 24 #include "Environment/Lights.hpp" 25 #include "Environment/Terrain.hpp" 26 #include "Graphic/Texture.hpp" 27 #include "Graphic/gamegl.hpp" 28 #include "Math/Frustum.hpp" 29 #include "Math/XYZ.hpp" 30 #include "Objects/Object.hpp" 31 #include "Utils/ImageIO.hpp" 32 33 #include <vector> 34 35 #define max_sprites 20000 36 37 enum 38 { 39 cloudsprite = 0, 40 bloodsprite, 41 flamesprite, 42 smoketype, 43 weaponflamesprite, 44 cloudimpactsprite, 45 snowsprite, 46 weaponshinesprite, 47 bloodflamesprite, 48 breathsprite, 49 splintersprite, 50 spritenumber 51 }; 52 53 class Sprite 54 { 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(); deleteSprites()78 static void deleteSprites() 79 { 80 sprites.clear(); 81 } setLastSpriteSpecial(int s)82 static void setLastSpriteSpecial(int s) 83 { 84 sprites.back()->special = s; 85 } setLastSpriteSpeed(int s)86 static void setLastSpriteSpeed(int s) 87 { 88 sprites.back()->speed = s; 89 } setLastSpriteAlivetime(float al)90 static void setLastSpriteAlivetime(float al) 91 { 92 sprites.back()->alivetime = al; 93 } 94 95 static Texture cloudtexture; 96 static Texture bloodtexture; 97 static Texture flametexture; 98 static Texture smoketexture; 99 100 static Texture cloudimpacttexture; 101 static Texture snowflaketexture; 102 static Texture shinetexture; 103 static Texture bloodflametexture; 104 105 static Texture splintertexture; 106 107 static Texture leaftexture; 108 static Texture toothtexture; 109 110 Sprite(); 111 ~Sprite(); 112 }; 113 114 #endif 115