00001 /* 00002 This file is part of c0re. 00003 00004 c0re is a multiplayer RTS on a hexagonal map with an evolving unit concept. 00005 Copyright (C) 2007 Stephan Hofmann 00006 00007 c0re is free software: you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation, either version 3 of the License, or 00010 (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00021 #ifndef _TEXTURE_H_ 00022 #define _TEXTURE_H_ 00023 00024 #include <string> 00025 #include <map> 00026 00027 #include "TextureInterface.h" 00028 00029 class Field; 00030 class Button; 00031 00035 class Texture 00036 { 00037 public: 00041 Texture(); 00042 00046 virtual ~Texture(); 00047 00055 int loadAndBind(std::string p_filename, eTextureModification p_modifikationflag = TM_Masked_Normal); 00056 00062 virtual int render(); 00063 00070 static Texture* get(int p_id); 00071 00077 virtual Field* getField(); 00078 00084 virtual Button* getButton(); 00085 00089 int id; 00090 00094 int sequence; 00095 00099 int sequenceCount; 00100 00101 protected: 00105 TextureInterface* myTexture; 00106 00110 double ratio; 00111 00112 private: 00116 static std::map<std::string, TextureInterface*> cachedTextures; 00117 00121 static int idCounter; 00122 00126 static std::map<int, Texture*> allItems; 00127 }; 00128 00129 00130 #endif