Init commit skeleton project
Template based on existing project.
This commit is contained in:
commit
c1725b0a13
15 changed files with 1857 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/build*/
|
||||||
|
/compile_commands.json
|
||||||
|
/.cache/
|
27
CMakeLists.txt
Normal file
27
CMakeLists.txt
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
project(LD52Native)
|
||||||
|
cmake_minimum_required(VERSION 3.18.4)
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "-Wall -Wextra -Wpedantic")
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "-O0 -g")
|
||||||
|
set(CMAKE_C_FLAGS_RELEASE "-O3 -D NDEBUG")
|
||||||
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wpedantic")
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
|
||||||
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -D NDEBUG")
|
||||||
|
|
||||||
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
message(STATUS "Setting build type to 'Debug', none was specified.")
|
||||||
|
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
|
||||||
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(LD52Native_SOURCES
|
||||||
|
src/main.cc
|
||||||
|
src/game.cc
|
||||||
|
src/ems.cc
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(LD52Native ${LD52Native_SOURCES})
|
||||||
|
|
||||||
|
target_link_libraries(LD52Native PUBLIC
|
||||||
|
raylib
|
||||||
|
)
|
1
emsdk_version
Normal file
1
emsdk_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.1.28
|
3
src/.lvimrc
Normal file
3
src/.lvimrc
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
set tabstop=2
|
||||||
|
set softtabstop=2
|
||||||
|
set shiftwidth=2
|
7
src/constants.h
Normal file
7
src/constants.h
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#ifndef LD52_HARVEST_FOOD_CUTS_CONSTANTS_H_
|
||||||
|
#define LD52_HARVEST_FOOD_CUTS_CONSTANTS_H_
|
||||||
|
|
||||||
|
constexpr int DEFAULT_SCREEN_WIDTH = 500;
|
||||||
|
constexpr int DEFAULT_SCREEN_HEIGHT = 800;
|
||||||
|
|
||||||
|
#endif
|
31
src/ems.cc
Normal file
31
src/ems.cc
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#include "ems.h"
|
||||||
|
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
#include <emscripten.h>
|
||||||
|
#include <emscripten/html5.h>
|
||||||
|
|
||||||
|
EM_JS(int, canvas_get_width, (),
|
||||||
|
{ return document.getElementById("canvas").clientWidth; });
|
||||||
|
|
||||||
|
EM_JS(int, canvas_get_height, (),
|
||||||
|
{ return document.getElementById("canvas").clientHeight; });
|
||||||
|
#else
|
||||||
|
#include <iostream>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int call_js_get_canvas_width() {
|
||||||
|
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
return canvas_get_width();
|
||||||
|
#else
|
||||||
|
return 800;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int call_js_get_canvas_height() {
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
return canvas_get_height();
|
||||||
|
#else
|
||||||
|
return 500;
|
||||||
|
#endif
|
||||||
|
}
|
7
src/ems.h
Normal file
7
src/ems.h
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#ifndef LD52_HARVEST_FOOD_CUTS_EMSCRIPTEN_H_
|
||||||
|
#define LD52_HARVEST_FOOD_CUTS_EMSCRIPTEN_H_
|
||||||
|
|
||||||
|
extern int call_js_get_canvas_width();
|
||||||
|
extern int call_js_get_canvas_height();
|
||||||
|
|
||||||
|
#endif
|
20
src/game.cc
Normal file
20
src/game.cc
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include "game.h"
|
||||||
|
|
||||||
|
// third party includes
|
||||||
|
#include <raylib.h>
|
||||||
|
|
||||||
|
Game::Game() {}
|
||||||
|
|
||||||
|
void Game::do_update() {
|
||||||
|
update_impl();
|
||||||
|
draw_impl();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::update_impl() {}
|
||||||
|
|
||||||
|
void Game::draw_impl() {
|
||||||
|
BeginDrawing();
|
||||||
|
ClearBackground(BLACK);
|
||||||
|
DrawText("Testing...", 100, 100, 30, RAYWHITE);
|
||||||
|
EndDrawing();
|
||||||
|
}
|
17
src/game.h
Normal file
17
src/game.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef LD52_HARVEST_FOOD_CUTS_GAME_H_
|
||||||
|
#define LD52_HARVEST_FOOD_CUTS_GAME_H_
|
||||||
|
|
||||||
|
class Game {
|
||||||
|
public:
|
||||||
|
Game();
|
||||||
|
|
||||||
|
void do_update();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void update_impl();
|
||||||
|
void draw_impl();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
63
src/main.cc
Normal file
63
src/main.cc
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
// emscripten includes
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
#include <emscripten.h>
|
||||||
|
#include <emscripten/html5.h>
|
||||||
|
|
||||||
|
#include "ems.h"
|
||||||
|
#else
|
||||||
|
#include <random>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// third party includes
|
||||||
|
#include <raylib.h>
|
||||||
|
|
||||||
|
// local includes
|
||||||
|
#include "constants.h"
|
||||||
|
#include "game.h"
|
||||||
|
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
static void *global_game_ptr = nullptr;
|
||||||
|
|
||||||
|
EM_BOOL resize_event_callback(int event_type, const EmscriptenUiEvent *event,
|
||||||
|
void *ud) {
|
||||||
|
if (event_type == EMSCRIPTEN_EVENT_RESIZE) {
|
||||||
|
SetWindowSize(call_js_get_canvas_width(), call_js_get_canvas_height());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void game_update(void *game_ptr) { ((Game *)game_ptr)->do_update(); }
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
InitWindow(DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT, "LD52_Harvest_Food_Cuts");
|
||||||
|
#else
|
||||||
|
InitWindow(DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT,
|
||||||
|
"LD52_Harvest_Food_Cuts_Native");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Game game{};
|
||||||
|
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
global_game_ptr = &game;
|
||||||
|
|
||||||
|
SetWindowSize(call_js_get_canvas_width(), call_js_get_canvas_height());
|
||||||
|
|
||||||
|
emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, nullptr, false,
|
||||||
|
resize_event_callback);
|
||||||
|
|
||||||
|
emscripten_set_main_loop_arg(game_update, &game, 0, 1);
|
||||||
|
#else
|
||||||
|
SetTargetFPS(60);
|
||||||
|
|
||||||
|
while (!WindowShouldClose()) {
|
||||||
|
game_update(&game);
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseAudioDevice();
|
||||||
|
CloseWindow();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
5
wasm_build/.gitignore
vendored
Normal file
5
wasm_build/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
/ld52_harvest_cut.html
|
||||||
|
/ld52_harvest_cut.js
|
||||||
|
/ld52_harvest_cut.wasm
|
||||||
|
/ld52_harvest_cut.data
|
||||||
|
/index.html
|
41
wasm_build/Makefile
Normal file
41
wasm_build/Makefile
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
ifdef RELEASE
|
||||||
|
OTHER_FLAGS = -DNDEBUG -O3
|
||||||
|
else
|
||||||
|
OTHER_FLAGS = -O0
|
||||||
|
endif
|
||||||
|
|
||||||
|
SOURCES = \
|
||||||
|
../src/main.cc \
|
||||||
|
../src/ems.cc \
|
||||||
|
../src/game.cc
|
||||||
|
|
||||||
|
HEADERS = \
|
||||||
|
../src/constants.h
|
||||||
|
|
||||||
|
CXX = source ${HOME}/git/emsdk/emsdk_env.sh && em++
|
||||||
|
|
||||||
|
all: | format ld52_harvest_cut.html index.html
|
||||||
|
|
||||||
|
ld52_harvest_cut.html: ${SOURCES} ${HEADERS}
|
||||||
|
${CXX} -o ld52_harvest_cut.html \
|
||||||
|
-s USE_GLFW=3 -I../wasm_includes -L../wasm_libs -lraylib \
|
||||||
|
--shell-file custom_shell.html \
|
||||||
|
-sEXPORTED_FUNCTIONS=_main \
|
||||||
|
-sEXPORTED_RUNTIME_METHODS=ccall \
|
||||||
|
${OTHER_FLAGS} \
|
||||||
|
${SOURCES}
|
||||||
|
|
||||||
|
.PHONY: clean format index.html
|
||||||
|
|
||||||
|
index.html:
|
||||||
|
ln -sf ld52_harvest_cut.html index.html
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f ld52_harvest_cut.html
|
||||||
|
rm -f ld52_harvest_cut.js
|
||||||
|
rm -f ld52_harvest_cut.wasm
|
||||||
|
rm -f ld52_harvest_cut.data
|
||||||
|
rm -f index.html
|
||||||
|
|
||||||
|
format:
|
||||||
|
clang-format -i --style=file ${SOURCES} ${HEADERS}
|
64
wasm_build/custom_shell.html
Normal file
64
wasm_build/custom_shell.html
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
|
||||||
|
<title>Food Cuts</title>
|
||||||
|
<style>
|
||||||
|
body { margin: 0; background-color: black }
|
||||||
|
.emscripten {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
border: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
display: block;
|
||||||
|
image-rendering: optimizeSpeed;
|
||||||
|
image-rendering: -moz-crisp-edges;
|
||||||
|
image-rendering: -o-crisp-edges;
|
||||||
|
image-rendering: -webkit-optimize-contrast;
|
||||||
|
image-rendering: optimize-contrast;
|
||||||
|
image-rendering: crisp-edges;
|
||||||
|
image-rendering: pixelated;
|
||||||
|
-ms-interpolation-mode: nearest-neighbor;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
|
||||||
|
<script type='text/javascript'>
|
||||||
|
var Module = {
|
||||||
|
preRun: [],
|
||||||
|
postRun: [],
|
||||||
|
print: (function() {
|
||||||
|
return function(text) {
|
||||||
|
text = Array.prototype.slice.call(arguments).join(' ');
|
||||||
|
console.log(text);
|
||||||
|
};
|
||||||
|
})(),
|
||||||
|
printErr: function(text) {
|
||||||
|
text = Array.prototype.slice.call(arguments).join(' ');
|
||||||
|
console.error(text);
|
||||||
|
},
|
||||||
|
canvas: (function() {
|
||||||
|
var canvas = document.getElementById('canvas');
|
||||||
|
//canvas.addEventListener("webglcontextlost", function(e) { alert('FIXME: WebGL context lost, please reload the page'); e.preventDefault(); }, false);
|
||||||
|
return canvas;
|
||||||
|
})(),
|
||||||
|
setStatus: function(text) {
|
||||||
|
console.log("status: " + text);
|
||||||
|
},
|
||||||
|
monitorRunDependencies: function(left) {
|
||||||
|
// no run dependencies to log
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.onerror = function() {
|
||||||
|
console.log("onerror: " + event);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
{{{ SCRIPT }}}
|
||||||
|
</body>
|
||||||
|
</html>
|
1568
wasm_includes/raylib.h
Normal file
1568
wasm_includes/raylib.h
Normal file
File diff suppressed because it is too large
Load diff
BIN
wasm_libs/libraylib.a
Normal file
BIN
wasm_libs/libraylib.a
Normal file
Binary file not shown.
Loading…
Reference in a new issue