diff options
Diffstat (limited to 'source/frontend/StarAiInterface.hpp')
-rw-r--r-- | source/frontend/StarAiInterface.hpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/source/frontend/StarAiInterface.hpp b/source/frontend/StarAiInterface.hpp new file mode 100644 index 0000000..0b5e713 --- /dev/null +++ b/source/frontend/StarAiInterface.hpp @@ -0,0 +1,145 @@ +#ifndef STAR_AI_INTERFACE_HPP +#define STAR_AI_INTERFACE_HPP + +#include "StarAiTypes.hpp" +#include "StarGameTimers.hpp" +#include "StarWarping.hpp" +#include "StarAnimation.hpp" +#include "StarItemDescriptor.hpp" +#include "StarPane.hpp" +#include "StarMainInterfaceTypes.hpp" +#include "StarTechDatabase.hpp" + +namespace Star { + +STAR_CLASS(UniverseClient); +STAR_CLASS(AiDatabase); +STAR_CLASS(Cinematic); +STAR_CLASS(LabelWidget); +STAR_CLASS(ImageWidget); +STAR_CLASS(ImageStretchWidget); +STAR_CLASS(CanvasWidget); +STAR_CLASS(ListWidget); +STAR_CLASS(ButtonWidget); +STAR_CLASS(QuestManager); +STAR_CLASS(StackWidget); +STAR_CLASS(TabSetWidget); +STAR_CLASS(Companion); + +STAR_CLASS(AiInterface); + +STAR_EXCEPTION(AiInterfaceException, StarException); + +class AiInterface : public Pane { +public: + AiInterface(UniverseClientPtr client, CinematicPtr cinematic, MainInterfacePaneManager* paneManager); + + void update() override; + + void displayed() override; + void dismissed() override; + + void setSourceEntityId(EntityId sourceEntityId); + +private: + enum class AiPages : uint8_t { + StatusPage, + MissionList, + MissionPage, + CrewList, + CrewPage + }; + + void updateBreadcrumbs(); + void showStatus(); + + void populateMissions(); + void showMissions(); + void selectMission(); + void startMission(); + + void populateCrew(); + void showCrew(); + void selectRecruit(); + void dismissRecruit(); + + void goBack(); + + void setFaceAnimation(String const& name); + void setCurrentSpeech(String const& textWidget, AiSpeech speech); + + void giveBlueprint(String const& blueprintName); + + AiPages m_currentPage; + + UniverseClientPtr m_client; + CinematicPtr m_cinematic; + MainInterfacePaneManager* m_paneManager; + QuestManagerPtr m_questManager; + + EntityId m_sourceEntityId; + + AiDatabaseConstPtr m_aiDatabase; + + Animation m_staticAnimation; + Animation m_scanlineAnimation; + pair<String, Animation> m_faceAnimation; + + AudioInstancePtr m_chatterSound; + + StackWidgetPtr m_mainStack; + StackWidgetPtr m_missionStack; + StackWidgetPtr m_crewStack; + + ButtonWidgetPtr m_showMissionsButton; + ButtonWidgetPtr m_showCrewButton; + ButtonWidgetPtr m_backButton; + + int m_breadcrumbLeftPadding; + int m_breadcrumbRightPadding; + ImageStretchWidgetPtr m_homeBreadcrumbBackground; + ImageStretchWidgetPtr m_pageBreadcrumbBackground; + ImageStretchWidgetPtr m_itemBreadcrumbBackground; + LabelWidgetPtr m_homeBreadcrumbWidget; + LabelWidgetPtr m_pageBreadcrumbWidget; + LabelWidgetPtr m_itemBreadcrumbWidget; + + LabelWidgetPtr m_currentTextWidget; + + CanvasWidgetPtr m_aiFaceCanvasWidget; + LabelWidgetPtr m_shipStatusTextWidget; + + ListWidgetPtr m_missionListWidget; + LabelWidgetPtr m_missionNameLabel; + ImageWidgetPtr m_missionIcon; + + ListWidgetPtr m_crewListWidget; + LabelWidgetPtr m_recruitNameLabel; + ImageWidgetPtr m_recruitIcon; + + String m_species; + + String m_missionBreadcrumbText; + String m_missionDeployText; + String m_crewBreadcrumbText; + String m_defaultRecruitName; + String m_defaultRecruitDescription; + + StringList m_availableMissions; + StringList m_completedMissions; + Maybe<String> m_selectedMission; + + List<CompanionPtr> m_crew; + CompanionPtr m_selectedRecruit; + + Maybe<AiSpeech> m_currentSpeech; + float m_textLength; + float m_textMaxLength; + + ButtonWidgetPtr m_startMissionButton; + ButtonWidgetPtr m_dismissRecruitButton; +}; + +} + +#endif |