4jcraft/Minecraft.Client/UI/Screens/SelectWorldScreen.h
2026-03-29 15:52:18 -05:00

79 lines
2 KiB
C++

#pragma once
#include "../Screen.h"
#include "../ScrolledSelectionList.h"
class LevelSummary;
class Button;
class Tesselator;
class SelectWorldScreen : public Screen {
public:
class WorldSelectionList;
protected:
static const int BUTTON_CANCEL_ID = 0;
static const int BUTTON_SELECT_ID = 1;
static const int BUTTON_DELETE_ID = 2;
static const int BUTTON_CREATE_ID = 3;
static const int BUTTON_UP_ID = 4;
static const int BUTTON_DOWN_ID = 5;
static const int BUTTON_RENAME_ID = 6;
private:
// final DateFormat DATE_FORMAT = new SimpleDateFormat(); // 4J -
// removed
protected:
Screen* lastScreen;
std::wstring title;
private:
bool done;
int selectedWorld;
std::vector<LevelSummary*>* levelList;
WorldSelectionList* worldSelectionList;
std::wstring worldLang;
std::wstring conversionLang;
bool isDeleting;
Button* deleteButton;
Button* selectButton;
Button* renameButton;
public:
SelectWorldScreen(Screen* lastScreen);
virtual void init() override;
private:
void loadLevelList();
protected:
std::wstring getWorldId(int id);
std::wstring getWorldName(int id);
public:
virtual void postInit();
protected:
virtual void buttonClicked(Button* button) override;
public:
void worldSelected(int id);
void confirmResult(bool result, int id) override;
virtual void render(int xm, int ym, float a) override;
class WorldSelectionList : public ScrolledSelectionList {
public:
SelectWorldScreen* parent;
// 4J - had to add input parameters to ctor, original is a java subclass
// of the screen and can access its members
WorldSelectionList(SelectWorldScreen* sws);
protected:
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);
};
};