22 SDL_DisplayMode current;
23 if(SDL_Init(SDL_INIT_EVERYTHING))
25 printf(
"SDL can't initialize : %s", SDL_GetError());
28 if(SDL_GetDisplayMode(0,0,¤t))
30 printf(
"No video mode: %s", SDL_GetError());
39 printf(
"Can't create window %s", SDL_GetError());
45 printf(
"Can't create window %s", SDL_GetError());
53 SDL_SetWindowTitle(
gWindow,
"Dumb Ways to Memorize");
57 printf(
"Can't create renderer %s ", SDL_GetError());
64 printf(
"Can't create red surface : %s \n", SDL_GetError());
68 printf(
"Can't create red renderer : %s \n", SDL_GetError());
70 if( SDL_SetRenderDrawColor(
gRedRenderer, 0xFF, 0, 0, 0xFF) )
72 printf(
"Can't set red renderer : %s \n", SDL_GetError());
77 printf(
"Can't create red texture : %s \n", SDL_GetError());
82 printf(
"Could not allocate sprites");
122 printf(
"No name given to load sprite");
132 printf(
"No free sprites");
135 temp = IMG_Load(name);
138 printf(
"Could not load image : %s \n", name);
141 check->mSize.x = temp->w;
142 check->mSize.y = temp->h;
143 check->mTexture = SDL_CreateTextureFromSurface(
gRenderer, temp);
144 check->name = strdup(name);
147 SDL_FreeSurface(temp);
158 printf(
"Null sprite given \n");
165 if( *frame >= sprite->mFrames )
170 SDL_SetRect(&src, sprite->mAnimations[*frame].Position.x, sprite->mAnimations[*frame].Position.y, sprite->mSize.x, sprite->mSize.y);
177 SDL_GetRendererOutputSize(renderer, &dst.w, &dst.h);
179 SDL_SetRect(&dst, position->
x, position->
y, sprite->mSize.x, sprite->mSize.y);
183 if( SDL_RenderCopy(renderer, sprite->mTexture, &src, &dst) )
185 printf(
"Could not draw sprite %s : %s", sprite->name, SDL_GetError());
194 cols = frame_width ? width/frame_width : 1;
195 rows = frame_height ? height/frame_height : 1;
196 retVal = (
Frame*) malloc(
sizeof(
Frame)*(rows*cols+1));
197 for(i = 0; i < rows; i++)
199 for(j = 0; j < cols; j++)
201 retVal[i*rows + j].
Position.
x = j*frame_width;
202 retVal[i*rows + j].
Position.
y = i*frame_height;
205 memset(&retVal[rows*cols+1], 0,
sizeof(
Frame));
249 if(sprite ==
FindSprite(sprite->name, &position))
252 if(sprite->refCount > 0)
255 SDL_DestroyTexture(sprite->mTexture);
257 memset(&
gSprites[position], 0,
sizeof(sprite_t) );
int CountMem(void *src, int size_type)
void IncrementFrame(sprite_t *sprite)
void FreeSprite(sprite_t *sprite)
Frame * LoadAnimation(int frame_width, int frame_height, int width, int height)
SDL_Texture * gRedTexture
SDL_Surface * gRedSurface
sprite_t * FindFreeSprite(int *position)
void SDL_SetRect(SDL_Rect *rect, int x, int y, int w, int h)
SDL_Renderer * gRedRenderer
sprite_t * LoadSprite(const char *name, int flags)
sprite_t * FindSprite(const char *name, int *position)
int DrawSprite(sprite_t *sprite, int *frame, vec2_t *position, SDL_Renderer *renderer)