From f3924c1cd11f9b1d5053691a651de79ab9a31563 Mon Sep 17 00:00:00 2001 From: JanEhehalt Date: Sat, 26 Nov 2022 12:55:42 +0100 Subject: [PATCH] Game struct working, needs to be added to function parameters --- Makefile | 7 ++- game.c | 112 ++++++++++++++++++++++++++++++++++++++++++ game.h | 21 ++++++++ game.o | Bin 0 -> 5256 bytes inputHandler.o | Bin 0 -> 6264 bytes isometricMap.o | Bin 0 -> 4904 bytes isometricRenderer.o | Bin 0 -> 3096 bytes list.o | Bin 0 -> 3200 bytes main.c | 117 +++++--------------------------------------- main.o | Bin 0 -> 4192 bytes spiel | Bin 0 -> 27400 bytes sprite.o | Bin 0 -> 3520 bytes tile.o | Bin 0 -> 1072 bytes 13 files changed, 150 insertions(+), 107 deletions(-) create mode 100644 game.c create mode 100644 game.h 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/Makefile b/Makefile index 25a90f6..9b17783 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,8 @@ FLAGS = -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -spiel: main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o - $(CC) -o spiel main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o $(FLAGS) +spiel: main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o game.o + $(CC) -o spiel main.o sprite.o inputHandler.o isometricRenderer.o isometricMap.o tile.o list.o game.o $(FLAGS) main.o: main.c $(CC) -c main.c $(FLAGS) @@ -27,5 +27,8 @@ isometricMap.o: IsometricMap/isometricMap.c tile.o: IsometricMap/tile.c $(CC) -c IsometricMap/tile.c $(FLAGS) +game.o: game.c + $(CC) -c game.c $(FLAGS) + clean: rm *.o spiel diff --git a/game.c b/game.c new file mode 100644 index 0000000..16dc8e1 --- /dev/null +++ b/game.c @@ -0,0 +1,112 @@ +#include "game.h" +#include "stdlib.h" +#include "raylib.h" +#include "sprite.h" +#include "List/list.h" +#include "Input/inputHandler.h" +#include "IsometricMap/isometricMap.h" +#include "stdio.h" + +Game * GameInit(){ + + Game *game = (Game *) malloc(sizeof(Game)); + + game->cursorTextures[0] = LoadTexture("assets/cursor.gif"); + game->cursorTextures[1] = LoadTexture("assets/cursor_down.gif"); + + //game->cursorSprite = {&(cursorTextures[0]), 450, 225}; + game->cursorSprite = (Sprite *) malloc(sizeof(Sprite)); + game->cursorSprite->texture = &(game->cursorTextures[0]); + game->cursorSprite->x = 450; + game->cursorSprite->y = 225; + + + + Image worker1flip = LoadImage("assets/worker/worker-1.png"); + ImageFlipHorizontal(&worker1flip); + Image worker2flip = LoadImage("assets/worker/worker-2.png"); + ImageFlipHorizontal(&worker2flip); + Image worker3flip = LoadImage("assets/worker/worker-3.png"); + ImageFlipHorizontal(&worker3flip); + game->worker[6] = LoadTexture("assets/worker/worker-0.png"); + game->worker[5] = LoadTexture("assets/worker/worker-1.png"); + game->worker[7] = LoadTextureFromImage(worker1flip); + game->worker[4] = LoadTexture("assets/worker/worker-2.png"); + game->worker[0] = LoadTextureFromImage(worker2flip); + game->worker[3] = LoadTexture("assets/worker/worker-3.png"); + game->worker[1] = LoadTextureFromImage(worker3flip); + game->worker[2] = LoadTexture("assets/worker/worker-4.png"); + + game->inputHandler = (InputHandler *) malloc(sizeof(InputHandler)); + game->inputHandler->pressed = 0; + game->inputHandler->rectStart.x = 0; + game->inputHandler->rectStart.y = 0; + game->inputHandler->cursorPos.x = 0; + game->inputHandler->cursorPos.y = 0; + game->inputHandler->cursorWorldPos.x = 0; + game->inputHandler->cursorWorldPos.y = 0; + game->inputHandler->cursorWorldTile.x = 0; + game->inputHandler->cursorWorldTile.y = 0; + game->inputHandler->selectedLayer = -1; + game->inputHandler->cursorTextures = game->cursorTextures; + game->inputHandler->cursorSprite = game->cursorSprite; + + game->camera = (Camera2D *) malloc(sizeof(Camera2D)); + game->camera->target = (Vector2){0, 0}; + game->camera->rotation = 0.0f; + game->camera->zoom = 1.0f; + + game->sprites = ListInit(); + + game->layers = ((IsometricMap ***) malloc(10*sizeof(IsometricMap *))); + + // Test Layers --- + int n = 0; + int i = 0; + int j = 0; + + for(n = 0; n < 10; n++){ + (*(game->layers))[n] = IsometricMapInit(n); + } + + for(n = 0; n <= 10; n++){ + for(i = 0; i < 100; i++){ + for(j = 0; j < 100; j++){ + switch(n){ + case 0: + IsometricMapAddTile((*(game->layers))[n], i, j, 0); + break; + case 1: + if(i > 35 && i < 50 && j > 45 && j < 60){ + IsometricMapAddTile((*(game->layers))[n], i, j, 0); + } + break; + case 2: + if(i > 40 && i < 44 && j > 50 && j < 54){ + IsometricMapAddTile((*(game->layers))[n], i, j, 1); + } + break; + } + + } + } + } + + printf("ALARM\n"); + for(n = 0; n <= 10; n++){ + for(i = 0; i < 20-n*2; i++){ + for(j = 0; j < 20-n*2; j++){ + IsometricMapAddTile((*(game->layers))[n], i, j, 0); + if(n == 9){ + IsometricMapAddTile((*(game->layers))[n], i, j, 1); + } + } + } + } + printf("ALARM\n"); + + // ------- + + return game; + +} \ No newline at end of file diff --git a/game.h b/game.h new file mode 100644 index 0000000..1ed88dd --- /dev/null +++ b/game.h @@ -0,0 +1,21 @@ +#ifndef GAME_H_ +#define GAME_H_ + +#include "raylib.h" +#include "sprite.h" +#include "List/list.h" +#include "Input/inputHandler.h" + +typedef struct Game { + Texture2D cursorTextures[2]; + Sprite *cursorSprite; + Texture2D worker[8]; + List *sprites; + InputHandler *inputHandler; + Camera2D *camera; + IsometricMap ***layers; +} Game; + +Game * GameInit(); + +#endif \ No newline at end of file diff --git a/game.o b/game.o new file mode 100644 index 0000000000000000000000000000000000000000..9764eaa6ea7ec89dac16f7b53b307a15db92fca7 GIT binary patch literal 5256 zcmbtXZERCj7(QJG8@R0nXF^~hP2{5ncWK8k3?g)tZkJeK8C$>@ET!$XN{Fo8k_(&ELHPi5epQtfm8Ht+xF>0*ud+s^y>D|3#(Kk6e z?|I(u_k7&$jL+XuWw8)W7P6g`R~#jzc3GMCP}V~lNIjXet^TuD&i%4qe)I7)z{7IB zdaV-}Ip=%io}Bm%*hi=j>vMAc&^dYJY*(>Zlt(se=#(bSYiRz`K@{e!a&CWZ{_J5` zz=ZmLH;sy66dkwObbMKD9#462>BeZZ2?`a-B6g*tjdB{Gl zEvi?F>gA$Zt}uJgA?tQ3dsFjuPw@4P&exOoI-AivoD)10bRK9nlSOsBsFoXQkd4;` z`@egkv;8`W2e;Y)V~3d(xLJK+cgM9lZt31+V&r?3DI5S%)PlL^@242&zvJHO;aroi_KH1uWC=D88QMS*_ z&|K&y7^Y>J#!P#M^J?Y`EQh~EGx)S*PiLOBjeeqWZrg>+lpAigjgD&EHroZv>q&K+ z1(@9n-kn1)!QTyMeA&~(Ekirt@8&aY3-tyCm(rcJ7G^DltZ&!?K0>z92mcg{SziWL z8CZRVE3w&2ZKEFnCXc)bKC~ksH2*eWy!lx2l#e!lR$XXj=#)27+lnP>>q3pivaq1> zrQmIYmi=U#Z`gKTh2w(7=_DE3`EHcx3T?qdC={yYvFA}(-c(0F)5;?4lI0Km@%3GZ z6-=iiN_t~RO{J45sXy9Ri3GyQV+j#HmP{Ruq&8|(vs)TW^mB_!QH!}~lex%cE^4Ks zc7J>K9&9=J(F@tb$m}4UUhh_iv-gOaP*g{o)GE1}-6~zVhgw{ct5tG8r{Sa;EbTDx z)8DzbmsAlliI^1zQlmBz%gJtHIc~SCs;j9jz%H!;yot%atpUc@V1K*HTfbP&TCF#0 zK#K`YCfw+1@;iM~^eR@vUtpLM&#KbGN~@^EaAl=c8R3}le6kYbq^)Ghd}TnaWbr&4 zJuDaUr@a9Te?DTL^|T%UBV01Ux0>L)Oz?vyc-#bk-2{Kf1pmMUzhZ)u{$M;Jg-9n% zyAx4`1UmiucDDNi`#L)I`+5RB?K}Ox0Eq`v=R&* z4TJ`c2Ks{07?eS2Et~Of)WP^09u}l+42OF|PaDVKB2q&AdKer}YcSq3s^7rYZ?IXf ze^tQ6xZg3H`?>x541}a)$G`9*`le6!b+u z>jYf%-2daJ~q*x5pcYxybtTK0YLgb zY-G58ACC#R=;yl55AVYbL0`;&PQXP!PWCjS7~k@Xm>iIc;re`D7I5)gy^4xJIEnZe z!?}O_uLo&D(8o89_vgNVi+)-#IUp1-hr#u~7x1SAyoEins4wCf6Z{s#d7jt74(X1d zkKZ&NcP0B2==~os!9QiV-v4KUzUcq1fIlO|bpVfqesGjXN}q@;!6QUUD=BRr;9M#a z3rY$+heQeol^~Ihq|-!7CACE;8IMO2AWI~bhy>sAX8Mw`b$>#Y22;twNJ=>YHs~ob z5a>(6Gh7P&e;5ZC<5gj8F1hkBj(-QafL$xTB&&eKJ@Awejd9}P0qQ~_&{HtbmVc>N zAPBS$2IA~kBSfj5D{_F%`uNWSj;jCF-VL_svtln{ZD;ZC0WT6Orv$YDhxV=#qA~ZG zJ?1A8&!5jbLCASg&*Z1eJl$?E!lSCspW8bsoR<5~;n#q{_`|0H2ifqtLT`_1`n?B;3}Qf_&$X%aSKn)V`;6=h NEPthBsWE!{e*qpcDc}GA literal 0 HcmV?d00001 diff --git a/inputHandler.o b/inputHandler.o new file mode 100644 index 0000000000000000000000000000000000000000..0dfacfa6526dbee3f63a0f0536c595caa0d91e68 GIT binary patch literal 6264 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 O>VGX;cxexQ`%eIrBa4s# literal 0 HcmV?d00001 diff --git a/isometricRenderer.o b/isometricRenderer.o new file mode 100644 index 0000000000000000000000000000000000000000..815273816dcbe8b60f8aeff4130daa2e2359c3f3 GIT binary patch literal 3096 zcmbtWO>7%g5PoZ$)P<(&pdu<2!6H=DqI5}6B}l6x=jS;uQks-Bh9UvMaW+jL{?U3Z z5~M(o3u3iNl@n_3aN-rolTlY#U?FSTM>`r;O;pPxMsHvc!L)8_3V!i3AtMpeVrL} ziy6cS`otUSW%04CvKXM-W$}fqcmfo4B`ts!&b^eyvr7==x)~%>5>Dna6(N1RZe5FS z2P|Pg)30Xa7jMw~$_4M+Ya(0ERyNhdBz4CzA z33&u41nsO?@%&IKTt}Jy12Y6>JmY728`Gcl8@&NN6wtpJ(7!N?$1)pIh86^a7S7V5 zxct*!)v7@^Y8m&?{9;>%7KPisOsptmXdX=SXX%D`^%F2%U1i3Ll`kO^SC5#UUfZNO ztN#1DVS>9)da(34c8#qZ`5ev6%!M2jpFs_-JOX;VW#2kl_MzFb=6=S~76dZFc^3Ve zWxw+>Gn^4F?3YQVQWdYf)H;xH!DpN=z&-V^^i8WwI^AiJt+9j`!p_1CcAyc!TSHN7 z>461tcm#d63(V1-T}`Lk|1dD6+Q1ZXV45Fj4v;~&Sv1G=9LttGSW9!u{>Qm$dLLtH z8%oea3*z$QFhm3^z8W}tzg;TTf z%hHsRRF!B%Q>LU)Iv&+#6LD!Mm53>tIvX8R;!}#Mr~_)`weykW!-Nd>_n(nYgeTK+ zEiLuPr{%6w-Dy+me&dNQx$CstebU0=D3g5f8Gv;ctih2mfq`8^%nJ+Yh_w;n^)VvM z2ZUpX4)|AL=p?`&;JWugCiHON9Z!FI8_jsV?+IXK*#x=GTM&4kP0C~1aCO6mA${c6 zYJ&m*Z_{sH#OXg>@kRBhM#Z#LqmX*oxd&j z0E7NrHo*4}xIgCSB)fk0-UmvXciP?hm-in7CoHu){{r`yoI!zi=l=>|c)r`e!u?+c zos-=DIE82$bQ%Hw3-7;O7wkWNOWOW+|C^nSp)TQL2U_CA!8d+4EVn<#boU-0Qs4u9 Y9R&xuYuy35X8saCsP;v~W4QhQ1~<}%_y7O^ literal 0 HcmV?d00001 diff --git a/list.o b/list.o new file mode 100644 index 0000000000000000000000000000000000000000..11ae7d03aa791a499ddf2b0243a66f7a457dbdcd GIT binary patch literal 3200 zcmb_eO=w(I6uy(G=@`>wETWN0c_5VuB+rQkNbq`p7dT*c4a5lrn*dewze)P|x75rjd`PHz3%RAT7Q0|a{ z6=b_s`y__HW3`8^_6rFsh*`mzgw@U^Ax>Dqd=m16)rRHGjKRGGpHlpHH}oA~jd&vb zhtH55-){Ffh1nZVW=8kMU-?!E2?!la*nK^ujQNi33^K;fS1xy%e_h(}Slbc12L5e$ z-L`_8q0@;>u6F!~p+i>1t`*>DiY+8|n?jOcCSlE8_n+)rNSwhH?#sBLf+4gp<=A0B zsohBdk{z}vr20`wlrDVt|1o#3zYCHRxz7rWXMqgG1^h$uQ^Jm)D3or2{6nV^F$eQc zUQ70B#`}png=&tQ;7yZI{6NXl)QT3BEGXVmS;Bw!QSR0z@FbK!^vX%m1{&h0ZDcZX zmZgqWj7!F`%H-4tdyTQB#l@$LRI%*WJ>Qr!XU+8VjL)T+cb-U_=~;7TQs6vGb^r?< z;U0{oQ$>ar><|{mAbLP7EcW&?i(O2{j*K2mY~urb1UL<%GELdBA&phFA)yv(A3j^)zg1WIOsS{N?+${o*Rz~)k;`DbV3*q z7D4p39ALliN2qWokuMK$bz6g8aeljl7)fz{+fn$zJ3(&GyXX#GJpAZ|v~e~Zk_1Z; z4u|sRH3Rk#2Gw7uX#i39EO3gW{CRDGW$$8t;x70Z8Rr&OB2_CJJjMS=UUi3*pe6?4 zt7uRnUURIQ7=*Va&T9?q1B|HrS#_i3nQJVMWzltP&pFjtcUWmDe|lj)Upk%3tz=hA ztMd!_Y>CzEYPBJ33+_hU%Qf5!w!6-nzSm++LMlAa^YxbFdO5dI_d@c5z4oRQHw6Bi zYhReJR#)KaIW0z_;8z;{uct~_T%7{{r3`A_V-Eo$B=zE{vRQH1iXs#xvU%I6UHmDKKi+Cgm8LmR2&05 z5vipKmot3s<7FwI({R;STNQfC@ebv!$)mO}HZPq-yjMa0+dR}p^Q?*Ucx#%%- z-S%u|mRl`mx(y+$HEJ~njbYXso@3&Too;#58A5)&?wd`w(M11j!iOR`=SvmWt~oN3 z|F#%#r;_L|LIxPo&*963EX&7rG#$a9nq@G;^qUNrkPg%@#HyESLK;6Nas7onssqwq z-+xNR)Xo2`|BT#UJ0?^9_sf0NqVGQ^{nN@ou8+%vD8Dc%f3+?^sraznS^Yp#soO3C zr(Xp<|8vsckbY`W_pjtPz)(!xe@ptS??l<_{?vt0_3z4`s%_~=^{2n!%3sw#YHxCR riGqT<^1$@g(R-o$Q_QHVD#-r(1o|-P_eb@O@_%1$;8WOe_ATd literal 0 HcmV?d00001 diff --git a/main.c b/main.c index 1e793c9..2e10499 100644 --- a/main.c +++ b/main.c @@ -7,105 +7,13 @@ #include "List/list.h" #include "IsometricMap/isometricRenderer.h" #include "IsometricMap/isometricMap.h" +#include "game.h" int main(){ InitWindow(800, 450, "basic window"); - Texture2D amulet; - amulet = LoadTexture("assets/amulet.png"); - - Image worker1flip = LoadImage("assets/worker/worker-1.png"); - ImageFlipHorizontal(&worker1flip); - Image worker2flip = LoadImage("assets/worker/worker-2.png"); - ImageFlipHorizontal(&worker2flip); - Image worker3flip = LoadImage("assets/worker/worker-3.png"); - ImageFlipHorizontal(&worker3flip); - - Texture2D worker[8]; - worker[6] = LoadTexture("assets/worker/worker-0.png"); - worker[5] = LoadTexture("assets/worker/worker-1.png"); - worker[7] = LoadTextureFromImage(worker1flip); - worker[4] = LoadTexture("assets/worker/worker-2.png"); - worker[0] = LoadTextureFromImage(worker2flip); - worker[3] = LoadTexture("assets/worker/worker-3.png"); - worker[1] = LoadTextureFromImage(worker3flip); - worker[2] = LoadTexture("assets/worker/worker-4.png"); - - Texture2D cursorTextures[2]; - cursorTextures[0] = LoadTexture("assets/cursor.gif"); - cursorTextures[1] = LoadTexture("assets/cursor_down.gif"); - - List *sprites = ListInit(); - //ListPrintForward(sprites); - - Sprite cursorSprite = {&(cursorTextures[0]), 450, 225}; - - InputHandler inputHandler; - inputHandler.pressed = 0; - inputHandler.rectStart.x = 0; - inputHandler.rectStart.y = 0; - inputHandler.cursorPos.x = 0; - inputHandler.cursorPos.y = 0; - inputHandler.cursorWorldPos.x = 0; - inputHandler.cursorWorldPos.y = 0; - inputHandler.cursorWorldTile.x = 0; - inputHandler.cursorWorldTile.y = 0; - inputHandler.selectedLayer = -1; - inputHandler.cursorTextures = cursorTextures; - inputHandler.cursorSprite = &cursorSprite; - - Camera2D camera = { 0 }; - camera.target = (Vector2){0, 0}; - camera.rotation = 0.0f; - camera.zoom = 1.0f; - - IsometricMap **layers = (IsometricMap **) malloc(10*sizeof(IsometricMap *)); - - // Test Layers --- - - int n = 0; - int i = 0; - int j = 0; - - for(n = 0; n < 10; n++){ - layers[n] = IsometricMapInit(n); - } - - for(n = 0; n <= 10; n++){ - for(i = 0; i < 100; i++){ - for(j = 0; j < 100; j++){ - switch(n){ - case 0: - IsometricMapAddTile(layers[n], i, j, 0); - break; - case 1: - if(i > 35 && i < 50 && j > 45 && j < 60){ - IsometricMapAddTile(layers[n], i, j, 0); - } - break; - case 2: - if(i > 40 && i < 44 && j > 50 && j < 54){ - IsometricMapAddTile(layers[n], i, j, 1); - } - break; - } - - } - } - } - for(n = 0; n <= 10; n++){ - for(i = 0; i < 20-n*2; i++){ - for(j = 0; j < 20-n*2; j++){ - IsometricMapAddTile(layers[n], i, j, 0); - if(n == 9){ - IsometricMapAddTile(layers[n], i, j, 1); - } - } - } - } - - // ------- + Game *game = GameInit(); // Test of the IsometricMapUnproject Function //Vector2 asdf = {500, 600}; @@ -124,23 +32,22 @@ int main(){ ClearBackground(RAYWHITE); - BeginMode2D(camera); - + BeginMode2D(*(game->camera)); - IsometricRendererRenderIsometricMap(layers, &inputHandler); + IsometricRendererRenderIsometricMap(*game->layers, game->inputHandler); - ListDrawAllSprites(sprites, layers[0], &camera); + ListDrawAllSprites(game->sprites, *game->layers[0], game->camera); EndMode2D(); // Moving cursor Sprite to Mouse Pos and drawing it - cursorSprite.x = inputHandler.cursorPos.x; - cursorSprite.y = inputHandler.cursorPos.y; - DrawSpriteToScreen(&cursorSprite); + game->cursorSprite->x = game->inputHandler->cursorPos.x; + game->cursorSprite->y = game->inputHandler->cursorPos.y; + DrawSpriteToScreen(game->cursorSprite); // User Input Handling - mouseInput(&inputHandler, sprites, worker+4, &camera, layers); - keyboardInput(&inputHandler, &camera); + mouseInput(game->inputHandler, game->sprites, game->worker+4, game->camera, *game->layers); + keyboardInput(game->inputHandler, game->camera); //cursor Positions test //printf("Cursor Pos: %f %f\n", inputHandler.cursorPos.x, inputHandler.cursorPos.y); @@ -148,7 +55,7 @@ int main(){ // Sprites move towards their destination float movementSpeed = 10.0f; - Node *current = sprites->head; + Node *current = game->sprites->head; while (current != 0){ if(current->data.hasDestination == 1){ @@ -176,7 +83,7 @@ int main(){ f *= 3.5; f += 3.5; int index = (int) f; - current->data.texture = worker + index; + current->data.texture = game->worker + index; } } diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..941bd31173a8c4a4a876f2ac192f1a6f512322c0 GIT binary patch literal 4192 zcmbuBU2GIZ9Kh##2t^BfMN||lr-Er?Ij>Cz+mx zEfVT}N8QU(;BzeSa+@Lq#H6QZ(8>Kqc*t%`q1EOEB@}B|P#RV4C*}2&AyhVaLDgmv zZdql*b+Md6DM}~C_IgGivr4?8F!L^Vn!4Xo_wMpo@?=mx%Ry7POzm{-rbE0#T76<0QlT~n4$^%un+Vp~QM4P4)FW`hGp;qt6 zGkQx2;UOlslvk#1DMwgXun+a&58sBvY$2=Zp+$-bS|QIhs9=^(&}b35i5cq7(5Z4A z4S0`<_3%H?fU>2eMKz4ONegex5M{jeuS$h&LSb(3{QXc5KlzM#ir)ffO3HZV4{kV# zRny|jcdlH-9>|cMODDp|(`M2-PCCt0#@G?wI*h@>ov7bD{>#3}rqwDTud1Y{t7}KN zd0;4SI{EPSNJk{Ptu4<+ZKv9!k!VMxt;OSH1^9-b;cE2k9w2pul#s#gz+^pt22SoL zfw53vW5cTYbFj)=fN$cuc{JA6hTf{{TC-9s1cN^Y!HO$=9=K5}$nTX}>R`>A5Ni@u zE%yqtSuAHb3bI+%;;Zh3%)WNfL9*J%e&szJBdn9^XKMot&mpdJwLAr&7LWMw=X`j~ zhwt&>M}2t4hmZO2_k8$AKKyeZe$9t}@568S@C6^f0uEfQb#CA`Lt$(n;GuEpOl3ixnIp|#wJ$lx_A))D{(UrGz zmQCV@)34hp!|C1|Cov6Z~z7KO*tZB#z$}!u|`+#d?bONh<;njQ=P!VLvAE$0Yua z#5YR3B5`~li8$-{s{+;dZWA~7CeAVM8j#eJWLMz@K2=pO<*hPDM=j9 zlHgxSJS_365`RMCKS=yZiK8zH&X+F<8 zGL*}ah;4a;gq6)2Cg@DdF(UA7ur24n9l^&bGanhXtx>~vPJjDiavb4egWBynFHt@xm%k~n+QJx>;%OdI*Y&&$&KPmu!9`*4T^^0eW`&YS>v;T7b z`@s>vva0JB{^6>?)%Cvy`dahc{npWHG#mgH+>@)5^9tn|O@LIXiZ;t1u qd}A>jeuY>2W6bKk2SlRW&=3oa5Tt6z?)qB(BfNgcb6fna_Wv6}Y$p5w literal 0 HcmV?d00001 diff --git a/spiel b/spiel new file mode 100755 index 0000000000000000000000000000000000000000..e6b51df137770c81177b7c359ddd6f4e44e34fbb GIT binary patch literal 27400 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 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