The ritual blanket now has the new animation and gained the ability to play the animation reversed for the closing animation.
This commit is contained in:
parent
1a9c395ae6
commit
b504afef2a
3 changed files with 60 additions and 11 deletions
|
|
@ -160,5 +160,43 @@
|
||||||
"sounds": {
|
"sounds": {
|
||||||
"idle": []
|
"idle": []
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"ritual_crafting_area": {
|
||||||
|
"sheet": {
|
||||||
|
"frames": 3,
|
||||||
|
"frame_width": 380,
|
||||||
|
"frame_height": 720
|
||||||
|
},
|
||||||
|
"sequences": {
|
||||||
|
"idle": {"frames": [0], "durations": [5] },
|
||||||
|
"open": {"frames": [0, 1, 2], "durations": [5, 5, 5] },
|
||||||
|
"close": {"frames": [2, 1, 0], "durations": [5, 5, 5] }
|
||||||
|
},
|
||||||
|
"transforms": {
|
||||||
|
"basic": {
|
||||||
|
"min_x": 1.0,
|
||||||
|
"min_y": 1.0,
|
||||||
|
"max_x": 1.0,
|
||||||
|
"max_y": 1.0,
|
||||||
|
"flipped": false,
|
||||||
|
"scaled": false,
|
||||||
|
"toggled": true,
|
||||||
|
"looped": false,
|
||||||
|
"relative": false,
|
||||||
|
"easing": "none",
|
||||||
|
"motion": "move_none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"forms": {
|
||||||
|
"idle": ["idle", "basic"],
|
||||||
|
"open": ["open", "basic"],
|
||||||
|
"close": ["close", "basic"]
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"idle": [],
|
||||||
|
"open": [],
|
||||||
|
"close": []
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
#include "gui/ritual_ui.hpp"
|
#include "gui/ritual_ui.hpp"
|
||||||
#include "components.hpp"
|
|
||||||
#include <guecs/ui.hpp>
|
#include <guecs/ui.hpp>
|
||||||
#include "rand.hpp"
|
#include "rand.hpp"
|
||||||
#include "animation.hpp"
|
|
||||||
#include "rand.hpp"
|
|
||||||
#include "sound.hpp"
|
#include "sound.hpp"
|
||||||
#include "events.hpp"
|
#include "events.hpp"
|
||||||
#include "game_level.hpp"
|
#include "game_level.hpp"
|
||||||
|
|
@ -45,23 +42,24 @@ namespace gui {
|
||||||
$ritual_ui = textures::get_sprite("ritual_crafting_area");
|
$ritual_ui = textures::get_sprite("ritual_crafting_area");
|
||||||
$ritual_ui.sprite->setPosition($gui.get_position());
|
$ritual_ui.sprite->setPosition($gui.get_position());
|
||||||
$ritual_ui.sprite->setTextureRect($ritual_closed_rect);
|
$ritual_ui.sprite->setTextureRect($ritual_closed_rect);
|
||||||
$ritual_anim = animation::load("ritual_crafting_area");
|
$ritual_anim = animate2::load("assets/animate2.json", "ritual_crafting_area");
|
||||||
|
|
||||||
auto open_close_toggle = $gui.entity("ritual_ui");
|
auto open_close_toggle = $gui.entity("ritual_ui");
|
||||||
$gui.set<Clickable>(open_close_toggle, {
|
$gui.set<Clickable>(open_close_toggle, {
|
||||||
[&](auto){ event(Event::TOGGLE); }
|
[&](auto){ event(Event::TOGGLE); }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$craft_state = $ritual_engine.start();
|
$craft_state = $ritual_engine.start();
|
||||||
$gui.init();
|
$gui.init();
|
||||||
|
|
||||||
|
play_blanket("idle");
|
||||||
state(State::CLOSED);
|
state(State::CLOSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::OPENED(Event ev, std::any data) {
|
void UI::OPENED(Event ev, std::any data) {
|
||||||
if(ev == Event::TOGGLE) {
|
if(ev == Event::TOGGLE) {
|
||||||
clear_blanket();
|
clear_blanket();
|
||||||
|
play_blanket("close");
|
||||||
state(State::CLOSING);
|
state(State::CLOSING);
|
||||||
} else if(ev == Event::SELECT) {
|
} else if(ev == Event::SELECT) {
|
||||||
// do this before transitioning
|
// do this before transitioning
|
||||||
|
|
@ -73,6 +71,7 @@ namespace gui {
|
||||||
void UI::CRAFTING(Event ev, std::any data) {
|
void UI::CRAFTING(Event ev, std::any data) {
|
||||||
if(ev == Event::TOGGLE) {
|
if(ev == Event::TOGGLE) {
|
||||||
clear_blanket();
|
clear_blanket();
|
||||||
|
play_blanket("close");
|
||||||
state(State::CLOSING);
|
state(State::CLOSING);
|
||||||
} else if(ev == Event::COMBINE) {
|
} else if(ev == Event::COMBINE) {
|
||||||
complete_combine();
|
complete_combine();
|
||||||
|
|
@ -86,23 +85,28 @@ namespace gui {
|
||||||
|
|
||||||
void UI::CLOSED(Event ev) {
|
void UI::CLOSED(Event ev) {
|
||||||
if(ev == Event::TOGGLE) {
|
if(ev == Event::TOGGLE) {
|
||||||
$ritual_anim.play();
|
|
||||||
load_blanket();
|
load_blanket();
|
||||||
|
play_blanket("open");
|
||||||
state(State::OPENING);
|
state(State::OPENING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::OPENING(Event ev) {
|
void UI::OPENING(Event ev) {
|
||||||
if(ev == Event::TICK) {
|
if(ev == Event::TICK) {
|
||||||
if(!$ritual_anim.apply(*$ritual_ui.sprite, {0,0})) {
|
if($ritual_anim.playing) {
|
||||||
|
$ritual_anim.update();
|
||||||
|
$ritual_anim.apply(*$ritual_ui.sprite);
|
||||||
|
} else {
|
||||||
state(State::OPENED);
|
state(State::OPENED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::CLOSING(Event ev) {
|
void UI::CLOSING(Event ev) {
|
||||||
if(ev == Event::TICK) {
|
if($ritual_anim.playing) {
|
||||||
$ritual_ui.sprite->setTextureRect($ritual_closed_rect);
|
$ritual_anim.update();
|
||||||
|
$ritual_anim.apply(*$ritual_ui.sprite);
|
||||||
|
} else {
|
||||||
state(State::CLOSED);
|
state(State::CLOSED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -247,6 +251,11 @@ namespace gui {
|
||||||
$gui.close<Sprite>("result_image");
|
$gui.close<Sprite>("result_image");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UI::play_blanket(const std::string& form) {
|
||||||
|
$ritual_anim.set_form(form);
|
||||||
|
$ritual_anim.play();
|
||||||
|
}
|
||||||
|
|
||||||
::ritual::Blanket& UI::blanket() {
|
::ritual::Blanket& UI::blanket() {
|
||||||
auto world = GameDB::current_world();
|
auto world = GameDB::current_world();
|
||||||
return world->get_the<::ritual::Blanket>();
|
return world->get_the<::ritual::Blanket>();
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include <guecs/ui.hpp>
|
#include <guecs/ui.hpp>
|
||||||
#include "rituals.hpp"
|
#include "rituals.hpp"
|
||||||
#include "simplefsm.hpp"
|
#include "simplefsm.hpp"
|
||||||
|
#include "animate2.hpp"
|
||||||
|
|
||||||
namespace gui {
|
namespace gui {
|
||||||
namespace ritual {
|
namespace ritual {
|
||||||
|
|
@ -34,7 +35,7 @@ namespace gui {
|
||||||
public:
|
public:
|
||||||
sf::IntRect $ritual_closed_rect{{0,0},{380,720}};
|
sf::IntRect $ritual_closed_rect{{0,0},{380,720}};
|
||||||
sf::IntRect $ritual_open_rect{{380 * 2,0},{380,720}};
|
sf::IntRect $ritual_open_rect{{380 * 2,0},{380,720}};
|
||||||
components::Animation $ritual_anim;
|
animate2::Animate2 $ritual_anim;
|
||||||
guecs::UI $gui;
|
guecs::UI $gui;
|
||||||
textures::SpriteTexture $ritual_ui;
|
textures::SpriteTexture $ritual_ui;
|
||||||
::ritual::Engine $ritual_engine;
|
::ritual::Engine $ritual_engine;
|
||||||
|
|
@ -61,6 +62,7 @@ namespace gui {
|
||||||
void run_crafting_engine();
|
void run_crafting_engine();
|
||||||
void complete_combine();
|
void complete_combine();
|
||||||
void update_selection_state();
|
void update_selection_state();
|
||||||
|
void play_blanket(const std::string& form);
|
||||||
::ritual::Blanket& blanket();
|
::ritual::Blanket& blanket();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue