From 340b16abf85a2414a78f5a00b16d30f002aa9cbd Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Thu, 24 Nov 2022 23:10:12 +0100 Subject: [PATCH] unprojection of world coordinates working --- .vscode/settings.json | 3 ++- Input/inputHandler.c | 6 +++++- IsometricMap/isometricMap.c | 30 ++++++++++++++++++++++-------- IsometricMap/isometricMap.h | 5 ++--- README.md | 2 +- inputHandler.o | Bin 5904 -> 6152 bytes isometricMap.o | Bin 4560 -> 4816 bytes isometricRenderer.o | Bin 2664 -> 2672 bytes list.o | Bin 2992 -> 3016 bytes main.c | 21 ++++++++++++--------- main.o | Bin 7408 -> 7408 bytes spiel | Bin 26200 -> 26544 bytes sprite.c | 1 + sprite.o | Bin 2488 -> 2496 bytes tile.o | Bin 928 -> 928 bytes 15 files changed, 45 insertions(+), 23 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 25c16d3..6c2e911 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,6 +3,7 @@ "files.associations": { "isometricrenderer.h": "c", "sprite.h": "c", - "map": "c" + "map": "c", + "isometricmap.h": "c" } } \ No newline at end of file diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 524e0a0..05a342f 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -67,8 +67,12 @@ void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, C // TODO: n=2 no good style, but Segmentation fault when > layerAmount for(n = 9; n >= 0 ; n--){ if(layers[n] != 0){ + float tileWidthHalf = layers[n]->tileTextures[0].width / 2; + float tileHeightQuarter = layers[n]->tileTextures[0].height / 4; + int mouseAdjustmentX = -tileWidthHalf; + int mouseAdjustmentY = -tileHeightQuarter + (tileHeightQuarter * layers[n]->layer); - IsometricMapProject(layers[n], camera, inputHandler->cursorPos.x, inputHandler->cursorPos.y, &inputHandler->cursorWorldPos); + 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); diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index d3325f6..486d968 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -64,12 +64,8 @@ void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float tileWidthHalf = isometricMap->tileTextures[0].width / 2; float tileHeightQuarter = isometricMap->tileTextures[0].height / 4; - int mouseAdjustmentX = -tileWidthHalf; - int mouseAdjustmentY = -tileHeightQuarter + (tileHeightQuarter * isometricMap->layer); - - - x += camera->target.x + mouseAdjustmentX; - y += camera->target.y + mouseAdjustmentY; + x += camera->target.x; + y += camera->target.y; float xPos = (float) x; float yPos = (float) y; @@ -82,11 +78,29 @@ void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, tmp->y = isoY * isometricMap->tileTextures[0].height; } +void IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp){ + + float xPos = (float) x; + float yPos = (float) y; + + float worldX = (xPos - yPos) / 2; + float worldY = (xPos + yPos) / 4; + + worldX += camera->target.x; + worldY += camera->target.y; + + tmp->x = worldX; + tmp->y = worldY; + +} + + + Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float x, float y){ x = (int)(x / isometricMap->tileTextures->width); - y = (int)(y / isometricMap->tileTextures->height); - + y = (int)(y / isometricMap->tileTextures->height); + Tile *ptr = (Tile *) malloc(sizeof(Tile *)); ptr->x = 0; ptr->y = 0; diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index fdb2681..172e98c 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -17,8 +17,6 @@ typedef struct IsometricMap{ // TODO: Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float x, float y); -// World Coordinates -> Screen Coordinates -Vector2 IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y); // Working IsometricMap * IsometricMapInit(int layer); @@ -26,7 +24,8 @@ Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize); Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, int y); // Screen Coordinates -> World Coordinates void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float y, Vector2 *tmp); - +// 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); diff --git a/README.md b/README.md index 473ed99..1f4cd33 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ KI Gegner ist erstmal zu aufwändig, ein wenig Ackern muss man aber immer! Fantasy Welt oder Realistisch? ## Isometrie in RayLib -[Projection Orthogonal -> Isometric](https://gamedevelopment.tutsplus.com/tutorials/creating-isometric-worlds-a-primer-for-game-developers--gamedev-6511) +[Projection Orthogonal -> Isometric](https://clintbellanger.net/articles/isometric_math/) ## TODO diff --git a/inputHandler.o b/inputHandler.o index e29c5c67d1bc3305da099581274af13defa17a46..00e4b499898d8ebb69f5ab43f28d950901b6357c 100644 GIT binary patch delta 2245 zcmaJ@Z)jUp6u&QN^QTSnUXqult<`38j;z+MX@x1SUDomN(ruEd!3oM%ks`_pVoE=? zNtaIgcoZ_P9||J0A`%9|#_Wem(AP3;kx`u=h95*$L39>fM_>*S>pAzmTc0iQz&Y>U z-#O=Z&pYS7kW$xlcPZI6t&(j?^HrLJNRU+JhyJ{ho{;KrarHClpwxq_EY*La#cKts zkC&-FI!E>FEY(kzPUzb7FPJ_|MQ&(oAmZQi4a4pV7%&x2U0@Y zE|~Jvw>1J-pSL9+*325oM%p)%aRUKeUb^oZmhYHVxdSw;U4z0kSSdlQM}A=m$~JXv zwH8qU>;0GDMI?9$O{baHwd?r8bS9(X6G*9Ihicd5Cp?@dGx@+foNs0j&pp`k5?o5n>|dX7de?=FelxwUF|*>sZjE z72WQf6!7{8X#+S7iqh+had+?l^q)m1iWgLHxc~4VK?0xxD9Q#J;dlMW`4IwP#~aT{ z=hOSG z-_f?Xv2qZkaDyJk4agWXh)l7g5c3AN1#WM$c|d+cn?H@DAlOf= z>#r?Ksy4p!-1jgL1Ro8cBL0R0Z*<_#4Zf~Bpf~nmKXvRJW&hJbBFA3JmN^erAYYL#>D{w z|I`tW_gLU#a7$4{{2psdrfeJwQV4WYB-~+>;kfiQTL=3cI~s{gw^%q5&)4B3KrkT! zD&m6HZBg%fDh$KN4%3~z=1n?1}*&9_8SPI5l4cPXv~2-iSiBXgGfJoM(dGy ztN2`|tfDwMR=VJ4k?0S>Ih%uf*{N8RDQdI78wUhZU@7&G>sAB17;Rz&H7S;+nuKQE zR*(3f!0QRp$x^XHu2&na$XL?sJ80Q(h7zBGTD6e~@;ifKC9#;N^aX|rnRMLG#ea453XKV=`>S}>D> zu5o6QJ+eXPLFhh+L1DxXgUY_dF*O~y4hi$m2lqw94Myiw+z7~&(Rj{%@1>WP{@|Y6 z`#b0S&Uxp)_MIGF99)b=76Yt-q}U}{8}qU+o>@>XTv3LUT!x#sc>d2hZXPXj^T;wc zGbL{BEl!!KrQ4J-!;OW?jB&Wa3#oF=Xiw@JG+((Nm0iBoR8_+q3N0kN^7rf62`kN) zjMR)>KRAaV9`4d1hhcn)pVq&nTF5MMD-}@BC3aKi^2c>vaW&A|N zIL^>dqWp9^=v4C2rZA`5d7JBu@WS4r5xa^{afO@LxLwi7j)?4Za7*@wJ08o4X;7iN zg`{W3_`6aw;*BX;nVG7Y?rMl_nZOoV`{D69nA6H1ZTUl0C4aQa4D+Y;di@)k42>nn zj#sj;hz8k-%8?f~u0_6*rVV=YZFwknm4;?bt&olq!wbn6&tDF5)0!QMXCD@hd`0Jl z3DzJBqm*b)9zL9rsS944=4%!Z59zD7=!QY&(5UqScaFI&ne5GdPbEZjC&@~zVEq&%(&LSt#VH5 z+qR>N+Eehawx%)$zqRb2n0(`Kc6K(JNDS^C9FERC-fwSN6HXzDYX`2$=Q2!XN`*L@ zEn)`fHu7hy<_am7Ud`45m25qG0;G+d9k zNg#^Ud$ z{(GBu^c|gFEIuv@_@sohl#Or_daNTm2MK?8y4`*qs4aPBe@VO_eNLHwB%VG=4!>^m zPL;G>r5Dcl!<_?k-3Y28XYGa+e^_}@#2nZr=AeiCgx*`f#pD~)A=iSUDUIl zntD19_X1({x(8Zi+|ic2pMt diff --git a/isometricMap.o b/isometricMap.o index 63fe8afb42df7c66b88b6fdd9924212f7b385c40..7601d9da71c8aeb22377cbc68c00ea1a104f4a82 100644 GIT binary patch delta 1431 zcmZWoUr1A76#woYb=U3gZkBA*ut8X}Y&nb8AH-YZ<^l~PMiTvzsLX=l!o39LAP81I z48E5l2n8R?mlzd94>hreo??OzJ_s2U7zirsK|-i=zVEx2TnEni&iVb$Io~-=lZw&uyJ+^xDmrvr{=}VrcqTrqs6iylxL zWz$2?sZsYbAl9#naoJj-<7)escvd|-hHX>H{EuY*-f}XZUCO5x^L-1wd8>TGSS?kI zz1CvI@LOwkw15%x^I2;Z<0A8P92ahwL25%#1OHQ-FyIm!5KJE=4$M@#u*Akah;K3+ zU`)q-u%(~a0nmO^EnJ$#!C!B$c`xyI_)hf;Rg{1=|W@kql{+tImAJZOJHnX>69=7`%e%u z1_vSU(AWv`E9Zg|;vgTkG~8 z&tC!{wk@33K^ve$Pyq*oZ3*WiP{dOLXWIexT;K(KToAStoNqueKZ!p82wMiuMNq_R z>kuVPd<*c_K#`c{1R0?-^+hF>9-&vloGZ=q8Q%L#CdNUBvVs8uK;NJL6$4P>FK1eHRK zNa4Dvg4Bi3Z4fuz7@8XgoSmwPZq(0kBx*KRVINp->`bTUb-Rp|K6mnUR|GMcdYU}m z{RZ+|enJGfrr>8OXQ0>rRGNTA|CIA8#Q4oI7ts6g<%WU<8ox2-7wCkK3!L8+v3COh zMuS7+7sUJ(o%FAI2^AN^yp2wH+)F5qd={PrYLE`zvd(aXG3rF0WcROQ!%z!`t<(XQ zdb;d=_=)V?f7pI7Lt&}F;|GdXmOdjIokDlm?^8r}RXmSGRL0QBZon4ynSu8htGv#F zq@{3(87*wN!+P$B@m2IP#>Szjg%j>*){n66Xj(_`IBaP@LT{V_IUJbgF=*%~)Qx}x zJcN#(l()SwsUL^55p~Oo5mlRF=NQzCq&k2U6jciN2(|;dfTMkT6ceQlI4$;t~P>0RI)|C;$Ke diff --git a/isometricRenderer.o b/isometricRenderer.o index db7e73c9c50b7b09a30a43c9ecb1b7c35c0e90cb..45aa43800d58ce202ec6a22c54bb91d490912bfc 100644 GIT binary patch delta 320 zcmaDM@%a83I7e3dHVyp$tq63nVDxX^00F-Fem_p9e@}FT7g;^Tqm=!W-+dqT*#`<3DyLXn7oj6K4a`;M>cWE zCXgZ^02$2&#DD%nz|P5qZ1zBX8`-Wi>Q3%tH)r&ie30FqF?TW}2Z(g!u;0U#siZbIqexIOl|~{3X=~4$rFShJ*$?0~|PjSq==m3_J`QU6wFze#6+ougY0zgdf$(3yOKz%#et~07mp2%*_=rH*t zyFF7X%Vb4XvB?S?8Zc%8hX!XV$N(Tvm^_igoT(L}<^fQm11e!KS&-A5amQp&PJ70V c$(=w_V)98Kd0;Xpmp$hWHi-6|$$}j60M@NRY5)KL diff --git a/list.o b/list.o index b6b631b881ba9afa91cbf20a626c44b68e8b1370..e71d5f1b390ea2a11cc168a80774029091fb684b 100644 GIT binary patch delta 654 zcmZ8dJxIeq6uwJh(rfW|XlN0wi$>I9S|K7x0xBwkkio@4q%OMXVnG*aw>k)xw>jum zM|D$C=xFVttBVLC6x_NMp}xyq9Q@$D_ucp1-Me?!=9779^)E%pAH0Bhq>FTtX7@m= z>}_a4JwFL5jM3YW%)^LsAQl%&R&Fz)q0G*$2kQz(AED%maupvCWJ1=la(xdU#SwJCx`n~@iqt(g?6{x&G#7X*YaeuJfEI%Fg_!_|Ju1 z>dU4a+f?y%^&7KJ>D|U&>dC ANdN!< delta 720 zcmZ9JyGsK>5XN^ekIO|3K8iCan1EnJkZ6Q7fr}_82tq(XMWR70eH4Nz1WhA00pm0l z76w7FGXyc9g;;4L*b5S{(tp50&~G+(hxozF?tQ=6VQ25ryfP1Co$-Khl~%j72#FR^ z8qb!_ieP}ad6RYc68yk_Kp~1vpJhC~`Z*PV0qCo`VLrhH13Qfp+ z_9TKO?Qeq$o`KygTce@YeQm78ugy2>xJoyy6#Gz-lgkfWzQ{gQfoHfiB8>=VX>%ynTim05wIDJ}dLd)sVUt)+t0g zMn1Erce*av{*s0bq;7$A1;O=4wx6Ps?;_mJB@jO&KkN5TLwU;h&F~%^7E>MJ&}%Ay zJ}`oq@^5zND^)<>8A1QgdZ_L<<*mwV)TW!VO8vSOcBWlcrv!d(BR;91n_*|l(|>e{ zD(G-TPx_mDrprK5MyMXJWQd{$=bXxA9kdhdm77!! WS~5m; Isometric Map Array for multiple Layers - // -> Make only most upper layer selectable - // take selected Tile, if that tile has one above select a tile in the upper layer - //IsometricMap *map = IsometricMapInit(50, 80, 0); - //IsometricMap *Layer1 = IsometricMapInit(20, 20, 1); - //IsometricMap *Layer2 = IsometricMapInit(15, 15, 2); - //IsometricMap *Layer3 = IsometricMapInit(10, 10, 3); - //IsometricMap *Layer4 = IsometricMapInit(4, 4, 4); - IsometricMap **layers = (IsometricMap **) malloc(10*sizeof(IsometricMap *)); + // Test Layers --- + int n = 0; int i = 0; int j = 0; @@ -110,6 +103,16 @@ int main(){ } } + // ------- + + // Test of the IsometricMapUnproject Function + //Vector2 asdf = {500, 600}; + //printf("unprojected %f %f\n",asdf.x, asdf.y); + //IsometricMapProject(layers[0], &camera, asdf.x, asdf.y, &asdf); + //printf("projected %f %f\n",asdf.x, asdf.y); + //IsometricMapUnproject(layers[0], &camera, asdf.x, asdf.y, &asdf); + //printf("unprojected %f %f\n",asdf.x, asdf.y); + // Hides the operating systems own cursor HideCursor(); SetTargetFPS(60); diff --git a/main.o b/main.o index 2874e9914657275a670306c374ec8b0eb3371200..844c520eb62e57c730aa9e6ce8c94f5c83b703db 100644 GIT binary patch delta 988 zcmZ9KO=wd=5XX1Z*cj8ON!x5T0quiQB5LfbUlc@JQF{=yIpn6)2!$S`5HR#06mswb zgV-=2>ZN|1REmTg6c1ugCB%a{2qGR@yo$7nP(;xGy!RFs|1gu8`OVC}_crUJ>!S-} z;h#Hp{ceoiiggJgnk%ueJYKw9nY~&WaNYdD{P2Fa;-&8V$Vh(p(4L?y!f4+K+X9<7 zR}>*3-f^vq67jv=wHU(FbTWQJ)|##OtFRoTYEtPVD6_beC;$BQb&48ECC^i*SILXC zhIod?5zkSgSLy3K0^tn7k7>3ncs+~UBbTTQ|JtjpcvByF1Ts@s{8X&+DLO9w)X;1| z(hh~l{VnNd+{JS z{YoF;SAuw|8)l|TQ~-S*P;=rZZiU`Z74#+#L58k+nGg@C0s14L{L=$7n;+6zzmic( zq?DZYe1ygkpJA^TBmNSe+HOrfqcUjIqI~~m=Vy8h`pcq8izcZ9>TE>`;>~?9Gdo05 zDP6Q^%A&W)1$}DKv_)S~3G^_3ZiqK)nAv=f>Y#5e%J*#O1TBNkZbJz&->~hc;u>v$ z-u;h$3+PL7(n_{He~b!grO)zz9^z-%4Kt@qQWdmlQOBaw)WDwkW-A?$vPK;}7i!0- rtW$I;lQZF?Oiq5FR^~+XJ>Mg=j}qCVq0Jt@Gng=x zkt*|CVu_laZsN@V`P@h;y(g#*r^%$h|3b}jJEiCt_r?^R<_*O2Tt<9_lVeIZOjiWY zC~Uu3-wtY)rG{3x4*x31ybrp1Te>cq^;g+N$IQX)%)Fs#rnI6{T!X*KCHQ+mW?eEm zCFPLqs)kE%f?J^ThRVIfVD{}E@+#)6NDY1CKK!pB_PH>w^rXBJBwa%=+jWMkpwA4o zJFZJ9^qL!>*QE)v^n0-Ky!+e+{bQ&+MqqaG1Kt={G|0(}qFUgiTt+-6UM~-aL!@ie z>3Yg_(3cL~;m|Mq1hntaltV|k2RgA0DM%)#VfH+`n3U30hh`kQ#3j&24$V6BIoCi- za@~+j)-XHyF1JA6I#j;1rH6SH^ul(eAbW?O!lk#!eb8H5=x;+`a3QN`E$|1qnpL_Y z|2!mT*a@?{9OnjT)u9E4*0_y1*E-$oFj13xdNHyV=eo}Dxm?kPk8?%($lctb*a!KJ Ykk85dfyj@Murgna{WM^@)5@Qv{~H1Jv;Y7A diff --git a/spiel b/spiel index 40605ca07ee5d7e309321f031a1de13d8bcb3ae1..cf5aad5f80bdb8da1f011828fbb33e27f434aa61 100755 GIT binary patch literal 26544 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 delta 8560 zcmaJ`3tW{|w*S7510sRvpgax=p2JHKQ9y+xF^>=Q#7_(@6HViwf-=6)!N$7N927AL zDVW_fUc1fEV;W|fJ3}!RHI=Ak*jVEH8V7H7Lo++4><)@GG);Z?zxD%;+`9YsJA3W* zUu&piFRCi}#!(Hc)KLA0KGWC6sb&D0{0kJl2K=QNM(iV&i%=5v{0 zPfildlattJed^r&5Wy;{*#xhHkf^mt@U3fZq`QIyU&D6mv56g0t3zrj>NJFwlfA5O z80i#@=46wM+Y`Iy3U)X>FSX9Ie>ZMV`o8u{q~#KWg$3Q})HS`+f{G($Wkd4R4NB}l zkdw6q?blDRrIuJ$Z1J$p5PN%0qu{?k6{KZ+9HWX zRaRmmgS2Im-#NAt-8Hn;awyakg^Dg~wlSj6CMQMV-7<3QWkRlS@N84q175pF;3GiP z_z~jtP_Ai&%O*LW=HZ0nGzThWc|?iygB1um(<2zdW%O~tC2%h{L_(F^9#JApIZH^f zhjQVNnt0+%Jd_JOOcZ(U@d$?O+$4%T-{=tx;SriwFqBt$M41FuQRMk9k6;K_vqeaa zhjP(yq$u)yzeg~nF9)9kO#%2Ap`!8j4+aRLlmN6P0FMs9TLbWz0K6>#j}5>(0&sf( z-U*!dpFE8V5OhI6iSV(!B(iRgpoEVTMV|L~1VebdDDu45BN)OHM3Lt{k6?hWz_vA% z`i2CWa|qT30`SBDT$4df4I~BNp=Ir_L@YE|rxEIP*Io&AHw3?PyQaD8I;#z{+gGMhZ{z$t;whBPC=SLGyq3L&VK8$z@Nq-jS4dN*j{az;r{<#DI#h~BD`D?^e==n9y zzl}4kq6s`t*`ME5f94){{Y7`}rM}`j3$i=2Pr4gtzYU=o{cEURub66e?B%)?GmyOu zgYL%Q7l`ByR7WG^Dxm0Qo1)@Exh!YT5_TYJ+&xnWMkI!sy%ko+0!=$^b<~iln%TEO zQQMih++90+6tpyV{m0ee?uOavzbUeq);M#yT1dcVqOcTz=MF|CVnvN9t%8AvioFs0|Q6?@?jEBlKE_^zIgV zTtN1qcPm<|5sHrwDNYxPTmZ!d!eA#S(GL&lz0W?4&Ik`40-k0`G4u6DSVc@$c*|t! z8TUMyJq6gxF304BPaA>{vB|Lu^;)(gHZS~q`k?kG_EKz4_=`ipJ8S^JgG0apmS@j4 z+LG92`=ZgQ!27L{bzN|}-)akvOJ{G||2(F6l7RmR_((Bk$ajrB9amyZh-KfzJ!^y~ zuwRYcVmuMgqQ`YyP5)CgUkBN1@e|@Ne1TcP{$(C+LxbkwR-U&Y_k}PsK0dk*i_+atrvV{@$%ts* zuUJ;XRK0?gCd^1K!7k!%{2A52ob+-vK6sU*s3W%EtW@@5!hU@rn={^{A7(A%C+b^R z*ZBQ<3R~)!kbGw{_q2mN_O)Cy%?j(^JNvDx>iW=~YgSvtoyqKwW4w`{%wBPfHJr)p ztYcfc3B_7p>FZ&r1+R+1`rf~aY##~w^u3+dx+VYOo!I8IM|=R(-B{jt_uSQMj<+9l zrs~!?iDHCm`%JUx zN3QulXw==XX5i#;Y6%TFsUe^51OzuUf?A@H0pD+#nKH*1JD#~x=NRV_*zVMsvA@KI zBOCb_H8MbrJe0t?Q>S~SaH(pSzKRm(6|5dfQH-+1s&*!E8MqT z!S162aA|9&64~A=I7R0J@eQu{+5xkAo{-sG_I_(dw_>8e^bzBQn){%;G5k$bqk0G3 zdY8LFdzrJCw4;bDY1N;C>2D}FMfy#KESO+nC8>SO~a(9>4aHdh;nHtd~9xu3gd3y zW%Q1Rc%aMdKPNfTci_0SW*)WfIY2`M)0ihW`Po7f7T#|yISQt=!4=AyGNQ)^M4cPH z3$0M4#U`aYrnHKAFZ_x&uVc``BH)|TCm4LN=&s8`eeLv3|C;Sg-xuAFD*^i7L6<9E zh!6EpiPn*Hk@;u~ClXI*~q!wM#eEFZS_a;}`B0mvB^pbGCjTL1~isfDS4(A#( zQpWzj-AiD;jB%6X61HIp4`2!R9a%vQ?&K|1PxSo`1zPa-Se7*EsZ@oqdr#GOgWM+{+eB zcNt;5Y~S=-jkiB!C#F9h_RWVh$g~x*Z8Ktx@DJJk8PBnsbMjbqPOjd|p352Uy@XyC z^io&f!l}YHyo}EJ0v{%)r=iA&K@q1$IyUB&1<+ni8L3=>N;fLHL!}1o!zI|2ZAGU< zArjk;)CpHQ*sz687ca2uIVp>&`GV{H)_cfw2?Vy_$^3|0$@lmH689mC2o^442Z3_Y zcT~F`!Pe(4VjFJWYD_ub{vPT?j8MEyAS4_{J%&KNpGvelgd)lUA z>j;*D=G*u;)`27T!~8^J*=5*?3cb*TV-ccu=j>jiy=LM5pch;}*8{$0ah-%XFwF_O zTT4r=aQ@htS}`djOj|=jeO%BidV`_6bjiD>nT8Fpq}w!$K{tX9053XYn)Lni-g)>8 z8v5U+*#_DV`X1;W#K-`scEM|!@#t;lMbpd&U5OP+?-ee;Y1V*V!shY}XgSWYF3{)y zZkks>cjE94$F1l0pc$ZfxDYG`?e90u&7kbMX&wMILEAvr;9ArT`YC81=u@~h*{~n{|r>foiJ2T8)RG%R-C}Q@QeMxG#>%g=Car4$9S)x zvVw1e1q@+7-XMQzP@V$$1gy5{f%3SmT+TgQ0EIj# z>kaIEuJum28q%{I7CVD*~9qR?80J)_aL8@p~olns7YV) zl+=Qv-HDQV+@v9)q~u?GYi=WcKfI)*9w5``Q3XjoJksVti9Sq_3~eLZU6g5P9`-`f z)W}{5%Sw2;zFIUf?rT%nhCXi&7eU@uFPpo>p*OLzB^y|8M4HjD2Cv95-dx(SkrqmN zm!uVv-Ye-oNgtE+SxH}%^n|2mCA}=^my(9ia|}|9q!R@7YPk|vDCu32R!DlUr28a& zOwwm1eNoaAlAe|HvZP;18Y15|V*=keHGEd7m*z$D=ilN?TU5TadfPT9p1!9~&2m<; z?BZnRv{=~c;waYQv9R?^qgd4jPIV_MTN7gCOAJTCVxfY zf@r@cy_}b%l`h#Oej-5Q4T(>XiN%7L7ea^rof)H-6VGBg6&=&ds_^)6Pgu$hN#7l2o!IX z_*-(e__hwbNaEdCC6xGi4q8Ii;wmAv;T?W>zjl%o8x83^AuaqPnH$jfsf=PP_vdwK zA#K>m9GA6LO85CDj#_6W{wJrf#;*=2eni%?uS@BaOd;i`Fp9wl8|w87a^Cov13a4P zD`MjukkXtF@5Ka?>Ulgb;F@cto!?~$`~2WXaUa)d=J_uuFKd;Wp?Kw^#IF&cMJ98E49MjU3mw~Ty?cQ_wI8+EU9!YYb-4q zv0+>F)T+(ZtfzE2%ks3a6pM}ZdTibWsD@kTHpB-{>f}*0MdIotQYV#!wIwLP5gb7x zsgp@j^^Yr^Tv$beC!JlWCuw(~fC(BjppH64H?lKj4lhNX8Q^9Uy%HfQS}54T15>%9 z=qAYNz*Bs$tgom`)*tSsguNPV!5H;HH=Xi~RkTxT4j(7kPkuF~`tzioI-?c!NzbT0 z4uE0fgaLY(U0v(YW7!#xL$7Dq>*nZ>vhC{}thn5%Kf#_~=a^eQQQDSdSa4`h1E(oa zmk70gD>{4h^Bk@x(fm)hJNVQ@?Z7j0Fk=Q>>OP#PbainWD*6eX4eg!S^ zLba&&5U11%WlN#;t+bT|8km%pgPp0E86~T<$;%ww7{gh@hRI=lC8E*=3tP4!cjOuV N8I1orS@Q #include +#include "IsometricMap/isometricMap.h" void SpriteAdd(Sprite *sprites, int *spriteAmount, Texture2D *texture, int x, int y){ if(*spriteAmount < 100){ diff --git a/sprite.o b/sprite.o index 0dac02dbb064718ee46e8445ed9330da61e0e375..3ab2e3a41bd53c1dab7bb0465dcc6650ef5f1bf5 100644 GIT binary patch delta 418 zcmYjLJxc>Y5Z$@GPcSjziYSO&A)Fx^Z(|@4ggXg`U?HYRVdY07HdaY1LBZN%s$k_$ z5Jc1}rKR}=Vy%$EE(mev62%Aec4pq}n|XBm?)CCQWQspTX%>mB$cV4m#nD|<1)URY z!^b2!&~6&7S)al7l7!=#PEujg~=bpqZS=y-s zrExZQr8P39T!R_Q79O=WDHubhUp>B*+B;8(bmovX0y4$;ATOYf8@lhLrqmnaDOEmg zWFYqR6DT4Wg?Ytm34912_C2299u=u`(;uu_|I`K^86oYsH45P4lko=6*fVQj7I zgn5g(nQ~%<&Uosxf&=N|r?mtn%-f+8NHQgOxNp~B4--3tE)IxaG4F)X$0qR$CXW9D DlT}^X delta 385 zcmX>gyhC_`hJ*zh0~|PjSq=<*47>~*T}&7!*D$`GoXs?w-#s<2BtKul&`{4<&p@GI zvLdsvssd0kD-gT;g)%TPFdkq5vKfIG1Q?-w&dHw4+H58uVaLf;%u;NxL9&jMXEDpM z^+TBZn41_)COfjIbAput1z%4t1oGsWK=KR>{gW56q)VzoO$G@v1M#2#5TH9*kyTuB z4OAB71a>4@fysfa;*92#Gg<8=VWy`5s5(vvrKFE5XaoyyFZ03v%lW(%wGreP) ze34mfvH`mWj9I|0!T4_SOm=(D&rnw>On%62&LqqXQOTjfDFJd75Ex8OC6g7|q?8s!!m@{#r^yCaCp2-WCBsdFz8bCl{@M)pmkm)`EVC5Ia