#ifndef AQ_MOD_SELECTOR_H #define AQ_MOD_SELECTOR_H #include "AquariaMenuItem.h" #include "DSQ.h" enum ModPackageType { MPT_MOD, MPT_PATCH, MPT_WEBLINK, }; class JuicyProgressBar : public Quad { public: JuicyProgressBar(); void progress(float p); void showText(bool b); void setText(const std::string& s); inline float progress() { return perc; } BitmapText txt; Quad juice; protected: float perc; }; class BasicIcon : public AquariaMenuItem { public: BasicIcon(); std::string label; virtual bool isGuiVisible(); virtual bool isCursorInMenuItem(); protected: bool mouseDown; Vector scaleNormal; Vector scaleBig; virtual void onUpdate(float dt); virtual void onClick(); }; class SubtitleIcon : public BasicIcon { protected: virtual void onUpdate(float dt); }; class ModIcon : public SubtitleIcon { public: ModIcon(); void loadEntry(const ModEntry& entry); virtual void updateStatus(); std::string fname; // internal mod name (file/folder name) std::string modname; // mod name as given by author unsigned int modId; ModType modType; protected: virtual void onClick(); }; class MenuIcon : public SubtitleIcon { public: typedef void (*callback)(int, void*); MenuIcon(int id); callback cb; void *cb_data; protected: int iconId; virtual void onClick(); }; #ifdef BBGE_BUILD_VFS class ModIconOnline : public SubtitleIcon { public: ModIconOnline(); bool fixIcon(); bool hasPkgOnDisk(); std::string namestr; // name of the mod: std::string desc; // std::string iconfile; // expected local texture file name std::string packageUrl; // where to download: std::string localname; // _mods/.aqmod - under which name the file should be stored if downloaded. Can be empty. std::string confirmStr; // -- pops up confirmation dialog before download if not empty. void setDownloadProgress(float p, float barheight = 20); JuicyProgressBar *pb; // visible if downloading Quad *extraIcon; // installed or update available Quad *statusIcon; ModPackageType pkgtype; bool clickable; bool hasUpdate; protected: virtual void onClick(); }; #endif // BBGE_BUILD_VFS class MenuBasicBar : public Quad { public: MenuBasicBar(); virtual void init(); }; class MenuIconBar : public MenuBasicBar { public: virtual void init(); std::vector icons; protected: void add(MenuIcon *ico); }; class IconGridPanel : public Quad { public: IconGridPanel(); void fade(bool in, bool sc); void add(BasicIcon *obj); int spacing; int getUsedX() const { return x; } int getUsedY() const { return y; } protected: int x, y; }; class ModSelectorScreen : public Quad, public ActionMapper { public: ModSelectorScreen(); void init(); void close(); void showPanel(int id); void updateFade(); void initModAndPatchPanel(); void initNetPanel(); void moveUp(); void moveDown(); void move(int ud, bool instant = false); std::vector panels; MenuIcon *globeIcon, *modsIcon; BitmapText dlText; bool gotServerList; AquariaMenuItem arrowUp, arrowDown; void setSubText(const std::string& s); protected: virtual void onUpdate(float dt); MenuIconBar leftbar; MenuBasicBar rightbar; int currentPanel; BitmapText subtext; Quad subbox; float subFadeT; }; #endif