Added loading screen
This commit is contained in:
parent
f6cc30a30c
commit
84006380db
BIN
resources/loading.png
(Stored with Git LFS)
Normal file
BIN
resources/loading.png
(Stored with Git LFS)
Normal file
Binary file not shown.
74
src/Game.cpp
74
src/Game.cpp
@ -60,10 +60,31 @@ namespace ZL
|
||||
|
||||
ZL::BindOpenGlFunctions();
|
||||
ZL::CheckGlError();
|
||||
renderer.InitOpenGL();
|
||||
|
||||
#ifdef EMSCRIPTEN
|
||||
renderer.shaderManager.AddShaderFromFiles("defaultColor", "resources/shaders/defaultColor.vertex", "resources/shaders/defaultColor_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("default", "resources/shaders/default.vertex", "resources/shaders/default_web.fragment", CONST_ZIP_FILE);
|
||||
|
||||
#else
|
||||
renderer.shaderManager.AddShaderFromFiles("defaultColor", "resources/shaders/defaultColor.vertex", "resources/shaders/defaultColor_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("default", "resources/shaders/default.vertex", "resources/shaders/default_desktop.fragment", CONST_ZIP_FILE);
|
||||
#endif
|
||||
|
||||
loadingTexture = std::make_unique<Texture>(CreateTextureDataFromPng("resources/loading.png", CONST_ZIP_FILE));
|
||||
loadingMesh.data = CreateRect2D({ Environment::width * 0.5, Environment::height * 0.5 }, { Environment::width * 0.5, Environment::height*0.5 }, 3);
|
||||
loadingMesh.RefreshVBO();
|
||||
|
||||
mainThreadHandler.EnqueueMainThreadTask([this]() {
|
||||
this->setupPart2();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
void Game::setupPart2()
|
||||
{
|
||||
|
||||
#ifdef EMSCRIPTEN
|
||||
renderer.shaderManager.AddShaderFromFiles("env_sky", "resources/shaders/env_sky.vertex", "resources/shaders/env_sky_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("defaultAtmosphere", "resources/shaders/defaultAtmosphere.vertex", "resources/shaders/defaultAtmosphere_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("planetBake", "resources/shaders/planet_bake.vertex", "resources/shaders/planet_bake_web.fragment", CONST_ZIP_FILE);
|
||||
@ -72,8 +93,6 @@ namespace ZL
|
||||
renderer.shaderManager.AddShaderFromFiles("spark", "resources/shaders/spark.vertex", "resources/shaders/spark_web.fragment", CONST_ZIP_FILE);
|
||||
|
||||
#else
|
||||
renderer.shaderManager.AddShaderFromFiles("defaultColor", "resources/shaders/defaultColor.vertex", "resources/shaders/defaultColor_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("default", "resources/shaders/default.vertex", "resources/shaders/default_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("env_sky", "resources/shaders/env_sky.vertex", "resources/shaders/env_sky_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("defaultAtmosphere", "resources/shaders/defaultAtmosphere.vertex", "resources/shaders/defaultAtmosphere_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("planetBake", "resources/shaders/planet_bake.vertex", "resources/shaders/planet_bake_desktop.fragment", CONST_ZIP_FILE);
|
||||
@ -105,10 +124,11 @@ namespace ZL
|
||||
spaceGameStarted = 1;
|
||||
};
|
||||
|
||||
renderer.InitOpenGL();
|
||||
space.setup();
|
||||
}
|
||||
|
||||
space.setup();
|
||||
|
||||
loadingCompleted = true;
|
||||
}
|
||||
|
||||
|
||||
void Game::drawUI()
|
||||
@ -143,6 +163,12 @@ namespace ZL
|
||||
}
|
||||
|
||||
void Game::drawScene() {
|
||||
if (!loadingCompleted) {
|
||||
drawLoading();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (spaceGameStarted) {
|
||||
space.drawScene();
|
||||
}
|
||||
@ -151,6 +177,44 @@ namespace ZL
|
||||
drawUnderMainMenu();
|
||||
}
|
||||
drawUI();
|
||||
}
|
||||
CheckGlError();
|
||||
}
|
||||
|
||||
void Game::drawLoading()
|
||||
{
|
||||
static const std::string defaultShaderName = "default";
|
||||
static const std::string vPositionName = "vPosition";
|
||||
static const std::string vTexCoordName = "vTexCoord";
|
||||
static const std::string textureUniformName = "Texture";
|
||||
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
renderer.shaderManager.PushShader(defaultShaderName);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.EnableVertexAttribArray(vPositionName);
|
||||
renderer.EnableVertexAttribArray(vTexCoordName);
|
||||
|
||||
float width = Environment::width;
|
||||
float height = Environment::height;
|
||||
|
||||
renderer.PushProjectionMatrix(
|
||||
0, width,
|
||||
0, height,
|
||||
-10, 10);
|
||||
|
||||
renderer.PushMatrix();
|
||||
renderer.LoadIdentity();
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, loadingTexture->getTexID());
|
||||
renderer.DrawVertexRenderStruct(loadingMesh);
|
||||
|
||||
renderer.PopMatrix();
|
||||
renderer.PopProjectionMatrix();
|
||||
|
||||
renderer.DisableVertexAttribArray(vPositionName);
|
||||
renderer.DisableVertexAttribArray(vTexCoordName);
|
||||
renderer.shaderManager.PopShader();
|
||||
CheckGlError();
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@ namespace ZL {
|
||||
~Game();
|
||||
|
||||
void setup();
|
||||
void setupPart2();
|
||||
void update();
|
||||
void render();
|
||||
|
||||
@ -36,12 +37,19 @@ namespace ZL {
|
||||
TaskManager taskManager;
|
||||
MainThreadHandler mainThreadHandler;
|
||||
std::unique_ptr<INetworkClient> networkClient;
|
||||
|
||||
|
||||
std::shared_ptr<Texture> loadingTexture;
|
||||
VertexRenderStruct loadingMesh;
|
||||
bool loadingCompleted = false;
|
||||
|
||||
private:
|
||||
int64_t getSyncTimeMs();
|
||||
void processTickCount();
|
||||
void drawScene();
|
||||
void drawUI();
|
||||
void drawUnderMainMenu();
|
||||
void drawLoading();
|
||||
void handleDown(int mx, int my);
|
||||
void handleUp(int mx, int my);
|
||||
void handleMotion(int mx, int my);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user