From 26d3a2efcaf5aa33b87d6d44dc52d7a434dd2506 Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Sun, 27 Nov 2022 22:00:59 +0100 Subject: [PATCH 1/7] Sprites no have a z-coordinate --- Input/inputHandler.c | 24 ++++++++++++++++-------- IsometricMap/isometricMap.c | 22 +++++++++++++++++++++- IsometricMap/isometricMap.h | 1 + IsometricMap/isometricRenderer.c | 2 +- IsometricMap/tile.h | 1 + List/list.c | 11 ++++++++--- List/list.h | 2 +- game.o | Bin 0 -> 5256 bytes inputHandler.o | Bin 0 -> 7064 bytes isometricMap.o | Bin 0 -> 5632 bytes isometricRenderer.o | Bin 0 -> 2960 bytes list.o | Bin 0 -> 4208 bytes main.c | 2 +- main.o | Bin 0 -> 2984 bytes spiel | Bin 0 -> 30856 bytes sprite.c | 11 ++++++++--- sprite.h | 3 ++- sprite.o | Bin 0 -> 3560 bytes tile.o | Bin 0 -> 928 bytes 19 files changed, 60 insertions(+), 19 deletions(-) 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 tile.o diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 02720f3..269ea3d 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -122,8 +122,16 @@ void mouseInput(Game *game){ float height = GetMousePosition().y - inputHandler->rectStart.y; // Add Sprite - if(width + height <= 1){ - ListInsertBack(sprites, SpriteCreate(texture, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + if(abs(width) + abs(height) < 20){ + int maxWidth = (game->layers[0]->widthBounds-1) * game->layers[0]->textureWidth; + int maxHeight = (game->layers[0]->heightBounds-1) * game->layers[0]->textureHeight; + if(inputHandler->cursorWorldPos.x < 0){ printf("OutOfBoundsDestination Spawn\n");} + else if(inputHandler->cursorWorldPos.y < 0){ printf("OutOfBoundsDestination Spawn\n");} + else if(inputHandler->cursorWorldPos.x > maxWidth){ printf("OutOfBoundsDestination Spawn\n");} + else if(inputHandler->cursorWorldPos.y > maxHeight){ printf("OutOfBoundsDestination Spawn\n");} + else { + ListInsertBack(sprites, SpriteCreate(texture, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + } } // Berechnung, welche Sprites ausgewählt wurden, scuffed @@ -167,14 +175,14 @@ void mouseInput(Game *game){ while (current != 0){ if(current->data.selected){ current->data.hasDestination = 1; - float destX = inputHandler->cursorWorldPos.x; - float destY = inputHandler->cursorWorldPos.y; - if(destX < 0){ destX = 0; } - if(destY < 0){ destY = 0; } + float destX = inputHandler->cursorWorldTile.x * game->layers[0]->textureWidth; + float destY = inputHandler->cursorWorldTile.y * game->layers[0]->textureHeight; int maxWidth = (game->layers[0]->widthBounds-1) * game->layers[0]->textureWidth; int maxHeight = (game->layers[0]->heightBounds-1) * game->layers[0]->textureHeight; - if(destX > maxWidth){ destX = maxWidth; } - if(destY > maxHeight){ destY = maxHeight; } + if(destX < 0){ printf("OutOfBoundsDestination"); continue; } + if(destY < 0){ printf("OutOfBoundsDestination"); continue; } + if(destX > maxWidth){ printf("OutOfBoundsDestination"); continue; } + if(destY > maxHeight){ printf("OutOfBoundsDestination"); continue; } current->data.destX = destX; current->data.destY = destY; diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index fe8307d..7907eba 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -40,6 +40,7 @@ IsometricMap * IsometricMapInit(int layer){ tmp->textureId = -1; tmp->x = i; tmp->y = j; + tmp->z = layer; tiles[i][j] = tmp; } } @@ -116,11 +117,30 @@ Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float return ptr; } +Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile){ + Tile *ptr = (Tile *) malloc(sizeof(Tile *)); + int n = 9; + for(n=9;n>=0;n--){ + if( tile->x < isometricMap[n]->widthBounds && tile->y < isometricMap[n]->heightBounds && + tile->x >= 0 && tile->y >= 0 ){ + if(isometricMap[n]->tiles[tile->x][tile->y]->textureId != -1){ + ptr->x = isometricMap[n]->tiles[tile->x][tile->y]->x; + ptr->y = isometricMap[n]->tiles[tile->x][tile->y]->y; + ptr->z = isometricMap[n]->tiles[tile->x][tile->y]->z; + return ptr; + } + } + } + ptr = 0; + return ptr; +} + // IsometricMapAddTile and IsometricMapChangeTextureIdOfTile pretty much do the same by now... void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId){ isometricMap->tiles[x][y]->textureId = textureId; isometricMap->tiles[x][y]->x = x; - isometricMap->tiles[x][y]->y = y; + isometricMap->tiles[x][y]->y = y; + isometricMap->tiles[x][y]->z = isometricMap->layer; } void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id){ if( x < map->widthBounds && y < map->heightBounds && diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index 2a4c8fb..3471a1e 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -20,6 +20,7 @@ typedef struct IsometricMap{ IsometricMap * IsometricMapInit(int layer); Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize); +Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile); Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, int y); // Project: Screen Coordinates -> World Coordinates void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float y, Vector2 *tmp); diff --git a/IsometricMap/isometricRenderer.c b/IsometricMap/isometricRenderer.c index 3e7f706..f767d27 100644 --- a/IsometricMap/isometricRenderer.c +++ b/IsometricMap/isometricRenderer.c @@ -51,7 +51,7 @@ void IsometricRendererRenderIsometricMap(IsometricMap **map, InputHandler *input int textureId = map[n]->tiles[i][j]->textureId; float x = map[n]->originX + offset->x; - float y = map[n]->originY + offset->y + map[n]->textureHeight - map[n]->tileTextures[textureId].height; + float y = map[n]->originY + offset->y;// + map[n]->textureHeight - map[n]->tileTextures[textureId].height; DrawTexture(map[n]->tileTextures[textureId], x, y, WHITE); diff --git a/IsometricMap/tile.h b/IsometricMap/tile.h index 62c052b..b532af8 100644 --- a/IsometricMap/tile.h +++ b/IsometricMap/tile.h @@ -6,6 +6,7 @@ typedef struct Tile{ int textureId; int x; int y; + int z; } Tile; #endif \ No newline at end of file diff --git a/List/list.c b/List/list.c index 3e480e9..08affa7 100644 --- a/List/list.c +++ b/List/list.c @@ -18,7 +18,7 @@ void ListPrintForward(List *list){ printf("\n[\n"); while(current != 0){ - printf("(%f | %f),\n", current->data.x, current->data.y); + //printf("(%f | %f),\n", current->data.x, current->data.y); current = current->next; } printf("]\n"); @@ -69,7 +69,7 @@ List * ListInit(){ return newList; } -void ListDrawAllSprites(List *list, IsometricMap *map, Camera2D *camera){ +void ListDrawAllSprites(List *list, IsometricMap **map, Camera2D *camera){ Node *current = list->head; while(current != 0){ @@ -105,7 +105,7 @@ void ListActAllSprites(Game *game){ // Change sprite according to direction Vector2 nullvektor = {0,0}; float f = Vector2Angle(movement, nullvektor); - printf("Angle: %f\n", f); + //printf("Angle: %f\n", f); f /= 3.14; f *= 3.5; f += 3.5; @@ -114,6 +114,11 @@ void ListActAllSprites(Game *game){ } } + // updating z-position + Tile *floorTile = IsometricMapGetTileFromWorldCoordinates(game->layers[0], current->data.x, current->data.y); + floorTile = IsometricMapGetMostUpperTile(game->layers, floorTile); + current->data.z = floorTile->z; + current = current->next; } diff --git a/List/list.h b/List/list.h index be3263b..a7e80f9 100644 --- a/List/list.h +++ b/List/list.h @@ -29,7 +29,7 @@ void ListPrintForward(List *list); void ListInsertFront(List *list, Sprite *data); void ListInsertBack(List *list, Sprite *data); List * ListInit(); -void ListDrawAllSprites(List *list, IsometricMap *map, Camera2D *camera); +void ListDrawAllSprites(List *list, IsometricMap **map, Camera2D *camera); void ListActAllSprites(Game *game); #endif diff --git a/game.o b/game.o new file mode 100644 index 0000000000000000000000000000000000000000..0af0ca519ecb592337a2ab488a3f1c5133f92e30 GIT binary patch literal 5256 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

)j=?=2SI&zso)5@lLI}<}~r@%H3 zn`f+i*6c_g>^qzqFxN=Lvza$&MpX-zNp5d8Gk7GE9Z0riGT9^*0nFNw;I+szHLso10w;gg;gkMcR&dqNNgw=ykNsA0PQCN? z``{x!_?JY1^~SB!2mh6VQ>m2e>L&weUVmN`rHt60!zbmF3Qk8#;-4tEYCl9lL?b&5 z_@w+61y|$wst^7n1t(k5&QBGbe(aI>?-g9N|92m}^f;8!WE`ZOS%K4>8}Lc|uRii0 z`N)TGpHcJL-z0Fa{a1YCcl*fqE4YSvq@U*%oa&>*-&AmNS>oF$d1&NM2%p41R&X_s zHKMM{b>O%piTc?zGjv(-m_hmZULANg<5q9zZLms zK+AR2QBcrmy&LgKyj8(f`CSUG%AZtlRengpRr#MNxGMiM1y|+6@QoVfi$2-f#X#cn zossn5@|`j2!R7tRqPeq!R^kMDE9>;9I2KJNtOSdm$mLixn{kNV%;2Dz z1}~kl%qZTH+xe{`=#%Mu6xYrWE~K;2Axq||<9&3S$R+$=eHhwQvPF4VwG|ViIT26E z5anHx>{*N`_pw#P8O+fkLK_nGk+u)%isQ%Re^Wd!a8af~InDV6TT*WCoxd3@viZO2 zw?da}s(S(?lk*=YLTTQ&)+^wVev2YQ!zBL&o-y)IZPI_)?*UVeRk;bFuVOUz%60*x zI_C9X>W9Hon~cB2-oSutdi5v8{MV$Q=)L;13#;WnCLTDi3q8s|l~SoM^IvUlQi;>0 pgBB5v(Ke)cy!vF*n|na)j7U_MCtx0u*ZOMu*M$ET8B>~9|G$=TrLF(~ literal 0 HcmV?d00001 diff --git a/isometricMap.o b/isometricMap.o new file mode 100644 index 0000000000000000000000000000000000000000..d2ea53a76ca425429a2d779a8b545d5ba1d2b1c1 GIT binary patch literal 5632 zcmb_gUu;`f89$D_&Oq9mOr3;SHH@@D#yU4Coz!fMx`fl-O3fN=wbn^=!L@Jxtce}j zH!MX9M5L>@Tr479=+iV1Jog2pA)+-2ne0t@@DNNE>VqGG3SQ>Cdq@YneO?TS>_97`B4ddY&sRmb%DC+tELk* zotNV-f5#c<+Ku?Ye#jpX@=xqaz6bKXLjI`f@>*rCMy_DEeDRaIvqGSoiW%2d%0tn& zmJD-cx!oaQXW=i9Qvw%j2$k2Ig}R5uJ?w_UDsv62avrtrqulhOv(Qp3cPJ*UQ8vU5 zLvaagXh4`UubRsZq)27W;q?k%g#=U6t!IVu9Bm|J-Sn!N{j*u_{40qe$91!OpnJs_E^=^WmGext(fV$jM>R~-=#R%?z3 z1gk}7sMFv8DmSlTY%Fs|`+ zXJz>xUyjs1YCFp=Zw8Q0>XGV*@z15(#@CmyUHi7tjngBv{AWh%`LKKRQdD-oU(RgX zncj5LEy7J#gyix~ogSI3mXBoTw}NtJk%j3R{NZbO4OUGjO&->9puKps=OopX%(%}* zKYIggSnEo~@fw85bIZcEhC2zaY8Z9mq*cr40rA>klL#QM@eSyZ_(MoM zu8>!SS>zG2cV>ND(>fzJn>Sog+S_>NL|B8-*5)& zr*T&)6@G)lXlbgx71V9xyCOW{ErJTfaPD3f?b|?fGMNZgCX-whut??|4U;sbUY;&Z zfF1H1=h$>+k=bs(j@MuVqD_<=4u632Nl7LKd3SJWD-DpAf|MFh5PsY%*a)@<)Y_F) zj7lVz)I79oy5fe?dl-lKx^X3jZ;9kl8~b<-;|g`0aF1Lt4lNr${#YRm4_Q^VRVS!u z4lel`po>6w9srrk=G%9T%a=d1zPP~J@*YE*h(^4R?ZvGJb-Kmdw>r%Vr!S#MS@0I3 z>e0yyX1T&QKL>F&-TZ@0V*{TFc^Q;D^%dGQBURI7GWq>0M%nRX<2%YyF-Z2jmQBU* zsr$)`9vLU{7)WKpyRoqy?jXdWFWUwVo4*=}7f{>>=~~dY?tz%|O7mc>i4vhw55`(2 z6&#;Bnr?k*esVK1KfB2c=Y>!4aoqkCcz3=tNH^~8u6;MX;dI@H^rk$@yEWcYM^_bE z=7xTHs1J7F6NK+=+x-RA7l8+FRrNJfk*QP4H)l_g>#q2n($8D7&ryCk8qi{w;(l=*?-k~LvvZ7b*J*o8N&q5xpy7@j$8OU)@jDRy#T z;JHLk`oeVHo=)`jCBKpEeWq_(kbOTqd^p*A0mZupCC2x4UFjIuyNAz5qrd8al;o$B%vGATOvleX z{`VCB1wY>wY+-*+@t?<@o__Rjgd}MHcNG6!nmzm1Jo`(E|6V}<_nv-3@%Q*+i2m2( z>pwF7MslA0kA(dMpaj{)n4*`*AC&V%p8G9moghY4j&)Ccpw@euwzeReQJT`=!OLJ5EL^8%Ljpyha}FlpJv@$6t` zDw$=ceB`P8xXmUr6BC6jJ6*`+&RR3}bkSnN!zDYDy*Qj5yEr_O8J`F!4P+*=XGTWQ zy(bFAv*Q!iaXY|2Y1xFHC>AD<7mJxoLxs|~JzmHMgocWR*U{hsES;a)2KAYHrBIy6 z4HOE++;~1?Tcv9{`h;dC@LevAY$bX+5+XEia@>-!gXKgLb&eh%OPC%^>0GB?(5YMuKRjDgzLVhAKo;ypSrJ~ z2;sV~S+aC#(#~AKY!~G`rdLI4B9pYy#4MT1*cq0*P%5!xu^@?TVRF*SgO@MZRubR3 zXGE7PdNe`TxgOV-%%NHH^MNeBPWcLMqp67`6Gq!jU%y0g|A8W7*;Vn zDG!m0F+EyKNZ?AtWT$KyZZNb%N^=+Vq}g!japyVf4jX&<=swtGd8F8CzAFF k>yyoJ?E$f)`{>Qsp^*O}l98L+>BrUoYi(g=>lN1jACH*B6#xJL literal 0 HcmV?d00001 diff --git a/isometricRenderer.o b/isometricRenderer.o new file mode 100644 index 0000000000000000000000000000000000000000..77a4902632aa4d326039010619bab9336c143047 GIT binary patch literal 2960 zcmbtU-)mcS6#w3&b{Vd_sZ1Sgxa*6orMtA74|YRMZNKezVC$@_`k=Tpxmlyl4{mO7 z6RLx&vde8p9_L>mBC-b`6a;CzYC92$l7}ck@=!;s1(o;^M2+X%`~4=jw+Rk+;G1*K z=X-vA&pEko(Wl1)l0*baxo3bDBzqo=mR3X}XPB617^%c#! zl<#YKH1mMlEeH$&!?X%fUEii*NWMW!OXq^`EX!7_d#H$H6uU0t`zJ%luf zb<+_@!@7y#c4}kt0Mz3I9;mx9L(n}uhnaPo*%Gs#4Kb^mS;k+3x$wtg71zI2+& z%r(WNWyz-HGqfTv{`gO$Vbir{<-@eJ&~4I+^h=kSsz@d+fobUsU6Zf952l3zvtO>? zf=Ya2V^)57ofh4B?4FJTZubXTBl^QLqR*WX71?#Rbm$9ocU~kFVMxp_YybfH;dZ4O zWQc~La*s-EV%8h-+quqR>;k^ro-9Kk>l?mQ%%WR1y_>Wat#k-rU%@Af9f0?2!MKQL zh1#aIuVCAJUXd>0w)r1>vAKIM+Lz|+39K-S6`56po(8a|4qLh7^}z>;|E9Z29p1AE z?-{0LdGRQ0j=M=6EUS)XNnX7DH(C}YbD_9jzV4lN$sk2iPrMDx~UlqejtIBYZKu%It1Qj6Aw5x{CW?=kX_{W#-0lR zf^EORh&$iaT`u>7cAv-IsTD944!+w@rvPY&KM6R-5&q750E>07H#^`Y>7Sk&Bb_En zvUwv%aJ=WWOGaMT_FB3-&mkX z)_>tQ8R!^-K)3_gO@YtjK!6bMh9htT0{|foBX8m#@&)qSf9ApWd+ZgEkuV$&>F8t5 zZwnXwCu;6;%81SaH*}ZJ2}#%HqpATNBWgTqM2R|^%Mn%2xJoRON@;1hOJ@vCg`Gc< zGorEAxPCF6SF?I1tLesN@WDvh+$#w^n$mbBcgGZP$5vtwy%ga}A2!TGyzNco2uNrW zX(Fyr<^c;FzZW?A;!KbZyNo;n9C1DdjuMjerbOUAH#Va-6;D*v#DF&Yk=q z&Db^=rUfB_pda<4A3+dAKQf4%wP?49*dL-32+fZIWs5e~UDI>H6kC%mV@uhL(f-E(FaFfehkx$i#dDR* zkCXH!G`GqbVd7WvQeT7@dm}=7-0Tq6upBpI z^?m7Z?dvaeIEqFV=ahehs`1hLWYlpHeX5nb)p*IItY{rRS7U`=d^#7KI4l;bWLV`z z=|&ifLohy4F04`qs_`P7K%9-Xy`ia`

Oz_|_|h%?%BOGpYsU+(%XD?T}JZ71(lu zVpHoR2tD|XHN1jVCJ=@H$K2gU6iQC!zC~gp3(62D{oCZ%OFeNSPrALZ_nb!hoST36 za+oepw+&qz8I0pPDJZsPNbl!dSxoc*uB?b2lUdSrPdy^cMB{an@VokT-qRD;F3!!w zB$pE+kr^Yr6j5i4XU1lXw)j=@Il)U8CPh|^I-`24Jt#7)mdrK7wSY15Hhnv!RwY|= zh1&4YjB!YKnARfdc%j2vwdf8Z)5o}xE$i6bSB;GmFXA4m+M zy{k_1jVBIeQH)ol+QE3`wkq#!*it_a{H@{<)6#M@9UiN?f@qU6-yD2tK3QtuV{el-;6(=A@} zNpF@+Rf0#$a7v{x@v&Fc%TuM7r^<|x>wnJ9qSKZ<%MRl%8GEn`^TQ)k`!BUGHW@o& zvfW)>PeeKfjux_RA=23y-5iZ==qw1f^Zcew(b$%C3T6w)7M~0XwYz74Q6H9pwa@^q zkP8c(?PGz{;lS$FMWKt-8WF-pGtp{8C%!EFTCi*B!uW7YFhNR6ZbC-1ACuMza-jhG zBfyD1!&H}lT$f(}PE^KJmw!^1zYCn`F-%&XZNx7FC+f$f<-xr|Awp1<2IwRmye@A^ z1f>TdYC2H~sCK{2HWRiq{pCYVMLW(hL7kR+^hGTRdx!?^#ZT=7Kws;Lx)QdLMl<~_ zO214iNYt6uoiyO*B^-pPEM{3J;7_6+M53;=9-;v}uW(UM!jMO^xUVSvuav&1FJW)Y zqyO$a_=of0m*>I1od^GZ9vuI&G|Qi*Q+YRf6hs{R-S>C`vdmVwv!$b z+S`+^M`yQ1eiIq%Kq_Ogr>vxFJDc`d+2igB&Gpz0C73!}7xyO<={mDLdz_d(c{^jd zPAb`*$dShbskBAeW<<~~+jfRhSvqXquh(to-GN-ra$rEUM1O+tR-miz&Po~uNQ7(0 z8=~t*BO86fA8y+0Kw4b+B9|QB^J*xkJdGq|hgX3RP?dQ4& zU*^GoP&gKx3;sa;>Y)U0(9nL~@!;q$jeqXJ+dTMMK!V9}%bJc~NEWRi9!W6@U{&DyRNrQf~{ zc^99lygQV!2k8!TrQyi{Ba0O1ZGLv;tS{s8GgozPMW8kH4M-@cD1;JINM4y}dG~oZsFe+h+Gai3=xsUoH$RT0-0F`)?K-CKc6?H5DK44dVFi;nRQj1hGk_*zU{U U$1=Qq&FoLB2hN2v5Bcr?0%J~(p#T5? literal 0 HcmV?d00001 diff --git a/main.c b/main.c index a4689fc..066d04c 100644 --- a/main.c +++ b/main.c @@ -33,7 +33,7 @@ int main(){ IsometricRendererRenderIsometricMap(game->layers, game->inputHandler); - ListDrawAllSprites(game->sprites, game->layers[0], game->camera); + ListDrawAllSprites(game->sprites, game->layers, game->camera); EndMode2D(); diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3bf089fa5ff72cb0fef9a8a64b71d7a440ac578c GIT binary patch literal 2984 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 literal 0 HcmV?d00001 diff --git a/sprite.c b/sprite.c index 6c31db1..251820f 100644 --- a/sprite.c +++ b/sprite.c @@ -3,12 +3,14 @@ #include #include #include "IsometricMap/isometricMap.h" +#include "IsometricMap/tile.h" void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y){ if(*spriteAmount < 100){ (sprites + *spriteAmount) -> texture = texture; (sprites + *spriteAmount) -> x = x; (sprites + *spriteAmount) -> y = y; + (sprites + *spriteAmount) -> z = 0; (sprites + *spriteAmount) -> destX = x; (sprites + *spriteAmount) -> destY = y; (sprites + *spriteAmount) -> hasDestination = 0; @@ -20,15 +22,18 @@ void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, in } } -void DrawSpriteToWorld(Sprite *sprite, IsometricMap *map, Camera2D *camera){ +void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera){ // TODO: Nach y sortieren, bevor sie gedrawed werden // Wir müssen beachten, dass sie nach den unprojezierten Screen-Koordinaten sortiert werden müssen. // Macht es vielleicht sinn den Sprites auch einen Vector mit ihren Screen Koordinaten zu geben? Vector2 pos = {sprite->x, sprite->y}; - IsometricMapUnproject(map, camera, pos.x, pos.y, &pos); + IsometricMapUnproject(map[0], camera, pos.x, pos.y, &pos); // Also erst ab hier sortieren, mit den Werten aus dem pos Vector + + pos.y -= sprite->z * (map[0]->textureHeight/2); + pos.x -= camera->target.x; pos.y -= camera->target.y; if(sprite->selected){ @@ -38,7 +43,7 @@ void DrawSpriteToWorld(Sprite *sprite, IsometricMap *map, Camera2D *camera){ else{ DrawTexture(*sprite->texture, pos.x - sprite->texture->width/4, pos.y - sprite->texture->height/4, WHITE); } - printf("%f %f \n", sprite->x, sprite->y); + //printf("%f %f \n", sprite->x, sprite->y); } void DrawSpriteToScreen(Sprite *sprite){ diff --git a/sprite.h b/sprite.h index ddc0c65..5e4702a 100644 --- a/sprite.h +++ b/sprite.h @@ -7,6 +7,7 @@ typedef struct Sprite { Texture2D *texture; float x; float y; + float z; float destX; float destY; int hasDestination; @@ -15,7 +16,7 @@ typedef struct Sprite { void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y); -void DrawSpriteToWorld(Sprite *sprite, IsometricMap *map, Camera2D *camera); +void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera); void DrawSpriteToScreen(Sprite *sprite); Sprite * SpriteCreate(Texture2D *texture, int x, int y); diff --git a/sprite.o b/sprite.o new file mode 100644 index 0000000000000000000000000000000000000000..be4b53f8215e3ee034db79fb76b6aee4d5315bf0 GIT binary patch literal 3560 zcmc&#-EUMy6rbHKuwv;hgohIRxGxx#vgx7^XpG*ayD%hH5m-b8%69i+fo-?my&J&< zG$|OyYh(We9*pr#<44l);n#{QjGZW~-&sB%$S zMoW=fYUarh7_){TnIp<*aU`eu&1ZQHhk#zm?UFT=*%QY31Ikuq6FIcujG zk{+c`*G&?zm#$f`(HS4TfRdMP?iV-+o>R$H#tu+IiRZq38;-=}#IFwrX1}hYnlq>- z%)R{8Qsme~-3g4P$O%Uj9t>~rtzm?t*yO=Ajmzc8r7vJQ@i`mEz>?y}E7J+_T~f?% ztJPR7A+AH*fE5z8tvL$G438cNL7z`fRD+F(U_Tk@Dif8W@u+PpQ6pVdj}%6FsdsYm zGj~yu7sFhv<>E-#O+>}sXj1%;6gOm9_{eqRmk$uqXSMMf+LdWBhX`v-Oi6*&1nTDP z`hSR2eA^u87`9i*@g3e#an^V{7_}B(O&mL3KVEdWu=5KQ?)FyP{l?`P=gg;ScQ?eW zx4TIxV0ZG?V~1wDOf`9+8EP)G2_tM-HgVsNBAXptoCv$7m(4~hZ}optyC(Dajr1dn z&D}KF+@n2sGvy%-51W>GSkK*8>K+b8#gV9(^kw0AwQ-xEOOIbglomvK{!6+A2|i)BU9(r)0$AvBzWGJL4rejbGfgE7twQqY5TXYHjFI zbb4U+J)dSl#>#|+(5Y?q1{QepAPby}2DY}Z3yz_ljzj$&_~-yjf8^VlNHa$C0aw9qL1bTuXzN* zS~Lo&js0G0v4p+R>fJ3Qv#=be-{qzzzT7J?$_wSq-?jiCzUIlj1KWY#il0~k?_B{u z0i5i2P?6AN-Y~w7PWaynm$?FV5xtdPRvflZJ60^q4oM-A%dz2-Q)Edy^M(f(Dj+EGeTAPUlAB zl@;)S$`cLuHSynV!kg{mp*s`7T&>>6KK;J1lGia$u{@Y+col3jbXU0_XvdX7kR>we3*;YtY3bT%Q!Z;NR zZO$9m{TNAC!K_o^k0@Ln3x#6v2c%Z~{=0ya&3~&Ohc4M{J`%yat&&4`nf&v?P2iC2KmmxPdf37!T Qv6cR!ir;BghV0k>2eN}=IRF3v literal 0 HcmV?d00001 diff --git a/tile.o b/tile.o new file mode 100644 index 0000000000000000000000000000000000000000..ec204adaedf6210815518221e71da3ff50430c83 GIT binary patch literal 928 zcmbVK%}N6?5T32|_oO$$%l4##4ZBq@9wboOUc_6$>+TvgHOpKkDP~!B z`O&PTc#**F6PW-@n+8}`=D8@4D@rLCUSrtEBzxBQp=eoEmzAjH(mU?2#1S^o-M5@Z z?qCD0F)M0-kvMlgTvh$x_8+5U2mQbOXV^=7M(DP24XAFLIp5?`D8f L8}4*A$$kGfOw%{6 literal 0 HcmV?d00001 From d43ff313f0ce53049f5336374fd029c0ff953127 Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Sun, 27 Nov 2022 22:01:15 +0100 Subject: [PATCH 2/7] make clean --- game.o | Bin 5256 -> 0 bytes inputHandler.o | Bin 7064 -> 0 bytes isometricMap.o | Bin 5632 -> 0 bytes isometricRenderer.o | Bin 2960 -> 0 bytes list.o | Bin 4208 -> 0 bytes main.o | Bin 2984 -> 0 bytes spiel | Bin 30856 -> 0 bytes sprite.o | Bin 3560 -> 0 bytes tile.o | Bin 928 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 game.o delete mode 100644 inputHandler.o delete mode 100644 isometricMap.o delete mode 100644 isometricRenderer.o delete mode 100644 list.o delete mode 100644 main.o delete mode 100755 spiel delete mode 100644 sprite.o delete mode 100644 tile.o diff --git a/game.o b/game.o deleted file mode 100644 index 0af0ca519ecb592337a2ab488a3f1c5133f92e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5256 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

)j=?=2SI&zso)5@lLI}<}~r@%H3 zn`f+i*6c_g>^qzqFxN=Lvza$&MpX-zNp5d8Gk7GE9Z0riGT9^*0nFNw;I+szHLso10w;gg;gkMcR&dqNNgw=ykNsA0PQCN? z``{x!_?JY1^~SB!2mh6VQ>m2e>L&weUVmN`rHt60!zbmF3Qk8#;-4tEYCl9lL?b&5 z_@w+61y|$wst^7n1t(k5&QBGbe(aI>?-g9N|92m}^f;8!WE`ZOS%K4>8}Lc|uRii0 z`N)TGpHcJL-z0Fa{a1YCcl*fqE4YSvq@U*%oa&>*-&AmNS>oF$d1&NM2%p41R&X_s zHKMM{b>O%piTc?zGjv(-m_hmZULANg<5q9zZLms zK+AR2QBcrmy&LgKyj8(f`CSUG%AZtlRengpRr#MNxGMiM1y|+6@QoVfi$2-f#X#cn zossn5@|`j2!R7tRqPeq!R^kMDE9>;9I2KJNtOSdm$mLixn{kNV%;2Dz z1}~kl%qZTH+xe{`=#%Mu6xYrWE~K;2Axq||<9&3S$R+$=eHhwQvPF4VwG|ViIT26E z5anHx>{*N`_pw#P8O+fkLK_nGk+u)%isQ%Re^Wd!a8af~InDV6TT*WCoxd3@viZO2 zw?da}s(S(?lk*=YLTTQ&)+^wVev2YQ!zBL&o-y)IZPI_)?*UVeRk;bFuVOUz%60*x zI_C9X>W9Hon~cB2-oSutdi5v8{MV$Q=)L;13#;WnCLTDi3q8s|l~SoM^IvUlQi;>0 pgBB5v(Ke)cy!vF*n|na)j7U_MCtx0u*ZOMu*M$ET8B>~9|G$=TrLF(~ diff --git a/isometricMap.o b/isometricMap.o deleted file mode 100644 index d2ea53a76ca425429a2d779a8b545d5ba1d2b1c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmb_gUu;`f89$D_&Oq9mOr3;SHH@@D#yU4Coz!fMx`fl-O3fN=wbn^=!L@Jxtce}j zH!MX9M5L>@Tr479=+iV1Jog2pA)+-2ne0t@@DNNE>VqGG3SQ>Cdq@YneO?TS>_97`B4ddY&sRmb%DC+tELk* zotNV-f5#c<+Ku?Ye#jpX@=xqaz6bKXLjI`f@>*rCMy_DEeDRaIvqGSoiW%2d%0tn& zmJD-cx!oaQXW=i9Qvw%j2$k2Ig}R5uJ?w_UDsv62avrtrqulhOv(Qp3cPJ*UQ8vU5 zLvaagXh4`UubRsZq)27W;q?k%g#=U6t!IVu9Bm|J-Sn!N{j*u_{40qe$91!OpnJs_E^=^WmGext(fV$jM>R~-=#R%?z3 z1gk}7sMFv8DmSlTY%Fs|`+ zXJz>xUyjs1YCFp=Zw8Q0>XGV*@z15(#@CmyUHi7tjngBv{AWh%`LKKRQdD-oU(RgX zncj5LEy7J#gyix~ogSI3mXBoTw}NtJk%j3R{NZbO4OUGjO&->9puKps=OopX%(%}* zKYIggSnEo~@fw85bIZcEhC2zaY8Z9mq*cr40rA>klL#QM@eSyZ_(MoM zu8>!SS>zG2cV>ND(>fzJn>Sog+S_>NL|B8-*5)& zr*T&)6@G)lXlbgx71V9xyCOW{ErJTfaPD3f?b|?fGMNZgCX-whut??|4U;sbUY;&Z zfF1H1=h$>+k=bs(j@MuVqD_<=4u632Nl7LKd3SJWD-DpAf|MFh5PsY%*a)@<)Y_F) zj7lVz)I79oy5fe?dl-lKx^X3jZ;9kl8~b<-;|g`0aF1Lt4lNr${#YRm4_Q^VRVS!u z4lel`po>6w9srrk=G%9T%a=d1zPP~J@*YE*h(^4R?ZvGJb-Kmdw>r%Vr!S#MS@0I3 z>e0yyX1T&QKL>F&-TZ@0V*{TFc^Q;D^%dGQBURI7GWq>0M%nRX<2%YyF-Z2jmQBU* zsr$)`9vLU{7)WKpyRoqy?jXdWFWUwVo4*=}7f{>>=~~dY?tz%|O7mc>i4vhw55`(2 z6&#;Bnr?k*esVK1KfB2c=Y>!4aoqkCcz3=tNH^~8u6;MX;dI@H^rk$@yEWcYM^_bE z=7xTHs1J7F6NK+=+x-RA7l8+FRrNJfk*QP4H)l_g>#q2n($8D7&ryCk8qi{w;(l=*?-k~LvvZ7b*J*o8N&q5xpy7@j$8OU)@jDRy#T z;JHLk`oeVHo=)`jCBKpEeWq_(kbOTqd^p*A0mZupCC2x4UFjIuyNAz5qrd8al;o$B%vGATOvleX z{`VCB1wY>wY+-*+@t?<@o__Rjgd}MHcNG6!nmzm1Jo`(E|6V}<_nv-3@%Q*+i2m2( z>pwF7MslA0kA(dMpaj{)n4*`*AC&V%p8G9moghY4j&)Ccpw@euwzeReQJT`=!OLJ5EL^8%Ljpyha}FlpJv@$6t` zDw$=ceB`P8xXmUr6BC6jJ6*`+&RR3}bkSnN!zDYDy*Qj5yEr_O8J`F!4P+*=XGTWQ zy(bFAv*Q!iaXY|2Y1xFHC>AD<7mJxoLxs|~JzmHMgocWR*U{hsES;a)2KAYHrBIy6 z4HOE++;~1?Tcv9{`h;dC@LevAY$bX+5+XEia@>-!gXKgLb&eh%OPC%^>0GB?(5YMuKRjDgzLVhAKo;ypSrJ~ z2;sV~S+aC#(#~AKY!~G`rdLI4B9pYy#4MT1*cq0*P%5!xu^@?TVRF*SgO@MZRubR3 zXGE7PdNe`TxgOV-%%NHH^MNeBPWcLMqp67`6Gq!jU%y0g|A8W7*;Vn zDG!m0F+EyKNZ?AtWT$KyZZNb%N^=+Vq}g!japyVf4jX&<=swtGd8F8CzAFF k>yyoJ?E$f)`{>Qsp^*O}l98L+>BrUoYi(g=>lN1jACH*B6#xJL diff --git a/isometricRenderer.o b/isometricRenderer.o deleted file mode 100644 index 77a4902632aa4d326039010619bab9336c143047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2960 zcmbtU-)mcS6#w3&b{Vd_sZ1Sgxa*6orMtA74|YRMZNKezVC$@_`k=Tpxmlyl4{mO7 z6RLx&vde8p9_L>mBC-b`6a;CzYC92$l7}ck@=!;s1(o;^M2+X%`~4=jw+Rk+;G1*K z=X-vA&pEko(Wl1)l0*baxo3bDBzqo=mR3X}XPB617^%c#! zl<#YKH1mMlEeH$&!?X%fUEii*NWMW!OXq^`EX!7_d#H$H6uU0t`zJ%luf zb<+_@!@7y#c4}kt0Mz3I9;mx9L(n}uhnaPo*%Gs#4Kb^mS;k+3x$wtg71zI2+& z%r(WNWyz-HGqfTv{`gO$Vbir{<-@eJ&~4I+^h=kSsz@d+fobUsU6Zf952l3zvtO>? zf=Ya2V^)57ofh4B?4FJTZubXTBl^QLqR*WX71?#Rbm$9ocU~kFVMxp_YybfH;dZ4O zWQc~La*s-EV%8h-+quqR>;k^ro-9Kk>l?mQ%%WR1y_>Wat#k-rU%@Af9f0?2!MKQL zh1#aIuVCAJUXd>0w)r1>vAKIM+Lz|+39K-S6`56po(8a|4qLh7^}z>;|E9Z29p1AE z?-{0LdGRQ0j=M=6EUS)XNnX7DH(C}YbD_9jzV4lN$sk2iPrMDx~UlqejtIBYZKu%It1Qj6Aw5x{CW?=kX_{W#-0lR zf^EORh&$iaT`u>7cAv-IsTD944!+w@rvPY&KM6R-5&q750E>07H#^`Y>7Sk&Bb_En zvUwv%aJ=WWOGaMT_FB3-&mkX z)_>tQ8R!^-K)3_gO@YtjK!6bMh9htT0{|foBX8m#@&)qSf9ApWd+ZgEkuV$&>F8t5 zZwnXwCu;6;%81SaH*}ZJ2}#%HqpATNBWgTqM2R|^%Mn%2xJoRON@;1hOJ@vCg`Gc< zGorEAxPCF6SF?I1tLesN@WDvh+$#w^n$mbBcgGZP$5vtwy%ga}A2!TGyzNco2uNrW zX(Fyr<^c;FzZW?A;!KbZyNo;n9C1DdjuMjerbOUAH#Va-6;D*v#DF&Yk=q z&Db^=rUfB_pda<4A3+dAKQf4%wP?49*dL-32+fZIWs5e~UDI>H6kC%mV@uhL(f-E(FaFfehkx$i#dDR* zkCXH!G`GqbVd7WvQeT7@dm}=7-0Tq6upBpI z^?m7Z?dvaeIEqFV=ahehs`1hLWYlpHeX5nb)p*IItY{rRS7U`=d^#7KI4l;bWLV`z z=|&ifLohy4F04`qs_`P7K%9-Xy`ia`

Oz_|_|h%?%BOGpYsU+(%XD?T}JZ71(lu zVpHoR2tD|XHN1jVCJ=@H$K2gU6iQC!zC~gp3(62D{oCZ%OFeNSPrALZ_nb!hoST36 za+oepw+&qz8I0pPDJZsPNbl!dSxoc*uB?b2lUdSrPdy^cMB{an@VokT-qRD;F3!!w zB$pE+kr^Yr6j5i4XU1lXw)j=@Il)U8CPh|^I-`24Jt#7)mdrK7wSY15Hhnv!RwY|= zh1&4YjB!YKnARfdc%j2vwdf8Z)5o}xE$i6bSB;GmFXA4m+M zy{k_1jVBIeQH)ol+QE3`wkq#!*it_a{H@{<)6#M@9UiN?f@qU6-yD2tK3QtuV{el-;6(=A@} zNpF@+Rf0#$a7v{x@v&Fc%TuM7r^<|x>wnJ9qSKZ<%MRl%8GEn`^TQ)k`!BUGHW@o& zvfW)>PeeKfjux_RA=23y-5iZ==qw1f^Zcew(b$%C3T6w)7M~0XwYz74Q6H9pwa@^q zkP8c(?PGz{;lS$FMWKt-8WF-pGtp{8C%!EFTCi*B!uW7YFhNR6ZbC-1ACuMza-jhG zBfyD1!&H}lT$f(}PE^KJmw!^1zYCn`F-%&XZNx7FC+f$f<-xr|Awp1<2IwRmye@A^ z1f>TdYC2H~sCK{2HWRiq{pCYVMLW(hL7kR+^hGTRdx!?^#ZT=7Kws;Lx)QdLMl<~_ zO214iNYt6uoiyO*B^-pPEM{3J;7_6+M53;=9-;v}uW(UM!jMO^xUVSvuav&1FJW)Y zqyO$a_=of0m*>I1od^GZ9vuI&G|Qi*Q+YRf6hs{R-S>C`vdmVwv!$b z+S`+^M`yQ1eiIq%Kq_Ogr>vxFJDc`d+2igB&Gpz0C73!}7xyO<={mDLdz_d(c{^jd zPAb`*$dShbskBAeW<<~~+jfRhSvqXquh(to-GN-ra$rEUM1O+tR-miz&Po~uNQ7(0 z8=~t*BO86fA8y+0Kw4b+B9|QB^J*xkJdGq|hgX3RP?dQ4& zU*^GoP&gKx3;sa;>Y)U0(9nL~@!;q$jeqXJ+dTMMK!V9}%bJc~NEWRi9!W6@U{&DyRNrQf~{ zc^99lygQV!2k8!TrQyi{Ba0O1ZGLv;tS{s8GgozPMW8kH4M-@cD1;JINM4y}dG~oZsFe+h+Gai3=xsUoH$RT0-0F`)?K-CKc6?H5DK44dVFi;nRQj1hGk_*zU{U U$1=Qq&FoLB2hN2v5Bcr?0%J~(p#T5? diff --git a/main.o b/main.o deleted file mode 100644 index 3bf089fa5ff72cb0fef9a8a64b71d7a440ac578c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2984 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 diff --git a/sprite.o b/sprite.o deleted file mode 100644 index be4b53f8215e3ee034db79fb76b6aee4d5315bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3560 zcmc&#-EUMy6rbHKuwv;hgohIRxGxx#vgx7^XpG*ayD%hH5m-b8%69i+fo-?my&J&< zG$|OyYh(We9*pr#<44l);n#{QjGZW~-&sB%$S zMoW=fYUarh7_){TnIp<*aU`eu&1ZQHhk#zm?UFT=*%QY31Ikuq6FIcujG zk{+c`*G&?zm#$f`(HS4TfRdMP?iV-+o>R$H#tu+IiRZq38;-=}#IFwrX1}hYnlq>- z%)R{8Qsme~-3g4P$O%Uj9t>~rtzm?t*yO=Ajmzc8r7vJQ@i`mEz>?y}E7J+_T~f?% ztJPR7A+AH*fE5z8tvL$G438cNL7z`fRD+F(U_Tk@Dif8W@u+PpQ6pVdj}%6FsdsYm zGj~yu7sFhv<>E-#O+>}sXj1%;6gOm9_{eqRmk$uqXSMMf+LdWBhX`v-Oi6*&1nTDP z`hSR2eA^u87`9i*@g3e#an^V{7_}B(O&mL3KVEdWu=5KQ?)FyP{l?`P=gg;ScQ?eW zx4TIxV0ZG?V~1wDOf`9+8EP)G2_tM-HgVsNBAXptoCv$7m(4~hZ}optyC(Dajr1dn z&D}KF+@n2sGvy%-51W>GSkK*8>K+b8#gV9(^kw0AwQ-xEOOIbglomvK{!6+A2|i)BU9(r)0$AvBzWGJL4rejbGfgE7twQqY5TXYHjFI zbb4U+J)dSl#>#|+(5Y?q1{QepAPby}2DY}Z3yz_ljzj$&_~-yjf8^VlNHa$C0aw9qL1bTuXzN* zS~Lo&js0G0v4p+R>fJ3Qv#=be-{qzzzT7J?$_wSq-?jiCzUIlj1KWY#il0~k?_B{u z0i5i2P?6AN-Y~w7PWaynm$?FV5xtdPRvflZJ60^q4oM-A%dz2-Q)Edy^M(f(Dj+EGeTAPUlAB zl@;)S$`cLuHSynV!kg{mp*s`7T&>>6KK;J1lGia$u{@Y+col3jbXU0_XvdX7kR>we3*;YtY3bT%Q!Z;NR zZO$9m{TNAC!K_o^k0@Ln3x#6v2c%Z~{=0ya&3~&Ohc4M{J`%yat&&4`nf&v?P2iC2KmmxPdf37!T Qv6cR!ir;BghV0k>2eN}=IRF3v diff --git a/tile.o b/tile.o deleted file mode 100644 index ec204adaedf6210815518221e71da3ff50430c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 zcmbVK%}N6?5T32|_oO$$%l4##4ZBq@9wboOUc_6$>+TvgHOpKkDP~!B z`O&PTc#**F6PW-@n+8}`=D8@4D@rLCUSrtEBzxBQp=eoEmzAjH(mU?2#1S^o-M5@Z z?qCD0F)M0-kvMlgTvh$x_8+5U2mQbOXV^=7M(DP24XAFLIp5?`D8f L8}4*A$$kGfOw%{6 From 86252225c9cbbed5dfd80c343ff242854ff7e854 Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Mon, 28 Nov 2022 22:52:56 +0100 Subject: [PATCH 3/7] bruh --- Input/inputHandler.c | 23 ++++---- IsometricMap/isometricMap.c | 97 +++++++++++++++---------------- IsometricMap/isometricMap.h | 46 +++++++++++---- IsometricMap/isometricRenderer.c | 22 ++++--- IsometricMap/isometricRenderer.h | 3 +- List/list.c | 6 +- README.md | 2 + game.c | 20 +++---- game.h | 1 - game.o | Bin 0 -> 5072 bytes inputHandler.o | Bin 0 -> 7016 bytes isometricMap.o | Bin 0 -> 5584 bytes isometricRenderer.o | Bin 0 -> 2944 bytes list.o | Bin 0 -> 4216 bytes main.c | 5 +- main.o | Bin 0 -> 2968 bytes spiel | Bin 0 -> 30808 bytes sprite.c | 12 ++-- sprite.o | Bin 0 -> 3416 bytes tile.o | Bin 0 -> 928 bytes 20 files changed, 126 insertions(+), 111 deletions(-) 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 tile.o diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 269ea3d..958119e 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -66,7 +66,7 @@ void mouseInput(Game *game){ // resetting last selected Tile to grass texture if(inputHandler->selectedLayer != -1){ - IsometricMapChangeTextureIdOfTile(layers[inputHandler->selectedLayer], (int) inputHandler->cursorWorldTile.x, (int) inputHandler->cursorWorldTile.y, 0); + IsometricMapChangeTextureIdOfTile(layers, (int) inputHandler->cursorWorldTile.x, (int) inputHandler->cursorWorldTile.y, inputHandler->selectedLayer, 0); } /* TODO: n=9 no good style, Segmentation fault when n > layerAmount @@ -74,6 +74,7 @@ void mouseInput(Game *game){ -> Stash size in another variable. printf("%ld \n", sizeof(*layers) / sizeof(layers[0])); */ + // hardcoded layer amount int n = 9; for(n = 9; n >= 0 ; n--){ if(layers[n] != 0){ @@ -84,14 +85,14 @@ void mouseInput(Game *game){ IsometricMapProject(layers[n], camera, inputHandler->cursorPos.x + mouseAdjustmentX, inputHandler->cursorPos.y + mouseAdjustmentY, &inputHandler->cursorWorldPos); - Tile *selectedTile = IsometricMapGetTileFromWorldCoordinates(layers[n], inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y); + Tile *selectedTile = IsometricMapGetTileFromWorldCoordinates(layers, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y, n); if(selectedTile != 0){ inputHandler->cursorWorldTile.x = selectedTile->x; inputHandler->cursorWorldTile.y = selectedTile->y; inputHandler->selectedLayer = n; // setting currently selected tile to tower - IsometricMapChangeTextureIdOfTile(layers[n], inputHandler->cursorWorldTile.x, inputHandler->cursorWorldTile.y, 1); + IsometricMapChangeTextureIdOfTile(layers, inputHandler->cursorWorldTile.x, inputHandler->cursorWorldTile.y, n, 1); break; } } @@ -123,8 +124,8 @@ void mouseInput(Game *game){ // Add Sprite if(abs(width) + abs(height) < 20){ - int maxWidth = (game->layers[0]->widthBounds-1) * game->layers[0]->textureWidth; - int maxHeight = (game->layers[0]->heightBounds-1) * game->layers[0]->textureHeight; + int maxWidth = (game->layers[0]->width-1) * game->layers[0]->textureWidth; + int maxHeight = (game->layers[0]->height-1) * game->layers[0]->textureHeight; if(inputHandler->cursorWorldPos.x < 0){ printf("OutOfBoundsDestination Spawn\n");} else if(inputHandler->cursorWorldPos.y < 0){ printf("OutOfBoundsDestination Spawn\n");} else if(inputHandler->cursorWorldPos.x > maxWidth){ printf("OutOfBoundsDestination Spawn\n");} @@ -150,8 +151,8 @@ void mouseInput(Game *game){ float deltaY; Node *current = sprites->head; while (current != 0){ - Vector2 currPos = {current->data.x, current->data.y}; - IsometricMapUnproject(layers[0], camera, currPos.x, currPos.y, &currPos); + Vector2 currPos = {current->data.x + current->data.texture->width, current->data.y + current->data.texture->height/2}; + IsometricMapUnproject(layers, camera, currPos.x, currPos.y, current->data.z, &currPos); deltaX = currPos.x - camera->target.x - (rect.x + camera->target.x); deltaY = currPos.y - camera->target.y - (rect.y + camera->target.y); @@ -175,10 +176,10 @@ void mouseInput(Game *game){ while (current != 0){ if(current->data.selected){ current->data.hasDestination = 1; - float destX = inputHandler->cursorWorldTile.x * game->layers[0]->textureWidth; - float destY = inputHandler->cursorWorldTile.y * game->layers[0]->textureHeight; - int maxWidth = (game->layers[0]->widthBounds-1) * game->layers[0]->textureWidth; - int maxHeight = (game->layers[0]->heightBounds-1) * game->layers[0]->textureHeight; + float destX = inputHandler->cursorWorldPos.x; + float destY = inputHandler->cursorWorldPos.y; + int maxWidth = (game->layers[0]->width-1) * game->layers[0]->textureWidth; + int maxHeight = (game->layers[0]->height-1) * game->layers[0]->textureHeight; if(destX < 0){ printf("OutOfBoundsDestination"); continue; } if(destY < 0){ printf("OutOfBoundsDestination"); continue; } if(destX > maxWidth){ printf("OutOfBoundsDestination"); continue; } diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index 7907eba..3b083ba 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -15,28 +15,28 @@ IsometricMap * IsometricMapInit(int layer){ //map->tileTextures[0] = LoadTexture("assets/desert.png"); //map->tileTextures[1] = LoadTexture("assets/bigtower.png"); - map->originX = 0; - map->originY = -layer * map->tileTextures[0].width / 4; - map->width = 100 * map->tileTextures[0].width; - map->height = 100 * map->tileTextures[0].height; - map->widthBounds = 100; - map->heightBounds = 100; - map->layer = layer; - + map->width = 100; + map->height = 100; map->textureWidth = map->tileTextures[0].width; map->textureHeight = map->tileTextures[0].height; + map->worldPixelWidth = map->width * map->textureWidth; + map->worldPixelWidth = map->height * map->textureHeight; + map->layer = layer; + - Tile*** tiles = (Tile***)malloc(map->widthBounds*sizeof(Tile*)); + // mallocating the twodimensional Tiles Array + Tile*** tiles = (Tile***)malloc(map->width*sizeof(Tile*)); int n = 0; - for(n=0; n < map->widthBounds; n++){ - tiles[n] = (Tile**)malloc(map->heightBounds*sizeof(Tile*)); + for(n=0; n < map->width; n++){ + tiles[n] = (Tile**)malloc(map->height*sizeof(Tile*)); } int i = 0; int j = 0; - for(i=0; i < map->widthBounds; i++){ - for(j=0; j < map->heightBounds; j++){ + for(i=0; i < map->width; i++){ + for(j=0; j < map->height; j++){ Tile *tmp = (Tile *) malloc(sizeof(Tile)); + // initially all the Tiles are "empty" tmp->textureId = -1; tmp->x = i; tmp->y = j; @@ -50,6 +50,7 @@ IsometricMap * IsometricMapInit(int layer){ return map; } +// Only works for tiles with texture width == height (and for 22.5 degree?) Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize){ Vector2* offset = (Vector2 *)malloc(sizeof(Vector2)); offset->x = x * textureSize/2 - y * textureSize/2; @@ -61,11 +62,10 @@ Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *map, int x, int y){ return map->tiles[x][y]; } -// Project: Screen Coordinates -> World Coordinates void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float y, Vector2 *tmp){ - float tileWidthHalf = isometricMap->tileTextures[0].width / 2; - float tileHeightQuarter = isometricMap->tileTextures[0].height / 4; + float tileWidthHalf = isometricMap->textureWidth / 2; + float tileHeightQuarter = isometricMap->textureHeight / 4; x += camera->target.x; y += camera->target.y; @@ -73,7 +73,6 @@ void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float xPos = (float) x; float yPos = (float) y; - float isoX = 0.5 * ( xPos / tileWidthHalf + yPos / tileHeightQuarter); float isoY = 0.5 * ( -xPos / tileWidthHalf + yPos / tileHeightQuarter); @@ -81,47 +80,47 @@ void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, tmp->y = isoY * isometricMap->tileTextures[0].height; } -// Unproject: World Coordinates -> Screen Coordinates -void IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp){ +// Unproject: World Coordinates -> Screen Coordinates writes result in tmp Vector +void IsometricMapUnproject(IsometricMap **isometricMap, Camera2D *camera, int x, int y, float z, Vector2 *tmp){ float xPos = (float) x; float yPos = (float) y; - float worldX = (xPos - yPos) / 2; - float worldY = (xPos + yPos) / 4; + float screenX = (xPos - yPos) / 2; + float screenY = (xPos + yPos) / 4; + + screenX += camera->target.x; + screenY += camera->target.y; - worldX += camera->target.x; - worldY += camera->target.y; + // z is currently implemented as z=1 equals 1 layer, z=2 would be two layers height (could be smoothed) + // TODO drift + screenY -= z *(isometricMap[0]->textureHeight/2); - tmp->x = worldX; - tmp->y = worldY; + tmp->x = screenX; + tmp->y = screenY; } -Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float x, float y){ +Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap **isometricMap, float x, float y, float z){ - x = (int)(x / isometricMap->tileTextures->width); - y = (int)(y / isometricMap->tileTextures->height); - - Tile *ptr = (Tile *) malloc(sizeof(Tile *)); - ptr->x = 0; - ptr->y = 0; + int layer = (int) z; - if( x < isometricMap->widthBounds && y < isometricMap->heightBounds && - x >= 0 && y >= 0 ){ - if(isometricMap->tiles[(int)x][(int)y]->textureId != -1){ - ptr->x = isometricMap->tiles[(int)x][(int)y]->x; - ptr->y = isometricMap->tiles[(int)x][(int)y]->y; - return ptr; + x = (int)(x / isometricMap[layer]->textureWidth); + y = (int)(y / isometricMap[layer]->textureHeight); + + if( x < isometricMap[layer]->width && y < isometricMap[layer]->height && x >= 0 && y >= 0 ){ + if(isometricMap[layer]->tiles[(int)x][(int)y]->textureId != -1){ + return (isometricMap[layer]->tiles[(int)x][(int)y]); } } - ptr = 0; + Tile *ptr = 0; return ptr; } Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile){ Tile *ptr = (Tile *) malloc(sizeof(Tile *)); + // hardcoded layer amount int n = 9; for(n=9;n>=0;n--){ - if( tile->x < isometricMap[n]->widthBounds && tile->y < isometricMap[n]->heightBounds && + if( tile->x < isometricMap[n]->width && tile->y < isometricMap[n]->height && tile->x >= 0 && tile->y >= 0 ){ if(isometricMap[n]->tiles[tile->x][tile->y]->textureId != -1){ ptr->x = isometricMap[n]->tiles[tile->x][tile->y]->x; @@ -135,17 +134,13 @@ Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile){ return ptr; } -// IsometricMapAddTile and IsometricMapChangeTextureIdOfTile pretty much do the same by now... -void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId){ - isometricMap->tiles[x][y]->textureId = textureId; - isometricMap->tiles[x][y]->x = x; - isometricMap->tiles[x][y]->y = y; - isometricMap->tiles[x][y]->z = isometricMap->layer; -} -void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id){ - if( x < map->widthBounds && y < map->heightBounds && +void IsometricMapChangeTextureIdOfTile(IsometricMap **map, int x, int y, int layer, int id){ + if( x < map[layer]->width && y < map[layer]->height && x >= 0 && y >= 0 ){ - (map->tiles[x][y])->textureId = id; - } + (map[layer]->tiles[x][y])->textureId = id; + } + else{ + printf("WARNING: trying to change Texture of Tile which is out of bounds!\n"); + } } diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index 3471a1e..76265ed 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -4,31 +4,55 @@ #include "tile.c" typedef struct IsometricMap{ + // Array with all the needed textures for this layer Texture2D tileTextures[10]; + + // twodimensional array of all the tiles in this layer Tile ***tiles; - int originX; - int originY; - // TODO: überprüfen, ob width/height und widthBounds/heightBounds überhaupt noch unterschiedlich sind. Wenn nicht eins der beiden löschen + + // amount of tiles in x-direction int width; + + // amount of tiles in y-direction int height; - int widthBounds; - int heightBounds; + + // pixel width of a single tile texture int textureWidth; + + // pixel height of a single tile texture int textureHeight; + + // pixel width of the entire map + int worldPixelWidth; + + // pixel height of the entire map + int worldPixelHeight; + + // layer of the map int layer; } IsometricMap; +// returns pointer to IsometricMap Instance IsometricMap * IsometricMapInit(int layer); + +// For Rendering: calculates Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize); + Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile); + Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, int y); -// Project: Screen Coordinates -> World Coordinates + +// Project: Screen Coordinates -> World Coordinates writes result in tmp Vector +// Currently only calcing coords on layer 0 void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float y, Vector2 *tmp); -// Unproject: World Coordinates -> Screen Coordinates -void IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp); -void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId); -void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id); -Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float x, float y); + +// Unproject: World Coordinates -> Screen Coordinates writes result in tmp Vector +void IsometricMapUnproject(IsometricMap **isometricMap, Camera2D *camera, int x, int y, float z, Vector2 *tmp); + +// changes to Texture ID of tile at x y on maplayer layer +void IsometricMapChangeTextureIdOfTile(IsometricMap **map, int x, int y, int layer, int id); + +Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap **isometricMap, float x, float y, float layer); #endif diff --git a/IsometricMap/isometricRenderer.c b/IsometricMap/isometricRenderer.c index f767d27..92080e5 100644 --- a/IsometricMap/isometricRenderer.c +++ b/IsometricMap/isometricRenderer.c @@ -4,6 +4,7 @@ #include "../Input/inputHandler.h" #include #include +#include "../game.h" // @param deprecated void IsometricRendererDrawMap(IsometricRenderer *renderer, int height){ @@ -38,23 +39,20 @@ void IsometricRendererDrawMap(IsometricRenderer *renderer, int height){ } } -void IsometricRendererRenderIsometricMap(IsometricMap **map, InputHandler *input){ +void IsometricRendererRenderIsometricMap(Game *game){ int n = 0; int i = 0; int j = 0; for(n = 0; n < 10; n++){ - for(i=0; i < map[n]->widthBounds; i++){ - for(j=0; j < map[n]->heightBounds; j++){ - if(map[n]->tiles[i][j]->textureId != -1){ - Vector2 *offset = IsometricMapCalcOffsetForTileAt(i,j, map[n]->textureWidth); + for(i=0; i < game->layers[n]->width; i++){ + for(j=0; j < game->layers[n]->height; j++){ + if(game->layers[n]->tiles[i][j]->textureId != -1){ + Vector2 *offset = IsometricMapCalcOffsetForTileAt(i,j, game->layers[n]->textureWidth); + offset->y -= n * (game->layers[n]->textureHeight/4); + + int textureId = game->layers[n]->tiles[i][j]->textureId; - int textureId = map[n]->tiles[i][j]->textureId; - - float x = map[n]->originX + offset->x; - float y = map[n]->originY + offset->y;// + map[n]->textureHeight - map[n]->tileTextures[textureId].height; - - - DrawTexture(map[n]->tileTextures[textureId], x, y, WHITE); + DrawTexture(game->layers[n]->tileTextures[textureId], offset->x, offset->y, WHITE); free(offset); } } diff --git a/IsometricMap/isometricRenderer.h b/IsometricMap/isometricRenderer.h index 7de86d0..d88db04 100644 --- a/IsometricMap/isometricRenderer.h +++ b/IsometricMap/isometricRenderer.h @@ -3,6 +3,7 @@ #include "raylib.h" #include "isometricMap.h" #include "../Input/inputHandler.h" +#include "../game.h" typedef struct IsometricRenderer{ Texture *texture; @@ -11,6 +12,6 @@ typedef struct IsometricRenderer{ // @param deprecated void IsometricRendererDrawMap(IsometricRenderer *renderer, int height); -void IsometricRendererRenderIsometricMap(IsometricMap **map, InputHandler *input); +void IsometricRendererRenderIsometricMap(Game *game); #endif \ No newline at end of file diff --git a/List/list.c b/List/list.c index 08affa7..dd40c19 100644 --- a/List/list.c +++ b/List/list.c @@ -115,9 +115,9 @@ void ListActAllSprites(Game *game){ } // updating z-position - Tile *floorTile = IsometricMapGetTileFromWorldCoordinates(game->layers[0], current->data.x, current->data.y); - floorTile = IsometricMapGetMostUpperTile(game->layers, floorTile); - current->data.z = floorTile->z; + Tile *floorTile = IsometricMapGetTileFromWorldCoordinates(game->layers, current->data.x, current->data.y, 0); + Tile *topTile = IsometricMapGetMostUpperTile(game->layers, floorTile); + current->data.z = topTile->z; current = current->next; } diff --git a/README.md b/README.md index 71dbf5c..c6ada51 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ Fantasy Welt oder Realistisch? + Parser für Map-Dateien + MapEditor + IsometricMap variablen auf Duplikate prüfen ++ IsometricMap struct erstellen, das den IsometricMap(+Layer) Array speichert ++ Sprites drift too high when going up mountain ### WiP diff --git a/game.c b/game.c index edf1d14..59d0db0 100644 --- a/game.c +++ b/game.c @@ -78,32 +78,32 @@ Game *GameInit() switch (n) { case 0: - IsometricMapAddTile(((game->layers))[n], i, j, 0); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); break; case 1: if (i > 35 && i < 50 && j > 45 && j < 60) { - IsometricMapAddTile(((game->layers))[n], i, j, 0); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); } break; case 2: if (i > 40 && i < 44 && j > 50 && j < 54) { - IsometricMapAddTile(((game->layers))[n], i, j, 2); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 2); } break; } if(i == j && n == 1){ - IsometricMapAddTile(((game->layers))[n], i, j, 0); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); } if(i == j && n == 2){ - IsometricMapAddTile(((game->layers))[n], i, j, 0); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); } if(i == j-1 && n == 1){ - IsometricMapAddTile(((game->layers))[n], i, j, 0); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); } if(i-1 == j && n == 1){ - IsometricMapAddTile(((game->layers))[n], i, j, 0); + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); } } } @@ -115,11 +115,7 @@ Game *GameInit() { for (j = 0; j < 20 - n * 2; j++) { - IsometricMapAddTile(((game->layers))[n], i, j, 0); - if (n == 9) - { - IsometricMapAddTile(((game->layers))[n], i, j, 2); - } + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); } } } diff --git a/game.h b/game.h index 3722fc5..16c8212 100644 --- a/game.h +++ b/game.h @@ -3,7 +3,6 @@ #include "raylib.h" -// So kann man die includes umgehen, also keine Circular dependencies mehr :) typedef struct Game{ Texture2D cursorTextures[2]; Texture2D worker[8]; diff --git a/game.o b/game.o new file mode 100644 index 0000000000000000000000000000000000000000..5225dd809f61b9809269c6c45fc2235b4e503959 GIT binary patch literal 5072 zcmbtXTWl0n7(UxAP_XT`S|gE4ngCkFF5QAkg~;l%?KG)UfyO3=EYsa-yResLc18+; z?ZPgmn{}}$COjDB$?(7fCdO2wwsJ`|@c|Q~_+mg~(x${qNW4WH|NqQ6yQjlUp!g>< z=l{R+-_K=sM}yrR6)qRy>a(XYulyTlU|@x0&mpuRC$E}LP6|%mvN*|JuQK%0hJMP>%hhHtHc6J{ z$i8p-`dILF(cj@LR4G4xg?0tcO9t6# zcyQ%Qz<}qMsT-bpf29ppWrJ1QU~r;t@z-F3Ew{lMZ7|p{C4bZY)o^MJ0g(!L*m|0+ zP~mlY{_;Jolgpt-OCPS5%SM)$%}W$9UZRNc5)r%MsapgCjP-tACgRK|@2&v(D<@!{ zr9{&|dKu)&o)TDEFHC#-*dZtx7&0Bqm_v>ZC48>UtbQET3lx@4NuOPHOU1?tQ|7l# z-kqiMuIwl1b!qxi+5PPAaEY-Pv)@sk2AZ7&-qf$~n@0!k$iv)LFlLfZmyiw61}E@U=ze=`HO3^NR~aPNftr zwLYw?sif*1j1J64LXqVDgb43Xs{0gmy*ae_yu*n>ZZUtV&3S5r^Hi(z)J8f*NM1Z(SFsR-08ma=a5;wsQ$lMVy8fY`s$i^i(r zw*BRXInk?co;rrPSJ0=q09FqV)@3EUo$YX}#}4;7;F}%r?GAXv0gpT2X$SnY15O6z zxZ(|yP8hlpQH{jqSS%SP-AOsJOBvC0RUtcv)u^TfR7KVlI?)xE2Ngo!9kJ-JlvJY! zlL<|ZiDn&YGHxn%M^hU0-IYql6-|wXpOc4g0RlsEVo+f*yCT~Mc12?f358Oc9NrfS z5A6#L$k7;-L1_&eanIrE{sUJx680AfZ%^Ed9PdC72=y1k!||691mgO&rbv#k(W?J} zfG+`_`}vaL+z-$1TR|W99M}I*z?Ta6&kW~&{7n9fjhK(>yr~0mP40(LQ_XRRbE*=Py&7C@#2b+{nRxqCDdJU=rVviX z<4OYN5=l+*!ndu3-at$qOz7TWH94%P+5xaZPs&heK!xkmjQc;|O<<2lg0-{c&CfXg zo#GSh_;8V|01kWYFCiu~ftv@Y3MYY3L|fKYg5Ni!hv7k-ZC`{ay~q_gz(#BQ#{fsw zyS2yfCip$f&4f#6b`lCy3&vCohXnBgo qA7TaL-GXtf_NZoEdw|Rh2g7?*D8H=ztA{B&`ztJet!zp;tNnkgpIqet literal 0 HcmV?d00001 diff --git a/inputHandler.o b/inputHandler.o new file mode 100644 index 0000000000000000000000000000000000000000..0b237e7c7d124c89034735674fb97e2b25cd349f GIT binary patch literal 7016 zcmbtYZ)_Y#6`zZp)=(#VPTk@j9iHmxE${{ zJL4U%Zqo=xTJOy7z4x0p@4cB>-?#LG`_}~mOtt{~8goYyWvuiWw;$!*DBH+3ux0IY z|LQU9zaBR7i{XTJSD!cR3v(rCBn<6hF`=c3%UZB=ep&0CTGkr$k}ET&${{JgC*_L? z?e9hHdA&6BC9=~oyrVrom3a=M68+f#ZtbW;1`yPcH0bm9e~ft@g2kad+(Z&=!)Vb% zfU%CbA!*R>J?LGv?iRh$kl}0jN&a})-(olZQmIrf&DitLRw}GQOWDcn+x9%xRIzW1 zd75X@A@1fmLD0N}4lT5~xX+%qXLt<9jl#?2J7nZ!fD%B_ysHLS2A8Ou;FqfhpVsck zSHzmjPVg~wgI^{e)Zk+bFMDUAVcKX4O)M+-i77PkfId%s`^Gbl zEEo-;PUK)K4VGvyx9adrBR2hSG>XSIx!$l##mRQh?fx*CS0h6-(S{_$ygfoQiiEXFq_aW zzUQv1UI`ebof(DBSuOl7W%M1xeosc8IPOqf#t?s*q$YF<+=)4wQwtMwYFb)Qfh-vL z3k%G8jr0~M$Z}bZeM5AsgV%ZS5a;~?rn0*pQXd8B4OI!wdO7oh#{AD<9LV3qi)r>B zKCV=5p)Po7jufqz`4nulm^Y3u6m@6ST(c)&J0Ia86CqgvAQ0)js}fddFJuTaW1R19tVv& zsWXDJWEjVz`si`yy!#FU;x~Kx=nF6P{ z1c!_E^J!bZR7LnZU$cAC>brg2Qow_QA zo}>H`bP8vKaN;AZ5*@m_o97OW>BN-7vgfD@XXG-u0)fz!YhUu$ne2Cw~6H?Fw!3YT^hBgq-^_gf0C&Gg##DLckUwD+Z z5(OZC;X2bsZ~uqR1t{{&jL=Q-x)aVK4nkX>ydQJMlZ9vq7s-AxoQZCQ8L^{gqf`nF z`eivHXBzY?Rkpz+?4GMt%pPI)Ttj`(@-GiP&UR1FUO59IA1W< zdhWjRr9&Tw^kH5y?A!t|^Ya1GUb%JD&7u`{Hk$L!K=et?pY%uV2{o{4xv_(RMZxyodV9V$mgWp}(w&5{7UsGcR zNXwB&h0bnOr)E1>fc*&}|B&=oIcok?2Z9hm!}Or7;E$YR-7@C~ww;See`u7oF!9( zIm?Kp;{9eO(#P5}u`}IfpT!QCR%bewHM`Q;B(~nFB$j%m-#nO1nOW#Smm_Qd+8tnH z9oh7NX=Rdqow32TQzSNzm}jkA#_Wh6N*qb{n`<<>GU-<_qiRLW(A%F$4;)Qr`r~cs zbS92NfM)H;a>rV8mX%I*Wz1~WjIRZ|&3-cml$^=3!-JWmWwvEZvStU9S*s(JH8WOg ztnc)iIeSur!V@w`SqXOhc-A7N<9(-2A5X-R{p_@P?qoWaiOW@f!#vlXrt^rr-JgjK zm`9QWCeH?A@@E&E8Q485^kI&+Tgbh5R^TXioH1V!<6rpTfAhg>D9>nKo-+c+ypPc% z{h3g3)z3*Ee94EuMeI}Wyr+HeVITa9;(+zWr_%@jse4*Nl7iPO`u|pNbS2Lw1f809U4se^nbbe8;P~-I;@1>h<^Q!0{=>&H zs~ZQ&^QOQt=SF%Ye$z+)Z6E!TkN%R6eh~K=HJKMVZJH;pH%$(m51jb$9zmoA|5g263a;w!Rd7}R zl!B}JuPL~yAHt;65Kla^wTq6#<#$HhgUj!X5f3i!R~E^h8?a(0>1}14_bJ)SnEkPc zMK>Ia#A8;BMNVe3ERsn(gTC~@fSDp$Ds7n&`j*_mZxu0qC6$ZNwKGT;(mApLlX>cR z0=J1=!vFOSku{ENaXhSYMMdu?BA!wpj(0g^Pg4)MjIJV1=PEW4wLx*-p&VcoE+eO2#-uvanky}I3m;T-e&FYQAlQ=5#x#9pNiIKB46V*aaAQM|qO zsKRRb4~h?*6T%Mp#}O;-W&W$p4U-Tq9cp3W7}9}xy!PPq=AIyCh(vXJ0_GX=v%Z@B Npzz-UnbN%W{{^{So3H=? literal 0 HcmV?d00001 diff --git a/isometricMap.o b/isometricMap.o new file mode 100644 index 0000000000000000000000000000000000000000..dd95ea4e28d86b326da41d2f2276a9522c0ef6cd GIT binary patch literal 5584 zcmb_gVQgDh6~2zM&OqAdOhu|_1)fA%wzY0EHmRK$b@6Wdf|@q!YPFTtX0H8`c(eV2 z{j8;Eh6ryJkGBX*{2-Iis1QGfkk}voZ0gjc%al}#P(TIcM}Jr-NEwNQp+Oi_DBrp7 zUie|SN!tdH5{8)@C?-rom;Zu8atnVWSCSBa1LlI~nu(x-S;pZcr|{Z6;%U8w`q zNlfc@P`6(QIsCdE4{wJa-wpmg!T;j6_|GcH$H7F;JWr>B0SPxbtkXvpKTKDDp6Wg%GMbAi?ZNBP`qH|F_*Yje@<#O&iq zOy;?O*3vh_n7P|y^BVMP^Xvf{jhw`SEz*P0qAl`*(G7d3$Keb5v_7@_BeDzXvK~NE z!VX^qOo0V%kpbQAs_;eW6@_w?FTOTa;R|h!E@*G&+!bL1VcAvk6Z$k=P3uqY7R6>g z2Fo?>X}wHpO$`O#n9=lGvyHB%o(J2c7o#fj`em0Jc4@;-)Ct!e5t73< zRC?TO)jd;osTGu6Mixp-@P{wrGq|AJ3G#5+t-xkT%6THLx^gN&kE343IvB7Sj)m|U zgy9RbVg&{F5WJvZ48me{UZ)YJy?ld4b*&GR%Y&;l0dkqILx<=OVQpL%7lm156I^_D z5~`h_-JaTg5k{=L<@iO)AIB#3ib`{0A+L=1B#U)d+Y-2n1lH`tU3+kuJil|w=4!9` zT|(;83Kw!WvU}Q#B1YjdB5Moe!e$XIUPFj(MiH@_QSw*7BBS>ej6s;+5ox%%019@D zIg_+ut$;4`J4hfUlY{=EaDY}32o?}IP~y!&Q(!Cj3}X4-1mX-+um@&rzTp;M>&UK( zBMS%UPJ;utaSDWC=u_YaW?EjsXh(JFe^VVRZ&t5$RHw^OEuW06cTVwNldub8ELy7;K;$T8&) z`bp22hA}`fb}}A+Hqw{4Qp#JUNPmCy%hAIJ`%7Zl|E;HmCB(x1q?8}Wnoa%SkpMAh{p(WxSL&Pg*PHfdr2JQH`X4p* zYf`?$8$7j{QXxe|@bto<1hGHBz9;c9iHm&!_O`@-M#Y0B_5=Md@gw_h zQ-Pt0eLzo7F5%gS31v*=AN}9)BfLQG1DeP?`n^c#R&lXR(aafEA(I+Rjz?2$z%w1l zXDpUWX0v9BoidYYdD7VMaM4PpUKvh}y)rzK%w*e?;>m34%*Y5%`w6o^2lBYpCO>Id zgq|pvx#NXG^6HRT%vc#S-$oiLm@nf(Xu}fu@hwn~x$|Zrn~s}iA)U!5Eu+|`4c?$x zv=ZavhVZIQ7#BB*3~wNPW`sOs<0Y%e_KPf1ExKp?KK;W8?TEyw>}e|%9+x=rcX;qo zi7USN^AcD=;(q=Qef-Dd{3jjw^i)&x`}yMz`0qR5HaRHmP-&^Se&NBX6czqBEr_P# zniMm}j`{F6CH|5RSNy;D@E=M3PFeTL{&k68lXXvOUVrv~+9fFdS0w+S#EGxrr~Hpd zIq~VI+VgUtaCN@ZK3tve*L}D;-#_)?>U_`naCN>{e7HK_-EzN_Kk9t5Xz^;!N?t*4 z72JMIjS5CK8MW{{vS>PKC0X=JvB;tY)19QuT+YZtmNzXUinr^aIMs4KnlD9h-f&v1 ztI#1!#@O&kA(=CzhyPy}fjWgmXT;lLa`KGaFC~-Vt0~)yQ8#|ECgKi`(B`7mq{3$~ zrXl^e0JS}C$G(J~aCr?&l(CX;T_y0Ze*glq`M>J-LzirNYYtO3Dc668CZ6WMyN^Of z`iDIn8un4ZXyl)_DgRafH3-$%%R49ay%>%C+_S*w2>SiMAoU}Vd7H|=!d}LJZ2I*l zl)i64zdlvrR{OuF*Ii-8?HHM(r%>su{oiVBQkm|dFZMyMPg7dQuTM7pdk={1*+pN* XB0m3pQ$}uXrN1oww}h3}$FKiy&Ca4m literal 0 HcmV?d00001 diff --git a/isometricRenderer.o b/isometricRenderer.o new file mode 100644 index 0000000000000000000000000000000000000000..94650e68bb17a889ccf68492344750972953d32f GIT binary patch literal 2944 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 - IsometricRendererRenderIsometricMap(game->layers, game->inputHandler); - + IsometricRendererRenderIsometricMap(game); ListDrawAllSprites(game->sprites, game->layers, game->camera); EndMode2D(); diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..d0bfc7d4c7ef610437d181e4314cf93ef2c92db7 GIT binary patch literal 2968 zcmbuAU1%It6vxjdHC;6y+gc@9kyTVG*dZGg(TB3hc9SWzMYF~}h?L3BH5t1*6J};< zBB;fvWLSit@1pq97oYl45Nc?PtuNw(NZwlUgNPzZh=_>m`QN#BcRK96=z%-;+~4`S zGxuZOs2-mg$mK{&j*d`oq$$yOzNeR^TBcDNp`Ee&|C%?WA8O{>FXQIBx4~pamoHuB zB%c)riMBy5;vqFNs%}f=rwV(R?drA}U6bI#?#10sr?Y-7+IqOtq0R`=E=5dshUdU$7SUzw|6M*Zvs*oReW1nImIsh3ybH+$)2rRW>& zEGMzHefrWJ?4p7siw(c!-r5{{`;&h<9XXcY+ibt|=NDHNtiY)k&pNK{oh6#BRGujw znqO$SVXIgw8IKzihf6IvEWJKCX-quvsKQ(ZvWHuN8y0r<^$_P^BR(f7+^_S@gY@Ytyt?blju9#m8bX9-Q!OF?p1Z1zuBxzEhtQt}T4w$9)%{ zu$E~M(?I`eFe zIGLVW{F1dLuhp0o!m6P0LTJ9%uVwffGprRtD1ig z$O1mfP4lO4VX%OYanl@s83;J`mF9MW?@Mqe!S^TlN`l{&;IAb(?n0ga%>=(Y!QV^p zdlJ0JIt1&8))gaIZHCqY8A0gB{gT#v(XfnAtb}CPR%ns25CmlSUOcFK&8BeK=6azp z`0hR&gnR zS;Lx@yChaN)fInT1z;~h)xQ(m-;hVRf$RSi806b@p%^Fr5HY|xLC*ggU*cGlx@9eS ztm|V>CnY_tr`ZTLk#u7HSLLYBu{P^?-A}VY>)HqXz3B-lW7>C)Iqre9dr^U+iqoC` z{(AfhE6ACSFDp>ij;c?`V;A;Y|8-1?MXxi~ANP-r*SueC#GO<152+q^4(g=iku$ya djOaX^Sq`K=SZYYPQ~Je!sOBHaEWJlM{$B%3_YD95 literal 0 HcmV?d00001 diff --git a/spiel b/spiel new file mode 100755 index 0000000000000000000000000000000000000000..c3231abd6cd62aa2d0403d85bbc28c38ade47725 GIT binary patch literal 30808 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 F{|9^0_NM>< literal 0 HcmV?d00001 diff --git a/sprite.c b/sprite.c index 251820f..317e203 100644 --- a/sprite.c +++ b/sprite.c @@ -28,20 +28,18 @@ void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera){ // Wir müssen beachten, dass sie nach den unprojezierten Screen-Koordinaten sortiert werden müssen. // Macht es vielleicht sinn den Sprites auch einen Vector mit ihren Screen Koordinaten zu geben? - Vector2 pos = {sprite->x, sprite->y}; - IsometricMapUnproject(map[0], camera, pos.x, pos.y, &pos); + Vector2 pos = {sprite->x - sprite->texture->width, sprite->y - sprite->texture->height/2}; + IsometricMapUnproject(map, camera, pos.x, pos.y, sprite->z, &pos); // Also erst ab hier sortieren, mit den Werten aus dem pos Vector - - pos.y -= sprite->z * (map[0]->textureHeight/2); - + // nvm, Isometric map muss mit reingerechnet werden pos.x -= camera->target.x; pos.y -= camera->target.y; if(sprite->selected){ - DrawTexture(*sprite->texture, pos.x - sprite->texture->width/4, pos.y - sprite->texture->height/4, BLACK); + DrawTexture(*sprite->texture, pos.x, pos.y, BLACK); //DrawTexture(*sprite->texture, sprite->x, sprite->y, BLACK); } else{ - DrawTexture(*sprite->texture, pos.x - sprite->texture->width/4, pos.y - sprite->texture->height/4, WHITE); + DrawTexture(*sprite->texture, pos.x, pos.y, WHITE); } //printf("%f %f \n", sprite->x, sprite->y); } diff --git a/sprite.o b/sprite.o new file mode 100644 index 0000000000000000000000000000000000000000..66a319c8b4194b0b6155c112c5756f9a8f49c75f GIT binary patch literal 3416 zcmbtX&2Jk;6rZ)z)D$P)R5=6{!Cs02O|7^f1PCF!v74#XAV}gAL7T*}HzcV)!g@_p zP|G0=%4mt2KOraR4FnvjUYd{6BsU|0WFZa)0+$D%J}XD?r7d9MP==wOWpL1C6psDXt$veog=2WnWRqFvOY6SAolRvYBmU3G_fV!qP zsR)-707NGB)SPky681{iHXqa$R?XSax8w$XZD~#GDKEN&|`Li%mcRbC4Kk3(7E%qqGCxQ=*uN) z4V0|Y+QPOu^R4v+x7=!?R4SDB3(JJ=i)Lr?@RZfbd5I<}dMK zkF=|wy87B$-JdH!AsRrh!$A45@x1>t_k4@{J0xjvHVy;j9{xxhk$Jc47qnvgxQb^W z8~7tRuA4Riu_l5pTgczlCP(mXc>18Yc^3BKhhTfSfzQ7cFw6_)%_&a-fPBg0-wxO@ z7|r;hhu{Mb!AAi{`&UJQc-{c}K;T&{9th7B%vWGE^GmX`#|*gN?N1e)O28gMV1OFJ5pK`<;48s7)`ZylF?l5pU% zzKafA)|dFRmr`bI0%p^&=P9`|^kmF$LT!jY5i?`NKatH6zmc&w@k}bEr{OG}f%?Op zKhBFM_V1^2ekk#*ZkU%q2QBGSW0OWKrHe@Z-=u*$mbTSlCMfnV^S>IXm+TvgHOpKkDP~!B z`O&PTc#**F6PW-@n+8}`=D8@4D@rLCUSrtEBzxBQp=eoEmzAjH(mU?2#1S^o-M5@Z z?qCD0F)M0-kvMlgTvh$x_8+5U2mQbOXV^=7M(DP24XAFLIp5?`D8f L8}4*A$$kGfOw%{6 literal 0 HcmV?d00001 From 38a78af8d018cfcfa0a67c4d502f165632bf0188 Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Mon, 28 Nov 2022 22:53:08 +0100 Subject: [PATCH 4/7] make clean --- game.o | Bin 5072 -> 0 bytes inputHandler.o | Bin 7016 -> 0 bytes isometricMap.o | Bin 5584 -> 0 bytes isometricRenderer.o | Bin 2944 -> 0 bytes list.o | Bin 4216 -> 0 bytes main.o | Bin 2968 -> 0 bytes spiel | Bin 30808 -> 0 bytes sprite.o | Bin 3416 -> 0 bytes tile.o | Bin 928 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 game.o delete mode 100644 inputHandler.o delete mode 100644 isometricMap.o delete mode 100644 isometricRenderer.o delete mode 100644 list.o delete mode 100644 main.o delete mode 100755 spiel delete mode 100644 sprite.o delete mode 100644 tile.o diff --git a/game.o b/game.o deleted file mode 100644 index 5225dd809f61b9809269c6c45fc2235b4e503959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5072 zcmbtXTWl0n7(UxAP_XT`S|gE4ngCkFF5QAkg~;l%?KG)UfyO3=EYsa-yResLc18+; z?ZPgmn{}}$COjDB$?(7fCdO2wwsJ`|@c|Q~_+mg~(x${qNW4WH|NqQ6yQjlUp!g>< z=l{R+-_K=sM}yrR6)qRy>a(XYulyTlU|@x0&mpuRC$E}LP6|%mvN*|JuQK%0hJMP>%hhHtHc6J{ z$i8p-`dILF(cj@LR4G4xg?0tcO9t6# zcyQ%Qz<}qMsT-bpf29ppWrJ1QU~r;t@z-F3Ew{lMZ7|p{C4bZY)o^MJ0g(!L*m|0+ zP~mlY{_;Jolgpt-OCPS5%SM)$%}W$9UZRNc5)r%MsapgCjP-tACgRK|@2&v(D<@!{ zr9{&|dKu)&o)TDEFHC#-*dZtx7&0Bqm_v>ZC48>UtbQET3lx@4NuOPHOU1?tQ|7l# z-kqiMuIwl1b!qxi+5PPAaEY-Pv)@sk2AZ7&-qf$~n@0!k$iv)LFlLfZmyiw61}E@U=ze=`HO3^NR~aPNftr zwLYw?sif*1j1J64LXqVDgb43Xs{0gmy*ae_yu*n>ZZUtV&3S5r^Hi(z)J8f*NM1Z(SFsR-08ma=a5;wsQ$lMVy8fY`s$i^i(r zw*BRXInk?co;rrPSJ0=q09FqV)@3EUo$YX}#}4;7;F}%r?GAXv0gpT2X$SnY15O6z zxZ(|yP8hlpQH{jqSS%SP-AOsJOBvC0RUtcv)u^TfR7KVlI?)xE2Ngo!9kJ-JlvJY! zlL<|ZiDn&YGHxn%M^hU0-IYql6-|wXpOc4g0RlsEVo+f*yCT~Mc12?f358Oc9NrfS z5A6#L$k7;-L1_&eanIrE{sUJx680AfZ%^Ed9PdC72=y1k!||691mgO&rbv#k(W?J} zfG+`_`}vaL+z-$1TR|W99M}I*z?Ta6&kW~&{7n9fjhK(>yr~0mP40(LQ_XRRbE*=Py&7C@#2b+{nRxqCDdJU=rVviX z<4OYN5=l+*!ndu3-at$qOz7TWH94%P+5xaZPs&heK!xkmjQc;|O<<2lg0-{c&CfXg zo#GSh_;8V|01kWYFCiu~ftv@Y3MYY3L|fKYg5Ni!hv7k-ZC`{ay~q_gz(#BQ#{fsw zyS2yfCip$f&4f#6b`lCy3&vCohXnBgo qA7TaL-GXtf_NZoEdw|Rh2g7?*D8H=ztA{B&`ztJet!zp;tNnkgpIqet diff --git a/inputHandler.o b/inputHandler.o deleted file mode 100644 index 0b237e7c7d124c89034735674fb97e2b25cd349f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7016 zcmbtYZ)_Y#6`zZp)=(#VPTk@j9iHmxE${{ zJL4U%Zqo=xTJOy7z4x0p@4cB>-?#LG`_}~mOtt{~8goYyWvuiWw;$!*DBH+3ux0IY z|LQU9zaBR7i{XTJSD!cR3v(rCBn<6hF`=c3%UZB=ep&0CTGkr$k}ET&${{JgC*_L? z?e9hHdA&6BC9=~oyrVrom3a=M68+f#ZtbW;1`yPcH0bm9e~ft@g2kad+(Z&=!)Vb% zfU%CbA!*R>J?LGv?iRh$kl}0jN&a})-(olZQmIrf&DitLRw}GQOWDcn+x9%xRIzW1 zd75X@A@1fmLD0N}4lT5~xX+%qXLt<9jl#?2J7nZ!fD%B_ysHLS2A8Ou;FqfhpVsck zSHzmjPVg~wgI^{e)Zk+bFMDUAVcKX4O)M+-i77PkfId%s`^Gbl zEEo-;PUK)K4VGvyx9adrBR2hSG>XSIx!$l##mRQh?fx*CS0h6-(S{_$ygfoQiiEXFq_aW zzUQv1UI`ebof(DBSuOl7W%M1xeosc8IPOqf#t?s*q$YF<+=)4wQwtMwYFb)Qfh-vL z3k%G8jr0~M$Z}bZeM5AsgV%ZS5a;~?rn0*pQXd8B4OI!wdO7oh#{AD<9LV3qi)r>B zKCV=5p)Po7jufqz`4nulm^Y3u6m@6ST(c)&J0Ia86CqgvAQ0)js}fddFJuTaW1R19tVv& zsWXDJWEjVz`si`yy!#FU;x~Kx=nF6P{ z1c!_E^J!bZR7LnZU$cAC>brg2Qow_QA zo}>H`bP8vKaN;AZ5*@m_o97OW>BN-7vgfD@XXG-u0)fz!YhUu$ne2Cw~6H?Fw!3YT^hBgq-^_gf0C&Gg##DLckUwD+Z z5(OZC;X2bsZ~uqR1t{{&jL=Q-x)aVK4nkX>ydQJMlZ9vq7s-AxoQZCQ8L^{gqf`nF z`eivHXBzY?Rkpz+?4GMt%pPI)Ttj`(@-GiP&UR1FUO59IA1W< zdhWjRr9&Tw^kH5y?A!t|^Ya1GUb%JD&7u`{Hk$L!K=et?pY%uV2{o{4xv_(RMZxyodV9V$mgWp}(w&5{7UsGcR zNXwB&h0bnOr)E1>fc*&}|B&=oIcok?2Z9hm!}Or7;E$YR-7@C~ww;See`u7oF!9( zIm?Kp;{9eO(#P5}u`}IfpT!QCR%bewHM`Q;B(~nFB$j%m-#nO1nOW#Smm_Qd+8tnH z9oh7NX=Rdqow32TQzSNzm}jkA#_Wh6N*qb{n`<<>GU-<_qiRLW(A%F$4;)Qr`r~cs zbS92NfM)H;a>rV8mX%I*Wz1~WjIRZ|&3-cml$^=3!-JWmWwvEZvStU9S*s(JH8WOg ztnc)iIeSur!V@w`SqXOhc-A7N<9(-2A5X-R{p_@P?qoWaiOW@f!#vlXrt^rr-JgjK zm`9QWCeH?A@@E&E8Q485^kI&+Tgbh5R^TXioH1V!<6rpTfAhg>D9>nKo-+c+ypPc% z{h3g3)z3*Ee94EuMeI}Wyr+HeVITa9;(+zWr_%@jse4*Nl7iPO`u|pNbS2Lw1f809U4se^nbbe8;P~-I;@1>h<^Q!0{=>&H zs~ZQ&^QOQt=SF%Ye$z+)Z6E!TkN%R6eh~K=HJKMVZJH;pH%$(m51jb$9zmoA|5g263a;w!Rd7}R zl!B}JuPL~yAHt;65Kla^wTq6#<#$HhgUj!X5f3i!R~E^h8?a(0>1}14_bJ)SnEkPc zMK>Ia#A8;BMNVe3ERsn(gTC~@fSDp$Ds7n&`j*_mZxu0qC6$ZNwKGT;(mApLlX>cR z0=J1=!vFOSku{ENaXhSYMMdu?BA!wpj(0g^Pg4)MjIJV1=PEW4wLx*-p&VcoE+eO2#-uvanky}I3m;T-e&FYQAlQ=5#x#9pNiIKB46V*aaAQM|qO zsKRRb4~h?*6T%Mp#}O;-W&W$p4U-Tq9cp3W7}9}xy!PPq=AIyCh(vXJ0_GX=v%Z@B Npzz-UnbN%W{{^{So3H=? diff --git a/isometricMap.o b/isometricMap.o deleted file mode 100644 index dd95ea4e28d86b326da41d2f2276a9522c0ef6cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5584 zcmb_gVQgDh6~2zM&OqAdOhu|_1)fA%wzY0EHmRK$b@6Wdf|@q!YPFTtX0H8`c(eV2 z{j8;Eh6ryJkGBX*{2-Iis1QGfkk}voZ0gjc%al}#P(TIcM}Jr-NEwNQp+Oi_DBrp7 zUie|SN!tdH5{8)@C?-rom;Zu8atnVWSCSBa1LlI~nu(x-S;pZcr|{Z6;%U8w`q zNlfc@P`6(QIsCdE4{wJa-wpmg!T;j6_|GcH$H7F;JWr>B0SPxbtkXvpKTKDDp6Wg%GMbAi?ZNBP`qH|F_*Yje@<#O&iq zOy;?O*3vh_n7P|y^BVMP^Xvf{jhw`SEz*P0qAl`*(G7d3$Keb5v_7@_BeDzXvK~NE z!VX^qOo0V%kpbQAs_;eW6@_w?FTOTa;R|h!E@*G&+!bL1VcAvk6Z$k=P3uqY7R6>g z2Fo?>X}wHpO$`O#n9=lGvyHB%o(J2c7o#fj`em0Jc4@;-)Ct!e5t73< zRC?TO)jd;osTGu6Mixp-@P{wrGq|AJ3G#5+t-xkT%6THLx^gN&kE343IvB7Sj)m|U zgy9RbVg&{F5WJvZ48me{UZ)YJy?ld4b*&GR%Y&;l0dkqILx<=OVQpL%7lm156I^_D z5~`h_-JaTg5k{=L<@iO)AIB#3ib`{0A+L=1B#U)d+Y-2n1lH`tU3+kuJil|w=4!9` zT|(;83Kw!WvU}Q#B1YjdB5Moe!e$XIUPFj(MiH@_QSw*7BBS>ej6s;+5ox%%019@D zIg_+ut$;4`J4hfUlY{=EaDY}32o?}IP~y!&Q(!Cj3}X4-1mX-+um@&rzTp;M>&UK( zBMS%UPJ;utaSDWC=u_YaW?EjsXh(JFe^VVRZ&t5$RHw^OEuW06cTVwNldub8ELy7;K;$T8&) z`bp22hA}`fb}}A+Hqw{4Qp#JUNPmCy%hAIJ`%7Zl|E;HmCB(x1q?8}Wnoa%SkpMAh{p(WxSL&Pg*PHfdr2JQH`X4p* zYf`?$8$7j{QXxe|@bto<1hGHBz9;c9iHm&!_O`@-M#Y0B_5=Md@gw_h zQ-Pt0eLzo7F5%gS31v*=AN}9)BfLQG1DeP?`n^c#R&lXR(aafEA(I+Rjz?2$z%w1l zXDpUWX0v9BoidYYdD7VMaM4PpUKvh}y)rzK%w*e?;>m34%*Y5%`w6o^2lBYpCO>Id zgq|pvx#NXG^6HRT%vc#S-$oiLm@nf(Xu}fu@hwn~x$|Zrn~s}iA)U!5Eu+|`4c?$x zv=ZavhVZIQ7#BB*3~wNPW`sOs<0Y%e_KPf1ExKp?KK;W8?TEyw>}e|%9+x=rcX;qo zi7USN^AcD=;(q=Qef-Dd{3jjw^i)&x`}yMz`0qR5HaRHmP-&^Se&NBX6czqBEr_P# zniMm}j`{F6CH|5RSNy;D@E=M3PFeTL{&k68lXXvOUVrv~+9fFdS0w+S#EGxrr~Hpd zIq~VI+VgUtaCN@ZK3tve*L}D;-#_)?>U_`naCN>{e7HK_-EzN_Kk9t5Xz^;!N?t*4 z72JMIjS5CK8MW{{vS>PKC0X=JvB;tY)19QuT+YZtmNzXUinr^aIMs4KnlD9h-f&v1 ztI#1!#@O&kA(=CzhyPy}fjWgmXT;lLa`KGaFC~-Vt0~)yQ8#|ECgKi`(B`7mq{3$~ zrXl^e0JS}C$G(J~aCr?&l(CX;T_y0Ze*glq`M>J-LzirNYYtO3Dc668CZ6WMyN^Of z`iDIn8un4ZXyl)_DgRafH3-$%%R49ay%>%C+_S*w2>SiMAoU}Vd7H|=!d}LJZ2I*l zl)i64zdlvrR{OuF*Ii-8?HHM(r%>su{oiVBQkm|dFZMyMPg7dQuTM7pdk={1*+pN* XB0m3pQ$}uXrN1oww}h3}$FKiy&Ca4m diff --git a/isometricRenderer.o b/isometricRenderer.o deleted file mode 100644 index 94650e68bb17a889ccf68492344750972953d32f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 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 diff --git a/spiel b/spiel deleted file mode 100755 index c3231abd6cd62aa2d0403d85bbc28c38ade47725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30808 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 F{|9^0_NM>< diff --git a/sprite.o b/sprite.o deleted file mode 100644 index 66a319c8b4194b0b6155c112c5756f9a8f49c75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3416 zcmbtX&2Jk;6rZ)z)D$P)R5=6{!Cs02O|7^f1PCF!v74#XAV}gAL7T*}HzcV)!g@_p zP|G0=%4mt2KOraR4FnvjUYd{6BsU|0WFZa)0+$D%J}XD?r7d9MP==wOWpL1C6psDXt$veog=2WnWRqFvOY6SAolRvYBmU3G_fV!qP zsR)-707NGB)SPky681{iHXqa$R?XSax8w$XZD~#GDKEN&|`Li%mcRbC4Kk3(7E%qqGCxQ=*uN) z4V0|Y+QPOu^R4v+x7=!?R4SDB3(JJ=i)Lr?@RZfbd5I<}dMK zkF=|wy87B$-JdH!AsRrh!$A45@x1>t_k4@{J0xjvHVy;j9{xxhk$Jc47qnvgxQb^W z8~7tRuA4Riu_l5pTgczlCP(mXc>18Yc^3BKhhTfSfzQ7cFw6_)%_&a-fPBg0-wxO@ z7|r;hhu{Mb!AAi{`&UJQc-{c}K;T&{9th7B%vWGE^GmX`#|*gN?N1e)O28gMV1OFJ5pK`<;48s7)`ZylF?l5pU% zzKafA)|dFRmr`bI0%p^&=P9`|^kmF$LT!jY5i?`NKatH6zmc&w@k}bEr{OG}f%?Op zKhBFM_V1^2ekk#*ZkU%q2QBGSW0OWKrHe@Z-=u*$mbTSlCMfnV^S>IXm+TvgHOpKkDP~!B z`O&PTc#**F6PW-@n+8}`=D8@4D@rLCUSrtEBzxBQp=eoEmzAjH(mU?2#1S^o-M5@Z z?qCD0F)M0-kvMlgTvh$x_8+5U2mQbOXV^=7M(DP24XAFLIp5?`D8f L8}4*A$$kGfOw%{6 From 81a38c452f41932a7c8638fd80de200fabec4541 Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Tue, 29 Nov 2022 08:56:48 +0100 Subject: [PATCH 5/7] commented, stepping works, ready for Merge --- IsometricMap/isometricMap.c | 11 +++++++++-- IsometricMap/isometricMap.h | 6 +++++- IsometricMap/isometricRenderer.c | 3 +++ IsometricMap/tile.h | 1 + List/list.c | 5 +++-- README.md | 6 ++---- game.c | 1 + game.h | 1 + main.c | 6 ------ sprite.c | 12 ++++++++---- sprite.h | 1 + 11 files changed, 34 insertions(+), 19 deletions(-) diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index 3b083ba..254e90d 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -5,6 +5,7 @@ #include "raymath.h" #include "raylib.h" +// returns pointer to IsometricMap Instance IsometricMap * IsometricMapInit(int layer){ IsometricMap* map = (IsometricMap *) malloc(sizeof(IsometricMap)); @@ -50,6 +51,7 @@ IsometricMap * IsometricMapInit(int layer){ return map; } +// For Rendering: calculates coordinate offset for a single tile at arrayPosition x y // Only works for tiles with texture width == height (and for 22.5 degree?) Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize){ Vector2* offset = (Vector2 *)malloc(sizeof(Vector2)); @@ -58,10 +60,12 @@ Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize){ return offset; } +// returns Tile at x y on layer isometricMap Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *map, int x, int y){ return map->tiles[x][y]; } +// Unproject: World Coordinates -> Screen Coordinates writes result in tmp Vector void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float y, Vector2 *tmp){ float tileWidthHalf = isometricMap->textureWidth / 2; @@ -92,13 +96,14 @@ void IsometricMapUnproject(IsometricMap **isometricMap, Camera2D *camera, int x, screenY += camera->target.y; // z is currently implemented as z=1 equals 1 layer, z=2 would be two layers height (could be smoothed) - // TODO drift - screenY -= z *(isometricMap[0]->textureHeight/2); + // hardcoded tile height + screenY -= z * 10; tmp->x = screenX; tmp->y = screenY; } +// returns Tile * -> tile at coordinates x y z=layer Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap **isometricMap, float x, float y, float z){ int layer = (int) z; @@ -115,6 +120,7 @@ Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap **isometricMap, floa return ptr; } +// Gives the most upper Tile above *tile Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile){ Tile *ptr = (Tile *) malloc(sizeof(Tile *)); // hardcoded layer amount @@ -134,6 +140,7 @@ Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile){ return ptr; } +// changes to Texture ID of tile at x y on maplayer layer void IsometricMapChangeTextureIdOfTile(IsometricMap **map, int x, int y, int layer, int id){ if( x < map[layer]->width && y < map[layer]->height && x >= 0 && y >= 0 ){ diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index 76265ed..2a8ec2c 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -35,11 +35,14 @@ typedef struct IsometricMap{ // returns pointer to IsometricMap Instance IsometricMap * IsometricMapInit(int layer); -// For Rendering: calculates +// For Rendering: calculates coordinate offset for a single tile at arrayPosition x y +// Only works for tiles with texture width == height (and for 22.5 degree?) Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize); +// Gives the most upper Tile above *tile Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile); +// returns Tile at x y on layer isometricMap Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, int y); // Project: Screen Coordinates -> World Coordinates writes result in tmp Vector @@ -52,6 +55,7 @@ void IsometricMapUnproject(IsometricMap **isometricMap, Camera2D *camera, int x, // changes to Texture ID of tile at x y on maplayer layer void IsometricMapChangeTextureIdOfTile(IsometricMap **map, int x, int y, int layer, int id); +// returns Tile * -> tile at coordinates x y z=layer Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap **isometricMap, float x, float y, float layer); diff --git a/IsometricMap/isometricRenderer.c b/IsometricMap/isometricRenderer.c index 92080e5..d33e7c4 100644 --- a/IsometricMap/isometricRenderer.c +++ b/IsometricMap/isometricRenderer.c @@ -39,6 +39,7 @@ void IsometricRendererDrawMap(IsometricRenderer *renderer, int height){ } } +// parameter could be changed to only IsometricMap[] void IsometricRendererRenderIsometricMap(Game *game){ int n = 0; int i = 0; @@ -46,8 +47,10 @@ void IsometricRendererRenderIsometricMap(Game *game){ for(n = 0; n < 10; n++){ for(i=0; i < game->layers[n]->width; i++){ for(j=0; j < game->layers[n]->height; j++){ + // if tile had texture id -1, it would be empty tile if(game->layers[n]->tiles[i][j]->textureId != -1){ Vector2 *offset = IsometricMapCalcOffsetForTileAt(i,j, game->layers[n]->textureWidth); + // the higher the layer the higher it needs to be drawed offset->y -= n * (game->layers[n]->textureHeight/4); int textureId = game->layers[n]->tiles[i][j]->textureId; diff --git a/IsometricMap/tile.h b/IsometricMap/tile.h index b532af8..9154798 100644 --- a/IsometricMap/tile.h +++ b/IsometricMap/tile.h @@ -2,6 +2,7 @@ #define TILE_H_ #include "raylib.h" +// Tile with textureid = -1 wouldn't be drawed, would just be a placeholder tile typedef struct Tile{ int textureId; int x; diff --git a/List/list.c b/List/list.c index dd40c19..fe79ffc 100644 --- a/List/list.c +++ b/List/list.c @@ -69,6 +69,7 @@ List * ListInit(){ return newList; } +// iterates over all Sprites in the list and draws them to the world void ListDrawAllSprites(List *list, IsometricMap **map, Camera2D *camera){ Node *current = list->head; @@ -78,6 +79,7 @@ void ListDrawAllSprites(List *list, IsometricMap **map, Camera2D *camera){ } } +// iterates over all Sprites in the list and does their acting (moving etc) void ListActAllSprites(Game *game){ // Sprites move towards their destination @@ -90,7 +92,6 @@ void ListActAllSprites(Game *game){ current->data.destX - current->data.x, current->data.destY - current->data.y }; - if(Vector2Length(movement) < movementSpeed){ current->data.hasDestination = 0; current->data.x = current->data.destX; @@ -114,7 +115,7 @@ void ListActAllSprites(Game *game){ } } - // updating z-position + // updating z-position according to the tile the sprite stands on Tile *floorTile = IsometricMapGetTileFromWorldCoordinates(game->layers, current->data.x, current->data.y, 0); Tile *topTile = IsometricMapGetMostUpperTile(game->layers, floorTile); current->data.z = topTile->z; diff --git a/README.md b/README.md index c6ada51..ef9ceca 100644 --- a/README.md +++ b/README.md @@ -19,16 +19,14 @@ Fantasy Welt oder Realistisch? + Sprites Animationen etc improven + Die Inputs sollten den Kamera Zoom beachten, aktuell geht noch alles kaputt wenn man den zoom umstellt + Funktion, um die ganzen Sprites nach ihrer y-Koordinaten sortiert zu drawen -+ Die Sprites brauchen evtl eine z-Koordinate, die anzeigt auf welchem Layer sie sind -+ Die Sprites müssen auch entsprechend ihrer z-Koordinaten gedrawed werden -+ Wollen wir die Möglichkeit für Höhlen haben? -> Sprites könnten automatisch das höchste Tile als z nehmen (wenn keine Höhlen) ++ Drawable Container machen, die sortiert werden können, dort kommen alle Tiles und Sprites rein, damit sie dann sortiert werden können + Maps in eigenen Dateien speichern + Parser für Map-Dateien + MapEditor -+ IsometricMap variablen auf Duplikate prüfen + IsometricMap struct erstellen, das den IsometricMap(+Layer) Array speichert + Sprites drift too high when going up mountain + ### WiP + Dokumentation aufholen diff --git a/game.c b/game.c index 59d0db0..c7e2362 100644 --- a/game.c +++ b/game.c @@ -7,6 +7,7 @@ #include "IsometricMap/isometricMap.h" #include "stdio.h" +// returns pointer to new Game instance Game *GameInit() { Game *game = (Game *)malloc(sizeof(Game)); diff --git a/game.h b/game.h index 16c8212..92b6007 100644 --- a/game.h +++ b/game.h @@ -13,6 +13,7 @@ typedef struct Game{ struct IsometricMap **layers; } Game; +// returns pointer to new Game instance Game * GameInit(); #endif \ No newline at end of file diff --git a/main.c b/main.c index 0b635ee..764ee1e 100644 --- a/main.c +++ b/main.c @@ -29,8 +29,6 @@ int main(){ ClearBackground(RAYWHITE); BeginDrawing(); - //printf("ALARM\n"); - BeginMode2D(*(game->camera)); IsometricRendererRenderIsometricMap(game); @@ -47,10 +45,6 @@ int main(){ mouseInput(game); keyboardInput(game->inputHandler, game->camera); - //cursor Positions test - //printf("Cursor Pos: %f %f\n", game->inputHandler->cursorPos.x, game->inputHandler.cursorPos.y)-> - //printf("Cursor World Pos: %f %f\n", game->inputHandler->cursorWorldPos.x, game->inputHandler->cursorWorldPos.y); - DrawFPS(GetScreenWidth() - 95, 10); EndDrawing(); diff --git a/sprite.c b/sprite.c index 317e203..06518b0 100644 --- a/sprite.c +++ b/sprite.c @@ -5,7 +5,11 @@ #include "IsometricMap/isometricMap.h" #include "IsometricMap/tile.h" +// @param deprecated void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y){ + + printf("WARNING: Using deprecated Function SpriteAdd!\n"); + if(*spriteAmount < 100){ (sprites + *spriteAmount) -> texture = texture; (sprites + *spriteAmount) -> x = x; @@ -31,11 +35,12 @@ 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); // Also erst ab hier sortieren, mit den Werten aus dem pos Vector - // nvm, Isometric map muss mit reingerechnet werden + // IsometricMap muss auch mit reingerechnet werden -> mögliche Container Lösung steht in der README + pos.x -= camera->target.x; pos.y -= camera->target.y; if(sprite->selected){ - DrawTexture(*sprite->texture, pos.x, pos.y, BLACK); + DrawTexture(*sprite->texture, pos.x, pos.y, (Color){255, 255, 255, 200}); //DrawTexture(*sprite->texture, sprite->x, sprite->y, BLACK); } else{ @@ -45,9 +50,8 @@ void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera){ } void DrawSpriteToScreen(Sprite *sprite){ - if(sprite->selected){ - DrawTexture(*sprite->texture, sprite->x, sprite->y, WHITE); + DrawTexture(*sprite->texture, sprite->x, sprite->y, (Color){255, 255, 255, 200}); //DrawTexture(*sprite->texture, sprite->x, sprite->y, BLACK); } else{ diff --git a/sprite.h b/sprite.h index 5e4702a..be49df5 100644 --- a/sprite.h +++ b/sprite.h @@ -14,6 +14,7 @@ typedef struct Sprite { int selected; } Sprite; +// @param deprecated void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y); void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera); From b9bbec8154f64b3eec8cd33262187de77993d47a Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Tue, 29 Nov 2022 12:51:52 +0100 Subject: [PATCH 6/7] bug when setting sprite dest out of world bounds fixed --- Input/inputHandler.c | 21 ++++++--------------- game.c | 8 ++++++-- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 958119e..9304ef2 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -135,18 +135,11 @@ void mouseInput(Game *game){ } } - // Berechnung, welche Sprites ausgewählt wurden, scuffed - // TODO: ist wirklich sehr scuffed wegen negativen koordinaten etc - // Problem: Theoretisch einfach nur schauen ob unprojected Sprite coords im Rect liegen - // Muss aber unterschieden werden ob width negativ oder so ist, aber einfach abs funktioniert nicht - // So wie es aktuell ist, funktioniert die Auswahl, aber nur solange die Kamera nicht bewegt wird + // Berechnung, welche Sprites ausgewählt wurden Vector2 rect = GetRectangle(inputHandler->rectStart); width = abs(width); height = abs(height); - //printf("Auswahl: x: %f, y: %f, w: %f, h: %f\n", rect.x, rect.y, width, height); - - // TODO: update to World Coordinates float deltaX; float deltaY; Node *current = sprites->head; @@ -157,8 +150,6 @@ void mouseInput(Game *game){ deltaX = currPos.x - camera->target.x - (rect.x + camera->target.x); deltaY = currPos.y - camera->target.y - (rect.y + camera->target.y); - //printf("deltaX: %f, deltaY: %f\n", deltaX, deltaY); - if(deltaX > 0 && deltaX < width && deltaY > 0 && deltaY < height){ current->data.selected = 1; } @@ -180,16 +171,16 @@ void mouseInput(Game *game){ float destY = inputHandler->cursorWorldPos.y; int maxWidth = (game->layers[0]->width-1) * game->layers[0]->textureWidth; int maxHeight = (game->layers[0]->height-1) * game->layers[0]->textureHeight; - if(destX < 0){ printf("OutOfBoundsDestination"); continue; } - if(destY < 0){ printf("OutOfBoundsDestination"); continue; } - if(destX > maxWidth){ printf("OutOfBoundsDestination"); continue; } - if(destY > maxHeight){ printf("OutOfBoundsDestination"); continue; } + if(destX < 0){ printf("OutOfBoundsDestination\n"); goto skip; } + if(destY < 0){ printf("OutOfBoundsDestination\n"); goto skip; } + if(destX > maxWidth){ printf("OutOfBoundsDestination\n"); goto skip; } + if(destY > maxHeight){ printf("OutOfBoundsDestination\n"); goto skip; } current->data.destX = destX; current->data.destY = destY; } - current = current->next; + skip: current = current->next; } } } diff --git a/game.c b/game.c index c7e2362..53a74d4 100644 --- a/game.c +++ b/game.c @@ -70,12 +70,16 @@ Game *GameInit() ((game->layers))[n] = IsometricMapInit(n); } - for (n = 0; n <= 10; n++) + for (n = 0; n < 10; n++) { for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { + if(i > 50 && i < 70 && j == 50){ + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); + } + switch (n) { case 0: @@ -110,7 +114,7 @@ Game *GameInit() } } - for (n = 0; n <= 10; n++) + for (n = 0; n < 10; n++) { for (i = 0; i < 20 - n * 2; i++) { From 524a8fc445edcba974c3d6683a846f66d285008b Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Tue, 29 Nov 2022 13:26:42 +0100 Subject: [PATCH 7/7] error squiggles reenabled --- .vscode/settings.json | 2 +- main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6c2e911..471f6a0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "C_Cpp.errorSquiggles": "Disabled", + "C_Cpp.errorSquiggles": "Enabled", "files.associations": { "isometricrenderer.h": "c", "sprite.h": "c", diff --git a/main.c b/main.c index 764ee1e..e20c9b3 100644 --- a/main.c +++ b/main.c @@ -44,7 +44,7 @@ int main(){ // User Input Handling mouseInput(game); keyboardInput(game->inputHandler, game->camera); - + DrawFPS(GetScreenWidth() - 95, 10); EndDrawing();