From 66241e6a6a04d116f56f79b34fd122e8557c2d21 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Fri, 20 Sep 2024 13:53:09 +0200 Subject: [PATCH] =?UTF-8?q?-=20[NEW]=20Mode=20d'edici=C3=B3=20flotant=20(a?= =?UTF-8?q?mb=20tecla=20M).=20-=20[FIX]=20la=20copa=20de=20actors=20(sobre?= =?UTF-8?q?=20tot=20per=20a=20templates)=20tamb=C3=A9=20copia=20la=20surfa?= =?UTF-8?q?ce.=20-=20[FIX]=20El=20push=20de=20reacci=C3=B3=20se=20li=20ha?= =?UTF-8?q?=20de=20passar=20al=20que=20espenta,=20no=20al=20aspentat.=20-?= =?UTF-8?q?=20[FIX]=20La=20posici=C3=B3=20del=20cursor=20en=20l'editor=20d?= =?UTF-8?q?e=20posici=C3=B3=20en=20bitmap=20ha=20de=20resetejar-se=20al=20?= =?UTF-8?q?soltar=20el=20bot=C3=B3.=20-=20[NEW]=20Gr=C3=A0fics=20del=20cab?= =?UTF-8?q?ronet.=20-=20[NEW]=20Montons=20de=20objectes=20"templatechats"?= =?UTF-8?q?=20pa=20anar=20editant=20m=C3=A9s=20apresa.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/batman.gif | Bin 643 -> 643 bytes data/gifs.txt | 1 + data/rooms/17.txt | 97 +++++++++++- data/templates.txt | 270 ++++++++++++++++++++++++++------ data/test.gif | Bin 3888 -> 3931 bytes source/actor.cpp | 22 ++- source/actor.h | 4 + source/m_editor_bitmap.cpp | 2 + source/m_editor_bitmap_file.cpp | 2 +- source/m_editor_templates.cpp | 3 +- source/m_game.cpp | 42 ++++- source/room.cpp | 10 ++ source/room.h | 2 + 13 files changed, 395 insertions(+), 60 deletions(-) diff --git a/data/batman.gif b/data/batman.gif index e7e9b3a53ecee1b2d0bc98cc479daa949d806ef8..742c987a3f62f1647fad9c5d46d7f09364e884c7 100644 GIT binary patch delta 35 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 delta 3768 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 = draw::getSurface(new_act->bmp); + //new_act->surface = draw::getSurface(new_act->bmp); new_act->prev = new_act->next = new_act->above = new_act->below = nullptr; return new_act; } @@ -997,7 +998,7 @@ namespace actor // ...i encara està baix... if (is_above(act, act->below)) { // ...li pase a ell el push, neteje el meu flag, canvie direcció si pertoca i me ane - act->below->push |= push(act, act->below, PUSH_ZN); + act->push |= push(act, act->below, PUSH_ZN); // [RZC 20/09/2024] Canvie "act->below->push" per "act->push". Se li deu passar la reacció al que la inicia act->push &= ~PUSH_ZN; if ( (act->flags & FLAG_MOVING) && (act->movement==MOV_Z) ) changeMoving(act); return; @@ -1017,7 +1018,7 @@ namespace actor act->below = below; below->above = act; // ... i li passem el push, netejem el meu flag i gonnem - act->below->push |= push(act, act->below, PUSH_ZN); + act->push |= push(act, act->below, PUSH_ZN); // [RZC 20/09/2024] Canvie "act->below->push" per "act->push". Se li deu passar la reacció al que la inicia act->push &= ~PUSH_ZN; if ( (act->flags & FLAG_MOVING) && (act->movement==MOV_Z) ) changeMoving(act); return; @@ -1317,6 +1318,15 @@ namespace actor selected = nullptr; } + void setFloatingEditing(const bool value) + { + floating_editing = value; + } + + const bool getFloatingEditing() + { + return floating_editing; + } namespace templates { std::vector templates; @@ -1447,6 +1457,7 @@ namespace actor dest->react_push = source->react_push; dest->movement = source->movement; dest->template_category = source->template_category; + dest->surface = source->surface; } void add(actor_t *act) @@ -1454,8 +1465,7 @@ namespace actor // Fem una copia del actor actor_t new_template; copy(&new_template, act); - // Li fiquem la categoria per defecte - new_template.template_category = 0; + // Netejem el nom de numerets cleanName(&new_template); @@ -1464,9 +1474,11 @@ namespace actor { // ... la actualitzem amb les dades del actor seleccionat actor_t *existing_template = actor::templates::getByName(act->name); + new_template.template_category = existing_template->template_category; // Li fiquem la categoria que tenia abans copy(existing_template, &new_template); } else { // ... i sinó, afegim el actor seleccionat a la llista de plantilles + new_template.template_category = 0; // Li fiquem la categoria per defecte templates.push_back(new_template); } save(); diff --git a/source/actor.h b/source/actor.h index cde53b5..65a42cc 100644 --- a/source/actor.h +++ b/source/actor.h @@ -173,6 +173,10 @@ namespace actor void clear(const bool all = false); + void setFloatingEditing(const bool value); + + const bool getFloatingEditing(); + namespace templates { void load(); diff --git a/source/m_editor_bitmap.cpp b/source/m_editor_bitmap.cpp index e4d4f80..9276adf 100644 --- a/source/m_editor_bitmap.cpp +++ b/source/m_editor_bitmap.cpp @@ -56,6 +56,8 @@ namespace modules sel->bmp_rect.h += dy; } } + } else { + lastMB = false; } const int tx = (520-surf->w)/2; const int ty = (240-surf->h)/2; diff --git a/source/m_editor_bitmap_file.cpp b/source/m_editor_bitmap_file.cpp index 442c200..a5471f4 100644 --- a/source/m_editor_bitmap_file.cpp +++ b/source/m_editor_bitmap_file.cpp @@ -10,7 +10,7 @@ namespace modules { namespace editor_bitmap_file { - std::vector gifs = { "abad.gif", "altres.gif", "caixes.gif", "gat.gif", "gat2.gif", "objectes.gif", "obrer.gif" }; + std::vector gifs = { "abad.gif", "batman.gif", "altres.gif", "caixes.gif", "gat.gif", "gat2.gif", "objectes.gif", "obrer.gif" }; void init() { diff --git a/source/m_editor_templates.cpp b/source/m_editor_templates.cpp index b86aeea..ba947f7 100644 --- a/source/m_editor_templates.cpp +++ b/source/m_editor_templates.cpp @@ -61,7 +61,7 @@ namespace modules bool loop() { - if (input::keyPressed(SDL_SCANCODE_ESCAPE) || input::keyPressed(SDL_SCANCODE_TAB)) return false; + if (input::keyPressed(SDL_SCANCODE_ESCAPE) || input::keyPressed(SDL_SCANCODE_TAB) || input::keyPressed(SDL_SCANCODE_GRAVE)) return false; if (edit_mode == EDITING_NORMAL) { @@ -144,6 +144,7 @@ namespace modules actor::setUniqueName(new_act); actor::setDirty(new_act, true); actor::select(new_act); + actor::setFloatingEditing(true); room::editor::modify(); return false; diff --git a/source/m_game.cpp b/source/m_game.cpp index 97cd996..1bc7e11 100644 --- a/source/m_game.cpp +++ b/source/m_game.cpp @@ -19,6 +19,8 @@ namespace modules std::vector getGifs() { return gifs; } + vec2_t floating_position = {3,3}; + void init() { actor::clear(true); @@ -295,6 +297,31 @@ namespace modules if (editor::isDevMode()) draw::setViewport(100,0,320,240); room::draw(); + + actor::actor_t *selected = actor::getSelected(); + if (editor::isDevMode() && selected && input::keyPressed(SDL_SCANCODE_M)) actor::setFloatingEditing(true); + + if (editor::isDevMode() && actor::getFloatingEditing() && selected) { + draw::swapcol(1, GREEN+LIGHT); + draw::setSource(draw::getSurface("test.gif")); + const float px = draw::getLocalX(input::mouseX())-148-16; + const float py = draw::getLocalY(input::mouseY())-75; + const int x = int(py/16.0f + px/32.0f); + const int y = int(py/16.0f - px/32.0f); + + //draw::print2(x, -3, 1, 6, PURPLE, FONT_ZOOM_NONE); + //draw::print2(y, -3, 1, 7, PURPLE, FONT_ZOOM_NONE); + + if (x>=room::getTMin().x && y>=room::getTMin().y && xpos.x = floating_position.x*8; + selected->pos.y = floating_position.y*8; + } + draw::draw(148+floating_position.x*16-floating_position.y*16,75+floating_position.x*8+floating_position.y*8,32,16,160,0); + if (input::mouseClk(1)) actor::setFloatingEditing(false); + } + draw::stencil::enable(); draw::stencil::clear(255); actor::draw(actor::getFirst()); @@ -303,7 +330,8 @@ namespace modules draw::swapcol(1, WHITE+LIGHT); actor::draw(actor::getPicked(), false); - if (editor::isDevMode() && input::mouseBtn(1)) + // Si estem en el editor, fent click en els actors els seleccionem + if (editor::isDevMode() && input::mouseBtn(1) && !actor::getFloatingEditing()) { const uint8_t val = draw::stencil::query(input::mouseX(), input::mouseY()); if (val != 255) @@ -313,6 +341,7 @@ namespace modules } } + // Si estem jugant, o estem en el editor pero NO en mode edició, pinta els marcadors if (!editor::isEditing()) { const int col1 = room::getColor(1); @@ -350,6 +379,7 @@ namespace modules draw::stencil::disable(); + // Si estem en el editor, fent click en els skills del marcador els obtenim if (editor::isDevMode() && input::mouseClk(1)) { const uint8_t val = draw::stencil::query(input::mouseX(), input::mouseY()); @@ -364,6 +394,8 @@ namespace modules } } } + + /* print(0,0,input::mouseX()); print(0,20,input::mouseY()); @@ -371,6 +403,8 @@ namespace modules print(0,40,input::mouseBtn(2)?1:0); print(0,50,input::mouseBtn(3)?1:0); */ + + // Si no estem en el editor, pintem la consola (si es el cas), renderitzem i eixim if (!editor::isDevMode()) { console::draw(); @@ -378,6 +412,7 @@ namespace modules return GAME_NONE; } + // Si estem en el editor, pintem els numerets de les eixides draw::print2(room::getExit(XN), -2, 1, 1, TEAL, FONT_ZOOM_NONE); draw::print2(room::getExit(YN), -2, 38, 1, TEAL, FONT_ZOOM_NONE); draw::print2(room::getExit(XP), -2, 38, 28, TEAL, FONT_ZOOM_NONE); @@ -385,8 +420,11 @@ namespace modules draw::print2(room::getExit(ZP), -2, 19, 1, TEAL, FONT_ZOOM_NONE); draw::print2(room::getExit(ZN), -2, 19, 28, TEAL, FONT_ZOOM_NONE); + // ...i l'habitació actual draw::print2(room::getCurrent(), -2, 4, 3, WHITE, FONT_ZOOM_BOTH); + // ...i fent click en els numerets de les eixides anem a l'habitació corresponent + // Es més. Si no hi ha habitació enllaçada en una eixida i li fem ctrl+click, se crea una nova habitació per eixa eixida if (input::mouseClk(1)) { const int mx = draw::getLocalX(input::mouseX()); const int my = draw::getLocalY(input::mouseY()); @@ -419,6 +457,8 @@ namespace modules } } + // Pintem tota la UI del editor + // ================================================================================ ui::start(); actor::actor_t *act = nullptr; diff --git a/source/room.cpp b/source/room.cpp index 7525c00..3111470 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -466,6 +466,16 @@ namespace room return max; } + vec3_t getTMin() + { + return tmin; + } + + vec3_t getTMax() + { + return tmax; + } + int getDoors() { return doors; diff --git a/source/room.h b/source/room.h index db7be7e..0ae1380 100644 --- a/source/room.h +++ b/source/room.h @@ -32,6 +32,8 @@ namespace room vec3_t getSize(); vec3_t getMin(); vec3_t getMax(); + vec3_t getTMin(); + vec3_t getTMax(); int getDoors(); int getDoor(const int d); int getExit(const int d);