auts: spritesys
This commit is contained in:
parent
a5cbaba687
commit
b78a02a652
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
v --enable-globals -g -cg build .
|
|
@ -24,4 +24,8 @@ fn init_default_context() {
|
|||
// XXX fixme?
|
||||
//ctx = new_context()
|
||||
ctx.vars = new_vars()
|
||||
}
|
||||
|
||||
fn init_context() {
|
||||
// init all context?
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -8,10 +8,7 @@ mut:
|
|||
}
|
||||
|
||||
fn new_obj() &Obj {
|
||||
o := &Obj{
|
||||
x: 0,
|
||||
y: 0,
|
||||
}
|
||||
o := &Obj{}
|
||||
|
||||
return o
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ fn new_sprite() &Sprite {
|
|||
tex: &Texture(0),
|
||||
}
|
||||
|
||||
// Add to SpriteSys
|
||||
game.spritesys.add(s)
|
||||
return s
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
||||
}
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue