From e97e905c1ef7c8bbef90ed083dd31398abf3d031 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Tue, 22 Nov 2022 23:40:09 +0100 Subject: [PATCH] Sprite not found --- .vscode/settings.json | 3 ++- List/list.c | 24 ++++++++++++++++-------- List/list.h | 13 +++++++------ Makefile | 2 +- main.c | 12 ++++++++++-- sprite.c | 30 ++++++++++++++++++++++++++++++ sprite.h | 5 +++++ 7 files changed, 71 insertions(+), 18 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 32391ac..9ae6cc5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "C_Cpp.errorSquiggles": "Disabled", "files.associations": { - "isometricrenderer.h": "c" + "isometricrenderer.h": "c", + "sprite.h": "c" } } \ No newline at end of file diff --git a/List/list.c b/List/list.c index 5a5b7bc..c384914 100644 --- a/List/list.c +++ b/List/list.c @@ -1,8 +1,9 @@ #include "list.h" #include #include +#include "../sprite.h" -Node * ListCreateNode(int *data){ +Node * ListCreateNode(Sprite *data){ Node *new = (Node *) malloc(sizeof(Node)); new->data = *data; return new; @@ -11,16 +12,16 @@ Node * ListCreateNode(int *data){ void ListPrintForward(List *list){ Node *current = list->head; - printf("\n["); + printf("\n[\n"); while(current != 0){ - printf("%d,", current->data); + printf("(%f | %f),\n", current->data.x, current->data.y); current = current->next; } printf("]\n"); } -void ListInsertFront(List *list, int data){ - Node *new = ListCreateNode(&data); +void ListInsertFront(List *list, Sprite *data){ + Node *new = ListCreateNode(data); if(list->head == 0){ list->head = new; @@ -38,8 +39,8 @@ void ListInsertFront(List *list, int data){ } } -void ListInsertBack(List *list, int data){ - Node *new = ListCreateNode(&data); +void ListInsertBack(List *list, Sprite *data){ + Node *new = ListCreateNode(data); if(list->head == 0){ list->head = new; @@ -55,4 +56,11 @@ void ListInsertBack(List *list, int data){ new->prev = list->tail; list->tail = new; } -} \ No newline at end of file +} + +List * ListInit(){ + List *newList = (List *) malloc(sizeof(List)); + newList->head = 0; + newList->tail = 0; + return newList; +} diff --git a/List/list.h b/List/list.h index ea3d2e8..9b16c40 100644 --- a/List/list.h +++ b/List/list.h @@ -1,6 +1,6 @@ #ifndef LIST_H_ #define LIST_H_ -#include "nodeData.h" +#include "../sprite.h" typedef struct Node Node; typedef struct List List; @@ -11,19 +11,20 @@ typedef struct List { } List; typedef struct Node { - int data; + Sprite data; Node *next; Node *prev; } Node; //Only for internal purpose -Node * ListCreateNode(int *data); +Node * ListCreateNode(Sprite *data); //Print the list in order void ListPrintForward(List *list); -void ListInsertFront(List *list, int data); -void ListInsertBack(List *list, int data); +void ListInsertFront(List *list, Sprite *data); +void ListInsertBack(List *list, Sprite *data); +List * ListInit(); -#endif \ No newline at end of file +#endif diff --git a/Makefile b/Makefile index e3d2fc2..92b026a 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ inputHandler.o: Input/inputHandler.c gcc -c Input/inputHandler.c -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 list.o: List/list.c - gcc -c List/list.c + gcc -c List/list.c -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 isometricRenderer.o: IsometricMap/isometricRenderer.c gcc -c IsometricMap/isometricRenderer.c -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 diff --git a/main.c b/main.c index 2e9d7c7..8aa18fd 100644 --- a/main.c +++ b/main.c @@ -1,5 +1,5 @@ #include "raylib.h" -#include "stdio.h" +#include #include #include "sprite.h" #include "Input/inputHandler.h" @@ -18,7 +18,12 @@ int main(){ Texture2D texture; texture = LoadTexture("assets/amulet.png"); + + List *spritesL = ListInit(); + ListInsertBack(spritesL, SpriteCreate(&texture, 0, 0)); + Sprite cursorSprite = {&texture, 450, 225}; + SpriteAdd(sprites, &spriteAmount, &texture, 0, 0); InputHandler inputHandler; @@ -40,11 +45,14 @@ int main(){ BeginMode2D(camera); IsometricRendererRenderIsometricMap(map); - + int i; + /* for(i=0; i < spriteAmount; i++){ DrawSprite(sprites + i); } + */ + DrawAllSpritesInList(spritesL); EndMode2D(); diff --git a/sprite.c b/sprite.c index 4872b71..f0afaff 100644 --- a/sprite.c +++ b/sprite.c @@ -1,6 +1,8 @@ #include "sprite.h" #include "raylib.h" #include +#include +#include "List/list.h" void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y){ if(*spriteAmount < 100){ @@ -27,3 +29,31 @@ void DrawSprite(Sprite *sprite){ DrawTexture(*sprite->texture, sprite->x, sprite->y, WHITE); } } + +void DrawAllSpritesInList(List *list){ + Node *current = list->head; + + while(current != 0){ + if(current->data.selected){ + DrawTexture(current->data.texture, current->data.x, current->data.y, BLACK); + } + else{ + DrawTexture(current->data.texture, current->data.x, current->data.y, WHITE); + } + current = current->next; + } +} + +Sprite * SpriteCreate(Texture2D *texture, int x, int y){ + Sprite newSprite = (Sprite *) malloc(sizeof(Sprite)); + + newSprite->texture = texture; + newSprite->x = x; + newSprite->y = y; + newSprite->destX = x; + newSprite->destY = y; + newSprite->hasDestination = 0; + newSprite->selected = 0; + + return newSprite; +} diff --git a/sprite.h b/sprite.h index b7e3ab8..cde8c91 100644 --- a/sprite.h +++ b/sprite.h @@ -1,5 +1,6 @@ #ifndef SPRITE_H_ #define SPRITE_H_ +#include "List/list.h" #include "raylib.h" typedef struct Sprite { @@ -16,4 +17,8 @@ void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, in void DrawSprite(Sprite *sprite); +void DrawAllSpritesInList(List *list); + +Sprite * SpriteCreate(Texture2D *texture, int x, int y); + #endif