summaryrefslogtreecommitdiff
path: root/dyl.lua
blob: f7dce1184315b6551daae011e5300026eea8cf78 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
sword = entity()
    :b_type(Entities.Sword)
    :b_render_order(1)
    :b_collidable()
    :b_add_state("equipped", {
      animation={
        pos_y = { sequence = { 82 }, dt = 1, reflect = vec2(false, true) },
        neg_y = { sequence = { 82 }, dt = 1 },
        pos_x = { sequence = { 82 }, dt = 1 },
        neg_x = { sequence = { 82 }, dt = 1, reflect = vec2(true, false) }
      }
    })

player = entity()
    :b_type(Entities.Player)
    :b_render_order(0)
    :b_collidable()
    :b_position(vec2(30,30))
    :b_sprite_position(vec2(30,30))
    :b_add_state(States.Idle, {
      animation = {
        pos_y = { sequence = { 3, 19 }, dt = 1 },
        neg_y = { sequence = { 6, 22 }, dt = 1 },
        pos_x = { sequence = { 0, 1 }, dt = 1 },
        neg_x = { sequence = { 0, 1 }, dt = 1, reflect = vec2(true, false) }
      }
    })
    :b_add_state(States.Walk, {
      animation = {
        pos_x = { seq = { 2, 0 }, dt = 0.20 },
        neg_x = { seq = { 2, 0 }, dt = 0.20, reflect = vec2(true, false) },
        pos_y = { seq = { 4, 5 }, dt = 0.20 },
        neg_y = { seq = { 7, 8 }, dt = 0.20 }
        }
    })
    :b_state("idle")
    :b_equipped({ sword })

_walk_speed = 35 -- powerup increase?
function handle_input()
  dpos = vec2(0, 0)
  if btn(0) then dpos.x -= 1 end
  if btn(1) then dpos.x += 1 end
  if btn(3) then dpos.y += 1 end
  if btn(2) then dpos.y -= 1 end

  player.velocity = dpos:normal() * _walk_speed
end

function _init()
end

step_t = time()
function _update60()
  cls(0) -- clear here in case we want to print to screen outside of _draw

  old_step = step_t
  step_t = time()
  step_dt = step_t - old_step

  handle_input()
  foreach(qsort(World, function(a, b) return a.equipped != nil end), function (e) e:update(step_dt) end)
  run_collisions()
end

function _draw()
  -- foreach(qsort(World, function (a, b) return a.render_order < b.render_order end), function (e) e:render() end)
  foreach(World, function (e) e:render() end)
end