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>();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <guecs/ui.hpp>
|
||||
#include "rituals.hpp"
|
||||
#include "simplefsm.hpp"
|
||||
#include "animate2.hpp"
|
||||
|
||||
namespace gui {
|
||||
namespace ritual {
|
||||
|
|
@ -34,7 +35,7 @@ namespace gui {
|
|||
public:
|
||||
sf::IntRect $ritual_closed_rect{{0,0},{380,720}};
|
||||
sf::IntRect $ritual_open_rect{{380 * 2,0},{380,720}};
|
||||
components::Animation $ritual_anim;
|
||||
animate2::Animate2 $ritual_anim;
|
||||
guecs::UI $gui;
|
||||
textures::SpriteTexture $ritual_ui;
|
||||
::ritual::Engine $ritual_engine;
|
||||
|
|
@ -61,6 +62,7 @@ namespace gui {
|
|||
void run_crafting_engine();
|
||||
void complete_combine();
|
||||
void update_selection_state();
|
||||
void play_blanket(const std::string& form);
|
||||
::ritual::Blanket& blanket();
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue