diff options
Diffstat (limited to 'Minecraft.Client/StatsScreen.h')
| -rw-r--r-- | Minecraft.Client/StatsScreen.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/Minecraft.Client/StatsScreen.h b/Minecraft.Client/StatsScreen.h new file mode 100644 index 00000000..9f0d169f --- /dev/null +++ b/Minecraft.Client/StatsScreen.h @@ -0,0 +1,133 @@ +#pragma once +#include "Screen.h" +#include "ScrolledSelectionList.h" +class ItemStat; + +class StatsScreen : public Screen +{ +private: + static ItemRenderer *itemRenderer; + +protected: + static const int BUTTON_CANCEL_ID = 0; + static const int BUTTON_STATS_ID = 1; + static const int BUTTON_BLOCKITEMSTATS_ID = 2; + static const int BUTTON_ITEMSTATS_ID = 3; + + Screen *lastScreen; + wstring title; +public: + class GeneralStatisticsList; + class ItemStatisticsList; + class BlockStatisticsList; +private: + GeneralStatisticsList *statsList; + ItemStatisticsList *itemStatsList; + BlockStatisticsList *blockStatsList; + StatsCounter *stats; + + ScrolledSelectionList *activeList; + +public: + StatsScreen(Screen *lastScreen, StatsCounter *stats); + virtual void init(); + virtual void postInit(); +protected: + virtual void buttonClicked(Button *button); +public: + virtual void render(int xm, int ym, float a); + + class GeneralStatisticsList : public ScrolledSelectionList + { + protected: + StatsScreen *parent; + public: + GeneralStatisticsList(StatsScreen *ss); // 4J - added parameter so we can access parent + virtual int getNumberOfItems(); + virtual void selectItem(int item, bool doubleClick); + virtual bool isSelectedItem(int item); + virtual int getMaxPosition(); + virtual void renderBackground(); + virtual void renderItem(int i, int x, int y, int h, Tesselator *t); + }; +private: + + static const float SLOT_TEX_SIZE; + static const int SLOT_BG_SIZE = 18; + static const int SLOT_STAT_HEIGHT = SLOT_BG_SIZE + 2; + static const int SLOT_BG_X = 1; + static const int SLOT_BG_Y = 1; + static const int SLOT_FG_X = 2; + static const int SLOT_FG_Y = 2; + static const int SLOT_LEFT_INSERT = 40; + static const int ROW_COL_1 = 2 + 113; + static const int ROW_COL_2 = 2 + 163; + static const int ROW_COL_3 = 2 + 213; + static const int SLOT_TEXT_OFFSET = 5; + static const int SORT_NONE = 0; + static const int SORT_DOWN = -1; + static const int SORT_UP = 1; + + void blitSlot(int x, int y, int item); + void blitSlotBg(int x, int y); + void blitSlotIcon(int x, int y, int sx, int sy); + + class StatisticsList : public ScrolledSelectionList + { + public: + StatsScreen *parent; + protected: + int headerPressed; + vector<ItemStat *> statItemList; +// Comparator<ItemStat> itemStatSorter; + + int sortColumn; + int sortOrder; + public: + StatisticsList(StatsScreen *ss); // 4J - added parameter so we can access parent + virtual void selectItem(int item, bool doubleClick); + virtual bool isSelectedItem(int item); + virtual void renderBackground(); + virtual void renderHeader(int x, int y, Tesselator *t); + virtual void clickedHeader(int headerMouseX, int headerMouseY); + virtual int getNumberOfItems(); + ItemStat *getSlotStat(int slot); + virtual wstring getHeaderDescriptionId(int column) = 0; + virtual void renderStat(ItemStat *stat, int x, int y, bool shaded); + virtual void renderDecorations(int mouseX, int mouseY); + virtual void renderMousehoverTooltip(ItemStat *stat, int x, int y); + virtual void sortByColumn(int column); + }; + +public: + class ItemStatisticsList : public StatisticsList + { + + private: + static const int COLUMN_DEPLETED = 0; + static const int COLUMN_CRAFTED = 1; + static const int COLUMN_USED = 2; + + public: + ItemStatisticsList(StatsScreen *ss); // 4J - added parameter so we can access parent + virtual void renderHeader(int x, int y, Tesselator *t); + virtual void renderItem(int i, int x, int y, int h, Tesselator *t); + virtual wstring getHeaderDescriptionId(int column); + }; + + class BlockStatisticsList : public StatisticsList + { + + private: + static const int COLUMN_CRAFTED = 0; + static const int COLUMN_USED = 1; + static const int COLUMN_MINED = 2; + + public: + BlockStatisticsList(StatsScreen *ss); // 4J - added parameter so we can access parent + virtual void renderHeader(int x, int y, Tesselator *t); + virtual void renderItem(int i, int x, int y, int h, Tesselator *t); + virtual wstring getHeaderDescriptionId(int column); + }; + +};
\ No newline at end of file |
