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
|
|
@ -1,9 +1,6 @@
|
|||
#include "gui/ritual_ui.hpp"
|
||||
#include "components.hpp"
|
||||
#include <guecs/ui.hpp>
|
||||
#include "rand.hpp"
|
||||
#include "animation.hpp"
|
||||
#include "rand.hpp"
|
||||
#include "sound.hpp"
|
||||
#include "events.hpp"
|
||||
#include "game_level.hpp"
|
||||
|
|
@ -45,23 +42,24 @@ namespace gui {
|
|||
$ritual_ui = textures::get_sprite("ritual_crafting_area");
|
||||
$ritual_ui.sprite->setPosition($gui.get_position());
|
||||
$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");
|
||||
$gui.set<Clickable>(open_close_toggle, {
|
||||
[&](auto){ event(Event::TOGGLE); }
|
||||
});
|
||||
|
||||
|
||||
$craft_state = $ritual_engine.start();
|
||||
$gui.init();
|
||||
|
||||
play_blanket("idle");
|
||||
state(State::CLOSED);
|
||||
}
|
||||
|
||||
void UI::OPENED(Event ev, std::any data) {
|
||||
if(ev == Event::TOGGLE) {
|
||||
clear_blanket();
|
||||
play_blanket("close");
|
||||
state(State::CLOSING);
|
||||
} else if(ev == Event::SELECT) {
|
||||
// do this before transitioning
|
||||
|
|
@ -73,6 +71,7 @@ namespace gui {
|
|||
void UI::CRAFTING(Event ev, std::any data) {
|
||||
if(ev == Event::TOGGLE) {
|
||||
clear_blanket();
|
||||
play_blanket("close");
|
||||
state(State::CLOSING);
|
||||
} else if(ev == Event::COMBINE) {
|
||||
complete_combine();
|
||||
|
|
@ -86,23 +85,28 @@ namespace gui {
|
|||
|
||||
void UI::CLOSED(Event ev) {
|
||||
if(ev == Event::TOGGLE) {
|
||||
$ritual_anim.play();
|
||||
load_blanket();
|
||||
play_blanket("open");
|
||||
state(State::OPENING);
|
||||
}
|
||||
}
|
||||
|
||||
void UI::OPENING(Event ev) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UI::CLOSING(Event ev) {
|
||||
if(ev == Event::TICK) {
|
||||
$ritual_ui.sprite->setTextureRect($ritual_closed_rect);
|
||||
if($ritual_anim.playing) {
|
||||
$ritual_anim.update();
|
||||
$ritual_anim.apply(*$ritual_ui.sprite);
|
||||
} else {
|
||||
state(State::CLOSED);
|
||||
}
|
||||
}
|
||||
|
|
@ -247,6 +251,11 @@ namespace gui {
|
|||
$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() {
|
||||
auto world = GameDB::current_world();
|
||||
return world->get_the<::ritual::Blanket>();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue