mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-11 20:11:18 +03:00
final fixes
This commit is contained in:
137
source/NinecraftApp.cpp
Normal file
137
source/NinecraftApp.cpp
Normal file
@@ -0,0 +1,137 @@
|
||||
/********************************************************************
|
||||
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
|
||||
********************************************************************/
|
||||
|
||||
#include "NinecraftApp.hpp"
|
||||
#include "StartMenuScreen.hpp"
|
||||
#include "Item.hpp"
|
||||
|
||||
#ifdef DEMO
|
||||
#include "MemoryLevelStorageSource.hpp"
|
||||
#else
|
||||
#include "ExternalFileLevelStorageSource.hpp"
|
||||
#endif
|
||||
|
||||
bool NinecraftApp::_hasInitedStatics;
|
||||
|
||||
bool NinecraftApp::handleBack(bool b)
|
||||
{
|
||||
if (m_bPreparingLevel)
|
||||
return true;
|
||||
|
||||
if (!m_pLevel)
|
||||
{
|
||||
if (!field_D14)
|
||||
return false;
|
||||
return field_D14->handleBackEvent(b);
|
||||
}
|
||||
|
||||
if (b)
|
||||
return 1;
|
||||
|
||||
if (!field_D14) return false;
|
||||
|
||||
if (field_D14->handleBackEvent(b))
|
||||
return true;
|
||||
|
||||
setScreen(nullptr);
|
||||
return true;
|
||||
}
|
||||
|
||||
void NinecraftApp::initGLStates()
|
||||
{
|
||||
GL_TEXTURE_2D;
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDepthFunc(GL_LEQUAL);
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
glAlphaFunc(GL_GREATER, 0.1f);
|
||||
glCullFace(GL_NONE);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
|
||||
}
|
||||
|
||||
void NinecraftApp::init()
|
||||
{
|
||||
Mth::initMth();
|
||||
|
||||
if (!_hasInitedStatics)
|
||||
{
|
||||
_hasInitedStatics = true;
|
||||
Material::initMaterials();
|
||||
Tile::initTiles();
|
||||
Item::initItems();
|
||||
Biome::initBiomes();
|
||||
}
|
||||
|
||||
initGLStates();
|
||||
Tesselator::instance.init();
|
||||
Minecraft::init();
|
||||
|
||||
#ifdef DEMO
|
||||
m_pLevelStorageSource = new MemoryLevelStorageSource;
|
||||
#else
|
||||
m_pLevelStorageSource = new ExternalFileLevelStorageSource(m_externalStorageDir);
|
||||
#endif
|
||||
|
||||
field_D9C = 0;
|
||||
|
||||
setScreen(new StartMenuScreen);
|
||||
}
|
||||
|
||||
void NinecraftApp::onGraphicsReset()
|
||||
{
|
||||
initGLStates();
|
||||
Tesselator::instance.init();
|
||||
Minecraft::onGraphicsReset();
|
||||
}
|
||||
|
||||
void NinecraftApp::teardown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void NinecraftApp::update()
|
||||
{
|
||||
++m_fps;
|
||||
Minecraft::update();
|
||||
|
||||
#ifdef ORIGINAL_CODE
|
||||
eglSwapBuffers(field_8, field_10);
|
||||
#endif
|
||||
|
||||
Mouse::_xOld = Mouse::_x;
|
||||
Mouse::_yOld = Mouse::_y;
|
||||
updateStats();
|
||||
}
|
||||
|
||||
void NinecraftApp::updateStats()
|
||||
{
|
||||
int timeMs = getTimeMs();
|
||||
if (timeMs > field_2B0 + 999)
|
||||
{
|
||||
if (m_pLocalPlayer)
|
||||
{
|
||||
Vec3 &pos = m_pLocalPlayer->m_pos;
|
||||
printf("%d fps\t%3d chunk updates. (%.2f, %.2f, %.2f)\n", m_fps, Chunk::updates, pos.x, pos.y, pos.z);
|
||||
printf("%s", m_pLevelRenderer->gatherStats1().c_str());
|
||||
Chunk::updates = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%d fps\n", m_fps);
|
||||
}
|
||||
|
||||
field_2B0 = timeMs;
|
||||
m_fps = 0;
|
||||
}
|
||||
}
|
||||
|
||||
NinecraftApp::~NinecraftApp()
|
||||
{
|
||||
teardown();
|
||||
}
|
||||
Reference in New Issue
Block a user