From 666961f6e1c1d88b3d43c5a226dade7dacd19e4d Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 4 Mar 2023 17:08:50 +0100 Subject: [PATCH] DrawRect for world added, scaling of Textures on selectables, some new textures and links to textures --- Entity/entityacts.c | 5 +++-- Input/inputHandler.c | 7 +------ IsometricMap/isometricMap.c | 24 +++++++++++++++++++++++- IsometricMap/isometricMap.h | 5 ++++- README.md | 15 ++++++++++++++- Screen/screen.c | 5 +++++ Sprite/sprite.c | 4 +--- Ui/selectable.c | 11 +++++++++-- Ui/uiContainer.c | 8 +++----- assets/grass.png | Bin 7528 -> 7580 bytes assets/mapobjects/baustelle/idle.png | Bin 3314 -> 1951 bytes assets/mapobjects/building/idle.png | Bin 11269 -> 14241 bytes definitions.h | 13 ++++++------- 13 files changed, 69 insertions(+), 28 deletions(-) diff --git a/Entity/entityacts.c b/Entity/entityacts.c index b1b317a..6ebd5d0 100644 --- a/Entity/entityacts.c +++ b/Entity/entityacts.c @@ -82,7 +82,7 @@ void LumberjackAct(Game *game, Entity *entity){ EntityMoveToDestination(entity); } else{ - printf("%f\n", entity->task->progress); + //printf("%f\n", entity->task->progress); // Is beim target angekommen if(entity->task->progress == 0){ // Angekommen, noch nicht mit arbeiten begonnen @@ -92,7 +92,7 @@ void LumberjackAct(Game *game, Entity *entity){ else if(entity->task->progress >= 1.0){ // Fertig mit arbeiten, Animation zu Idle zurück AnimationChangeType(entity->animationHandler, AN_ENTITY_IDLE); - printf("Fertig\n"); + //printf("Fertig\n"); StaticObjectListRemove(game, entity->task->target); entity->task->target = 0; @@ -101,6 +101,7 @@ void LumberjackAct(Game *game, Entity *entity){ } else{ entity->task->progress += 0.2 * ACT_TIME; + } } } diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 68222ff..dfa6981 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -61,7 +61,7 @@ static void SelectEntitiesInsideSelectionRect(Game *game){ // Jetzt neu anwählen while (current != 0){ Vector2 currPos = {current->sprite->x + current->sprite->texture->width, current->sprite->y + current->sprite->texture->height/2}; - IsometricMapUnproject(game->map, game->camera, currPos.x, currPos.y, &currPos); + IsometricMapUnproject(game->camera, currPos.x, currPos.y, &currPos); deltaX = currPos.x - game->camera->target.x - (rect.x + game->camera->target.x); deltaY = currPos.y - game->camera->target.y - (rect.y + game->camera->target.y); @@ -80,9 +80,6 @@ void mouseInput(Game *game){ game->inputHandler->cursorPos.x = GetMousePosition().x; game->inputHandler->cursorPos.y = GetMousePosition().y; - // resetting last selected Tile to grass texture - IsometricMapChangeTextureIdOfTile(game->map, (int) game->inputHandler->cursorWorldTile.x, (int) game->inputHandler->cursorWorldTile.y, 0); - // Updating cursorWorldPos IsometricMapProject(game->map, game->camera, (game->inputHandler->cursorPos.x / game->camera->zoom) - (game->map->textureWidth/2), @@ -94,8 +91,6 @@ void mouseInput(Game *game){ if(currentlySelectedTile != 0){ game->inputHandler->cursorWorldTile.x = currentlySelectedTile->x; game->inputHandler->cursorWorldTile.y = currentlySelectedTile->y; - // setting the currently selected Tile to "selected" Texture - IsometricMapChangeTextureIdOfTile(game->map, (int) game->inputHandler->cursorWorldTile.x, (int) game->inputHandler->cursorWorldTile.y, 1); } /* --- CURSOR SPRITE --- */ diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index b7c6efc..24db7b0 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -74,10 +74,32 @@ void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, } // Unproject: World Coordinates -> Screen Coordinates writes result in tmp Vector -void IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp){ +void IsometricMapUnproject(Camera2D *camera, int x, int y, Vector2 *tmp){ tmp->x = ((x - y)/2) + camera->target.x; tmp->y = ((x + y)/4) + camera->target.y; +} +void IsometricMapUnprojectIgnoreCam(int x, int y, Vector2 *tmp){ + tmp->x = ((x - y)/2); + tmp->y = ((x + y)/4); +} +// USE INSIDE MODE2D!! +void IsometricMapDrawRectangle(Vector2 from, Vector2 to, Color color){ + from.x += 32; + to.x += 32; + Vector2 corner1 = {from.x, from.y}; + IsometricMapUnprojectIgnoreCam(corner1.x, corner1.y, &corner1); + Vector2 corner2 = {to.x, from.y}; + IsometricMapUnprojectIgnoreCam(corner2.x, corner2.y, &corner2); + Vector2 corner3 = {to.x, to.y}; + IsometricMapUnprojectIgnoreCam(corner3.x, corner3.y, &corner3); + Vector2 corner4 = {from.x, to.y}; + IsometricMapUnprojectIgnoreCam(corner4.x, corner4.y, &corner4); + + DrawLineV(corner1, corner2, RED); + DrawLineV(corner2, corner3, RED); + DrawLineV(corner3, corner4, RED); + DrawLineV(corner4, corner1, RED); } // returns Tile * -> tile at coordinates x y z=layer diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index 414b6c6..df4f296 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -42,7 +42,8 @@ Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int halfTextureSize, int void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, float x, float y, Vector2 *tmp); // Unproject: World Coordinates -> Screen Coordinates writes result in tmp Vector -void IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp); +void IsometricMapUnproject(Camera2D *camera, int x, int y, Vector2 *tmp); +void IsometricMapUnprojectIgnoreCam(int x, int y, Vector2 *tmp); // changes to Texture ID of tile at x y on maplayer layer void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id); @@ -53,4 +54,6 @@ Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float // Draws Isometric Map and Sprites in between :) void IsometricMapDraw(Game *game); +void IsometricMapDrawRectangle(Vector2 from, Vector2 to, Color color); + #endif diff --git a/README.md b/README.md index 5c347e7..04c19d8 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,20 @@ KI Gegner ist erstmal zu aufwändig, ein wenig Ackern muss man aber immer! [turn off EXIT on ESC Key, for later](https://github.com/raysan5/raylib/issues/520) -[Texturentyp](https://opengameart.org/content/germanic-worker) +#### Gebäudetexturen +##### User ++ https://opengameart.org/users/feudalwars ++ https://opengameart.org/users/bleed +##### einzelne Texturen ++ https://opengameart.org/content/germanic-worker ++ https://opengameart.org/content/6-isometric-buildings ++ https://opengameart.org/content/isometric-medieval-buildings-2 ++ https://opengameart.org/content/2d-isometric-homes-part-1 ++ https://opengameart.org/content/isometric-buildings ++ https://opengameart.org/content/isometric-medieval-buildings ++ https://opengameart.org/content/western-european-castle-isometric-25d ++ https://opengameart.org/content/medieval-building-tiles ++ https://opengameart.org/content/watermill-bleeds-game-art ## TODO diff --git a/Screen/screen.c b/Screen/screen.c index e0e1139..99fe328 100644 --- a/Screen/screen.c +++ b/Screen/screen.c @@ -29,6 +29,11 @@ void ScreenRenderGameScreen(Game *game){ IsometricMapDraw(game); SpriteListDrawAllSprites(game->sprites, game->map, game->camera); + + // Draws rect above selected Tile, no need for changing the texture any more + IsometricMapDrawRectangle((Vector2){game->inputHandler->cursorWorldTile.x * 32, game->inputHandler->cursorWorldTile.y * 32}, + (Vector2){(game->inputHandler->cursorWorldTile.x+1) * 32, (game->inputHandler->cursorWorldTile.y+1) * 32}, RED); + EndMode2D(); // User Input Handling diff --git a/Sprite/sprite.c b/Sprite/sprite.c index 10c2c3f..f19433c 100644 --- a/Sprite/sprite.c +++ b/Sprite/sprite.c @@ -13,10 +13,8 @@ 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, &pos); + IsometricMapUnprojectIgnoreCam( pos.x, pos.y, &pos); - pos.x -= camera->target.x; - pos.y -= camera->target.y; DrawTexture(*sprite->texture, pos.x, pos.y, WHITE); } diff --git a/Ui/selectable.c b/Ui/selectable.c index d037abb..aed0711 100644 --- a/Ui/selectable.c +++ b/Ui/selectable.c @@ -99,8 +99,15 @@ void SelectableDrawSelectable(Selectable * selectable){ DrawTexture((*(selectable->backgroundTexture))[selectable->state], selectable->position.x, selectable->position.y, WHITE); } - //DrawTextureEx(selectable->texture[selectable->state], selectable->position, targetWidth / selectable->texture[selectable->state].width, 2, WHITE); - DrawTexture(*selectable->texture, selectable->position.x, selectable->position.y, WHITE); + // ich weiss zwar nicht wieso genau aber das hier skaliert die Texturen richtig + int padding = 19; + Rectangle from = {0, 0 , selectable->texture->width, selectable->texture->height}; + Rectangle to = {selectable->position.x +padding, selectable->position.y + padding, selectable->backgroundTexture[0]->width - 2*padding, selectable->backgroundTexture[0]->height - 2*padding}; + DrawTexturePro(*selectable->texture, from, to, (Vector2){0,0}, 0.0f, WHITE); + if(selectable->state == SELECTABLE_STATE_SELECTED){ + DrawTexture(*selectable->texture, GetMouseX() - selectable->texture->width / 2, GetMouseY() - selectable->texture->height*0.75, (Color){255, 255, 255, 150}); + DrawRectangleLines(GetMouseX() - selectable->texture->width / 2, GetMouseY() - selectable->texture->height*0.75, selectable->texture->width, selectable->texture->height, GREEN); + } if(selectable->showDescription == 1){ DrawText(selectable->description, selectable->position.x, selectable->position.y, selectable->fontSize, WHITE); } diff --git a/Ui/uiContainer.c b/Ui/uiContainer.c index 5877a74..4644ae2 100644 --- a/Ui/uiContainer.c +++ b/Ui/uiContainer.c @@ -69,22 +69,20 @@ static UiContainer * UiContainerInitGameUiContainer(Game *game){ Vector2 position = (Vector2){20, 300}; int showDescription = 1; int hasBackground = 1; - int groupOne = 0; - int groupTwo = 1; int fontSize = 16; int unselectAfterExecute = 1; // creating the ui elements Selectable *selectable1 = SelectableInit(texture1, backgroundTextures, hasBackground , &position, "Building", showDescription, 9/*String len*/, fontSize, SELECTABLE_ID_SPAWN_BUILDING, - groupOne, unselectAfterExecute); + 1/*Group*/, unselectAfterExecute); position.y += 100; Selectable *selectable2 = SelectableInit(texture2, backgroundTextures, hasBackground,&position, "Worker", - showDescription, 7/*String len*/, fontSize, SELECTABLE_ID_SPAWN_WORKER, groupOne, + showDescription, 7/*String len*/, fontSize, SELECTABLE_ID_SPAWN_WORKER, 1/*Group*/, unselectAfterExecute); position.y += 100; Selectable *selectable3 = SelectableInit(texture3, backgroundTextures, hasBackground,&position, "Lumberjack", - showDescription, 11/*String len*/, fontSize, SELECTABLE_ID_SPAWN_LUMBERJACK, groupOne, + showDescription, 11/*String len*/, fontSize, SELECTABLE_ID_SPAWN_LUMBERJACK, 1/*Group*/, unselectAfterExecute); // adding the ui elements diff --git a/assets/grass.png b/assets/grass.png index 86f783e0b14dcdf9e50ce59c9685565e8102a438..93903d93ee468abe88dd231d692fe0fd0890837c 100644 GIT binary patch delta 3999 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 FV1is-tFHh6 delta 4120 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 W+t(oW>9PO-002ovP6b4+LSTX)?C=f% diff --git a/assets/mapobjects/baustelle/idle.png b/assets/mapobjects/baustelle/idle.png index aed93f27f2c2b7266a338fcb55c00d915329e027..70d3a8a4bcf3073a6864dbb3d606b8fc911a09f2 100644 GIT binary patch delta 1909 zcmaKsSvVVr8irM4sXjtTsx7fZ!)X!Js4ca|q!CLjZ6|7}m?70^5wWz@gsN(3?ZsGw zRDxo(>QpS9>LK=tPAs*Q5=t~OVyGnOIG5+*%>O+9|6RNn|Mz?spXfw|iryofCt6wQ zq>_w`j56i|%I83t2b--Ze{f3)y5t-^U8(~eW&(^;jqbyh`Kv-e0WC_dOx1|gOHg;j z-aP|lOnOH3ynoc6q0RjHh3EAt^}33bq}MF#)2s`RzG0P22uSO7cKe;I_V}bX_@C-d zXdU(&K6|#7o;}#4RCyVoiUL?X#13&kqs*0m--uPw2^Oj$2cTr@}ewLapu1A!g3-kUIKNs*lEC;LyMWHzY>O z*YAmF&!!MEa;0=EqU@EhKlnI;XfznWuz3tV)(im2{>b%qf*ez8iJ%wtaVYQKIq-H| zN&URKq@2)0mdtD|haH{W^>JgW=i_$Fr&F9w!nBUQBT<8B`Lk3y*?Ps$asI^X_qO}~ z>P7pfI!8wdXvc5oqM~OQbN>KLZ=9n2c?RS&Y&Jl$LmHhO&xK;gMVX^%8&zd;RUfq305QM~D$Y=Gd9a0yX(4jK=~snqarz^<)rkRk|zMv>AyumOXg*Pec7D_Zzde5E&IZ=NUFG;di|awBi0?>p_)u#u^^zg-XLNkn=8lU$X%Cq*zHb~SD)*< z&eF12j^y&0)IiwI2uZ$ey_`KCkV+h|N$U!gT46QL z*bo=AEDGx1By5G`IQKXycax(#a11c$!)$^s3?{Uno4H#PK((fef~%?*XvLc1baSf_ zFQ9+UlKajg4JP`snim(@-pnc|AuWGdzj8{*#HqqmQlwGgfhZJZre%CF z)idP7egHKcS0BZJgB^T%voNv4T5wBB+-LI`Qj?yBFh%gw!e%+cMdp7ZTW#&;$Z5;e%S7D#&byq_+J-qowT@M{#TRR(Of}v zRXKKQ{P3z*E=x=khPv)q_44XkPu!o3HtTWDdiQBW^0V^|H;{q$rSQz+S1H@dOD-dX zn1_`%7kn2VL~j0B3f*d6yeerNtY8$QZ;&7c+84tDRj0jQl5m~glkA4Xvfi=UfXt^< zQa}2O_3LtmV6yrC6p!>(3;+z&YW6Bw)~3`wkel{ZDQuq_cYm&f9zM^%*mzn2T4Dt( ziy4CJR313#wgTQY2SOrpYx*|xQZAWzB(bzC*YtwQ=zQ9d+M8*l(|PLKmtIkY9&>aELNT{H>-5vYI17_W4p(KQ;h15+D9kEqeZ4q6iK)`k{Re_^nb84et(uwUG6-4)UKZz*xu(6Zw}qs zWa};C?A>S*GUzvMH+jHmD}1SOM76lO%`bz@^-@>xHI~@&?=mu~?3ikXNh76exuq21 zdi={0iPI{x!T?w!tVw*TZ~AL0zFvd@)Oltfxs_hgcEtA3bfZS&yZqPz)DNN@LO#OB;hhXh?lprg|7&#=(vUHf+~=r**(kADhXO^K#tiVanEP$mR+huu(-^|-0z8WySi(HSi7^Tk`(4?)~nQ+dG)ooXr z+#C{(Xp0!`QIYjP#fPf}C&SzU#TS#)%s|9(Iqhx~4X*?V`QHjPE}q*4>yllRZ|?oK O9x<+-s7B|j_x=W`v4iLU delta 3283 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 R3NQcw002ovPDHLkV1k?DHeLV# diff --git a/assets/mapobjects/building/idle.png b/assets/mapobjects/building/idle.png index d2143397582f9b16f46d285d980156dec9e76a09..57e5a3afa5de8cd62f6566a0a742d9ce808a7e50 100644 GIT binary patch literal 14241 zcmXwg1ymH@`~DCDqSA;Uxikn!cP}kn(n^RlEG*4}Aktk*El4k=bfY3IT_WAxu`Ddh zpU?Mq{%6k2oO92dnLF=$@AE!yMd@g%JRzhZ1OVWPnkrcD{$6^2CKBM?U$dFCWD7w&MBXGGeL6X&B$TA)b%aW#B#z-m zbgy`CL)o6FMaL8@o4Oy{eBWJOttbyGXC#1yG_{Cvwx~wkX%O;QONkx!wgx1$`h;|v z*deHCaSVn81j-5%2dfG5jd4l9xPp-yeTqP=8k8053&%h^j zDK%PsgSgXM@eImgv+OCyocg1Ft7p9Lxd+Wl#A7L*e#a%nww=_Kr+i9Q=UDi;ZxlA( zCA)s51nFN#ge2Ku3700)%3d*`52s&f#kQ)gu#BEr&oMB|y{CFF?0j?cx512EZkf7i zTmoZC{u#s4J~n2pB6la^?y)eoF1-xFe-=2-st73rG=skrw86(jH$HqY%X1q#sBBM| zz-QF3C~^x4Q+!hgp53EAIy^W$SQ0$Iz<|OWNNWUqs{LLsc-9&!VBqe*Bd@(A<$mO$ zyQ+yN0Pr&ZcVhV#$$H-p;(MuSD&cS8;1UVGoC%cq`|lvgKGAjyy0DXd z_DWl;RWOTOKrZABSxTu~G>9`D%w5is_TH>)Ahi;brcq;1tj?v;V4J~7Rc5OvKKhg# ztnm2t`cP}Fq@Ta_R(9*{TDIGV4|1WZ>xZjB!S7mb!jIYyeL6gkq>+}-D^4=$IxhzW ziGaQ>X>owyYAzTbxZClex|@mve1iT;0m%%02-YP+!WV z0E+Q^4&bl9CJ@5>`EKsH%i+^d)3s0ZBL90{aY_1$6(CUQLSp@Jmpa4?Q7(84lx{r& zLXK4#fN%8&S1bT}MB4>6s-WZax=UenX7lQ&k5T~e@(XPPmfX@T7C=D=9{U>>o$B9*5dIxb>feUl93wCctk-@As)Qo!J8bn|Jk9fh9grm;H;bHHM(M zo(Oo~a0O*&TLVHIih`_h`}tIi_s zmt~1V-Bv^7w-uHoU#B_mhk(pUV_CufWROl7Y!eUnU79q*`ti;umyE8-c`gk~~Q;Mpy# zc|p4Aq$|{J5glZNMZ9Q8`L48DTWj{kIA4nq5*xsF1tH8VKWHVuCJD6@aw{)*I@$l5 zdCh9&33{!!Be;S9aBbv!4Dj=jRxtHB8aSl+w1b<>Kbb?`3t(Ef+}wFHx{T5v9}j|d=zJ4+36$o0Bi;c`#%DZr*Dp^p|-eHwTj<=vupKU;o-fK^o;#Z4bI z7U$?@?Sx%1v_!cf$fgo}xJ^ug!hVQZXiCQevRe{vW?jw;8ffNalGX#MjCWMxzM2Mp}TwmKf6UfrR*P=~(7b+P3k5&<;b~lgC(qNTYbd`|Pv&8(+%=d`{r1@~-_X z+Ee$DeC1n@(JW}&PVP?t@HNk|!UZyFk&l3HSq)0Sn|GP2R2RDWi-*aA*USoE?Leag zc98BJ#d8&2OST%KtGb-00UGNawqh$Rg6bE;mI+3F_5BC) zp?&$dR$E2cd|Q1=S(JyOLW=R!+Q;Z_soU>kpB=@Dnl0Xk^fb?@t-o?pm((%Dw8Iwx zm2ZvU@($E<;CSq={+9ng9h;np-dvS2e7?a2Dk><0ae-nskPjf&Xr_rRCp6zq2&Ac> z$wRn16QjPLDu=0(?T-`h?2$XrP`XmlrzlwPpU8{4ImybglpD~kCI_~+Xxh@jSp;VM z=c{Ylv4CT-sJ^Mk7ddCGzexiUNpl*S@`f~Ri7x%5N>aAe>?7B^)DZCOe;wQl?;|IA zroTcG$kxX{kW@P{D-{y=%bHf7UgP&heU5Pey??2O+fW}>;p+3A0jT?zw6sC}pULQ! zcUwGJY}CGe2K;rtO~Cn)gtH)czeZ2!a6(=uzAIgE?It4?Y}X|nKfcw<=_99Q8uvP# z3lJ-1e@1G^3Q5K_CU;02c7>mZ@>&;OzCqBApTZLn;!-3>9;@;^I} zqJaAPcEi>Bj5i7v2888%K%`r92uN-6ttn#WtBd9u8Y&~TKf@FHGU+l|e^q8PpVCUH zeiXPKnzfOFxyH>`)~J6xoYBYGJ3!&Jaw3}Pkg8^4VCmobr6xOR%|zh{(Wam}TuljrOso4Xz~6Ql(ZkAzaQx<_wCY#u zl2RIY|3l5E`0Zo82^~I;iAG)?3;=D;f)5Sw4+`lVdMs{QJ(qf+aro@`?AAKB`pm?% zoS7V)or#VmYDK3AgAC*eFS;W7XVs(C8ndKe8qG>r_)C07k*^DG$OAU%&dIU#jrHcM zHQFL$$)dvKL6&O58!kMcCXJ;0s+6-T^)Cz>ki{aY5i{f1Am8{c9^)o>?-W%dD@cM) zN^9n)-v~XMbyeja#(4~pfa^z>6493$b!} zxkktZq@J857paN4g<+aLOYi2|@ zAsVFL`U}?6o3X_m>@v0<4P=d0a3R%D=%kkk6YrbqSNjH#P(mQ_pJVVd0CVcu8f?vU z50kjJM)%w-zaJYompCN2H!U`?O(5`KS`@(tpmN4KUG-bLx~#P`s2M*=eKt1N7vyFR z70BcPDH^3otrjRBso@em=&PTua>fR}7Jhy9IUioDy9vX{S!E|h)_Q*tmsyJ_)#IX= z(k$S65RgP*=W}}XAwRK+K0#DQ+1BfypT(EQ39_GcY|H!8zPcGN6^K-KjghM~kj`GW zXJW|U=BvA{;`F^G9co2v#-Tgni`9Yg)j4_&54zPs|u1Y*CLwy!yhxo zX1jAmfx}1gy~lpX{_)jg6;^=?^U)JDxawOC_1=^2x-_2VRx>JyknIq+ausbpqTJejY^7* zHa=-3yTCbe6716^@~-Tq-O%$gp_Z||<4+9DadRcpSFk1b>0BdvL*D*({ms&rtyL*= zl%7PD?h7#h$>aL1|4ayTUp>kF&I;`aT?;#kHpXI1Df&1+z3EB8z;cR`UX{@!-Ka&3 z=6m%TMPz%)!G2B(kQOICwWen*`SaA*JmPf7;;>1K$tr*r91@e!w6srpP2SiTN&6iO zgdCvk-b9hbCtA-%gT?(@hQ{N(9kZ<@z44QDDYJehQ%~(_GKp_d-BXJnt*?GBvSkQM z49B9sc|(!gPkq}hJvI~~*q_lB21A47=lwX?c)8rMc1a#BDo95Zz+q&H!=c4~)%c`tL^(`SkAV7eqg+FD%U%o?6@6$ub-YG;|e7 zVuhoBL!nF$l_a=<mL9oO)KVlLllu< zi;UD2aV4Q&=X^a=RNGM+;9qYy;+D?vV7a>cvs8>^SNrSW9Y=X12~wL2fhjp*)Wh54 zi)Wp=?Mq`$Pox6UOLW=6x>#+b?1v8pS$Bf%FSQfU$Ju&Cb^*07DS3H%h>cjJLC zdSAF>8al%zHBz>Q`?Lfk=Nb_-0@L)Ef*n+dRh^eb`_8qVCUET;P&}75d~?VZGx?5c zm9w=jwZzI(2f?K+H{I$uH%J|7nuKI6be@8Qot@yJY9Yv|x;Ub(1Ebq9gyRuki8DP= zTK5^}^7pLc>^;wKDk7O|h%jjDJJ}4d>BI&2I}Zwg(Nt_nnvJ)j8IdeFVe(9LRwXl6 zqNFS2VlRJ>ls|xU7-SL%ih^aAsLNbruG;Z!!?~;l)eHNbofHsU#=0V_hXUejKUk8y z{S2WJ?7lL(7G4tIuX*s^R;^NVB*E_trCQu3iphmVX8;n?G+{GZ<<) zY*!DYZ_f>ZAK!6OfRLRXevhRd`n#Q(Trov0PT@(f)OmxD=xrT^X%XYR_!^0a{K-_PrORi ztV`0POE2h!P=YL}9|JqCu#q802p__79^E+dm!qGfykx=-joD&HP?Aeyld_ZF91_?2!GT4MR;a~YV zsfa7DE=oRM-yHjBU}0FLQ(tGG-r|-ISVag`D}<}g8VSn?Kav;NO}o?oeyc98+~&AZ z{?1UMx}|jB1I^`%zSJ+gd*aqp>DDbv#lPh4vp)zV#`@3$A>%~Ea~Tk6vQ_e?G)hnf z*~5t6q(Q4MPZD$GINLoHDpp>?>nL}a$)i~wNJ$-T@s4uIg0!v{kBWl5BuiYWf@OuZr>|OV0kI-m`OQ9us)>2qp-;zhMWe)V`4R@$sW=wo3Y3IAvL0_O%ZNZz`?f z4XYavM97U(ee}5j9~SiXg={CR>;j(pEw*qaJ%0S9L&N+b%dmo(WvI2GA!hvnCxW=$OgOK~ zKFcwj`q?U)@5L+<=ZB)ztmU(d@0`fZCJ!)Bnp zZ$Zc^u4p-aH>+&qoB<i&-rQ+SWce`iWNjSUxyV1;A<@%W_!k<8}{s%5>tNCi&$zy`u zE4CKb^Jue_&cj-(BC2HK+`h0>=q9u(LXUz5v30_OaZU>^X`<80&n%3S7|aGMoUdux zdJx8k>8moz!Ml&trHd#9t+y^@p=sPh=YN-TDd!HqaW-5?ZMNQr!F+{N#mRU9dd zw>s+ZrMb!hU*^24K58ZSns`6^vcu4|ZKu7$($?#aPgvD~OMKaxsexLVY834ZkqD5Urj z)rtbYqhKNGUqbz6g_POU#0ThE+6#gaA6SwqjYS3^CSQ1Llm`B#LmfzZ-3_aEJ^vX< zE))-4k~F zyWOYFx`vpB)-;ReZ`~>jZXYA`Y$MR8HiV>_RB?N?hpG`APK$4IJ98_HOwu$4g=E8Y zL0g+_q^xXq0nUkMh@!Z7UG-q-o9D*7i7HU(1MdzvMdM*wUnRGuQs1f`>j#2ygSeY@ zf}^hK>ne2Y?n`!F`X}VgPphgT%l}q2^b} zYcmVs1ZO;x4cLxi(a00<6|$|#Pj2eOSTw11I@BG_x-9M^2gI?OGUEBCX>tXdL>^zE`iwaZe zLO^9Z2htqlug8nH6HYWJYns;?cnM8%9&-MxMG)tubr+#8EVFJZUC%H?pQh-*{(5V{ z(7mJNNpt*&=H%2Ok-3Yp4}>UxO(U~wc(-j_@KX~I)ZV4DDfjW@FTurRbE?J8DbEi$-2>V&S-=;(77S=myOgGh+DKQe}Uw@vE^1I6RA>7KI$TXMnfa0tWY-@o! zkyqD{mldX`L`)xzRdY4Uam>L-H?f^*1SIifD?!mx7BVW_{>~xQ5tn1|t4W6{idvQR zw8$jScxBgusp@FtX}E zuhVW)36W=RbayrMWQsJ7t5?nMAZUu!LXC6<@&IJ@z=f$*46z$DoQXpWkttVN>`kx3 zB~>bPUd@e)Z1O5T|BvslrPEZuH`?-9l(xhVnHox_0*K0KvX+YclTMixpe&8X23TVG zyqz`4bgQY=vafirwe9=s4<$K*3ef)jq@W>L8Rd2AvlBI!$tYl^kU^R&-d3Nni>Y%r z@SWR8KY4Gn16v>Qk6l8mmJJ<$>q8#%PA=BblNXktw|tYX3M- z1F@xE@C_tzRppZWlKm=yt?yCAqC$KuF;dp4CvWcQoVe9oQ|xSH2$K=-j!f6~UzWWd zPagVTl=*y*{*Q}UMyC@IKtm!xfdVJ=xiwjClD|$d%uIp?1xB~@2+l-;6L7tPs7%Cf zRKqiIYD1!te}uA~Yp(a93gvie!kAi4W5ie5irk9b54cGj;;+gv<0gbkw|c`_^UPUK zn-Y`r8X63@47U2$qg!Mat%4J|2f(pgP;MtZEo@su4+(2~x)1Zbq&E$^RbIqaYh>RK z*P*$YYsl}#6(fR!lVm~^KP6xxOIv9%fpLX4Z5IR(u811x+M7qPUzXZw}`1lNaiCZTJ8 z*X14pghVn-_Qp}Rdk&nvhT_(CVcG_ks)o7^1)AEW8b&Wt_w*2_XK?=+HPGyXU9lL% z-;?g%EASG((y#%UXij=#p1#rkEO%#d8v*BMb#_6-qKMBr+!Db4SpoM?xw ztRm?pMPrS=B*mL%@ku9xpXc8YL*k9zaW0Iqwz`XtFhPSs25+YfxOchj`);3)M`-l~ z1{~Tf_3Zf{<5maAO$YgBZ4FVRmQ>$r3|ya6AJP%e+uwuTz5XRgKv6gSM`B4hfC@e- z@LEp>nUZzx!&Cg%wehu^GS;$Y?`$aA*dxZb;# zBGEa(-pspDu#yUsj&eN%51NbednZ(Q7dVTOvK2f(h?ev=h^QMAc-PrN!!08Hj1@vh zozGBhxekMtTz3x!|4kNo!%@uJk5DA^n7`GJ&gR5xFW(;zIX!Yx_+_5|LY5y{&E+%r z`X?6CDh5ZeX0xBp6Ka^B653II^SxGnm?7&e-p|=yzVVo3A(+K5-!yv(`nR^0T<$E8!VqKX`^}m}%7>GXb zFff)gTwQMrT=0NY45{!Pop?4-rd;m$KFSJwsZDq?S$8GzRU#Go`5$Y>^SS`!m7?Up z5dVCCL8f-ANlI3ipR|Ac7HU|se<)i|vR-1n5JQllKNuAz>>|-&R7}9{;1@$6=9xGh zAdy2E>e+Q;HS+Jmbw?tuvw}P;ut#&_13EmYk&N zJf}?WZO^kJ8n7_3#AM|pWB2q%oyw`kE$dXn$4;;*ZP#6|FB40~iK(>R>lY3HP$vCX z3n1)jft%Brnu!l2;NW8|a}TbE+IWB_7WCI-HE@HjslI1aku*Es65l&a+JzWmfYzvz zr4jA?y!jqKY`Y)5{TN9$&0I;FUI)^G!7E_UoA(Y~$zJ(*`Be{@A|g;=c05g_m8-F? zedAlh*+&|8J7mfKECLj}i^n6dnV-cabs6p=`d*Yz@j-ReEE1!H)yFbnm^+ZDZ;KpZ=*}q zrhJ0RI#)>QmiF#*`|P{Ys^x;RN_Q4-D1m*L!b)cVvJ4M+;hOOjSRP?8k$MP}Ip4kn z(8qhk$+cy3Rcf8Q92yh0%y@>c77AYcX@fxjAzDPr_D7ErJCDZ6Zu2OmQIybRL4IT_ zTOSlXz!v0{Gq3f_{m&CzVPei!y5jNblflz!6|VdiidD<77nwdPgcp=3ePlql!!2Uj zJZVvnt18*(qq|PKI3*UsP%{_={jGmcme1npBd{AWc|`VorfQ6DJ{ii8(NUMkCLsCo zHT3ogS1&@JHJLu=4NHaIMqtZ$ulEhxjKdLeEhk@$KKC0vkzT)} z>T8uFF?H=YZLfFxJ94+uOmp+QdB(*Wv2E0o>nBUT*^arbJ?o2?|mk#vXASx$ymrxC2MNCsCEH-Pi zP;yd;1LxCFZtX>mb7|#DR>WLJ8tNO zVS-#Q{fG&BhE^%4G8Qj*ca$XuHlo!x)^#_wVh5HjOt?GR7`C14K8OGD4*CvrA)bqy z)xWaB$TR+ZpDWwN#3Z36;%J3se zrQypNt2cHV$s`^&VcOGqVp`zom2VR5ntzhG4_!~&C=Ka7%Cw4hj>zMhH&oWiovvSm zQ^tsXcmw$+L+dShy}dTC_fX{T%Th-l9@bO*k8d^~389e1U)9P=haC}tXi@lE*U7vV z#+#4FG9FzX49(SMmN5p78ma@7_O`KbK3+i)SFgO=26W@DR(5JyFzR1TNIdeb?R!=8 zlt>3iCcSjm0P|5xod0C4DbvFE#$tZoQq)5XPyZaY1C4imsNcp&HqFM7jV4l@#qGx* zAww-m&W@wU1cY9lcnTd@mUUMhI;#bu69ZB{o`^?0>kBgEQ> zDw3o16rQFB-mDWdnsN1ib@{v5)=;D5J>*lM{8nzsh`}2X^QpJN7^O;{kH@WXdO5)h zY{`bB>dd^GW7@Ya)$I0jX&G-^Ql9g2Ca*u?3O46rHtU_7@uJ2TN(#4 z7TxaV7$kJ#lDu4gOzHuRLw>jM51}cyBxPxoI{xoXk$iub6doEPC$Sy|&K%Bd|=MHGfIy1Py|Pl20!God{f zFPI5t^S5psJF@>iX6z=m|6|es*Y5#~@+8HT55^Jmp#LcM$)Zm$m;nIoF3zP6Llo*q zCU!r0Tua@W;u|K6m$^xnvTx*{1?nw%hxUyhCrwZknF=JOmXW|;WsFH*OON1DNS&W! zC;bG6D!;$5Oj1XT3R2yh9XpJ7iMYoR#lA%4yulmUtUjH<7p&6_&ZQ{~ZT9RFK{MWCARW*tW~)alql z-558Zo|fkGdlsL$=F&yMbl44I-mEl0wqU|&Y+RY_(J48grgvP~Nbs zDP+)gP=tO7N8<0M!bZ0Q>!H5OI1$t*J2|W>5>+zFuAC#C$J>O!8|RPO%lkr=KjVs< zqPg6_?dww7+{T-j+rZFrCD7O}Lh=gou<}5ev(1gvliUbD~8Je86Z`7|RCaXv+I=v&%iSkpg zA!-}?M}!{XzHbdN9Az=Jy^8BZER#IUBS=j*E&UNsFjQ6JluzWhG|uTwrk3a0c!YAH zg2eZPn@YQ=y85psOo{<*RFsusX;oYtd-gS6;Y(S@IT(u3UvENHzoa+3fedtRsa)#8 zK36;79;{g@YnvOrIhQ}YujkE&8N(#~F|3eAh1WG|@AS-PUa|hQA!*By%f+=p zVWlZ73f0Dv1^>6>!ti?W~T#sn2 zaPFPuXKHN2^RDdGwoFCY4%$!mv0$~KQF-Y!_QpxbqVlEp!(X>zs6g>q_6rf^gAcCO(UgN*~Z+#5iz+!8O0lu zg51zPM@U9nCBdUB{K?B)YU|aSs=_eY+rA02445E1-N=@M~nrKYFR_k~e{T z;^Is6-#J7@a(eokU7*?L)ij3tduk^OZqOdiO(EfX6P>qld!&t2YrTPnBQGA6x+IF@;1esri6F@R9;<&NFuiUW>}b? zTNrLX;SRm1_k;Z5lj(n5-y{Y@9Q#PQ7QTiCDAz z%NmNXAfZ(-)#rx2PRrff%{EH!YWT;v`oz}{Jrb1_VSxI}*SRyvba6eIysclzp28Wa zIGw9`LNXDpn~_N{ZgM@@-juu%RN=__jLtr`qk?ifv3L8m_}z$xy<~o$h0;=truq30 zdoij*2(X`N0xbqhwsSoaU;I20Y`0@p%!~R&;K+6=xa664=Nz0aY?-xYhU!9pk{u02 zyLR!9Fi0P1AxvB$*dtZ0{iY?tJ{XWq?FJDXJs1D-ote==v7O0^v`0av?t4kfW?ize zmh&8Lbe=S><-#-WR=5pC0S2c3o7^mb=EGD&)5|#AS1U5~(gXO>s3K zt$5AB!jc+nklj(DPB-MOh#4!EnVI3Zt>{k(zCxe}BKn3(dXbmg=e}*H0>@&511_1m zodLm%2|H!W8_rN&e{R1178?wkf|#N-coOC@{FleN9%BT3R}cIPQU$H*KBFcG&_nhq{A zx0aDlDRzxlf`$e-#2|e!^b1q2Y_aq3fQY!|&+~Z$&C-z6Q!T?;Nse2D8NrfKQ7jIA zU%hN_I;}n#)?>n-Jt^Q^ZJD0G$b6jjY}T?w|J7f)dG-mEOX)O&>oU!+z$%!LPb9+} z=D&0oOA2bwb1S$+9rT-JT~izwW$i2%6wHgqBN2}z);FH1onl_(t^@@Kw!*qNK3gR- zOkTBCnW3heSbO5m?-fnpzs2;lW#8vns4s-+?n!VTo^G7g{vNe{ktQf=EFe?;DUy~M zd2>}_5`gKTzUI-U)3LKoSp&r*o6yCa8)6oVEY_E4MOPS60lp>XyTX~lTVB;T3X)Kv zQ}ELWFL*{nUtI5`E-$C;<+r1e%WO0A*0*A_j+er-r+S>W-xR8%8_Eqw?Q8y#)BqyKlq0mp)E@A zNImDicMR?|PTgEZ)b5GeF7|SheZZ{SKXtBFrua!yjk!AC5uS@ddC=!Zp)=ehLp$c* zremh;Oh+cvp#6QB2(N*obhuz)WSmM;Oq1AT$|GxV3l-W{9 zwT|!7omOwcZ@9C~^PY3F!|fC1pHuldOhzf2R!{SS;wPa-#*Q(#jIBFJY342Bd}^J} zos(>n6qzvCT2pzNO)Lx9D8@=LW_{|0w!`mHc&bw0)5su?WDPpP3DF|HFPHYAd;EwL zWoxBcR*==Cr%fr!IGk>{{sQ&rR}&7+JNMyql4 zA{2+hyGgwgxOs~M$)ujV>Dsi_stUfeEFN&f*55yD(SIId-$EBW)6VP-h_x0*Q!5CV zSvAWH6jAH%`#YLqCZ3Y6I-S);-<>?>e%N_IaS@ZiN6wT{TTI;ChF?=NSQ8)Q{ro!U z2cMmvs)Z_S`_KgVK@D}6430Z{6cbj=weFQKL5lux`_RKICFS>?CxTl=Ra(WzpvcYr z(-(rSnnh7Vn|_`tz0uyi1)T$bIJ&@ZgZ4q41+OOfaa4>%k%RkvW?uK=+(5IW%0Oe# z>G^8UfEHy$`JN~T3 zbZsC&bZUp*qyP#Z_P8_1$1BMZ7p$bejr?NG{^-pUKw05XA2^nFleWeQiNK(^#J4~1 zx~Si#=mwvk$Pc$x^i4EXT&EkzSui1^jUqYAY8wL3fzFxYddif-Ut>QOUGTK?@r6_z zrgQPO78VQ4i<7cv2-DzAIJgQ9_T^ZJ8^T17%)sW}9wwI9C>w3rj;ntSt8Rr!JW$BD zWKpX*+Vk)p|6-IhxC66u7AH41@-NVAXtf|aFaVRPRA<+MI(wF_ zEm+j92O=MSk(7c-mA@8qRt0`+RQ?hNUYn`G89fap?GV&h>Q9Iqw$gRaUa$fo!nn})gRHyxP+J$8zf^;WFRO>G{9yB%lQB5p6 zFi1~cWbLe(Z-1`}|EF6b+87@!$W+q(zY6GT(M2e+XD*jtgJZyzV-FTUOkae@$bB;W zt%jVuM(+ku>GhU1Mkb{7Qm|)!`f_c6Mp#@~lL>CJq)}6K6Fo+yw23*g;q0y55|!Du zzzW&K%c832xFR0LM#-84tt@bHR8M<(JA5KND z8Y->!-%gIeF5vLxi)X>rAVW5VO=ybE)3gVU5P`sfIK<>!Ck~Jx-F*B=bdPxQ|4QVB z;`Q;r1_6Dx<IU61>Ia8txQT&xoA;`!D!^WrVH`{=PKapWSTgOZ1hTS_A@4-dQQ- zwCR;y{j4G0P}q8UuDm~$y|ht}rUzrH@KtVrZ>0p2W`~S3=!lZYkNrR24yDXxnVy!> zO^GE(bCvvU{yxl1>W_s$kQ%-i4_MK+3TT|DY@I;k0)ZPR;S9}c!NEbdhnF3w3eo>k zi*X5gBiG&k!b@+TW9h;rhj~gQftNXtC8Jny>$uB{{x;gkpxU^kG_do4QK(&jk>6HN zwK!Y7uI1E8tnq3e=R1I6{f?(JOU0NPTZZ#2U}4b>`$vf^@=C>3J#34$V)DPpZt-ef z`_>w+=)l#$RK+8p7?0zlD^hZ48ns^Nedwm}kv2MHi2pHY*Ucv^7 z9w!Nk^!4eenp79B*6iRK>spK|l${C!?wIkOyCzDQGoPJO!+k}ds0dHf7xv&clXqu; zJGAyvQnV{jn+|?O2E-;1bzlL>Yl=08QJ;4z|8zbG;S0Vv4Q`)mF8W^+k+9`r(^*we zfzM)5Nc(+J=zZ6Yv#4ZseTV3O<=^)mEL}9y-+IbrFtVDfBUJSkBwF{qTY#F97Pv~` HP3Zpv#UUu} literal 11269 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 diff --git a/definitions.h b/definitions.h index 7bf3aaf..d30074e 100644 --- a/definitions.h +++ b/definitions.h @@ -59,24 +59,23 @@ #define SCREEN_AMOUNT 5 -#define UI_CONTAINER_MAX_BUTTONS 20 -#define UI_CONTAINER_MAX_SELECTABLES 20 - -#define SCREEN_EXIT 0 // Will exit the game using code 0 +#define SCREEN_EXIT 0 // Will exit the game using exit-code 0 #define SCREEN_MAINMENU 1 #define SCREEN_OPTIONS 2 #define SCREEN_GAME 3 #define SCREEN_PAUSE 4 +#define UI_CONTAINER_MAX_BUTTONS 20 +#define UI_CONTAINER_MAX_SELECTABLES 20 + #define BUTTON_STATE_DEFAULT 0 #define BUTTON_STATE_HOVERED 1 #define BUTTON_STATE_PRESSED 2 -#define BUTTON_STATE_RELEASED 3 +#define BUTTON_STATE_RELEASED 3 // Buttons code will be executed when in Released state #define SELECTABLE_STATE_DEFAULT 0 #define SELECTABLE_STATE_HOVERED 1 -#define SELECTABLE_STATE_SELECTED 2 - +#define SELECTABLE_STATE_SELECTED 2 // Selectable code will be executed every frame while in Selected state #define BUTTON_ID_CONTINUE 0 #define BUTTON_ID_EXIT 1