From 96560a64e16268e10291f58bca9d5e5e9add55b0 Mon Sep 17 00:00:00 2001 From: coaljoe Date: Sat, 22 Aug 2020 21:29:33 +0300 Subject: [PATCH] auts: sprite rendering test --- isotest/main.v | 17 ++++++ isotest/res/objects/walls/wall1/image_0.png | 3 + isotest/sprite.v | 65 +++++++++++++++++++++ isotest/texture.v | 4 ++ 4 files changed, 89 insertions(+) create mode 100644 isotest/res/objects/walls/wall1/image_0.png create mode 100644 isotest/sprite.v diff --git a/isotest/main.v b/isotest/main.v index 23f339f..f59f617 100644 --- a/isotest/main.v +++ b/isotest/main.v @@ -56,6 +56,21 @@ fn main() { tex := d.load_image_sdl_tex("res/images/heightmap.png") + // Sprite test + + mut spr1 := new_sprite() + spr1.load("res/objects/walls/wall1/image_0.png") + + { + // Position sprite + px := 8 + py := 8 + // Center at tile + spr1.x = (px * c_cell_w) + c_cell_w / 2 + spr1.y = (py * (c_cell_h / 2)) + c_cell_h / 2 + } + + //ctx.vars.scroll_speed = 0 ctx.vars.mouse_scroll = false @@ -84,6 +99,8 @@ fn main() { //d.draw_sdl_tex(tex, px, py) + spr1.draw() + app.flip() //time.sleep_ms(20) diff --git a/isotest/res/objects/walls/wall1/image_0.png b/isotest/res/objects/walls/wall1/image_0.png new file mode 100644 index 0000000..478b957 --- /dev/null +++ b/isotest/res/objects/walls/wall1/image_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f704f3a75ab559a22a068492b7c9790542d32921285a84b45643b32ba606dbc4 +size 28927 diff --git a/isotest/sprite.v b/isotest/sprite.v new file mode 100644 index 0000000..4527c8e --- /dev/null +++ b/isotest/sprite.v @@ -0,0 +1,65 @@ +module main + +struct Sprite { +mut: + // Pos (world-space) + x int + y int + + w int + h int + + // Multi-tile + num_tiles_x int + num_tiles_y int + num_tiles int + tile_size int + + shift_x int + // yCorr + shift_y int + tex &Texture + + spawned bool +} + +fn new_sprite() &Sprite { + s := &Sprite{ + + } + + return s +} + +fn (mut s Sprite) load(path string) { + s.tex = new_texture() + s.tex.load(path) + + s.w, s.h = s.tex.size() + + // Calc shift + s.shift_x = s.w / 2 // half tile + + //s.shift_y = s.h - (c_cell_h) + s.shift_y = s.h - (c_cell_h / 2) + +} + +fn (mut s Sprite) spawn() { + +} + +fn (mut s Sprite) draw() { + println("sprite draw()") + + //s.tex.draw_pos(s.x, s.y) + + px := s.x - s.shift_x + py := s.y - s.shift_y + + s.tex.draw_pos(px, py) +} + +fn (mut s Sprite) update(dt f32) { + +} \ No newline at end of file diff --git a/isotest/texture.v b/isotest/texture.v index bc50728..5d86d42 100644 --- a/isotest/texture.v +++ b/isotest/texture.v @@ -19,6 +19,10 @@ fn new_texture() &Texture { return t } +fn (mut t Texture) size() (int, int) { + return t.w, t.h +} + fn (mut t Texture) load(path string) { println("texture load() path: $path")