Skip to content

Commit 15e6831

Browse files
committed
Made single get texture function
1 parent d220bd5 commit 15e6831

2 files changed

Lines changed: 24 additions & 35 deletions

File tree

Chapter02/Game.cpp

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -153,16 +153,6 @@ void Game::GenerateOutput()
153153

154154
void Game::LoadData()
155155
{
156-
// Load textures
157-
LoadTexture("Assets/Laser.png");
158-
LoadTexture("Assets/Ship01.png");
159-
LoadTexture("Assets/Ship02.png");
160-
LoadTexture("Assets/Ship03.png");
161-
LoadTexture("Assets/Ship04.png");
162-
LoadTexture("Assets/Farback01.png");
163-
LoadTexture("Assets/Farback02.png");
164-
LoadTexture("Assets/Stars.png");
165-
166156
// Create player's ship
167157
mShip = new Ship(this);
168158
mShip->SetPosition(Vector2(100.0f, 384.0f));
@@ -208,36 +198,36 @@ void Game::UnloadData()
208198
mTextures.clear();
209199
}
210200

211-
void Game::LoadTexture(const char* fileName)
212-
{
213-
// Load from file
214-
SDL_Surface* surf = IMG_Load(fileName);
215-
if (!surf)
216-
{
217-
SDL_Log("Failed to load texture file %s", fileName);
218-
return;
219-
}
220-
221-
// Create texture from surface
222-
SDL_Texture* text = SDL_CreateTextureFromSurface(mRenderer, surf);
223-
SDL_FreeSurface(surf);
224-
if (!text)
225-
{
226-
SDL_Log("Failed to convert surface to texture for %s", fileName);
227-
return;
228-
}
229-
230-
mTextures.emplace(fileName, text);
231-
}
232-
233-
SDL_Texture * Game::GetTexture(const char * fileName)
201+
SDL_Texture* Game::GetTexture(const std::string& fileName)
234202
{
235203
SDL_Texture* tex = nullptr;
204+
// Is the texture already in the map?
236205
auto iter = mTextures.find(fileName);
237206
if (iter != mTextures.end())
238207
{
239208
tex = iter->second;
240209
}
210+
else
211+
{
212+
// Load from file
213+
SDL_Surface* surf = IMG_Load(fileName.c_str());
214+
if (!surf)
215+
{
216+
SDL_Log("Failed to load texture file %s", fileName.c_str());
217+
return nullptr;
218+
}
219+
220+
// Create texture from surface
221+
tex = SDL_CreateTextureFromSurface(mRenderer, surf);
222+
SDL_FreeSurface(surf);
223+
if (!tex)
224+
{
225+
SDL_Log("Failed to convert surface to texture for %s", fileName.c_str());
226+
return nullptr;
227+
}
228+
229+
mTextures.emplace(fileName.c_str(), tex);
230+
}
241231
return tex;
242232
}
243233

Chapter02/Game.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ class Game
2626
void AddSprite(class SpriteComponent* sprite);
2727
void RemoveSprite(class SpriteComponent* sprite);
2828

29-
void LoadTexture(const char* fileName);
30-
SDL_Texture* GetTexture(const char* fileName);
29+
SDL_Texture* GetTexture(const std::string& fileName);
3130
private:
3231
void ProcessInput();
3332
void UpdateGame();

0 commit comments

Comments
 (0)