metaforce/Editor/SplashScreen.hpp

107 lines
4.2 KiB
C++
Raw Normal View History

2015-12-12 18:27:34 -08:00
#ifndef RUDE_SPLASH_SCREEN_HPP
#define RUDE_SPLASH_SCREEN_HPP
#include <Specter/View.hpp>
2015-12-15 13:56:40 -08:00
#include <Specter/ModalWindow.hpp>
2015-12-12 18:27:34 -08:00
#include <Specter/MultiLineTextView.hpp>
2015-12-15 13:56:40 -08:00
#include <Specter/FileBrowser.hpp>
2015-12-12 18:27:34 -08:00
#include "ViewManager.hpp"
namespace RUDE
{
2015-12-15 13:56:40 -08:00
class SplashScreen : public Specter::ModalWindow
2015-12-12 18:27:34 -08:00
{
ViewManager& m_vm;
Zeus::CColor m_textColor;
Zeus::CColor m_textColorClear;
std::unique_ptr<Specter::TextView> m_title;
2015-12-30 19:20:52 -08:00
std::string m_buildInfoStr;
2015-12-13 13:01:32 -08:00
std::unique_ptr<Specter::MultiLineTextView> m_buildInfo;
2015-12-30 19:20:52 -08:00
std::string m_newString;
2015-12-20 14:00:07 -08:00
Specter::ViewChild<std::unique_ptr<Specter::Button>> m_newButt;
2015-12-30 19:20:52 -08:00
std::string m_openString;
2015-12-20 14:00:07 -08:00
Specter::ViewChild<std::unique_ptr<Specter::Button>> m_openButt;
2015-12-30 19:20:52 -08:00
std::string m_extractString;
2015-12-20 14:00:07 -08:00
Specter::ViewChild<std::unique_ptr<Specter::Button>> m_extractButt;
2015-12-12 18:27:34 -08:00
2015-12-20 14:00:07 -08:00
Specter::ViewChild<std::unique_ptr<Specter::FileBrowser>> m_fileBrowser;
2015-12-13 13:01:32 -08:00
struct NewProjBinding : Specter::IButtonBinding
{
2015-12-15 13:56:40 -08:00
SplashScreen& m_splash;
NewProjBinding(SplashScreen& splash) : m_splash(splash) {}
2015-12-30 19:20:52 -08:00
const char* name() const {return m_splash.m_newString.c_str();}
2015-12-13 13:01:32 -08:00
const char* help() const {return "Creates an empty project at selected path";}
2015-12-13 20:56:25 -08:00
void activated(const boo::SWindowCoord& coord)
2015-12-13 13:01:32 -08:00
{
2015-12-30 14:05:17 -08:00
m_splash.m_fileBrowser.m_view.reset(
new Specter::FileBrowser(m_splash.rootView().viewRes(),
2015-12-30 19:20:52 -08:00
m_splash, m_splash.m_newString,
2015-12-30 14:05:17 -08:00
Specter::FileBrowser::Type::SaveFile));
2015-12-15 13:56:40 -08:00
m_splash.updateSize();
m_splash.m_newButt.mouseLeave(coord);
2015-12-13 13:01:32 -08:00
}
} m_newProjBind;
struct OpenProjBinding : Specter::IButtonBinding
{
2015-12-15 13:56:40 -08:00
SplashScreen& m_splash;
OpenProjBinding(SplashScreen& splash) : m_splash(splash) {}
2015-12-30 19:20:52 -08:00
const char* name() const {return m_splash.m_openString.c_str();}
2015-12-13 13:01:32 -08:00
const char* help() const {return "Opens an existing project at selected path";}
2015-12-13 20:56:25 -08:00
void activated(const boo::SWindowCoord& coord)
2015-12-13 13:01:32 -08:00
{
2015-12-30 14:05:17 -08:00
m_splash.m_fileBrowser.m_view.reset(
new Specter::FileBrowser(m_splash.rootView().viewRes(),
2015-12-30 19:20:52 -08:00
m_splash, m_splash.m_openString,
2015-12-30 14:05:17 -08:00
Specter::FileBrowser::Type::OpenHECLProject));
2015-12-15 13:56:40 -08:00
m_splash.updateSize();
m_splash.m_openButt.mouseLeave(coord);
2015-12-13 13:01:32 -08:00
}
} m_openProjBind;
struct ExtractProjBinding : Specter::IButtonBinding
{
2015-12-15 13:56:40 -08:00
SplashScreen& m_splash;
ExtractProjBinding(SplashScreen& splash) : m_splash(splash) {}
2015-12-30 19:20:52 -08:00
const char* name() const {return m_splash.m_extractString.c_str();}
2015-12-13 13:01:32 -08:00
const char* help() const {return "Extracts game image as project at selected path";}
2015-12-13 20:56:25 -08:00
void activated(const boo::SWindowCoord& coord)
2015-12-13 13:01:32 -08:00
{
2015-12-30 14:05:17 -08:00
m_splash.m_fileBrowser.m_view.reset(
new Specter::FileBrowser(m_splash.rootView().viewRes(),
2015-12-30 19:20:52 -08:00
m_splash, m_splash.m_extractString,
2015-12-30 14:05:17 -08:00
Specter::FileBrowser::Type::OpenFile));
2015-12-15 13:56:40 -08:00
m_splash.updateSize();
m_splash.m_extractButt.mouseLeave(coord);
2015-12-13 13:01:32 -08:00
}
} m_extractProjBind;
2015-12-12 18:27:34 -08:00
public:
SplashScreen(ViewManager& vm, Specter::ViewResources& res);
void think();
2015-12-15 13:56:40 -08:00
void updateContentOpacity(float opacity);
2015-12-12 18:27:34 -08:00
2015-12-13 13:01:32 -08:00
void mouseDown(const boo::SWindowCoord&, boo::EMouseButton, boo::EModifierKey);
void mouseUp(const boo::SWindowCoord&, boo::EMouseButton, boo::EModifierKey);
void mouseMove(const boo::SWindowCoord&);
void mouseEnter(const boo::SWindowCoord&);
void mouseLeave(const boo::SWindowCoord&);
2015-12-20 11:20:07 -08:00
void scroll(const boo::SWindowCoord&, const boo::SScrollDelta&);
void touchDown(const boo::STouchCoord&, uintptr_t);
void touchUp(const boo::STouchCoord&, uintptr_t);
void touchMove(const boo::STouchCoord&, uintptr_t);
void charKeyDown(unsigned long, boo::EModifierKey, bool);
2015-12-12 18:27:34 -08:00
void resized(const boo::SWindowRect& root, const boo::SWindowRect& sub);
void draw(boo::IGraphicsCommandQueue* gfxQ);
};
}
#endif // RUDE_SPLASH_SCREEN_HPP