Skip to content

Commit

Permalink
close EE-185
Browse files Browse the repository at this point in the history
  • Loading branch information
stohrendorf committed Mar 2, 2021
1 parent af959a7 commit 42a05a4
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 14 deletions.
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,7 @@ set( EDISONENGINE_SRCS
menu/listdisplaymenustate.cpp
menu/passportmenustate.cpp
menu/rendersettingsmenustate.cpp
menu/requestloadmenustate.cpp
menu/resetitemtransformmenustate.cpp
menu/rotateleftrightmenustate.cpp
menu/savegamelistmenustate.cpp
Expand Down
9 changes: 6 additions & 3 deletions src/menu/closepassportmenustate.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
#include "closepassportmenustate.h"

#include "deflateringmenustate.h"
#include "engine/items_tr1.h"
#include "finishitemanimationmenustate.h"
#include "idleringmenustate.h"
#include "menudisplay.h"
#include "menuobject.h"
#include "passportmenustate.h"
#include "resetitemtransformmenustate.h"
Expand All @@ -11,8 +12,10 @@
namespace menu
{
ClosePassportMenuState::ClosePassportMenuState(const std::shared_ptr<MenuRingTransform>& ringTransform,
MenuObject& passport)
MenuObject& passport,
std::unique_ptr<MenuState>&& next)
: MenuState{ringTransform}
, m_next{std::move(next)}
{
Expects(passport.type == engine::TR1ItemId::PassportOpening);

Expand All @@ -34,7 +37,7 @@ std::unique_ptr<MenuState>
ClosePassportMenuState::onFrame(ui::Ui& /*ui*/, engine::World& /*world*/, MenuDisplay& /*display*/)
{
return create<FinishItemAnimationMenuState>(create<SetItemTypeMenuState>(
engine::TR1ItemId::PassportClosed, create<ResetItemTransformMenuState>(create<IdleRingMenuState>(false))));
engine::TR1ItemId::PassportClosed, create<ResetItemTransformMenuState>(std::move(m_next))));
}

void ClosePassportMenuState::handleObject(ui::Ui& /*ui*/,
Expand Down
7 changes: 6 additions & 1 deletion src/menu/closepassportmenustate.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ namespace menu
{
class ClosePassportMenuState : public MenuState
{
private:
std::unique_ptr<MenuState> m_next;

public:
explicit ClosePassportMenuState(const std::shared_ptr<MenuRingTransform>& ringTransform, MenuObject& passport);
explicit ClosePassportMenuState(const std::shared_ptr<MenuRingTransform>& ringTransform,
MenuObject& passport,
std::unique_ptr<MenuState>&& next);

void handleObject(ui::Ui& ui, engine::World& world, MenuDisplay& display, MenuObject& object) override;
std::unique_ptr<MenuState> onFrame(ui::Ui& ui, engine::World& world, MenuDisplay& display) override;
Expand Down
7 changes: 2 additions & 5 deletions src/menu/passportmenustate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,10 @@
#include "engine/i18nprovider.h"
#include "engine/presenter.h"
#include "engine/world.h"
#include "finishitemanimationmenustate.h"
#include "idleringmenustate.h"
#include "menudisplay.h"
#include "menuring.h"
#include "resetitemtransformmenustate.h"
#include "savegamelistmenustate.h"
#include "setitemtypemenustate.h"
#include "util.h"

namespace menu
Expand Down Expand Up @@ -207,11 +204,11 @@ std::unique_ptr<MenuState> PassportMenuState::onFrame(ui::Ui& ui, engine::World&
if(!m_allowExit && display.mode != InventoryMode::TitleMode)
return nullptr;

return create<ClosePassportMenuState>(passport);
return create<ClosePassportMenuState>(passport, create<IdleRingMenuState>(false));
}
else if(world.getPresenter().getInputHandler().hasDebouncedAction(hid::Action::Action))
{
return create<ClosePassportMenuState>(passport);
return create<ClosePassportMenuState>(passport, create<IdleRingMenuState>(false));
}

return nullptr;
Expand Down
21 changes: 21 additions & 0 deletions src/menu/requestloadmenustate.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#include "requestloadmenustate.h"

#include "menudisplay.h"

namespace menu
{
void RequestLoadMenuState::handleObject(ui::Ui& /*ui*/,
engine::World& /*world*/,
MenuDisplay& /*display*/,
MenuObject& /*object*/)
{
}

std::unique_ptr<MenuState> RequestLoadMenuState::onFrame(ui::Ui& /*ui*/, engine::World& /*world*/, MenuDisplay& display)
{
display.requestLoad = m_index;
display.result = MenuResult::RequestLoad;
return nullptr;
}

} // namespace menu
24 changes: 24 additions & 0 deletions src/menu/requestloadmenustate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include "menustate.h"

namespace menu
{
enum class MenuResult;

class RequestLoadMenuState : public MenuState
{
public:
explicit RequestLoadMenuState(const std::shared_ptr<MenuRingTransform>& ringTransform, size_t index)
: MenuState{ringTransform}
, m_index{index}
{
}

void handleObject(ui::Ui& ui, engine::World& world, MenuDisplay& display, MenuObject& object) override;
std::unique_ptr<MenuState> onFrame(ui::Ui& ui, engine::World& world, MenuDisplay& display) override;

private:
const size_t m_index;
};
} // namespace menu
14 changes: 9 additions & 5 deletions src/menu/savegamelistmenustate.cpp
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
#include "savegamelistmenustate.h"

#include "closepassportmenustate.h"
#include "deflateringmenustate.h"
#include "donemenustate.h"
#include "engine/engine.h"
#include "engine/i18nprovider.h"
#include "engine/presenter.h"
#include "engine/world.h"
#include "menudisplay.h"
#include "ui/label.h"

#include <boost/format.hpp>
#include "menuring.h"
#include "requestloadmenustate.h"

namespace menu
{
Expand Down Expand Up @@ -45,11 +47,13 @@ std::unique_ptr<MenuState> SavegameListMenuState::onSelected(size_t idx, engine:
{
// TODO confirm overwrite if necessary
world.save(idx);
return create<ClosePassportMenuState>(display.getCurrentRing().getSelectedObject(),
create<DeflateRingMenuState>(create<DoneMenuState>(MenuResult::Closed)));
}
else if(m_hasSavegame.at(idx))
{
display.requestLoad = idx;
display.result = MenuResult::RequestLoad;
return create<ClosePassportMenuState>(display.getCurrentRing().getSelectedObject(),
create<DeflateRingMenuState>(create<RequestLoadMenuState>(idx)));
}
return std::move(m_previous);
}
Expand Down

0 comments on commit 42a05a4

Please sign in to comment.