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.

75 lines
2.3 KiB

#include "sprite.h"
#include "raylib.h"
#include <stdio.h>
#include <stdlib.h>
#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;
}