#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); //Das soll nicht hier hin, bin aber zu faul :| textures->building = LoadTexture("assets/building.png"); Animation *buildingAnimation = AnimationInit(); AnimationInsertBack(buildingAnimation, &textures->building); textures->buildingAnimation[0] = buildingAnimation; textures->buildingAnimation[1] = buildingAnimation; textures->buildingAnimation[2] = buildingAnimation; textures->buildingAnimation[3] = buildingAnimation; textures->buildingAnimation[4] = buildingAnimation; textures->buildingAnimation[5] = buildingAnimation; textures->buildingAnimation[6] = buildingAnimation; textures->buildingAnimation[7] = buildingAnimation; //Das soll nicht hier hin, bin aber zu faul :| textures->baustelle = LoadTexture("assets/construction.png"); Animation *baustelleAnimation = AnimationInit(); AnimationInsertBack(baustelleAnimation, &textures->baustelle); textures->baustelleAnimation[0] = baustelleAnimation; textures->baustelleAnimation[1] = baustelleAnimation; textures->baustelleAnimation[2] = baustelleAnimation; textures->baustelleAnimation[3] = baustelleAnimation; textures->baustelleAnimation[4] = baustelleAnimation; textures->baustelleAnimation[5] = baustelleAnimation; textures->baustelleAnimation[6] = baustelleAnimation; textures->baustelleAnimation[7] = baustelleAnimation; 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; } }