From a9e2b00c4d80ebb553c4dd101bc6f3513a51548e Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Wed, 7 Jun 2023 12:20:18 +0200 Subject: [PATCH] =?UTF-8?q?-=20Redistribuci=C3=B3=20de=20gr=C3=A0fics=20en?= =?UTF-8?q?=20diferents=20GIFs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/doors.gif | Bin 0 -> 893 bytes data/floor.gif | Bin 204 -> 205 bytes data/roomaux.gif | Bin 0 -> 73 bytes data/test.gif | Bin 3831 -> 3710 bytes data/walls.gif | Bin 0 -> 452 bytes source/colors.h | 16 ++++++++ source/jdraw.h | 1 + source/jui.cpp | 4 +- source/main.cpp | 8 ++-- source/room.cpp | 103 ++++++++++++++++++++++++++++++++--------------- source/room.h | 1 + 11 files changed, 95 insertions(+), 38 deletions(-) create mode 100644 data/doors.gif create mode 100644 data/roomaux.gif create mode 100644 data/walls.gif create mode 100644 source/colors.h diff --git a/data/doors.gif b/data/doors.gif new file mode 100644 index 0000000000000000000000000000000000000000..89203e4ff715778b546d5f0cbeb61f272a40b8c7 GIT binary patch literal 893 zcmV-@1A_cVNk%v~VekMu0FeLy{{a8Mz`y_i00000A^8Le3IG5AEC2ui0Pp}i00092 zgdZ8l?GK}bYR!wY-n{#tRf%AM=A@9y$+qqbW2v~tCOy{n&iB5csst;(P!2Z|6qn4V z5r`ZroebnL04-6sTpu=R6;Z=N6{(9(!)RIQbtwu;%}}-d?#YpW*)I;r(`VJjcZPR} z7%{U4_BXVaB3G7FXqb3;`BmxHhBcJKa@E+lCufO?dS^Bo+4rf#LFP$l>Zz5A+Xclq ztI5ZPv*8yvIZL+-n5)di3dSoaBy<5hY->!(sIt86R2q%V`HDm#Ywc}Zn8dwaqx#KbU9zXhd(VbDCfO((vNpxetf`yPw!Q`hbTY zJJq2UT}8&VVwO7ZNd#bl4TgPXP80OrI*|s$WwA$&9N07ZVCyTn#)kA5PugQvzkElWv8W` zsf0MwoN~!`lO}r7>7k&PxR_>=#Fa-LoE~a*qoYQ?DFI8W4K)WLosOiare7vB%}L*p zw^f~|sTG~6cQ%?NhvS79>8Mf4DppggLP{R5ys8#o8439*tf_oX%0*&ESR`wzQ6<`U zCA6A4HD6OI(Q2)Po@NydYM^v$r;@3$1>LUXu7@jM=z+Sfn!u8oZmjVZxaVJyiFB`~ T2)&wTzp~<`tGxpEQvd)voU*V6 literal 0 HcmV?d00001 diff --git a/data/floor.gif b/data/floor.gif index f6657f95191ae4887501e187e637258de189de51..45d25b21dff4562b652ecd3f91d86c4838b49f9f 100644 GIT binary patch delta 97 zcmV-n0G|KM0nGuBECHU8ElX8Zrqy2nXswQ(=T2^M(_O*edA^Gd7-Uz~m17XKmRJWn9wKJSP3-9Hs!aovS|5v`RGMKs04cIm=sA$hUywBHNtcCS{u45OKZDZQ2+ot D!(=TK delta 96 zcmV-m0H6QO0n7oAECHR7ElX7GMso&GdL2E>om}<$&9m=Z^M0_d=k^5v=azTlm-vUL z$CeP7q$s%<=;&dH$+$Gh`2*-hQ5Dxo3iN4-L{_?L`i5$8xXC(8voY9mMXPI30028w Cr!bNL diff --git a/data/roomaux.gif b/data/roomaux.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a680c72c630eb2845eaade352231871c6132ee0 GIT binary patch literal 73 zcmZ?wbh9u|RAAs>n8?8JpW*+30|ywuK=CIFCl`>V1LA??8JMJ6`d4-<@hBI3IT^iq Vuh;LhwMr*?)GFs_?GR(I1^}lk6+!?2 literal 0 HcmV?d00001 diff --git a/data/test.gif b/data/test.gif index e0596d8956bef6ebdc294ef3ac04937b8518cdff..d0473db748a57077fb8228b453cb5ca285c86f47 100644 GIT binary patch delta 3696 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 Oq|Y*nq`Gn;002A4ASt2% delta 3713 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 diff --git a/data/walls.gif b/data/walls.gif new file mode 100644 index 0000000000000000000000000000000000000000..c10d567921b1de2bacaf9e7af5739d85628ef1e0 GIT binary patch literal 452 zcmV;#0XzOjNk%v~VZZ<|0FeLy{{a8Mz`y_i00000A^8Le3IG5AEC2ui0Kfn+00092 zgpaAq?GK}zwAyPzz)bTGhT?byf(L3R$+qr0Y4TQ@!V2g5E~=(YQQdAdp7Dt6_)e!{ zLpUTRr&QzbM{FvYQEBxHCN-JY83JnSI>YStgoqu-q1o=ujn6xTSQ*(~7loonNXR89 z2N*aeQ0SP~m$sCq1{d{+$;NeMNoltT5iL_G-Ggt9AVR!I?OHsP+SmU9)`KEGU@`9`jm>=B*Zv{@@oWOKGF) zl`fya`OcU-EI7Y^kSL7bO&`B~oeIA5gzC<~d3?xBQiN*ILUh$m-XMJ{PT33yH3jpFf`@@j{u+6-$T+U&4fTi{r +#include "colors.h" #define DRAW_FLIP_NONE 0 #define DRAW_FLIP_HORIZONTAL 1 diff --git a/source/jui.cpp b/source/jui.cpp index f47cb1c..0147565 100644 --- a/source/jui.cpp +++ b/source/jui.cpp @@ -14,9 +14,9 @@ namespace ui const int txt_size = strlen(label)*4; const int txt_x = x+(w-txt_size)/2; - draw::color(inside?(btnDown?15:13):5); + draw::color(inside?(btnDown?15:LIGHT+TEAL):TEAL); draw::fillrect(x, y, w, h); - draw::print(label, 1+txt_x, y+3, 15, 8); + draw::print(label, 1+txt_x, y+3, LIGHT+WHITE, PAPER); if (inside) { diff --git a/source/main.cpp b/source/main.cpp index d8669f5..5876743 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -13,7 +13,7 @@ int room_xp = -1; int room_xn = -1; int room_yp = -1; int room_yn = -1; -int room_color = 5; +int room_color = 9; void restart() { @@ -44,6 +44,8 @@ void restart() void game::init() { draw::init("The Pool", 420, 240, 3); + + room::init(); surf = draw::loadSurface("test.gif"); draw::setSource(surf); draw::loadPalette("test.gif"); @@ -95,7 +97,7 @@ bool game::loop() actor::update(actor::getFirst()); actor::reorder(); - draw::cls(8); + draw::cls(2); room::draw(); actor::draw(actor::getFirst()); room::draw2(); @@ -114,7 +116,7 @@ bool game::loop() btn("DOOR XN:", 330, 65, room_xn, -1, 5); btn("DOOR YP:", 330, 80, room_yp, -1, 5); btn("DOOR YN:", 330, 95, room_yn, -1, 5); - btn("COLOR:", 330, 110, room_color, 3, 7); + btn("COLOR:", 330, 110, room_color, 5, 11); draw::render(); diff --git a/source/room.cpp b/source/room.cpp index ad74022..3507000 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -14,6 +14,23 @@ namespace room static uint8_t door_height[4]; static uint8_t color = 5; + static uint8_t floor_type = 0; + static uint8_t walls_type = 0; + static uint8_t doors_type = 0; + + static draw::surface *floor_surf = nullptr; + static draw::surface *walls_surf = nullptr; + static draw::surface *doors_surf = nullptr; + static draw::surface *aux_surf = nullptr; + + void init() + { + floor_surf = draw::loadSurface("floor.gif"); + walls_surf = draw::loadSurface("walls.gif"); + doors_surf = draw::loadSurface("doors.gif"); + aux_surf = draw::loadSurface("roomaux.gif"); + } + void load(int x, int y, int8_t xp, int8_t xn, int8_t yp, int8_t yn, uint8_t col) { color = col; @@ -51,6 +68,7 @@ namespace room void draw() { + draw::pushSource(); draw::swapcol(1, color); // RUTINES DE PINTAT DE LA PORTA DE DALT A LA DRETA @@ -58,17 +76,21 @@ namespace room { // Si la porta està elevada, pintar la part frontal de baix de la porta if (door_height[3] > 0) { - draw::draw( 164+3*16-tmin.y*16, (36+3*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, 128, 16+(5-door_height[3])*8); - draw::draw( 164+4*16-tmin.y*16, (36+4*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, 128, 16+(5-door_height[3])*8); + draw::setSource(walls_surf); + draw::draw( 164+3*16-tmin.y*16, (36+3*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, walls_type*32, (5-door_height[3])*8); + draw::draw( 164+4*16-tmin.y*16, (36+4*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, walls_type*32, (5-door_height[3])*8); } // Pintem els dos tiles baix de la porta - draw::draw(164+4*16-(tmin.y-1)*16, -door_height[3]*8+84+4*8+(tmin.y-1)*8, 16, 15, 144, 49); // Vora - draw::draw(148+3*16-(tmin.y-1)*16, -door_height[3]*8+76+3*8+(tmin.y-1)*8, 32, 15, 0, 1); // Tile de Piso - draw::draw(148+4*16-(tmin.y-1)*16, -door_height[3]*8+76+4*8+(tmin.y-1)*8, 32, 15, 0, 1); // Tile de Piso + draw::setSource(walls_surf); + draw::draw(164+4*16-(tmin.y-1)*16, -door_height[3]*8+84+4*8+(tmin.y-1)*8, 16, 15, 16+walls_type*32, 33); // Vora + draw::setSource(floor_surf); + draw::draw(148+3*16-(tmin.y-1)*16, -door_height[3]*8+76+3*8+(tmin.y-1)*8, 32, 15, floor_type*32, 1); // Tile de Piso + draw::draw(148+4*16-(tmin.y-1)*16, -door_height[3]*8+76+4*8+(tmin.y-1)*8, 32, 15, floor_type*32, 1); // Tile de Piso // Pintem la porta - draw::draw(164+3*16-tmin.y*16, -door_height[3]*8+32+3*8+tmin.y*8,40,59,18,133); + draw::setSource(doors_surf); + draw::draw(164+3*16-tmin.y*16, -door_height[3]*8+32+3*8+tmin.y*8,40,59,doors_type*80,0); } // RUTINES DE PINTAT DE LA PORTA DE DALT A LA ESQUERRA @@ -76,77 +98,92 @@ namespace room { // Si la porta està elevada, pintar la part frontal de baix de la porta if (door_height[1] > 0) { - draw::draw(148+tmin.x*16-3*16, (36+tmin.x*8+3*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, 144, 16+(5-door_height[1])*8); - draw::draw(148+tmin.x*16-4*16, (36+tmin.x*8+4*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, 144, 16+(5-door_height[1])*8); + draw::setSource(walls_surf); + draw::draw(148+tmin.x*16-3*16, (36+tmin.x*8+3*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, 16+walls_type*32, (5-door_height[1])*8); + draw::draw(148+tmin.x*16-4*16, (36+tmin.x*8+4*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, 16+walls_type*32, (5-door_height[1])*8); } // Pintem els dos tiles baix de la porta - draw::draw(164+(tmin.x-1)*16-5*16, -door_height[1]*8+84+(tmin.x-1)*8+4*8, 16, 15, 128, 49); // Vora - draw::draw(148+(tmin.x-1)*16-3*16, -door_height[1]*8+76+(tmin.x-1)*8+3*8,32,15,0,1); - draw::draw(148+(tmin.x-1)*16-4*16, -door_height[1]*8+76+(tmin.x-1)*8+4*8,32,15,0,1); + draw::setSource(walls_surf); + draw::draw(164+(tmin.x-1)*16-5*16, -door_height[1]*8+84+(tmin.x-1)*8+4*8, 16, 15, walls_type*32, 33); // Vora + draw::setSource(floor_surf); + draw::draw(148+(tmin.x-1)*16-3*16, -door_height[1]*8+76+(tmin.x-1)*8+3*8,32,15,floor_type*32,1); + draw::draw(148+(tmin.x-1)*16-4*16, -door_height[1]*8+76+(tmin.x-1)*8+4*8,32,15,floor_type*32,1); // Pintem la porta - draw::draw(164+(tmin.x-1)*16-4*16-8, -door_height[1]*8+32+3*8+9+(tmin.x-1)*8, 40,59, 64,133); + draw::setSource(doors_surf); + draw::draw(164+(tmin.x-1)*16-4*16-8, -door_height[1]*8+32+3*8+9+(tmin.x-1)*8, 40,59, 40+doors_type*80,0); } + draw::setSource(walls_surf); for (int x=tmin.x;x<=tmax.x;++x) { // Si hi ha porta en YP i està a altura 0, no pintem la vorera en eixos dos tiles - if ( !(doors & DOOR_YP) || (door_height[2] != 0) || (x!=3 && x!=4) ) draw::draw(148+x*16-tmax.y*16,84+x*8+tmax.y*8,16,15,128,49); + if ( !(doors & DOOR_YP) || (door_height[2] != 0) || (x!=3 && x!=4) ) draw::draw(148+x*16-tmax.y*16,84+x*8+tmax.y*8,16,15,walls_type*32, 33); // Si hi ha porta en YN, no pintem la pared en eixos dos tiles - if ( !(doors & DOOR_YN) || (x!=3 && x!=4) ) draw::draw(164+x*16-tmin.y*16,36+x*8+tmin.y*8,16,48,128,16); + if ( !(doors & DOOR_YN) || (x!=3 && x!=4) ) draw::draw(164+x*16-tmin.y*16,36+x*8+tmin.y*8,16,48,walls_type*32, 0); } for (int y=tmin.y;y<=tmax.y;++y) { + draw::setSource(walls_surf); // Si hi ha porta en XP i està a altura 0, no pintem la vorera en eixos dos tiles - if ( !(doors & DOOR_XP) || (door_height[0] != 0) || (y!=3 && y!=4) ) draw::draw(164+tmax.x*16-y*16,84+tmax.x*8+y*8,16,15,144,49); + if ( !(doors & DOOR_XP) || (door_height[0] != 0) || (y!=3 && y!=4) ) draw::draw(164+tmax.x*16-y*16,84+tmax.x*8+y*8,16,15,16+walls_type*32, 33); // Si hi ha porta en XN, no pintem la pared en eixos dos tiles - if ( !(doors & DOOR_XN) || (y!=3 && y!=4) ) draw::draw(148+tmin.x*16-y*16,36+tmin.x*8+y*8,16,48,144,16); + if ( !(doors & DOOR_XN) || (y!=3 && y!=4) ) draw::draw(148+tmin.x*16-y*16,36+tmin.x*8+y*8,16,48,16+walls_type*32,0); // Pintem tots els tiles del piso + draw::setSource(floor_surf); for (int x=tmin.x;x<=tmax.x;++x) { - draw::draw(148+x*16-y*16,76+x*8+y*8,32,15,0,1); + draw::draw(148+x*16-y*16,76+x*8+y*8,32,15,floor_type*32,1); } - } + } + draw::popSource(); } void draw2() { + draw::pushSource(); draw::swapcol(1, color); if (doors & DOOR_YP) { // Pintem les voreres dels dos tiles extra per a la porta YP - draw::draw(164+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, 144, 17); - draw::draw(148+3*16-(tmax.y+1)*16, -door_height[2]*8+84+3*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, 128, 17); - draw::draw(148+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, 128, 17); + draw::setSource(walls_surf); + draw::draw(164+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, 16+walls_type*32, 1); + draw::draw(148+3*16-(tmax.y+1)*16, -door_height[2]*8+84+3*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walls_type*32, 1); + draw::draw(148+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walls_type*32, 1); - draw::draw(164+4*16-(tmax.y+1)*16, 91+4*8+(tmax.y+1)*8, 16, 8, 16, 24); - draw::draw(148+3*16-(tmax.y+1)*16, 91+3*8+(tmax.y+1)*8, 16, 8, 0, 24); - draw::draw(148+4*16-(tmax.y+1)*16, 91+4*8+(tmax.y+1)*8, 16, 8, 0, 24); + draw::setSource(aux_surf); + draw::draw(164+4*16-(tmax.y+1)*16, 91+4*8+(tmax.y+1)*8, 16, 8, 16, 0); + draw::draw(148+3*16-(tmax.y+1)*16, 91+3*8+(tmax.y+1)*8, 16, 8, 0, 0); + draw::draw(148+4*16-(tmax.y+1)*16, 91+4*8+(tmax.y+1)*8, 16, 8, 0, 0); // Pintem la porta YP - draw::draw(164+3*16-8-(tmax.y+1)*16, -door_height[2]*8+32+3*8+4+(tmax.y+1)*8,40,59,18,133); + draw::setSource(doors_surf); + draw::draw(164+3*16-8-(tmax.y+1)*16, -door_height[2]*8+32+3*8+4+(tmax.y+1)*8,40,59,doors_type*80,0); } if (doors & DOOR_XP) { // Pintem les voreres dels dos tiles extra per a la porta XP - draw::draw(148+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,128,17); - draw::draw(164+(tmax.x+1)*16-3*16, -door_height[0]*8+84+(tmax.x+1)*8+3*8,16,15+door_height[0]*8,144,17); - draw::draw(164+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,144,17); + draw::setSource(walls_surf); + draw::draw(148+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,walls_type*32, 1); + draw::draw(164+(tmax.x+1)*16-3*16, -door_height[0]*8+84+(tmax.x+1)*8+3*8,16,15+door_height[0]*8,16+walls_type*32, 1); + draw::draw(164+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,16+walls_type*32, 1); - draw::draw(148+(tmax.x+1)*16-4*16, 91+(tmax.x+1)*8+4*8,16,8,0,24); - draw::draw(164+(tmax.x+1)*16-3*16, 91+(tmax.x+1)*8+3*8,16,8,16,24); - draw::draw(164+(tmax.x+1)*16-4*16, 91+(tmax.x+1)*8+4*8,16,8,16,24); + draw::setSource(aux_surf); + draw::draw(148+(tmax.x+1)*16-4*16, 91+(tmax.x+1)*8+4*8,16,8,0,0); + draw::draw(164+(tmax.x+1)*16-3*16, 91+(tmax.x+1)*8+3*8,16,8,16,0); + draw::draw(164+(tmax.x+1)*16-4*16, 91+(tmax.x+1)*8+4*8,16,8,16,0); // Pintem la porta XP - draw::draw( 164+(tmax.x+1)*16-4*16-16, -door_height[0]*8+32+3*8+4+(tmax.x+1)*8, 40,59, 64,133); + draw::setSource(doors_surf); + draw::draw( 164+(tmax.x+1)*16-4*16-16, -door_height[0]*8+32+3*8+4+(tmax.x+1)*8, 40,59, 40+doors_type*80,0); } - + draw::popSource(); } vec3_t getSize() diff --git a/source/room.h b/source/room.h index 3de3784..bcc5403 100644 --- a/source/room.h +++ b/source/room.h @@ -13,6 +13,7 @@ namespace room { + void init(); void load(int x, int y, int8_t xp, int8_t xn, int8_t yp, int8_t yn, uint8_t col); void draw(); void draw2();