You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.5 KiB
126 lines
3.5 KiB
#include "textureatlas.h"
|
|
#include "stdlib.h"
|
|
#include "raylib.h"
|
|
#include "string.h"
|
|
#include "stdio.h"
|
|
|
|
TextureAtlas * TextureAtlasInit(){
|
|
TextureAtlas *textures = malloc(sizeof(TextureAtlas));
|
|
|
|
LoadCursorTextures(textures->cursorTextures, textures->cursorAnimation);
|
|
LoadWorkerTextures(textures->workerTextures);
|
|
LoadWorkerAnimations(textures->workerAnimations, textures->workerTextures);
|
|
|
|
return textures;
|
|
}
|
|
|
|
void LoadCursorTextures(Texture2D *cursorTextures, Animation **cursorAnimation){
|
|
*cursorTextures = LoadTexture("assets/cursor.gif");
|
|
*(cursorTextures + 1) = LoadTexture("assets/cursor_down.gif");
|
|
|
|
Animation *new = AnimationInit();
|
|
AnimationInsertBack(new, cursorTextures);
|
|
cursorAnimation[0] = new;
|
|
}
|
|
|
|
void LoadWorkerTextures(Texture2D *workerTextures){
|
|
|
|
char beginning[30] = "assets/worker/walk-";
|
|
char filename[30] = "";
|
|
char number[3] = "";
|
|
char ending[5] = ".png";
|
|
|
|
// Since some Images need to be flipped, we have fewer pngs than textures later loaded. i counts textures
|
|
// file counts the filename and is incremented manually when needed
|
|
int i;
|
|
int file = 0;
|
|
for(i = 0; i < 104; i++){
|
|
// Concatenate the correct string for the filename (beginning + i + ending)
|
|
sprintf(number, "%d", file);
|
|
strcat(filename, beginning);
|
|
strcat(filename, number);
|
|
strcat(filename, ending);
|
|
|
|
//printf("file:%s:file\n", filename);
|
|
|
|
// Set correct values for next iteration
|
|
int lol = i % 8;
|
|
|
|
|
|
// TODO: walk und umackern läuft nicht bis 24 sondern nur 23
|
|
if(lol == 0){
|
|
*(workerTextures + i) = LoadTexture(filename);
|
|
printf("\n");
|
|
file++;
|
|
}
|
|
else if(lol == 2){
|
|
Image tmp = LoadImage(filename);
|
|
ImageFlipHorizontal(&tmp);
|
|
*(workerTextures + i) = LoadTextureFromImage(tmp);
|
|
printf("flipped\n");
|
|
file++;
|
|
}
|
|
else if(lol == 4){
|
|
Image tmp = LoadImage(filename);
|
|
ImageFlipHorizontal(&tmp);
|
|
*(workerTextures + i) = LoadTextureFromImage(tmp);
|
|
printf("flipped\n");
|
|
file++;
|
|
}
|
|
else if(lol == 6){
|
|
Image tmp = LoadImage(filename);
|
|
ImageFlipHorizontal(&tmp);
|
|
*(workerTextures + i) = LoadTextureFromImage(tmp);
|
|
printf("flipped\n");
|
|
file++;
|
|
}
|
|
else if(lol == 7){
|
|
*(workerTextures + i) = LoadTexture(filename);
|
|
printf("\n");
|
|
file++;
|
|
}
|
|
else{
|
|
*(workerTextures + i) = LoadTexture(filename);
|
|
printf("\n");
|
|
}
|
|
|
|
strcpy(filename, "");
|
|
strcpy(number, "");
|
|
|
|
if(i == 39){
|
|
strcpy(beginning, "assets/worker/umackern-");
|
|
file = 0;
|
|
}
|
|
else if(i == 79){
|
|
strcpy(beginning, "assets/worker/die-");
|
|
file = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void LoadWorkerAnimations(Animation **workerAnimations, Texture2D *workerTextures){
|
|
int i;
|
|
int j;
|
|
int frame = 0;
|
|
|
|
for(i=0; i < 24; i++){
|
|
frame = i;
|
|
Animation *newAnimation = AnimationInit();
|
|
|
|
int obergrenze;
|
|
if(frame <= 79){
|
|
obergrenze = 5;
|
|
}
|
|
else{
|
|
obergrenze = 3;
|
|
}
|
|
|
|
for(j = 0; j < obergrenze; j++){
|
|
AnimationInsertBack(newAnimation, (workerTextures+frame));
|
|
frame += 8;
|
|
}
|
|
|
|
workerAnimations[i] = newAnimation;
|
|
}
|
|
}
|