improved layering
parent
93b6b898cf
commit
6e09b0f61e
27
src/game.cc
27
src/game.cc
|
@ -2,6 +2,7 @@
|
|||
#include "input.h"
|
||||
#include "render.h"
|
||||
#include "assets.h"
|
||||
#include "layers.h"
|
||||
#include "tilemap.hpp"
|
||||
#include "SDL2/SDL_mouse.h"
|
||||
#include <SDL2/SDL_scancode.h>
|
||||
|
@ -63,11 +64,11 @@ void load_game() {
|
|||
g_tilemap.width = g_tilemap.height = 10;
|
||||
|
||||
player = make_sprite("tilemap.png", 0, 0);
|
||||
player.depth = -10;
|
||||
|
||||
current_tile_display = make_sprite("tilemap.png", 0, 0);
|
||||
current_tile_display.sx = 0.3f;
|
||||
current_tile_display.sy = 0.3f;
|
||||
current_tile_display.depth = 0;
|
||||
current_tile_display.sx = 0.15f;
|
||||
current_tile_display.sy = 0.15f;
|
||||
|
||||
world_sheet = make_spritesheet("tilemap.png", 16, 16);
|
||||
|
||||
|
@ -81,10 +82,9 @@ void load_game() {
|
|||
for(int i=0;i<g_tilemap.width*g_tilemap.height;++i) {
|
||||
g_tilemap.tiles[i].value = i%3;
|
||||
}
|
||||
on_cycle_tile(0);
|
||||
}
|
||||
|
||||
void start_game() {
|
||||
on_cycle_tile(0);
|
||||
|
||||
input_init();
|
||||
add_listener_for(SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_W, &on_save_key);
|
||||
add_listener_for(SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_R, &on_load_key);
|
||||
|
@ -94,6 +94,10 @@ void start_game() {
|
|||
add_mouse_button_listener(SDL_BUTTON_LMASK, &on_click);
|
||||
add_mouse_button_listener(SDL_BUTTON_MMASK, &on_middle_mouse);
|
||||
add_mouse_listener(0, &on_drag_world);
|
||||
|
||||
}
|
||||
|
||||
void start_game() {
|
||||
g_active_view.width = 21;
|
||||
}
|
||||
|
||||
|
@ -114,16 +118,23 @@ void update_game() {
|
|||
void draw_game() {
|
||||
rectshape_t world_outline = {
|
||||
g_tilemap.x, g_tilemap.y, float(g_tilemap.width), float(g_tilemap.height),
|
||||
0.1f, 0, {0,0,0,0}, {255, 255, 255, 255}
|
||||
0.1f, RLAYER_TILEMAP-1, {0,0,0,0}, {255, 255, 255, 255}
|
||||
};
|
||||
rectshape_t cursor_outline = {
|
||||
player.x, player.y, 1.0f, 1.0f, 0.05f, RLAYER_SPRITES-1,
|
||||
{0, 0, 0, 0}, {255, 255, 255, 255}
|
||||
};
|
||||
|
||||
draw_rect(&world_outline);
|
||||
draw_rect(&cursor_outline);
|
||||
draw_sprite(&player);
|
||||
draw_tilemap();
|
||||
}
|
||||
|
||||
void draw_game_ui() {
|
||||
rectshape_t shape = (rectshape_t){
|
||||
0.0, 0.0, 0.2, 0.2, 0, 0, {255,255,255,255}, {0,0,0,0}
|
||||
0.0f, 0.0f, 0.15f, 0.15f, 0, 1,
|
||||
{100,100,100,255}, {0,0,0,0}
|
||||
};
|
||||
draw_rect(&shape);
|
||||
draw_sprite(¤t_tile_display);
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define RLAYER_TILEMAP 10
|
||||
#define RLAYER_SPRITES 0
|
||||
#define RLAYER_TILEMAP 200
|
||||
#define RLAYER_SPRITES 100
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ void screen_to_view(float *x, float *y) {
|
|||
}
|
||||
|
||||
void clear_buffer() {
|
||||
SDL_SetRenderDrawBlendMode(g_context.renderer, SDL_BLENDMODE_ADD);
|
||||
SDL_SetRenderDrawBlendMode(g_context.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(g_context.renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear(g_context.renderer);
|
||||
}
|
||||
|
@ -86,7 +86,6 @@ void exec_rect_cmd(const drawcmd_t* cmd) {
|
|||
rect.y = cmd->rect.y * hm;
|
||||
}
|
||||
SDL_Color c = cmd->rect.background;
|
||||
//SDL_SetRenderDrawBlendMode(g_context.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(g_context.renderer, c.r, c.g, c.b, c.a);
|
||||
SDL_RenderFillRectF(g_context.renderer, &rect);
|
||||
c = cmd->rect.line;
|
||||
|
@ -161,9 +160,9 @@ void draw(const drawcmd_t* cmd) {
|
|||
if(top != bot) {
|
||||
while(bot <= top) {
|
||||
med = floor((float)(top + bot) / 2);
|
||||
if(g_drawdata[med].ui > ui || g_drawdata[med].depth > cmd->depth) {
|
||||
if(g_drawdata[med].ui < ui || g_drawdata[med].depth > cmd->depth) {
|
||||
bot = med+1;
|
||||
} else if(g_drawdata[med].ui <= ui || g_drawdata[med].depth < cmd->depth) {
|
||||
} else if(g_drawdata[med].ui >= ui || g_drawdata[med].depth < cmd->depth) {
|
||||
top = med-1;
|
||||
} else {
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue