1
0
Fork 0

auts: spritesys

This commit is contained in:
coaljoe 2020-08-23 22:32:35 +03:00
parent a5cbaba687
commit b78a02a652
9 changed files with 150 additions and 7 deletions

3
isotest/build.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
v --enable-globals -g -cg build .

View File

@ -24,4 +24,8 @@ fn init_default_context() {
// XXX fixme?
//ctx = new_context()
ctx.vars = new_vars()
}
fn init_context() {
// init all context?
}

View File

@ -1,6 +1,10 @@
module main
//type PPType = string | int
pub fn pp(v int) {
//pub fn pp(v voidptr) {
//pub fn pp(v PPType) {
//pub fn pp(v any) {
println(v)
@ -17,7 +21,8 @@ pub fn pp(v int) {
//println("panic $v")
//panic("pp")
exit(v)
//exit(v)
exit(2)
}
/*

View File

@ -5,6 +5,7 @@ struct Game {
mut:
field &Field
hud &Hud
spritesys &SpriteSys
viewport &Viewport
}
@ -14,6 +15,7 @@ fn init_game() {
g := &Game{
field: new_field(),
hud: new_hud(),
spritesys: new_spritesys(),
viewport: new_viewport(),
}
@ -26,11 +28,13 @@ fn (mut g Game) start() {
fn (mut g Game) draw() {
g.field.draw()
g.spritesys.draw()
g.hud.draw()
}
fn (mut g Game) update(dt f32) {
g.field.update(dt)
g.spritesys.update(dt)
g.hud.update(dt)
g.viewport.update(dt)
}

View File

@ -11,6 +11,7 @@ fn main() {
//mut ctx := new_context()
ctx = new_context()
init_default_context() // XXX fixme?
//init_context()
// XXX init app
mut app := new_app()
@ -168,8 +169,8 @@ fn main() {
//d.draw_sdl_tex(tex, px, py)
spr1.draw()
spr2.draw()
//spr1.draw()
//spr2.draw()
wall1.view.draw()

View File

@ -8,10 +8,7 @@ mut:
}
fn new_obj() &Obj {
o := &Obj{
x: 0,
y: 0,
}
o := &Obj{}
return o
}

View File

@ -30,6 +30,8 @@ fn new_sprite() &Sprite {
tex: &Texture(0),
}
// Add to SpriteSys
game.spritesys.add(s)
return s
}

47
isotest/spritesys.v Normal file
View File

@ -0,0 +1,47 @@
module main
interface Drawable {
draw()
}
struct SpriteSys {
mut:
sys &System // Embed
}
fn new_spritesys() &SpriteSys {
println("new_spritesys()")
s := &SpriteSys{
sys: new_system("SpriteSys", "Sprite system")
}
return s
}
fn (mut s SpriteSys) add(spr &Sprite) {
s.sys.add_elem(spr)
}
fn (mut s SpriteSys) remove(spr &Sprite) {
s.sys.remove_elem(spr)
}
fn (mut s SpriteSys) draw() {
println("spritesys draw()")
// XXX TODO sort sprites by z
for el in s.sys.elems {
//el.draw()
//x := Drawable{el}
//mut x := Drawable(el)
//mut x := &Drawable(el)
mut x := &Sprite(el)
x.draw()
}
}
fn (mut s SpriteSys) update(dt f32) {
}

80
isotest/system.v Normal file
View File

@ -0,0 +1,80 @@
module main
struct System {
mut:
name string
desc string
//elems []any
//elems map[string]any
//elems map[string]voidptr
elems []voidptr
}
fn new_system(name, desc string) &System {
println("new_system(): name $name, desc: $desc")
s := &System{
name: name,
desc: desc
}
return s
}
fn (mut s System) has_elem(el voidptr) bool {
for x in s.elems {
if x == el {
return true
}
}
return false
}
fn (s &System) idx_elem(el voidptr) int {
mut found_index := -1
for i, x in s.elems {
if x == el {
found_index = i
break
}
}
return found_index
}
//fn (mut s System) add_elem(el any) {
fn (mut s System) add_elem(el voidptr) {
//s.elems << el
//s.elems["test"] = el
if s.has_elem(el) {
//println("already have element $el $&el in system '$s.name'")
println("already have element $el in system '$s.name'")
println("addElem failed")
pp(1) // XXX fixme
}
s.elems << el
println("added element '${typeof(el)}' to system '$s.name'")
}
fn (mut s System) remove_elem(el voidptr) {
if !s.has_elem(el) {
println("element not found $el in system '$s.name'")
println("removeElem failed")
pp(1) // XXX fixme
}
idx := s.idx_elem(el)
s.elems.delete(idx)
}
fn (s &System) size() int {
return s.elems.len
}
fn (mut s System) clear_elems() {
s.elems.clear()
}
fn (s &System) list_elems() {
println("panic: not implemented")
pp(1) // XXX fixme
}