Thanks for Your Help.
PS. I am 14 so i might have made some stupid mistakes.
Code: (Just the Texture and TextureManager header/source files, everything else works fine)
[source lang="cpp"]namespace Smitty{ class cTexture { public: cTexture(); cTexture(string filename, string Name); ~cTexture(); int GetX(); int GetY(); int GetW(); int GetH(); void SetX(int x); void SetY(int y); string GetFilename(); void SetFilename(string name); string GetName(); void SetName(string Name); SDL_Surface* GetTexture(); SDL_Surface *texture; void DrawTexture(SDL_Surface *Surface, int x, int y); void DrawTextureSection(SDL_Surface *Surface, SDL_Rect *rect, int x, int y); private: int Width; int Height; int X,Y; string Filename; string name; };}[/source]
(This is just the Draw Texture function
void cTexture::DrawTexture(SDL_Surface *Surface, int x, int y)
{
SDL_Rect dest;
dest.x = x;
dest.y = y;
dest.w = Width;
dest.h = Height;
SDL_BlitSurface(texture,NULL,Surface, &dest);
}
Alright so here is the TextureManager Class
[source lang="cpp"]namespace Smitty{class cTextureManager{ public: cTextureManager(); ~cTextureManager(); SDL_Surface *LoadTexture(string filename); void ReloadAllTextures(); void CreateTexture(string filename, string texName); //Creates a new texture and adds it to the Textures vector void AddTexture(cTexture &texture); void FreeTexture(string texName); void FreeAllTextures(); void DrawTexture(string texName, SDL_Surface *Destination, int x, int y); //Draws one texture void DrawTexture(string texName, SDL_Surface *Destination); void DrawAllTextures(SDL_Surface *Destination); //Draws all textures int GetTextureWidth(cTexture texName); int GetTextureHeight(cTexture texName); int GetTextureX(string texName); int GetTextureY(string texName); void SetTextureX(string texName, int value); void SetTextureY(string texName, int value); void GetSize(); protected: vector<cTexture> Textures; };[/source]
Now here are the problematic functions in the TextureManager class
[source lang="cpp"]SDL_Surface *cTextureManager::LoadTexture(string filename){ SDL_Surface *temp = NULL; SDL_Surface *optimized = NULL; temp = SDL_LoadBMP(filename.c_str()); if(temp != NULL) { optimized = SDL_DisplayFormat( temp ); SDL_FreeSurface( temp ); cout << "Optimized Image Created." << endl; } return optimized;} //Creates a new cTexture and adds it to the Textures vectorvoid cTextureManager::CreateTexture(string filename, string texName){ cTexture temp; temp.SetFilename(filename.c_str()); temp.SetName(texName); AddTexture(temp); cout << "Texture Added." << endl;}//Adds a already instiated cTexture to the Textures vectorvoid cTextureManager::AddTexture(cTexture &texture){ // CreateTexture(texture.GetFilename(), texture.GetName()); string filename; string name; filename = texture.GetFilename(); name = texture.GetName(); texture.texture = LoadTexture(filename.c_str()); texture.SetName(name.c_str()); Textures.push_back(texture); cout << "Texture Added." << endl;}[/source]
//Draws a texture at user specified coordinates
void cTextureManager::DrawTexture(string texName, SDL_Surface *Destination, int x, int y)
{
vector<cTexture>::iterator it;
for(it = Textures.begin(); it < Textures.end(); it++)
{
if(it->GetName() == texName)
it->DrawTexture(Destination,x,y);
}
}
//Draws texture at textures coordinates instead of user specified cords.
void cTextureManager::DrawTexture(string texName, SDL_Surface *Destination)
{
vector<cTexture>::iterator it;
for(it = Textures.begin(); it < Textures.end(); it++)
{
if(it->GetName() == texName)
it->DrawTexture(Destination,it->GetX(),it->GetY());
}
}
//Draws all textures at thier coordinates
void cTextureManager::DrawAllTextures(SDL_Surface *Destination)
{
vector<cTexture>::iterator it;
for(it = Textures.begin(); it < Textures.end(); it++)
{
it->DrawTexture(Destination,it->GetX(),it->GetY());
}
}[/source]






