#include "sprite.h" #include "raylib.h" #include #include #include "IsometricMap/isometricMap.h" #include "Textures/textureIDs.h" #include "Textures/animationHandler.h" #include "Textures/animation.h" #include "Textures/textureatlas.h" #include "IsometricMap/tile.h" void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera){ Vector2 pos = {sprite->x - sprite->texture->width, sprite->y - sprite->texture->height/2}; IsometricMapUnproject(map, camera, pos.x, pos.y, sprite->z, &pos); pos.x -= camera->target.x; pos.y -= camera->target.y; if(sprite->selected){ DrawTexture(*sprite->texture, pos.x, pos.y, (Color){255, 255, 255, 200}); //DrawTexture(*sprite->texture, sprite->x, sprite->y, BLACK); } else{ DrawTexture(*sprite->texture, pos.x, pos.y, WHITE); } } void DrawSpriteToScreen(Sprite *sprite){ if(sprite->selected){ DrawTexture(*sprite->texture, sprite->x, sprite->y, (Color){255, 255, 255, 200}); //DrawTexture(*sprite->texture, sprite->x, sprite->y, BLACK); } else{ DrawTexture(*sprite->texture, sprite->x, sprite->y, WHITE); } } void SpriteUpdateAnimation(Sprite *sprite){ AnimationUpdate(sprite->animationHandler); sprite->texture = sprite->animationHandler->currentFrame->texture; } Sprite * SpriteCreate(TextureAtlas *atlas, int textureID, int x, int y){ Sprite *newSprite = malloc(sizeof(Sprite)); //AnimationHandler create Animation **animations = 0; if(textureID == worker){ animations = atlas->workerAnimations; } else if(textureID == cursor){ animations = atlas->cursorAnimation; } else{ printf("\n\n\n\n\n\n\n\nSpriteCreate mit falscher ID (%d) aufgerufen oder ID nicht bekannt!!!\n\n\n\n\n\n\n\n", textureID); } AnimationHandler *newHandler = AnimationHandlerInit(animations); newSprite->animationHandler = newHandler; newSprite->texture = newSprite->animationHandler->currentFrame->texture; newSprite->x = x - newSprite->texture->width / 2; newSprite->y = y - newSprite->texture->height / 2; newSprite->z = 0; newSprite->destX = x; newSprite->destY = y; newSprite->hasDestination = 0; newSprite->selected = 0; newSprite->depth = newSprite->x + newSprite->y; return newSprite; }