#ifndef QUESTSCENE_H #define QUESTSCENE_H #include #include #include #include #include #include "models/qw_location.h" #include "controls/qw_abstractscenecontrol.h" /* QWScene * The game scene itself. */ enum class MouseButton { LEFT, RIGHT }; class QWDialogueFrame; class QWScene final : public QGraphicsScene { Q_OBJECT Q_DISABLE_COPY_MOVE(QWScene) private: std::shared_ptr location; QLinkedList> list_on_inventory_widgets; enum SceneStatus { GAMEPLAY, INVENTORY, MENU, DIALOGUE, EXAMINATION }; SceneStatus status; protected: void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; public: explicit QWScene(int x, int y); QLinkedList> inventoryWidgets() const noexcept; void setCurrentLocation(const std::shared_ptr &loc) noexcept; std::shared_ptr currentLocation() const noexcept; void clearLocation(); void onEndLevel(const QString &str) noexcept; signals: void signalClickInventory(); void signalClickDialogue(MouseButton); void signalEnterMenu(); void signalLeaveMenu(); void signalEnterExamination(); void signalLeaveExamination(); public slots: void onEntryGameplay() noexcept; void onEntryInventory() noexcept; void onEntryMenu() noexcept; void onEntryDialogue() noexcept; }; #endif // QUESTSCENE_H