Map works!
This commit is contained in:
parent
055b3dd7b1
commit
9ef88fb34d
@ -1,5 +1,6 @@
|
||||
#include "art/game_demo_sprites.h"
|
||||
#include "device/device.h"
|
||||
#include "map/game_map.h"
|
||||
#include "game.h"
|
||||
#include "sys/sys.h"
|
||||
|
||||
@ -13,6 +14,7 @@ int32_t ellipse_x1 = 96 * 4;
|
||||
int32_t ellipse_y1 = 96 * 4;
|
||||
int32_t ellipse_dx1 = 3;
|
||||
int32_t ellipse_dy1 = 4;
|
||||
int32_t map_x = 0;
|
||||
|
||||
|
||||
const char* game_title() {
|
||||
@ -47,6 +49,9 @@ void game_destroy() {
|
||||
void game_update() {
|
||||
game_frame += 4;
|
||||
|
||||
map_x += 1;
|
||||
map_x %= 160;
|
||||
|
||||
ellipse_x0 += ellipse_dx0;
|
||||
if (ellipse_x0 < 0 || ellipse_x0 > DEVICE_W * 4) { ellipse_dx0 *= -1; }
|
||||
ellipse_y0 += ellipse_dy0;
|
||||
@ -101,4 +106,6 @@ void game_draw() {
|
||||
16, 8,
|
||||
false, false
|
||||
);
|
||||
|
||||
sys_map_draw(game_map, game_demo_sprites, 0, 0, map_x, 8, 32, 18);
|
||||
}
|
||||
|
@ -1,5 +1,11 @@
|
||||
#ifndef CROCPARTY_GAME_MAP_H
|
||||
#define CROCPARTY_GAME_MAP_H
|
||||
|
||||
#include "sys/sys.h"
|
||||
|
||||
extern sys_i32 game_map_player_start_x;
|
||||
extern sys_i32 game_map_player_start_y;
|
||||
extern sys_map game_map;
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -267,6 +267,25 @@ void sys_sprite_draw_ext(
|
||||
}
|
||||
}
|
||||
|
||||
void sys_map_draw(
|
||||
sys_map map,
|
||||
sys_spritesheet spritesheet,
|
||||
sys_i32 sx, sys_i32 sy,
|
||||
sys_i32 tile_x, sys_i32 tile_y,
|
||||
sys_i32 tile_w, sys_i32 tile_h
|
||||
) {
|
||||
for (sys_i32 ty = 0; ty < tile_h; ty++) {
|
||||
for (sys_i32 tx = 0; tx < tile_w; tx++) {
|
||||
sys_i32 real_tx = tx + tile_x;
|
||||
sys_i32 real_ty = ty + tile_y;
|
||||
if (real_tx < 0 || real_tx >= map.width) { continue; }
|
||||
if (real_ty < 0 || real_ty >= map.height) { continue; }
|
||||
sys_maptile tile = map.tiles[real_tx + map.width * real_ty];
|
||||
sys_sprite_draw(spritesheet, tile, sx + tx * 8, sy + ty * 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// == internal primitives ==
|
||||
void sys_pixel_internal_set(sys_i32 x, sys_i32 y, sys_color c) {
|
||||
sys_color realc = sys_dpal[c];
|
||||
|
@ -167,5 +167,16 @@ void sys_sprite_draw_ext(
|
||||
// TODO: SSPR
|
||||
// TODO: FILLP?
|
||||
|
||||
void sys_map_draw(
|
||||
// NOTE: not the same order of args
|
||||
// as on pico 8
|
||||
// but: more consistent!
|
||||
sys_map map,
|
||||
sys_spritesheet spritesheet,
|
||||
sys_i32 sx, sys_i32 sy,
|
||||
sys_i32 tile_x, sys_i32 tile_y,
|
||||
sys_i32 tile_w, sys_i32 tile_h
|
||||
// TODO: Layers?
|
||||
);
|
||||
|
||||
#endif // CROCPARTY_SYS_GRAPHICS_H
|
||||
|
Loading…
Reference in New Issue
Block a user