1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#include"Sprite.hpp"
CSprite::CSprite()
{
m_pScreen = g_pFramework->GetScreen();
}
CSprite::~CSprite()
{
SDL_FreeSurface(m_pImage);
}
void CSprite::Load(const string sFilename)
{
m_pImage = SDL_LoadBMP(sFilename.c_str() );
if(m_pImage = NULL){
printf("Fehler beim Laden der Datei: %s/n", sFilename.c_str());
printf("Fehermeldung: %s/n", SDL_GetError());
g_pFramework->Quit();
exit(1);
} else {
m_Rect.x = 0;
m_Rect.y = 0;
m_Rect.w = m_pImage->w; //Hier meckert er
m_Rect.h = m_pImage->h; //und hier
}
}
void CSprite::Load(const string sFilename,
int FrameNumber, int FrameWidth,
int FrameHeight)
{
Load(sFilename);
m_FrameNumber = FrameNumber;
m_FrameWidth = FrameWidth;
m_FrameHeight = FrameHeight;
m_FrameRect.w = FrameWidth;
m_FrameRect.h = FrameHeight;
m_FrameNumberX = m_pImage->w / m_FrameWidth; // hier ebenfalls
}
void CSprite::SetPos(float fXPos, float fYPos)
{
m_Rect.x = static_cast<int>(fXPos);
m_Rect.y = static_cast<int>(fYPos);
}
void CSprite::SetColorKey(int R, int G, int B)
{
SDL_SetColorKey(m_pImage, SDL_SRCCOLORKEY, SDL_MapRGB(m_pImage->format, R, G, B)); //hier auch
}
void CSprite::Render()
{
SDL_BlitSurface(m_pImage, NULL, m_pScreen, &m_Rect);
}
void CSprite::Render(float fFrameNumber)
{
int Column = static_cast<int>(fFrameNumber) % m_FrameNumberX;
int Row = static_cast<int>(fFrameNumber) / m_FrameNumberX;
m_FrameRect.x = Column * m_FrameWidth;
m_FrameRect.y = Row * m_FrameHeight;
SDL_BlitSurface(m_pImage, &m_FrameRect, m_pScreen, &m_Rect);
}
|