forked from kdx/jtmm2-old
[exit on start] Level system, for unknown reason the add-in stop on
startup
This commit is contained in:
parent
a40d42584c
commit
7735835ca8
|
@ -0,0 +1,8 @@
|
|||
#ifndef _DEF_GEN_LEVELS
|
||||
#define _DEF_GEN_LEVELS
|
||||
|
||||
#include "level.h"
|
||||
|
||||
void level_set(const Level **level, uint level_id);
|
||||
|
||||
#endif /* _DEF_GEN_LEVELS */
|
|
@ -12,7 +12,8 @@ typedef struct Level
|
|||
const uint8_t **layers; /* points toward the level content */
|
||||
} Level;
|
||||
|
||||
void level_step(Level *level);
|
||||
void level_draw(Level *level, Camera *camera);
|
||||
void level_step(const Level *level);
|
||||
void level_draw(const Level *level, Camera *camera);
|
||||
void layer_draw(const Level *level, Camera *camera, uint layer_id);
|
||||
|
||||
#endif /* _DEF_LEVEL */
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
#include "camera.h"
|
||||
#include "input.h"
|
||||
|
||||
int play_level(int level_id);
|
||||
int play_level(uint level_id);
|
||||
/* callback used for UPS control */
|
||||
int callback(volatile void *arg);
|
||||
void step_event(Player *player, Level *level, Camera *camera, Input *input, uint step);
|
||||
void draw_event(Player *player, Level *level, Camera *camera, Input *input, uint step);
|
||||
void step_event(Player *player, const Level *level, Camera *camera, Input *input, uint step);
|
||||
void draw_event(Player *player, const Level *level, Camera *camera, Input *input, uint step);
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
#!/usr/bin/env luajit
|
||||
|
||||
local function create_includes_c()
|
||||
io.write[[#include "level.h"
|
||||
]]
|
||||
end
|
||||
|
||||
local function read_level(id)
|
||||
local file = io.open(id..".jtmm2")
|
||||
if not file then
|
||||
|
@ -54,9 +59,24 @@ local function create_structure_c(id)
|
|||
io.write("const Level level_", id, " = {\n")
|
||||
io.write("\t.width = ", content.width, ",\n")
|
||||
io.write("\t.height = ", content.height, ",\n")
|
||||
io.write("\t.layers = &layers_", id, "\n")
|
||||
io.write("\t.layers = layers_", id, "\n")
|
||||
io.write("};\n")
|
||||
end
|
||||
end
|
||||
|
||||
local function create_function_c(max)
|
||||
io.write("void level_set(const Level **level, uint level_id)\n")
|
||||
io.write("{\n")
|
||||
io.write("\tswitch(level_id)\n")
|
||||
io.write("\t{\n")
|
||||
io.write()
|
||||
for i = 0, max, 1 do
|
||||
io.write("\t\tcase ", i, ": ")
|
||||
io.write("*level = &level_", i, "; break;\n")
|
||||
end
|
||||
io.write("\t}\n}\n")
|
||||
end
|
||||
|
||||
create_includes_c()
|
||||
create_structure_c(0)
|
||||
create_function_c(0)
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
#include "level.h"
|
||||
const uint8_t tiles_0_1[] = {
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100,
|
||||
};
|
||||
const uint8_t tiles_0_2[] = {
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
||||
100, 100,
|
||||
};
|
||||
const uint8_t *layers_0[] = {tiles_0_1, tiles_0_2, };
|
||||
const Level level_0 = {
|
||||
.width = 10,
|
||||
.height = 51,
|
||||
.layers = layers_0
|
||||
};
|
||||
void level_set(const Level **level, uint level_id)
|
||||
{
|
||||
switch(level_id)
|
||||
{
|
||||
case 0: *level = &level_0; break;
|
||||
}
|
||||
}
|
27
src/level.c
27
src/level.c
|
@ -1,11 +1,32 @@
|
|||
#include <gint/display.h>
|
||||
|
||||
#include "level.h"
|
||||
#include "camera.h"
|
||||
|
||||
void level_step(Level *level)
|
||||
void level_step(const Level *level)
|
||||
{
|
||||
}
|
||||
|
||||
void level_draw(Level *level, Camera *camera)
|
||||
void level_draw(const Level *level, Camera *camera)
|
||||
{
|
||||
/* TODO */
|
||||
layer_draw(level, camera, 0);
|
||||
}
|
||||
|
||||
void layer_draw(const Level *level, Camera *camera, uint layer_id)
|
||||
{
|
||||
return;
|
||||
const uint8_t *layer = level->layers[layer_id];
|
||||
for (int y = 0; y < level->width; ++y)
|
||||
{
|
||||
for (int x = 0; x < level->height; ++x)
|
||||
{
|
||||
const uint8_t cell = layer[x + y * level->width];
|
||||
#ifdef FX9860G
|
||||
dpixel(x, y, (cell == 100) ? C_LIGHT : C_BLACK);
|
||||
#endif /* FX9860G */
|
||||
#ifdef FXCG50
|
||||
dpixel(x, y, (cell == 100) ? C_RED : C_BLACK);
|
||||
#endif /* FXCG50 */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
19
src/main.c
19
src/main.c
|
@ -14,6 +14,7 @@
|
|||
#include "level.h"
|
||||
#include "camera.h"
|
||||
#include "input.h"
|
||||
#include "gen_levels.h"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
@ -26,7 +27,7 @@ int main(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int play_level(int level_id)
|
||||
int play_level(uint level_id)
|
||||
{
|
||||
/* create player */
|
||||
Player player = {
|
||||
|
@ -35,11 +36,9 @@ int play_level(int level_id)
|
|||
.origin = {4 * VEC_PRECISION, 4 * VEC_PRECISION}
|
||||
};
|
||||
|
||||
/* create level */
|
||||
Level level = {
|
||||
.width = 0,
|
||||
.height = 0
|
||||
};
|
||||
/* set level */
|
||||
const Level *level;
|
||||
level_set(&level, level_id);
|
||||
|
||||
/* create camera */
|
||||
Camera camera = {
|
||||
|
@ -72,10 +71,10 @@ int play_level(int level_id)
|
|||
has_ticked = 0;
|
||||
/* step event is where all the logic happens */
|
||||
step += 1;
|
||||
step_event(&player, &level, &camera, &input, step);
|
||||
step_event(&player, level, &camera, &input, step);
|
||||
}
|
||||
/* draw event just draws stuff */
|
||||
draw_event(&player, &level, &camera, &input, step);
|
||||
draw_event(&player, level, &camera, &input, step);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -87,7 +86,7 @@ int callback(volatile void *arg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void step_event(Player *player, Level *level, Camera *camera, Input *input, uint step)
|
||||
void step_event(Player *player, const Level *level, Camera *camera, Input *input, uint step)
|
||||
{
|
||||
//getkey();
|
||||
input_step(input);
|
||||
|
@ -96,7 +95,7 @@ void step_event(Player *player, Level *level, Camera *camera, Input *input, uint
|
|||
camera_step(camera);
|
||||
}
|
||||
|
||||
void draw_event(Player *player, Level *level, Camera *camera, Input *input, uint step)
|
||||
void draw_event(Player *player, const Level *level, Camera *camera, Input *input, uint step)
|
||||
{
|
||||
dclear(C_WHITE);
|
||||
level_draw(level, camera);
|
||||
|
|
Loading…
Reference in New Issue