From bc383b382736709bb7ce23df6f36503d543e4400 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Mon, 28 Nov 2022 23:32:20 +0100 Subject: [PATCH] =?UTF-8?q?Is=20zu=20viel=20f=C3=BCr=20mich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 +- Input/inputHandler.c | 2 +- List/list.c | 2 ++ Makefile | 10 ++++-- Textures/animation.c | 63 ++++++++++++++++++++++++------------ Textures/animation.h | 4 +-- Textures/animationHandler.c | 33 +++++++++++++++++++ Textures/animationHandler.h | 21 ++++++++++++ Textures/textureIDs.h | 7 ++++ Textures/textureatlas.c | 36 +++++++++++++++++++-- Textures/textureatlas.h | 8 +++++ animation.o | Bin 0 -> 2440 bytes animationHandler.h | 14 -------- animationHandler.o | Bin 0 -> 2120 bytes game.c | 6 ++-- game.o | Bin 0 -> 3440 bytes inputHandler.o | Bin 0 -> 6200 bytes isometricMap.o | Bin 0 -> 4880 bytes isometricRenderer.o | Bin 0 -> 3056 bytes list.o | Bin 0 -> 4248 bytes main.o | Bin 0 -> 2992 bytes spiel | Bin 0 -> 31320 bytes sprite.c | 36 ++++++++++++++++++--- sprite.h | 6 +++- sprite.o | Bin 0 -> 3704 bytes textureatlas.o | Bin 0 -> 5000 bytes tile.o | Bin 0 -> 928 bytes 27 files changed, 200 insertions(+), 51 deletions(-) create mode 100644 Textures/animationHandler.c create mode 100644 Textures/animationHandler.h create mode 100644 Textures/textureIDs.h create mode 100644 animation.o delete mode 100644 animationHandler.h create mode 100644 animationHandler.o create mode 100644 game.o create mode 100644 inputHandler.o create mode 100644 isometricMap.o create mode 100644 isometricRenderer.o create mode 100644 list.o create mode 100644 main.o create mode 100755 spiel create mode 100644 sprite.o create mode 100644 textureatlas.o create mode 100644 tile.o diff --git a/.vscode/settings.json b/.vscode/settings.json index 6c2e911..66e1870 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ "isometricrenderer.h": "c", "sprite.h": "c", "map": "c", - "isometricmap.h": "c" + "isometricmap.h": "c", + "animationhandler.h": "c" } } \ No newline at end of file diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 02720f3..0a49b35 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -123,7 +123,7 @@ void mouseInput(Game *game){ // Add Sprite if(width + height <= 1){ - ListInsertBack(sprites, SpriteCreate(texture, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + ListInsertBack(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); } // Berechnung, welche Sprites ausgewählt wurden, scuffed diff --git a/List/list.c b/List/list.c index 3e480e9..d4ab057 100644 --- a/List/list.c +++ b/List/list.c @@ -114,6 +114,8 @@ void ListActAllSprites(Game *game){ } } + SpriteUpdateAnimation(¤t->data); + current = current->next; } diff --git a/Makefile b/Makefile index 34c9843..05a12fa 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ CC = gcc FLAGS = -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -spiel: main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o game.o textureatlas.o - $(CC) -o spiel main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o game.o textureatlas.o $(FLAGS) +spiel: main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o game.o textureatlas.o animation.o animationHandler.o + $(CC) -o spiel main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o game.o textureatlas.o animation.o animationHandler.o $(FLAGS) main.o: main.c $(CC) -c main.c $(FLAGS) @@ -31,5 +31,11 @@ game.o: game.c textureatlas.o: Textures/textureatlas.c $(CC) -c Textures/textureatlas.c $(FLAGS) +animation.o: Textures/animation.c + $(CC) -c Textures/animation.c $(FLAGS) + +animationHandler.o: Textures/animationHandler.c + $(CC) -c Textures/animationHandler.c $(FLAGS) + clean: rm *.o spiel diff --git a/Textures/animation.c b/Textures/animation.c index d0843a9..61f9eed 100644 --- a/Textures/animation.c +++ b/Textures/animation.c @@ -23,37 +23,58 @@ AnimationFrame * AnimationFrameCreate(Texture2D *texture){ void AnimationInsertFront(Animation *animation, Texture2D *texture){ AnimationFrame *new = AnimationFrameCreate(texture); - if(list->head == 0){ - list->head = new; - list->tail = new; + if(animation->head == 0){ + animation->head = new; + animation->tail = new; + + animation->head->prev = animation->tail; + animation->tail->next = animation->head->prev; + } - else if(list->head == list->tail){ - list->head = new; - list->head->next = list->tail; - list->tail->prev = list->head; + else if(animation->head == animation->tail){ + animation->head = new; + + animation->head->next = animation->tail; + animation->head->prev = animation->tail; + + animation->tail->prev = animation->head; + animation->tail->next = animation->head; } else{ - list->head->prev = new; - new->next = list->head; - list->head = new; + animation->head->prev = new; + + new->next = animation->head; + new->prev = animation->tail; + + animation->tail->next = new; + animation->head = new; } } void AnimationInsertBack(Animation *animation, Texture2D *texture){ AnimationFrame *new = AnimationFrameCreate(texture); - if(list->head == 0){ - list->head = new; - list->tail = new; + if(animation->head == 0){ + animation->head = new; + animation->tail = new; + + animation->head->prev = animation->tail; + animation->tail->next = animation->head->prev; } - else if(list->head == list->tail){ - list->tail = new; - list->head->next = list->tail; - list->tail->prev = list->head; + else if(animation->head == animation->tail){ + animation->tail = new; + + animation->head->next = animation->tail; + animation->head->prev = animation->tail; + + animation->tail->prev = animation->head; + animation->tail->next = animation->head; } else{ - list->tail->next = new; - new->prev = list->tail; - list->tail = new; + animation->tail->next = new; + new->prev = animation->tail; + new->next = animation->head; + animation->head->prev = new; + animation->tail = new; } -} \ No newline at end of file +} diff --git a/Textures/animation.h b/Textures/animation.h index 980b5cf..d2354c0 100644 --- a/Textures/animation.h +++ b/Textures/animation.h @@ -2,8 +2,8 @@ #define ANIMATION_H_ #include "raylib.h" -struct Animation; -struct AnimationFrame; +typedef struct Animation Animation; +typedef struct AnimationFrame AnimationFrame; typedef struct Animation { AnimationFrame *head; diff --git a/Textures/animationHandler.c b/Textures/animationHandler.c new file mode 100644 index 0000000..b750ae9 --- /dev/null +++ b/Textures/animationHandler.c @@ -0,0 +1,33 @@ +#include "animationHandler.h" +#include "animation.h" +#include "stdlib.h" +#include "stdio.h" + +AnimationHandler * AnimationHandlerInit(Animation **animations){ + AnimationHandler *new = (AnimationHandler *) malloc(sizeof(AnimationHandler)); + + new->animations = animations; + new->currentAnimation = 0; + //new->currentFrame = new->animations[new->currentAnimation]->head; + new->currentFrame = animations[0]->head; + printf("Hier geht noch\n"); + new->forward = 1; +} + +void AnimationUpdate(AnimationHandler *animationHandler){ + if(animationHandler->forward == 1){ + animationHandler->currentFrame = animationHandler->currentFrame->next; + } + else{ + animationHandler->currentFrame = animationHandler->currentFrame->prev; + } +} + +void AnimationReset(AnimationHandler *animationHandler){ + animationHandler->currentFrame = animationHandler->animations[animationHandler->currentAnimation]->head; +} + +void AnimationChangeAnimation(AnimationHandler *animationHandler, int newAnimation){ + animationHandler->currentAnimation = newAnimation; + AnimationReset(animationHandler); +} \ No newline at end of file diff --git a/Textures/animationHandler.h b/Textures/animationHandler.h new file mode 100644 index 0000000..3ab1e10 --- /dev/null +++ b/Textures/animationHandler.h @@ -0,0 +1,21 @@ +#ifndef ANIMATIONHANDLER_H_ +#define ANIMATIONHANDLER_H_ +#include "raylib.h" +#include "animation.h" +#include "stdio.h" + +typedef struct AnimationHandler AnimationHandler; + +typedef struct AnimationHandler{ + Animation **animations; + AnimationFrame *currentFrame; + int currentAnimation; + int forward; +} AnimationHandler; + +AnimationHandler * AnimationHandlerInit(Animation **animations); +void AnimationUpdate(AnimationHandler *animationHandler); +void AnimationReset(AnimationHandler *animationHandler); +void AnimationChangeAnimation(AnimationHandler *animationHandler, int newAnimation); + +#endif \ No newline at end of file diff --git a/Textures/textureIDs.h b/Textures/textureIDs.h new file mode 100644 index 0000000..bf421e2 --- /dev/null +++ b/Textures/textureIDs.h @@ -0,0 +1,7 @@ +#ifndef TEXTUREIDS_H_ +#define TEXTUREIDS_H_ + +#define cursor 0 +#define worker 1 + +#endif \ No newline at end of file diff --git a/Textures/textureatlas.c b/Textures/textureatlas.c index e24e296..362e56b 100644 --- a/Textures/textureatlas.c +++ b/Textures/textureatlas.c @@ -9,6 +9,7 @@ TextureAtlas * TextureAtlasInit(){ LoadCursorTextures(textures->cursorTextures); LoadWorkerTextures(textures->workerTextures); + LoadWorkerAnimations(textures->workerAnimations, textures->workerTextures); return textures; } @@ -16,6 +17,9 @@ TextureAtlas * TextureAtlasInit(){ void LoadCursorTextures(Texture2D *cursorTextures){ *cursorTextures = LoadTexture("assets/cursor.gif"); *(cursorTextures + 1) = LoadTexture("assets/cursor_down.gif"); + + Animation *new = AnimationInit(); + AnimationInsertBack(new, cursorTextures); } void LoadWorkerTextures(Texture2D *workerTextures){ @@ -53,35 +57,46 @@ void LoadWorkerTextures(Texture2D *workerTextures){ strcat(filename, number); strcat(filename, ending); - //*(workerTextures + i) = LoadTexture(filename); printf("lol: %s ", filename); // Set correct values for next iteration - int lol = i % 5; + 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"); } @@ -98,3 +113,20 @@ void LoadWorkerTextures(Texture2D *workerTextures){ } } } + +void LoadWorkerAnimations(Animation **workerAnimations, Texture2D *workerTextures){ + int i; + int j; + int frame = 0; + + for(i=0; i < 24; i++){ + Animation *newAnimation = AnimationInit(); + + for(j = 0; j < 8; j++){ + AnimationInsertBack(newAnimation, (workerTextures+frame)); + frame++; + } + + workerAnimations[i] = newAnimation; + } +} diff --git a/Textures/textureatlas.h b/Textures/textureatlas.h index 7b9888f..7e13dd6 100644 --- a/Textures/textureatlas.h +++ b/Textures/textureatlas.h @@ -1,10 +1,17 @@ #ifndef TEXTUREATLAS_H_ #define TEXTUREATLAS_H_ #include "raylib.h" +#include "animation.h" + +typedef struct TextureAtlas TextureAtlas; typedef struct TextureAtlas{ Texture2D cursorTextures[2]; + Animation cursorAnimation; + Texture2D workerTextures[104]; + Animation *workerAnimations[24]; + //Texture2D[] mapTextures; } TextureAtlas; @@ -12,5 +19,6 @@ typedef struct TextureAtlas{ TextureAtlas * TextureAtlasInit(); void LoadCursorTextures(Texture2D *cursorTextures); void LoadWorkerTextures(Texture2D *workerTextures); +void LoadWorkerAnimations(Animation **workerAnimations, Texture2D *workerTextures); #endif \ No newline at end of file diff --git a/animation.o b/animation.o new file mode 100644 index 0000000000000000000000000000000000000000..ad026d7ba9b611586387c8889a036a5e6971bc04 GIT binary patch literal 2440 zcmcgt&ubGw6n>jl8?`O5cqr7v;-OTuOG^c@h-?i_x1~raG?v&vPg+V z*C^d7l*l`t`mS(Y>Z4vNdW~=1%b&UJ9KaR_yvFpt*M#nhw8V9@A_VyJCs|^9ji;^c zLE!CW&0@=I1^KKWQW^nVO&X~P+>AZAtxo)TpJqDe*QKSr6JB%r@Qzs)%00uNL1u3?Kaxc&(TA){^a z5fM)!hgVMRre6n#BSc*t{u%m^IH2L;F2IJM;s`>q@6XRR8o zfwT>BM2BGI?tP|Kp5Wh%jdG?+`^<=ju2_k_=p+G?w907mzA?w{UnFq`nRG}=tVAba zxmJ9SVEOyQG7M$Bi#M9|n}Cd&^DhGDo@V+{>&H>cJ;$KBsCrum;j8(|PHLE*>X-+T zK~<-6=iu}}4Vr08)|=;2{HgjSINZ~$FUk71Dp6Xq{toa?&u_iM^W$1oubyA0**t1r t&fnn;l5wqjdj2_n?Po}>j`T2xRG*&1R-P$|V+L}|C_n#5*z!)5}lv?vsW zWf5}hvHyvRhw80=f)^oR4=wbNgHYd_ok=#^J=G81zIosKHS=bY4~1t>GMWYo8a#r& zrC5L;!~L}>mL^QX1e93to9!IxEZFXRxrUAoIayHXvXG?IVL_Ib`({>n!a|3Iz(PT? zU~!Cnz7VDCN2wwuOZk9AhCSQxh!mCl_OTrQ2@?3dp9R znPt1|+pi&}9Sm+o#qS(u@jTt2bwX9c(n+u=Yesv-jj@{T>lM4ob=NCb0gCzj1AV4w zyWI2i`FZ2EF{d}~%*rJIjZa6Rvld^JAOqUh*hq2ak*#K*!#INWehIXVtTsJ9I@U(# zb>v70%k){8%znz`Cq^=_Fe36jBp$IKKGMG>+#>h2@B+-m{p)@Imh{iW{pH9nU1t>S zdl-&S&p416N_|npi<=)vp>t2g;>8(}n?(^1XdpT|LmGcq)=~Ll7RVJOzlWM2W`O!7 z3iUl85+Tk`3(KuJ7O#0Ov)r}1?HgrSNKjAR8VAR!*S#_{TD;j0C^gnBZujjayJ_>j znXg)I#qO1(c2o30(A%Kt{5_38`zB;ihENp$oJa)4kDw_2m`DWi_$+$7j%xzdAyF{p zLh)*DD+zv2+8-0Vnj09+O@~{nsJS2Ms#^JW-7>hn!NI_>SYWI+n_&1}WRyL}!JiKp zuE%Wye6lJ$m}VGT+J5^Bn&J0Z|tCgBDO@iLq!fqThDl26h%k*AvH&7a3ysu_P1 zXoBj0nT!~c{qLiXIQ4r{p+y;}D?)0Ouk>T&)jA$pNh4EYmyjDpN$$TY^OO5h^H;sz z$(qUhU75eD0;Nvo(<@B7|D%-qzlgCaU)?{oN%p2zbCNtF12K-Ge$!;De5#qed-Cg& YbjXMyIo2!aOUqxRW(Xds-Zz>54~q8+_y7O^ literal 0 HcmV?d00001 diff --git a/game.c b/game.c index 5636e1f..9136727 100644 --- a/game.c +++ b/game.c @@ -14,8 +14,8 @@ Game *GameInit() game->textures = TextureAtlasInit(); - game->cursorSprite = SpriteCreate(game->textures->cursorTextures, 450, 225); - + game->cursorSprite = SpriteCreate(game->textures, 0, 450, 225); +/* Image worker1flip = LoadImage("assets/worker/worker-1.png"); ImageFlipHorizontal(&worker1flip); Image worker2flip = LoadImage("assets/worker/worker-2.png"); @@ -30,7 +30,7 @@ Game *GameInit() game->worker[3] = LoadTexture("assets/worker/worker-3.png"); game->worker[1] = LoadTextureFromImage(worker3flip); game->worker[2] = LoadTexture("assets/worker/worker-4.png"); - +*/ game->inputHandler = (InputHandler *)malloc(sizeof(InputHandler)); game->inputHandler->pressed = 0; game->inputHandler->rectStart.x = 0; diff --git a/game.o b/game.o new file mode 100644 index 0000000000000000000000000000000000000000..047f93c006f6b8ee1c8f406f37e38bdb53093e11 GIT binary patch literal 3440 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%0DHn3S~6)TK~Naac`*8h5RG`0{%jrmqdK@cm|;J> zX-SOxBp&7el7{Pf&eXwId_3%byMNBYcz+%IY#n?XCl3nOXKx++*BZ{=s^-;02cU31 zsufYpqoVZpaPlDHPvKGcI~uP0|Eq?#X!`%ua1NE9D2omX&nu_llqvml8qPoe3cs%5 zy8l1a!OK3b>cCt{-{idjV$4l=l>bf*H#Gc*8qT58|5(G>XB7TB+*2g_*Xwh@?@z>I zc$EGLA6I#*o|V(|d8U;9SqVeJ^VjviqT#xJ zoXQ~1i;tpCf1q%6e+`6ib$?BUaMkBUqHu25NuR{q$$RfpYLvH!(g_EhRwM?}PFf^R z778Mf&v{ILZg?19Ga`}AId%fyEZ>lw&gWmsjwa9pN6;P5!G@mfQ^yC{;nWoVuXh~Q zY$g8otolm&qfWn`O5nF0#fqmf;u<8Yh&Nc`rUf-q2%;O>`rA=#CJ5Swhq&K92uYd@ z#Z`DXemey8`M=ulhAn;SdjhPO_T#HOiILQK@Hip%U_kp_3h>`EzI{A|tNhh_Kjdnx zt1dp~{Ci-;qaV&+*@yE|^;fZ8#(?p|_GLf*HKpjk!}i>Twbp-`hZ1x`{(9@rzOC$4 xU2Dar$rZmrmi^+8Wt^}*eTLT_keFsO1sw<#H^j=`SIa)h<^giNSM@h+{~vmm;5z^S literal 0 HcmV?d00001 diff --git a/isometricMap.o b/isometricMap.o new file mode 100644 index 0000000000000000000000000000000000000000..a630467452b76e81f7c742d05028c736235ea38c GIT binary patch literal 4880 zcmbtYZ)jUp6u_cyS_r}%C@*pwsl$Z+Gb7jO7iMD zS+JNncs`2(2M&ZW#1DSkJ~$L9EUlGf&<|B~zKft;HvW;vdL0SLvh@4&;(o<6r z*>FGC0!mq@rPl1N3Uo`zh4H*>oSc^@X-1xW(uD5Fdd}1ufEvLovhI@gBOZfZ(>uHy zp?5R^znSr$-4MS8_%74uZFyBy0+6rmTXjutE8!&vDgvR6 z&R&?x(L9oKbk1zpXz>F+UVQ&n1K{Sq>9h#O#TdY{44Q{PCYydn zS3oGp4mby1gU<1_I56c!S$C%C91jGeZ=-V;zD(16U2J*jvvcM=-~(2oXD~Fd$6+ZV zzud&mp0>#h&Nx}Q{S%%}IGjE`wWN=g^x(oR57>z4D+XPXuG0m5X8NzE9P__a^l5{Z z>X3T{M}9#1JG(5sl!d7(%Tgm87G`BVBErsst+ET?E{mA-R7D?K(Sv2gWP>fmperIR zW|qp9AvtL-Mo+=Y$L1jpItQN-Tk$SRpik0ms#dI{9v%^UE*s|Q^6 zO*7vDZa_FMVCZ<+ytIrx7&g)s?3JY!7@X=U;Q)|RbO~&bz6laemZjs&E#wcl@Y;%~ zbZmNKX7~95Yk?oftWnsOMs}`@fXAvsKI#JQOf_vKNLx`4-qm{w-EbXoI=zcaD2q{{ zwxDI{1X~)56c$t$f8S~q&RK+&nTdpjnu)|P8O#!SU%<%5w3{bN3_xv(8P2V&ry!$^ zbOByHMWB^nn<3cSa2_$asKCf}Woyd^wn@a4REZG7YGSdz9KfuS3%GG>%q|uSc1s4k zfW#cqZn_{{a>HlB)M3e5bVcbBRu~HpLy&e)OCR6iNU@5{a^L*)^VRIiS`NJzL5RE# zBnC-W9!M82KC(T#qAKQ11?9nt?;)mVw=v=O zOS<w9N~#M3FxV%gjh0gf(y0|PzAv3BlX3q;#0D#Y zxiBlCWKz+Ry9X1{@sGv_>wx~G5>vvO60vGD^_-Gm0GPi8&jdVH2>=uzogEzqd@Y?y zTvJtFYpefN{~q7yz886yxWU2)4_-f=?*@sJII@U|-!=|Dehe^_CbJ=q4-XT^xYx0> zVT&gNWFO$oTzAz8o%U_sOU{n1n`zqRy6gm&sSj|@Wo!k<`FT};n(N!FdX1@>{|T;t z9Rn2huDuRq;QZIP{yS`i-g&+1Kg;z$*4f{z+84S08n#vYub90LF|-4T;j5}2Gy_Cz z9YHfU`RBn}YL{?oQ@Yr$)Pr6aZnyARt^s=*9@N>T1%S2iee2*9aP%+yvV8(f;rLz` zbU@htK>H~?$RFl7+ZVvDa{OyNOdxDOc#Hh^@W6qveSj8!4I=K{f@p0Y@y8$HH#pAn zj)Z7Z9Z|GIG~5#!^@mB9W!M#uYGfo7i>YDKt%f2;m2qt>p^*Omq!tPf_lJju`v*eN zSe;QvC>B06FaT9}P)!_-#*}ugPT#3$h#pL+BkhSq=zOo5jA~IeUPtOpsAr*2>#$&a zbPd$v?wFd0MLJY95sAh_nv$%uZjVH8+B&RbC=?%5_^P@hhXxn}lVY9&Y%%Sa;`{iU z69o4g1xpjRO5k{Lpdf!UJOU3R2qO6G^A6)ULs#>^;JDzwz{hwFQ0)H4cpcf}{C*w$ z-a7bYoRIs+BO>CzX~C^|cm^i~5pnJ}hh)DEe}m)4ZMfk7VZ*yQ|6d#4%kf!$-cfCh z$H(;;4-c6k@7Qorj}aR#>hYot7xnm!4Hxw|Yr{o7F4%BUkN7JFMZ_uUk@%D6N3_rx zXtjjd4vAhuiG}p|32llumJo8ow@If>CO;^+Kd1B=+d zA$b3z{T>SkyFYMypA8rBi}r2Mi@udw*x>pPgAvxdJ$_+tkIU}%ET7+Q@8Lgme74~1 z_IL`{+W)?7pa99THzBzH=u+5={YUrqxzVKMaeNap#OKH3g!9<#(Wiay0U{Zk5M;Y8 Xe%p{V0%tAz9sK`S8uLggT-z)lO~$|V0IQ; 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 literal 0 HcmV?d00001 diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..a3186b5694085dc91771e9bfb7634d10634abc88 GIT binary patch literal 2992 zcmbuBPiP!f9LIl?)O6MS+14n9imaj~f)0s#(L>qnHpvv*qFHN%B4x7sOvdicEHkq- z5yV1NI;=uHD4x`l6ubx`1cVyeV(Z0Ik=#6p648SaB0Y%f@B8Mx!VH%>-PV!UDS^4dd^X?tMPIC3iRSxiV zsh?;AWEDSBbCRhIsr+(=Eu8MuhLhZo;ES!*tzNHp@kX-#NUuk|A)+lxt|jZNP>+=# zq*)pTe%*^}yux`4GI#Q`)3u!L^93gvaFQ1bPIt2CB-6#zVdZ*BChJ~8Evb6pCe-A6 zU4b%?QDuVEpv$3QSX~XvjVuB_7!1nNz2!kE}H?eO4?rzmpkcG<}fu z+ALX1MeFe3{=y|Tewg|FYVAunPYxH~?yC+BOs(|ye`c|jTFiOCWgq>~+iSUhyPDmr z{j%!a3~3G;_OcdcIB>@NaVX ztsMSi4*xZW|Cz%JyzzVO3$*p52pyM~FA{IRVSm^TASV$))gNAtG7#)v-mWV^IJ}dl&2t}Aa zxA950EyKgth(F~wQ~)fbSzich^-u_(T0tk`8rz+i&WYvuzzrMeY(~VX$(+}S7YVM@ z&((;7>C)1dtStteW~15+BEfIMzv|uj6Vf1lSo(NyC#Ju+y+R%UWWn9VUDkXIkOh2z zhvpN2Ea3ZjXkGzi0mog^+yi6*M=#La2V?<9yVCq)Ko;=3d1!tekOds?qWLBu3pnno z=C=V^z=wHg{wx{>3-|~R&F2h`bEWx`!4DYxb%P%?_&Wx_$KdZ79KBG-|G?n)8vIj( z-)Ha=>k#ZC#$IKv|0pGP#;f9tnNn60-G}v>`Yd`% zhgrj3mbXc&tjm8NL^qWK&Jt9dO$hooZ2qTt5p3KvV!clVEM>U%*Ut*CYuz+`C|i(P%-YT}M<2+Vk13F?OMicz>s3|| zGwc770%dKeo>_mK!oBwY6BNaw_Zj<-{-gah-zzu#K2-Vjd!XkaPu3qXvwP2o)?mys Xn)zUvDWRwA<-e-xk7bmdpRE5s=yUo` literal 0 HcmV?d00001 diff --git a/spiel b/spiel new file mode 100755 index 0000000000000000000000000000000000000000..b0199ef53c1b43a8edcdae8dbd52696491432dbf GIT binary patch literal 31320 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 #include #include "IsometricMap/isometricMap.h" +#include "Textures/textureIDs.h" +#include "Textures/animationHandler.h" +#include "Textures/animation.h" +#include "Textures/textureatlas.h" void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y){ + /* if(*spriteAmount < 100){ (sprites + *spriteAmount) -> texture = texture; (sprites + *spriteAmount) -> x = x; @@ -18,6 +23,7 @@ void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, in else{ printf("Voll\n"); } + */ } void DrawSpriteToWorld(Sprite *sprite, IsometricMap *map, Camera2D *camera){ @@ -52,12 +58,34 @@ void DrawSpriteToScreen(Sprite *sprite){ } } -Sprite * SpriteCreate(Texture2D *texture, int x, int y){ +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 = (Sprite *) malloc(sizeof(Sprite)); - newSprite->texture = texture; - newSprite->x = x - texture->width / 2; - newSprite->y = y - texture->height / 2; + //AnimationHandler create + //Animation **animations = atlas->workerAnimations; + Animation **animations = 0; + + if(textureID == worker){ + animations = atlas->workerAnimations; + } + else if(textureID == cursor){ + // Nix + } + else{ + printf("\n\n\n\n\n\n\n\nSpriteCreate mit falscher ID aufgerufen oder ID nicht bekannt!!!\n\n\n\n\n\n\n\n"); + } + + 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->destX = x; newSprite->destY = y; newSprite->hasDestination = 0; diff --git a/sprite.h b/sprite.h index ddc0c65..1fb63de 100644 --- a/sprite.h +++ b/sprite.h @@ -2,8 +2,11 @@ #define SPRITE_H_ #include "raylib.h" #include "IsometricMap/isometricMap.h" +#include "Textures/animationHandler.h" +#include "Textures/textureatlas.h" typedef struct Sprite { + AnimationHandler *animationHandler; Texture2D *texture; float x; float y; @@ -17,7 +20,8 @@ void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, in void DrawSpriteToWorld(Sprite *sprite, IsometricMap *map, Camera2D *camera); void DrawSpriteToScreen(Sprite *sprite); +void SpriteUpdateAnimation(Sprite *sprite); -Sprite * SpriteCreate(Texture2D *texture, int x, int y); +Sprite * SpriteCreate(TextureAtlas *atlas, int textureID, int x, int y); #endif diff --git a/sprite.o b/sprite.o new file mode 100644 index 0000000000000000000000000000000000000000..c71ea633a096d1c5b86fc793e4727083a04d9d79 GIT binary patch literal 3704 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