From 58bb57eeb29b488972076db49c157ee858b95adf Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Sun, 27 Nov 2022 12:31:43 +0100 Subject: [PATCH] Sprites cant leave world --- Input/inputHandler.c | 13 ++++++-- IsometricMap/isometricMap.c | 3 ++ IsometricMap/isometricMap.h | 2 ++ IsometricMap/isometricRenderer.c | 5 +--- List/list.c | 44 +++++++++++++++++++++++++++ List/list.h | 2 ++ README.md | 11 +++++-- game.c | 12 ++++++++ game.o | Bin 0 -> 5432 bytes inputHandler.o | Bin 0 -> 6328 bytes isometricMap.o | Bin 0 -> 4936 bytes isometricRenderer.o | Bin 0 -> 3128 bytes list.o | Bin 0 -> 4312 bytes main.c | 50 ++++++------------------------- main.o | Bin 0 -> 3176 bytes spiel | Bin 0 -> 31544 bytes sprite.c | 1 + sprite.o | Bin 0 -> 3648 bytes tile.o | Bin 0 -> 1072 bytes 19 files changed, 94 insertions(+), 49 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 9b1cab6..02720f3 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -167,8 +167,17 @@ void mouseInput(Game *game){ while (current != 0){ if(current->data.selected){ current->data.hasDestination = 1; - current->data.destX = inputHandler->cursorWorldPos.x; - current->data.destY = inputHandler->cursorWorldPos.y; + float destX = inputHandler->cursorWorldPos.x; + float destY = inputHandler->cursorWorldPos.y; + if(destX < 0){ destX = 0; } + if(destY < 0){ destY = 0; } + 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; } + + current->data.destX = destX; + current->data.destY = destY; } current = current->next; diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index adddd73..302c605 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -19,6 +19,9 @@ IsometricMap * IsometricMapInit(int layer){ map->heightBounds = 100; map->layer = layer; + map->textureWidth = map->tileTextures[0].width; + map->textureHeight = map->tileTextures[0].height; + Tile*** tiles = (Tile***)malloc(map->widthBounds*sizeof(Tile*)); int n = 0; for(n=0; n < map->widthBounds; n++){ diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index 5a76f81..93ae01f 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -12,6 +12,8 @@ typedef struct IsometricMap{ int height; int widthBounds; int heightBounds; + int textureWidth; + int textureHeight; int layer; } IsometricMap; diff --git a/IsometricMap/isometricRenderer.c b/IsometricMap/isometricRenderer.c index 79f244a..82811f3 100644 --- a/IsometricMap/isometricRenderer.c +++ b/IsometricMap/isometricRenderer.c @@ -43,13 +43,10 @@ void IsometricRendererRenderIsometricMap(IsometricMap **map, InputHandler *input int i = 0; int j = 0; for(n = 0; n < 10; n++){ - if(map[n] == 0){ - continue; - } 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]->tileTextures[0].width); + Vector2 *offset = IsometricMapCalcOffsetForTileAt(i,j, map[n]->textureWidth); float x = map[n]->originX + offset->x; float y = map[n]->originY + offset->y; diff --git a/List/list.c b/List/list.c index 39ba93a..3e480e9 100644 --- a/List/list.c +++ b/List/list.c @@ -2,6 +2,8 @@ #include #include #include "../sprite.h" +#include "raylib.h" +#include "raymath.h" Node * ListCreateNode(Sprite *data){ Node *new = (Node *) malloc(sizeof(Node)); @@ -75,3 +77,45 @@ void ListDrawAllSprites(List *list, IsometricMap *map, Camera2D *camera){ current = current->next; } } + +void ListActAllSprites(Game *game){ + + // Sprites move towards their destination + float movementSpeed = 150.0f * GetFrameTime(); + Node *current = game->sprites->head; + + while (current != 0){ + if(current->data.hasDestination == 1){ + Vector2 movement = { + 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; + current->data.y = current->data.destY; + } + else{ + movement = Vector2Normalize(movement); + movement = Vector2Scale(movement, movementSpeed); + current->data.x += movement.x; + current->data.y += movement.y; + + // Change sprite according to direction + Vector2 nullvektor = {0,0}; + float f = Vector2Angle(movement, nullvektor); + printf("Angle: %f\n", f); + f /= 3.14; + f *= 3.5; + f += 3.5; + int index = (int) f; + current->data.texture = game->worker + index; + } + } + + current = current->next; + } + + +} diff --git a/List/list.h b/List/list.h index 2fda7d9..be3263b 100644 --- a/List/list.h +++ b/List/list.h @@ -3,6 +3,7 @@ #include "../sprite.h" #include "../IsometricMap/isometricMap.h" #include "raylib.h" +#include "../game.h" typedef struct Node Node; typedef struct List List; @@ -29,5 +30,6 @@ void ListInsertFront(List *list, Sprite *data); void ListInsertBack(List *list, Sprite *data); List * ListInit(); void ListDrawAllSprites(List *list, IsometricMap *map, Camera2D *camera); +void ListActAllSprites(Game *game); #endif diff --git a/README.md b/README.md index 5a2cc65..a4ec636 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,16 @@ Fantasy Welt oder Realistisch? + LinkedList erweitern + Sprites Animationen etc improven -+ Die Sprites brauchen evtl eine z-Koordinate, die anzeigt auf welchem Layer sie sind, wird aber recht kompliziert. Macht es sinn das Spiel an sich auf ein Layer zu begrenzen und die höheren Layer nur für größere Gebäude zu nutzen, wie z.B. Türme? + 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 -+ Movement speed der Sprites an delta time orientieren ++ Dokumentation anfangen ### WiP + ++ Die Sprites brauchen evtl eine z-Koordinate, die anzeigt auf welchem Layer sie sind + + +### Done + ++ Movement speed der Sprites an delta time orientieren + diff --git a/game.c b/game.c index c875769..020804b 100644 --- a/game.c +++ b/game.c @@ -93,6 +93,18 @@ Game *GameInit() } break; } + if(i == j && n == 1){ + IsometricMapAddTile(((game->layers))[n], i, j, 0); + } + if(i == j && n == 2){ + IsometricMapAddTile(((game->layers))[n], i, j, 0); + } + if(i == j-1 && n == 1){ + IsometricMapAddTile(((game->layers))[n], i, j, 0); + } + if(i-1 == j && n == 1){ + IsometricMapAddTile(((game->layers))[n], i, j, 0); + } } } } diff --git a/game.o b/game.o new file mode 100644 index 0000000000000000000000000000000000000000..8097acb5ea2fa5964ae3a7cf4eac5281f48663c2 GIT binary patch literal 5432 zcmbtXZ){Ul6u(^u3>@n~Oh{OCiJ${qS;sINBU)CvJ>rnbHbY`aDec>+bnWu`p8Ve` zEoM#Gm?#M!G{G-sAN(*4AEttvusHo<7GokBKcET8mSOxeKOoW6bMCvhySsZ&2i)ZK zp8GrJ{O&pD{&}yx{^rI4hlB9uAkUGx5l0CbSv4nnspusoWF?t(J$|oU$=q&LUcWO0 zcv#66Zm0l3$@r%{W23);IED5w?o+Y{`jq~&ExBAy>EC9e6Q(w6qS=f4QJHZnnbxB0 z*@H01_(~V==UW4gW!!PSlJ)m}@)Jz-*>y-t$?(bA`;^R?FEOfq|DYTSLfo?7KfF*q zET|_Jswea6MW>s(jIm_i8iI}mpBhGJ@eJoohPMTVcO-_?ouZs^IcHqT8FLw?#>*9{ z_^B%<*HwXQT;lrg>d?78vZ4Jl}+OJsi!PfGAl!R4o-U zl)XUDS*E3GbS>m4)#27$+9>k0d5R*&Qxq|tB4V?y(k0MAzsk$gM4WN*>I#sza0K)$ zBpUviNf?i|{q&Cj z+s5RWRI()7p3WM{kHIc~KTf}oWT%r)x&|(plE-y^fJ*5~*8ql+I-RcX?YVE}nHPYz zqDO(>&AkmkQr)uyez)~LyC^DrG4acF#yL3S7|i;U_5QT6on>rz7R3WJd7k+U1rNlK zPE9%L{Kw!$^=E?~lr`xHvTw)OM{ zD$^Y|6Tk0*noF^Kk%bhO6vH1`0h4bwV;!sWr(Nex!s)t@Zgo$^kO@Ki(?EiCp_5Jm>qGP*hd`4N*(KpmlX}dVyp+ejOjiq0>NKW z`bL3oa1MEHNe?)qD>p&0;==BPY$u3SYJmr1sW9 zJIQhz`=twTWLPc4Piq4heimb$<@PiHR=C>+-)@69+2AkP;HnLN!Uj*-;P@SB75|V8 zPCA2KsyjrQpxYgb=p@k8ytiRzb6{^{W2?U{(6+Oo*&iTX!DuudBF*t&xJ^B#8=6X5 zyS0d}`ZP7Dt5mVOE7++L`r8Z6y6ZUZV>sHc zgoon^hI9K8Ha^LE*?w5S(U$Xk!EnyQ?Z{r-zA)96T3RmUc?O>{F)7(v%z<X+>m8+=H>9~1H_2N@gIlPw(`6L;cxmmWL>y{?)4VJ>NEH0ajhnj`LTP!AIKp+thX zwYWJ5#k;!H80cbgU3J4dx{}^ZY}^?$+}&EdTh;XA;Db!+;XsE5*Q+`2L;jY7KOPBI z<~*C1N&NlB73}!%Az23!*3_FvOrZ!jKeTdGLVE-r^krow_#Y74Q}7@zzxn^*hG--- zdH!cWho%qe?*U)roVS)R{*%pr1!S?Ybn;LgNa$acM@(UeeNte2V&n1iz5$e67VW;Z z{v=soyAPaj%ggcKWd7wMDadkJUj+>3m;LWDe=q37Ci~+qv|9fPyyT$qb;k8aO772b ytGUsy7Qg?Ym9oI_E<#B5M^1U|0U`=IK%;+XO_Bb}wZ<^5{JkuGUGPOw_Wu`#(5$2Y literal 0 HcmV?d00001 diff --git a/inputHandler.o b/inputHandler.o new file mode 100644 index 0000000000000000000000000000000000000000..74488be25103101caf8bcdf6c52c0ebd98a47e04 GIT binary patch literal 6328 zcmbtYUrbxq89$CmLRX0Gj)A13k=A+1_@=p?eREfsyRCOYr;oqLXb zxbbbG?MT=6e82C{`Of!!=Q|gEptZN|^LUsX9`+I|Q4(eB8=ou9!+aWMhgdb+@jdtN z9^Lv|m!8?K8}i-NHgs!heTyW9bl;n~AzyrL$LH5Jc6@znzPjZdUqIU`vGwJAP>Q^- zh-?q}{+06`*S5xAByA#Z`;IRsj}oepxj+x6?hK>Y)nAd>aD)7FNy%ELIXXZ~3C-B+PyCjxmuMDMCWmH~#XVh-}< zbAbI9MRvv3^L7r1Eae~%SJWI3P0sddm?6b#4tDJvorAKPkMhT1UC(M;sLy!rb}4W_++IWibnD$=WM@#%R=iNhX)WKF)3dXL>e=ZH z8@paY)@?+Q*|d?hk_<qPMWO8+SCKmy;QAz~z1S8sY>_1#pg2fprviu~I4L_gB z7tAJG-X9K9ok*e7)H73?%$$JgCW1z;+vWn{S{tiW zu^?aK$CNTF^1LlsF8l5-yhH6>I&i-x^ETP?WZtD0^H~S}Qz+b|`rrjPlQUoCE3(;K zx~o)^YN=L~U}vdTlI|+MP-v!SBX#yW+@NPxYIMsljhkQOj7+Xd&-OsDvjQ&C30>jV zRgZi#&+OyX49hf%7H!2kSS@)(y^jP?L=@a&bDJ-T$U8`iA>Ku?D^!8=$QnwbgNXgK zBHcu%r1)X=&6RLSUOrM*AXnL*9%1Z}H zmejFpzYb%4xMux5TME+qo{a{y1#Vcfu$C>ntso`gt0cT2?t$?}qULeSFO2gm;i_aH zq}VSQSI4Vi=h|wxmWuZNlY*ce&=f%o(&ll5t});2Csev5$YVN#9yI_8f;rlzr7hjl zZF(siuB8@sOpvSL!=wgDUMEOmV0Hq>K?3k6F#CM~a1dW5oHt%Ygp?Evk|{BWk_|sQ zO-{j&?DQrkbCGf!67l_Z#nKkbsD0?Fwk_3ug@Wl=MDVzWsM7IjAQ}*RKg5QNpYNr} z24e3H+g*~%z`}kB&_)QL-nk@#zJ#DJA?R--=<~qygZkI(8`Ip+6DUQjlHOYvsc<0$klmlRqaset+}DOBD( z{WuDJ#T6>&Z{LE3I;K^EvFUFz_C^ak)7*S2Sl4qQ9XHd#lc5u#hGUIsPBp&y)rL^R ziBRKF8|Ug3`1RwVV4eAP4@1Yx5$451qsD$Q&l{c0GvW61o<%Okk!^@-gFvrViGY=0hLr}^LFQc!bhliIPcnG9i zJ*D{1V-M`}c!=j5#{rbX!!9@#KG~OcdES7X7x)Saga*$S-k0!{vp?s8|I!7&?SlW+ z1^?Iur#~^v`QvxNkGSA30;f3Ceg+F+@cP4BbCEymg0onBEN$x1_~3|<3=OcBWc2k; zW58tnXWGv;oo??x+uGWtb@z9lZfe*1*%`y^NTgFnB$0}lu|&KmAB|reG1_BsBSkV~ zfg@~`q}yl>)|N_)8fG#!&=DPL9tPX!HYUt;(r6nzJJcN;G4@DAl8M*I4^<16Nv<`S z7(JIrjtn*@63M|>JZfUqwiI`)DQ%jGcqD10QpVt3u+tbZqJ(yhC1a-1oHU@w+G8oR zEuJ!xW>a+F(w^md;$y;z{{EB+ZvVjWrT(F4Y=m7hCNCtS$w9fZZyA#n`}Dz^RO>=Sle+E;!X04X6AQ$agt>O5o%V{oN|< z|3bl4KX16;pSak6Nt{2YKNBwaoD1G8TAed)uejiUP;fe5a$grkYjpbK;kU1ymw+OF zO2MB}@ZT%AYX2_^{#ix-p9-$VbH8Yr&V3CiI2~!}|EPk~T_^FMD!6L@h710Yz-1gr zhsJZ_DjcK-TVXM)c(MrbiD)}T zkYY?V6fPq6q*oM9B{4C`4C%@*9I81QNAM6X+6O^=v^dt4xO4q_Fv#Zrs^17*vZ>Yt zNEQ+6OFs#tA?Fjq literal 0 HcmV?d00001 diff --git a/isometricMap.o b/isometricMap.o new file mode 100644 index 0000000000000000000000000000000000000000..0e949a8d6a43a3af68458952e6e6262afd176fd2 GIT binary patch literal 4936 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c index 5a4268f..a4689fc 100644 --- a/main.c +++ b/main.c @@ -13,23 +13,28 @@ int main(){ InitWindow(800, 450, "basic window"); - Texture2D amulet = LoadTexture("assets/amulet.png"); + //Texture2D amulet = LoadTexture("assets/amulet.png"); Game *game = GameInit(); // Hides the operating systems own cursor HideCursor(); - SetTargetFPS(60); + + //SetTargetFPS(60); + + // GAME MAIN ROUTINE while(!WindowShouldClose()){ - BeginDrawing(); + ListActAllSprites(game); ClearBackground(RAYWHITE); + BeginDrawing(); + BeginMode2D(*(game->camera)); + IsometricRendererRenderIsometricMap(game->layers, game->inputHandler); ListDrawAllSprites(game->sprites, game->layers[0], game->camera); - DrawTexture(amulet, 400, 225, WHITE); EndMode2D(); // Moving cursor Sprite to Mouse Pos and drawing it @@ -45,43 +50,6 @@ int main(){ //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); - // Sprites move towards their destination - float movementSpeed = 10.0f; - Node *current = game->sprites->head; - - while (current != 0){ - if(current->data.hasDestination == 1){ - Vector2 movement = { - 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; - current->data.y = current->data.destY; - } - else{ - movement = Vector2Normalize(movement); - movement = Vector2Scale(movement, movementSpeed); - current->data.x += movement.x; - current->data.y += movement.y; - - // Change sprite according to direction - Vector2 nullvektor = {0,0}; - float f = Vector2Angle(movement, nullvektor); - printf("Angle: %f\n", f); - f /= 3.14; - f *= 3.5; - f += 3.5; - int index = (int) f; - current->data.texture = game->worker + index; - } - } - - current = current->next; - } - DrawFPS(GetScreenWidth() - 95, 10); EndDrawing(); diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..5568617f78c5f130853370aa2fb68a8c615555c6 GIT binary patch literal 3176 zcmbuBU5Fc16o5}QbsIIiN$X#=S_A%I#g5sfAoW4=(FH&D*9|V0-R`EeuS5(A!&YgRA@6OJ==z+;S_d7rL z%sn%A@>-={9ZMuYN&=pOt(l|%YpE^0z|{gw!UU{m4*WHz``l9D3-(%9`$9OtzF>&+I9P&?tMB>}ipjf@EHf#HQ>l ziI=}sGcRIkt+{dwW)MM~1%_V|uV2Z$@%BHX5ufuu=)>p#_~L5Ia69eX*^Xt}X8~&E z@{_qo=2`>G8|02?hqe5nsR5r&ouAHY`NP`O!GHto!j-ak-Go=|={Xn!xIzq@&Et zVt6Tr&&F^whQA!cUyb4K#qf_}_(}}_Du#a(!+(n5f5vb+5~KDx9m5aAaOfEwOKbB1 znzj0gQnB7VQLQ#Av(4FJsa|QqF{|U93SPyU(PK0Py<@WSz;SH{>K)fBw!LDv+vqzT zkGW9pGQ%ku?KAU^J+MqDvH6a5)G_dVo)0F+ZIewOg=4PWW1iD#&oIkm4s(KW6CXGF zJUzuK`74$w5|ANSb=GdQ9mXu^*#j4A><>IR!xme%;h4d!#=OAgRLArdfI_P$8-U4V zX~9i47VJUSEO%{};ho^GxOZ%X(hEFS_}ln5eicaW=hoo-Nuw_LL50&hBl)z#Cly{+ zct+tbDV+K)^VkaCqwseXzE|O&EBrQv|E6#{BV~Si{z&KyrH`lNb$p&kh~J5q>|oNidp%~M&9XhF;kW0I>)|^f=JVD->pOOzIo=}1 zP$ss}e9^%dYIEuTqvSA{ZZ&*@7m$(2b32#?zEY==_L6#8z)O{7k?^|M$6L`zs{FE0 zFG(K8i+K2p_PdB9A63HmF*H)n{~AAqv6ORLFL5r{r*}`4@cKv4NGz{9p`H{8sXkR? zyc|ntl)CEoc(@>84ExR?r>}U}Jug5`#K}SKzns(gKsm$lCj}@-M=^%u=_!or|7qbU z`%L|(e-AQV@~E|Gsb#VL4KdQ$NdE@I@su;%dqnU8{gFd?G_+x%DbU#$72g*Nc|6P3 HPdNTxU6cmV literal 0 HcmV?d00001 diff --git a/spiel b/spiel new file mode 100755 index 0000000000000000000000000000000000000000..3017c3438c5f9e9e550328e78148d4e159b3443b GIT binary patch literal 31544 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

QUV`MwXHNM?KqH?>{aAAHOF-vN zo-=+PcF6mLoP>76venwv{GC%?JdF4Rl;#L=TTaru9rAKtR>BcShf6sLpK{2{eI5z_ zX|}AHLn$Yz2OaYAJ(h%%C8K~&|2;3{W&g{43kmnT*e}(-?2woH#uCc&TP44<{$D!e z<^HmS^xUgnGJYiOE!@yvtr({EKD0dN)yXe$3EzjTN0FEN)v5I$;*xwE%ixku`;ip8 zvVOU*Ezj+h@kis2E-5Gb@q3_=i*0%FUa$W);>LII9R8Q`64Eawsq*%I<3=WK$1BG& z^-Fvbgh`jIUp~irH*yYHkK}ilqfHU@mq`WzrTi5Rx|CO;9eWC|f1^NXgB}-cgV7_u qv`6M&daWpJ$E|(&oA~Xyc4FbUtXDG9YqMPPYonawe20Jo)&3Kh>yIx0 literal 0 HcmV?d00001 diff --git a/sprite.c b/sprite.c index 1c4fbad..4ff4670 100644 --- a/sprite.c +++ b/sprite.c @@ -33,6 +33,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); } void DrawSpriteToScreen(Sprite *sprite){ diff --git a/sprite.o b/sprite.o new file mode 100644 index 0000000000000000000000000000000000000000..64532a0e244379ce47cf9e89b063c453ff245c6e GIT binary patch literal 3648 zcmcguUuauZ7(YqcEzYjV#vUdsGcT1ny4dPKCpvE0ragns&9>=eZf0q6>;9xkO>S^g zHid4o!?n6cK_7;Xf*{U^;)`uJ*6po=4@Cr{R*6n<(g%YG@%Np3PIG&kfGGIUbI&=y z@9+7(@0|3F_|Smg=VO|D>>#V}G|JfAmipR|OM|tut!y>4`_BXyKl15cBV1gpa#6a^ zMWP}Ouk?#}ncMOEHk+=dL+@6g$>#YRVvr*7nF z8F^Ylp6+D0-O{-SVqC;4J##Ryyc!A{L7YftPwv`iheL$v({+ay2)S#C&s;=?OLw5P zbVwlgi_)Xy10z8WODE=~HL0&*m~`M3a%meKSLQ;OKSms}&)6)5-7kK)x)>AR^ow$5 zt;T9GaSO|>;LuXrTIM#hjo{4D0QC97eASP7!7pt0hq~r;B#u~1Be76dl_KDF5UHWD zlZ&6YjZ{7#76aja@qNFzEf2`2Z$*Co0HNHd&DKCy7sWCnt1)p?E?7+< z=g5|0`TvSgeC-a9d?N@0nLbVx(seyPr@CX-j}tg80(K?CpKv$D60jf_NPxUmj(@5Id7vHIK_(nV*t&!Vx%~nX z-p<8KLECT=UeETu@lR@>%T#|Q{m4Gxc7km7w#i!So$`=?hwbY;Y~l9tH4npKF%}jJ z?u1?A_Q`7fvOt$!l!_>=h(!5|h)xzR3Uv$yTnM_=729YL3-iA`>|6S>`p2?Zu;VK} zdN}CRReBq6IFbr_q{{21P$|4MS|?1qvfk0_P_4fOSn8XPkjL`bEbE+z;1AE_U|-+U zkv)m=QqC$x4n+4yyZ7~!6Sp$ z51|O)Qy4_Q(MQX~rvv`)$cp3RGVwq+=%Z!)A2|YqH6RM9h5cS@z{1&xyO9EGr(Vws z$SkeLXcv%KYlLs!2ugW6(MAfe2R4F00&LR;oPGwkyW*F*2S#MiV>F7N6{iYkEHj#BBXSYT zWLR===tysDD0yUHU?e`89F6r3#glBRWEEL|A@!;wIGR6}FJv?9P%%GgT7@&|!>Or6 zZmN(!Yo;wJH)@`@N(Ga_ZqAxu$z;(=rOzePr_UuPQfIR3Y>lJ~rkPVQ^cBpMWwOas zHk+rs5Iv+?jjjOQvA^gM1MOBg9kH>yd6W!zd{B;goiLRzFpvu*(x~mX}v0#*;Ld*RarEXvQjKMUM#X`A@6L``N>H$2VO3Ze!?5LPu5%Q zU(S`HXpSkfU|oO?Su#&2Ckm-aQ$_OMrU=xjHr|_V03&Lprg4$3qlR{2K`A#hpyslA zYJy7PLEyC1FOdAF68lFKuF8y^LvfE^jeGrffk8I^t$q)5$)>v}uw~jm{m{F~>;C|l zgmt@xupUXS`x?E$f;l;DT7agjII S^wu=e=j04zIn&zLtN%9w91?c` literal 0 HcmV?d00001 diff --git a/tile.o b/tile.o new file mode 100644 index 0000000000000000000000000000000000000000..ab5577697d3b561c8f279c63aed45d60cd7d22fa GIT binary patch literal 1072 zcmbVL%}T>S5T11F?@4chmwHmcE{W8G9wbm|FCtzFy(TfJ*!+-ez+Utfd=wv{ujCWx z%yyS9yQ!c9Gqdx}d^7u#ypL{gI-UnwJh+Bcq)~uR0}Le`!Y=FpjEBRk-pM3xa?$iI z`GEWVppjAVcJ6b3z=P8zE?Hf)d#D?z1t%kMkn0jLO7GZ0q zF}W+3z+lq_5n;F^N5u0iQo>0p(56^R>Ugq+XkKGcz#OcI^mrTd4MzRVq$TdF|+|rcghdOZg8~v{0US lS_wK(IR0_Y-BIdZZM1EkqDr@q*1mg6Ocj4Bt5(K7{|^jnI4S@D literal 0 HcmV?d00001