Extract some configuration into EngineConfig

master
outfrost 2020-06-27 04:24:03 +02:00
parent 0db190f453
commit 7712735f0e
5 changed files with 53 additions and 6 deletions

View File

@ -21,7 +21,7 @@ static void onGlfwError(int error, const char* description);
void init() {
void init(EngineConfig config) {
if (window) {
logError("init called more than once");
return;
@ -41,7 +41,12 @@ void init() {
// glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
// glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
window = glfwCreateWindow(1280, 720, "shadowclad", NULL, NULL);
window = glfwCreateWindow(config.windowWidth,
config.windowHeight,
config.windowTitle.cstr,
NULL,
NULL);
if (!window) {
logError("Window or context creation failed");
glfwTerminate();
@ -60,8 +65,8 @@ void init() {
exit(EXIT_LIB_FAIL);
}
logInfo("Setting swap interval to 1");
glfwSwapInterval(1);
logInfo("Setting swap interval to %d", config.swapInterval);
glfwSwapInterval(config.swapInterval);
int width, height;
glfwGetFramebufferSize(window, &width, &height);
@ -99,6 +104,13 @@ void terminate() {
glfwTerminate();
}
EngineConfig defaultConfig() {
return (EngineConfig) { .windowWidth = 800,
.windowHeight = 600,
.windowTitle = newString(NULL),
.swapInterval = 1 };
}
static void onGlfwError(int error, const char* description) {
logError("GLFW error: %s", description);
}

View File

@ -1,8 +1,21 @@
#ifndef ENGINE_ENGINE_H_
#define ENGINE_ENGINE_H_
void init();
#include "string.h"
typedef struct EngineConfig EngineConfig;
struct EngineConfig {
int windowWidth;
int windowHeight;
String windowTitle;
int swapInterval;
};
void init(EngineConfig);
void run(void (*updateFn) (float));
void terminate();
EngineConfig defaultConfig();
#endif // ENGINE_ENGINE_H_

View File

@ -2,6 +2,22 @@
#include <stdlib.h>
String newString(const char* s) {
size_t len = 0u;
char* cstr;
if (s) {
len = strlen(s);
cstr = memcpy(malloc((len + 1) * sizeof(char)),
s,
len * sizeof(char));
}
else {
cstr = malloc(1 * sizeof(char));
}
cstr[len] = '\0';
return (String) { .length = len, .cstr = cstr };
}
String stringFromAiString(const struct aiString aistr) {
char* cstr = memcpy(malloc((aistr.length + 1) * sizeof(char)),
aistr.data,

View File

@ -10,6 +10,7 @@ struct String {
char* cstr;
};
String newString(const char* s);
String stringFromAiString(const struct aiString aistr);
void dropString(String str);

View File

@ -3,8 +3,13 @@
#include "game/game.h"
int main(/*int argc, char** argv*/) {
EngineConfig cfg = { .windowWidth = 1280,
.windowHeight = 720,
.windowTitle = newString("shadowclad"),
.swapInterval = 1 };
// Engine startup
init();
init(cfg);
initGame();