Files
mcpe/source/client/app/Minecraft.hpp

152 lines
4.1 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#pragma once
#include "App.hpp"
#include "IGui.hpp"
#include "IScreen.hpp"
#include "common/CThread.hpp"
#include "common/Mth.hpp"
#include "common/Timer.hpp"
#include "network/RakNetInstance.hpp"
#include "network/NetEventCallback.hpp"
#include "client/player/LocalPlayer.hpp"
#include "client/player/input/IInputHolder.hpp"
#include "client/player/input/MouseHandler.hpp"
#include "client/player/input/BuildActionIntention.hpp"
#include "client/renderer/GameRenderer.hpp"
#include "client/renderer/LevelRenderer.hpp"
#include "client/renderer/entity/EntityRenderDispatcher.hpp"
#include "client/sound/SoundEngine.hpp"
#include "world/level/Level.hpp"
#include "world/gamemode/GameMode.hpp"
#include "world/particle/ParticleEngine.hpp"
class Minecraft : public App
{
public:
Minecraft();
virtual ~Minecraft();
int getLicenseId();
void setScreen(IScreen * pScreen);
void releaseMouse();
void grabMouse();
void tick();
void tickInput();
void saveOptions();
void handleMouseClick(int type);
void handleMouseDown(int type, bool b);
void handleBuildAction(BuildActionIntention*);
bool isLevelGenerated();
void selectLevel(const std::string&, const std::string&, int);
void setLevel(Level*, const std::string&, LocalPlayer*);
void pauseGame();
void leaveGame(bool bCopyMap);
void hostMultiplayer();
void joinMultiplayer(const PingedCompatibleServer& serverInfo);
void cancelLocateMultiplayer();
void locateMultiplayer();
void tickMouse();
void handleCharInput(char chr);
void sendMessage(const std::string& message);
void resetPlayer(Player* player);
void respawnPlayer(Player* player);
std::string getVersionString();
bool isTouchscreen();
bool useSplitControls();
virtual void update() override;
virtual void init() override;
virtual void onGraphicsReset();
virtual void sizeUpdate(int newWidth, int newHeight) override;
virtual int getFpsIntlCounter();
float getBestScaleForThisScreenSize(int width, int height);
void generateLevel(const std::string& unused, Level* pLevel);
void prepareLevel(const std::string& unused);
bool isOnline();
bool isOnlineClient();
static void* prepareLevel_tspawn(void* pMinecraft);
const char* getProgressMessage();
LevelStorageSource* getLevelSource();
ItemInstance* getSelectedItem();
Options* getOptions() const { return m_options; }
static void setGuiScaleMultiplier(float f);
private:
void _reloadInput();
void _levelGenerated();
public:
static float guiScaleMultiplier;
static int width, height;
static bool useAmbientOcclusion;
static const char* progressMessages[];
static const bool DEADMAU5_CAMERA_CHEATS;
static int customDebugId;
private:
Logger *m_Logger;
Options *m_options;
public:
bool field_18;
bool field_288;
LevelRenderer* m_pLevelRenderer;
GameRenderer* m_pGameRenderer;
ParticleEngine* m_pParticleEngine;
SoundEngine* m_pSoundEngine;
GameMode* m_pGameMode;
Textures* m_pTextures;
Font* m_pFont;
RakNetInstance* m_pRakNetInstance;
NetEventCallback* m_pNetEventCallback;
int field_2B0;
int field_2B4;
int field_2B8;
User* m_pUser;
Level* m_pLevel;
LocalPlayer* m_pLocalPlayer;
Mob* m_pMobPersp; // why is there a duplicate?
IGui *m_pGui;
int field_D0C;
CThread* m_pPrepThread;
IScreen* m_pScreen;
int field_D18;
IInputHolder* m_pInputHolder;
MouseHandler m_mouseHandler;
bool m_bGrabbedMouse;
bool m_bIsTouchscreen;
HitResult m_hitResult;
int m_progressPercent;
std::string m_externalStorageDir;
Timer m_timer;
bool m_bPreparingLevel;
LevelStorageSource* m_pLevelStorageSource; // TODO
int field_D9C;
int field_DA0;
int field_DA4;
int field_DA8;
int field_DAC;
bool m_bUsingScreen;
bool m_bHasQueuedScreen;
IScreen* m_pQueuedScreen;
int m_licenseID;
ItemInstance m_CurrItemInstance;
// in 0.8. Offset 3368
double m_fDeltaTime, m_fLastUpdated;
float m_breakProgress;
};