C++03 Support & Partial Xbox 360 Support (#37)

* WIP C++03 + Xbox 360 Support

* math.h & _USE_MATH_DEFINES on Level.hpp
Updated Xenon vcxproj file for new file structure.

* * Fix bad GUI scale setup.

* * Gui: Use ratios instead of hardcoded sub-1 floating point values, to make the mechanism more clear.

* Add Direct Connect Button and Screen (#30)

* Add Direct Connect Button and Screen

* Remove accidental extra build directories for wasm

* Add DirectConnectScreen.cpp to the CMake

* Use Hungarian coding style notation

* * Fix errors caused by #30

* * Improve the Chat Screen

* * Improve the DirectConnectScreen, among other things.

* * Update the game title once again.

* * Add build-wasm.bat.

* * Add info about compiling for wasm

* * Fix send to specific GUID actually broadcasting to everyone

* * Add command manager.

* * Add writeable configuration.

* * Allow dynamic screen size change on windows

* * Allow the same thing on the emscripten version.

* WIP C++03 + Xbox 360 Support

* Fixed a possible merging issue that broke RakNet?

* Additional Xbox 360 compatability fixes

---------

Co-authored-by: Brent Da Mage <BrentDaMage@users.noreply.github.com>
Co-authored-by: iProgramInCpp <iprogramincpp@gmail.com>
Co-authored-by: ts <124226059+uniformization@users.noreply.github.com>
This commit is contained in:
Brent
2023-08-07 07:48:52 -05:00
committed by GitHub
parent 6c1a54e3f0
commit a0f71c7b27
179 changed files with 4969 additions and 918 deletions

View File

@@ -23,6 +23,19 @@ float Gui::InvGuiScale = 1.0f / 3.0f;
Gui::Gui(Minecraft* pMinecraft)
{
field_8 = 0;
field_C = "";
field_24 = 0;
field_28 = 0;
field_2C = 0;
field_9FC = 0;
field_A00 = "";
field_A18 = 0;
field_A1C = false;
field_A20 = 1.0f;
field_A3C = true;
m_bRenderMessages = true;
m_pMinecraft = pMinecraft;
xglGenBuffers(1, &m_renderChunk.field_0);

View File

@@ -46,21 +46,21 @@ public:
static float InvGuiScale;
public:
float field_8 = 0;
std::string field_C = "";
float field_8;
std::string field_C;
std::vector<GuiMessage> m_guiMessages;
int field_24 = 0;
int field_28 = 0;
int field_2C = 0;
int field_24;
int field_28;
int field_2C;
Random m_random;
Minecraft* m_pMinecraft;
int field_9FC = 0;
std::string field_A00 = "";
int field_A18 = 0;
bool field_A1C = false;
float field_A20 = 1.0f;
int field_9FC;
std::string field_A00;
int field_A18;
bool field_A1C;
float field_A20;
RenderChunk m_renderChunk;
bool field_A3C = true;
bool m_bRenderMessages = true;
bool field_A3C;
bool m_bRenderMessages;
};

View File

@@ -10,6 +10,11 @@
Screen::Screen()
{
m_width = 1;
m_height = 1;
field_10 = false;
m_tabButtonIndex = 0;
m_pClickedButton = 0;
}
Screen::~Screen()

View File

@@ -47,15 +47,15 @@ public:
virtual void charInput(char);
public:
int m_width = 1;
int m_height = 1;
bool field_10 = false;
int m_width;
int m_height;
bool field_10;
Minecraft* m_pMinecraft;
std::vector<Button*> m_buttons;
std::vector<Button*> m_buttonTabList;
int m_tabButtonIndex = 0;
int m_tabButtonIndex;
Font* m_pFont;
Button* m_pClickedButton = 0;
Button* m_pClickedButton;
#ifndef ORIGINAL_CODE
std::vector<TextInputBox*> m_textInputs;

View File

@@ -8,8 +8,27 @@
#include "Button.hpp"
void Button::_init()
{
m_width = 0;
m_height = 0;
m_xPos = 0;
m_yPos = 0;
m_text = "";
m_bEnabled = true;
m_bVisible = true;
field_36 = false;
#ifndef ORIGINAL_CODE
m_lastX = 0;
m_lastY = 0;
#endif
}
Button::Button(int buttonId, int xPos, int yPos, int btnWidth, int btnHeight, const std::string& text)
{
_init();
m_buttonId = buttonId;
m_xPos = xPos;
m_yPos = yPos;
@@ -20,6 +39,8 @@ Button::Button(int buttonId, int xPos, int yPos, int btnWidth, int btnHeight, co
Button::Button(int buttonId, int xPos, int yPos, const std::string& text)
{
_init();
m_buttonId = buttonId;
m_xPos = xPos;
m_yPos = yPos;
@@ -30,6 +51,8 @@ Button::Button(int buttonId, int xPos, int yPos, const std::string& text)
Button::Button(int buttonId, const std::string& text)
{
_init();
m_buttonId = buttonId;
m_text = text;
m_width = 200;

View File

@@ -15,6 +15,8 @@ class Screen;
class Button : public GuiComponent
{
private:
void _init();
public:
Button(int, int x, int y, int width, int height, const std::string&);
Button(int, int x, int y, const std::string&);
@@ -28,19 +30,19 @@ public:
void render(Minecraft*, int xPos, int yPos);
public:
int m_width = 0;
int m_height = 0;
int m_xPos = 0;
int m_yPos = 0;
std::string m_text = "";
int m_width;
int m_height;
int m_xPos;
int m_yPos;
std::string m_text;
int m_buttonId;
bool m_bEnabled = true;
bool m_bVisible = true;
bool field_36 = false;
bool m_bEnabled;
bool m_bVisible;
bool field_36;
#ifndef ORIGINAL_CODE
int m_lastX = 0;
int m_lastY = 0;
int m_lastX;
int m_lastY;
#endif
};

View File

@@ -10,30 +10,21 @@
#include "Minecraft.hpp"
#ifndef ORIGINAL_CODE
TextInputBox::TextInputBox(int id, int x, int y) :
TextInputBox(id, x, y, 200, 12, "", "")
{
}
TextInputBox::TextInputBox(int id, int x, int y, int width, int height) :
TextInputBox(id, x, y, width, height, "", "")
{
}
TextInputBox::TextInputBox(int id, int x, int y, int width, int height, const std::string& placeholder) :
TextInputBox(id, x, y, width, height, placeholder, "")
{
}
TextInputBox::TextInputBox(int id, int x, int y, int width, int height, const std::string& placeholder, const std::string& text) :
m_ID(id),
m_xPos(x),
m_yPos(y),
m_width(width),
m_height(height),
m_placeholder(placeholder),
m_text(text)
TextInputBox::TextInputBox(int id, int x, int y, int width, int height, const std::string& placeholder, const std::string& text)
{
m_ID = id;
m_xPos = x;
m_yPos = y;
m_width = width;
m_height = height;
m_placeholder = placeholder;
m_text = text;
m_bFocused = false;
m_bEnabled = true;
m_bCursorOn = true;
m_insertHead = 0;
m_lastFlashed = 0;
m_pFont = nullptr;
}
void TextInputBox::init(Font* pFont)

View File

@@ -20,10 +20,7 @@ class Minecraft;
class TextInputBox : public GuiComponent
{
public:
TextInputBox(int id, int x, int y);
TextInputBox(int id, int x, int y, int width, int height);
TextInputBox(int id, int x, int y, int width, int height, const std::string& placeholder);
TextInputBox(int id, int x, int y, int width, int height, const std::string& placeholder, const std::string& text);
TextInputBox(int id, int x, int y, int width = 200, int height = 12, const std::string& placeholder = "", const std::string& text = "");
void init(Font* pFont);
void setEnabled(bool bEnabled);
@@ -36,19 +33,19 @@ public:
bool clicked(int x, int y);
public:
int m_ID = 0;
int m_xPos = 0;
int m_yPos = 0;
int m_width = 0;
int m_height = 0;
int m_ID;
int m_xPos;
int m_yPos;
int m_width;
int m_height;
std::string m_placeholder;
std::string m_text;
bool m_bFocused = false;
bool m_bEnabled = true;
bool m_bCursorOn = true;
int m_insertHead = 0;
int m_lastFlashed = 0;
Font* m_pFont = nullptr;
bool m_bFocused;
bool m_bEnabled;
bool m_bCursorOn;
int m_insertHead;
int m_lastFlashed;
Font* m_pFont;
};
#endif

View File

@@ -74,7 +74,7 @@ void OptionsScreen::UpdateTexts()
m_fancyGfxButton.m_text = "Fancy graphics: " + BoolOptionStr(o.m_bFancyGraphics);
m_flightHaxButton.m_text = "Flight hax: " + BoolOptionStr(o.m_bFlyCheat);
m_autoJumpButton.m_text = "Auto Jump: " + BoolOptionStr(o.m_bAutoJump);
; m_viewDistButton.m_text = "View distance: " + ViewDistanceStr(o.field_10);
m_viewDistButton.m_text = "View distance: " + ViewDistanceStr(o.field_10);
m_srvVisButton.m_text = "Server " + std::string(o.m_bServerVisibleDefault ? "visible" : "invisible") + " by default";
}
#endif