Create main launch file
This commit is contained in:
parent
224c1a57d4
commit
87cb04f0f8
205
src/main.cpp
205
src/main.cpp
|
@ -0,0 +1,205 @@
|
||||||
|
#include <glad/glad.h>
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
#include <stb_image/stb_image.h>
|
||||||
|
#include <stb_truetype/stb_truetype.h>
|
||||||
|
#include "gl2d/gl2d.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include <ctime>
|
||||||
|
#include "tools.h"
|
||||||
|
#include "game.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
#ifdef PLATFORM_WIN32
|
||||||
|
#include <Windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
|
||||||
|
GameInput input;
|
||||||
|
|
||||||
|
void keyCallback(GLFWwindow* window, int key, int scancode, int action, int mods)
|
||||||
|
{
|
||||||
|
|
||||||
|
auto setKey = [&action](GameInput::keys k)
|
||||||
|
{
|
||||||
|
if (action == GLFW_PRESS)
|
||||||
|
{
|
||||||
|
input.setKeyPress(k);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (action == GLFW_RELEASE)
|
||||||
|
{
|
||||||
|
input.setKeyRelease(k);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_W || key == GLFW_KEY_UP)
|
||||||
|
{
|
||||||
|
setKey(GameInput::FRONT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_A || key == GLFW_KEY_LEFT)
|
||||||
|
{
|
||||||
|
setKey(GameInput::LEFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_S || key == GLFW_KEY_DOWN)
|
||||||
|
{
|
||||||
|
setKey(GameInput::BACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_D || key == GLFW_KEY_RIGHT)
|
||||||
|
{
|
||||||
|
setKey(GameInput::RIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_LEFT_SHIFT)
|
||||||
|
{
|
||||||
|
setKey(GameInput::DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_SPACE)
|
||||||
|
{
|
||||||
|
setKey(GameInput::UP);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_C)
|
||||||
|
{
|
||||||
|
setKey(GameInput::C);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_P)
|
||||||
|
{
|
||||||
|
setKey(GameInput::P);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_KEY_ESCAPE)
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void mouseCallback(GLFWwindow* window, int key, int action, int mods)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (key == GLFW_MOUSE_BUTTON_LEFT)
|
||||||
|
{
|
||||||
|
if (action == GLFW_PRESS)
|
||||||
|
{
|
||||||
|
input.setKeyPress(GameInput::LEFT_CLICK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (action == GLFW_RELEASE)
|
||||||
|
{
|
||||||
|
input.setKeyRelease(GameInput::LEFT_CLICK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == GLFW_MOUSE_BUTTON_RIGHT)
|
||||||
|
{
|
||||||
|
if (action == GLFW_PRESS)
|
||||||
|
{
|
||||||
|
input.setKeyPress(GameInput::RIGHT_CLICK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (action == GLFW_RELEASE)
|
||||||
|
{
|
||||||
|
input.setKeyRelease(GameInput::RIGHT_CLICK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void windowFocusCallback(GLFWwindow* window, int focused)
|
||||||
|
{
|
||||||
|
if (!focused)
|
||||||
|
{
|
||||||
|
input.resetInputsToZero();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void windowSizeCallback(GLFWwindow* window, int x, int y)
|
||||||
|
{
|
||||||
|
|
||||||
|
input.resetInputsToZero();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef PLATFORM_WIN32
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#if INTERNAL_BUILD
|
||||||
|
{
|
||||||
|
AllocConsole();
|
||||||
|
auto f1 = freopen("conin$", "r", stdin);
|
||||||
|
auto f2 = freopen("conout$", "w", stdout);
|
||||||
|
auto f3 = freopen("conout$", "w", stderr);
|
||||||
|
std::cout.sync_with_stdio();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
permaAssertComment(glfwInit(), "err initializing glfw");
|
||||||
|
|
||||||
|
|
||||||
|
glfwWindowHint(GLFW_SAMPLES, 4);
|
||||||
|
|
||||||
|
int w = 1920;
|
||||||
|
int h = 1080;
|
||||||
|
GLFWwindow* wind = glfwCreateWindow(w, h, "geam", nullptr, nullptr);
|
||||||
|
glfwMakeContextCurrent(wind);
|
||||||
|
glfwSwapInterval(1);
|
||||||
|
glfwSetKeyCallback(wind, keyCallback);
|
||||||
|
glfwSetMouseButtonCallback(wind, mouseCallback);
|
||||||
|
glfwSetWindowFocusCallback(wind, windowFocusCallback);
|
||||||
|
glfwSetWindowSizeCallback(wind, windowSizeCallback);
|
||||||
|
glfwSetInputMode(wind, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
||||||
|
|
||||||
|
permaAssertComment(gladLoadGL(), "err initializing glad");
|
||||||
|
|
||||||
|
gl2d::init();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Game game(w, h);
|
||||||
|
|
||||||
|
|
||||||
|
long lastTime = clock();
|
||||||
|
|
||||||
|
while (!glfwWindowShouldClose(wind))
|
||||||
|
{
|
||||||
|
int w = 0; int h = 0;
|
||||||
|
glfwGetWindowSize(wind, &w, &h);
|
||||||
|
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
#pragma region movement
|
||||||
|
long newTime = clock();
|
||||||
|
float deltaTime = (float)(newTime - lastTime) / CLOCKS_PER_SEC;
|
||||||
|
lastTime = clock();
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
double xMouse, yMouse;
|
||||||
|
glfwGetCursorPos(wind, &xMouse, &yMouse);
|
||||||
|
input.setMousePosition((int)xMouse, (int)yMouse);
|
||||||
|
|
||||||
|
game.updateWindowMetrics(w, h);
|
||||||
|
game.onUpdate(deltaTime, input);
|
||||||
|
input.resetInputsThisFrame();
|
||||||
|
|
||||||
|
|
||||||
|
glfwSwapBuffers(wind);
|
||||||
|
glfwPollEvents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (std::string msg)
|
||||||
|
{
|
||||||
|
llog(ErrorLog(), msg);
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.get();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue