ship mover, no constraint yet
This commit is contained in:
		| @@ -40,11 +40,97 @@ function mknew(tt, more) | ||||
|  end | ||||
| end | ||||
|  | ||||
| function init() | ||||
| function _init() | ||||
|  pal(1,129,1) | ||||
|  the_ship = ship.new() | ||||
|  slomo = 0 | ||||
|  sloc = 0 | ||||
|  reroll() | ||||
| end | ||||
|  | ||||
| function reroll() | ||||
|  the_ship:reroll() | ||||
| end | ||||
|  | ||||
| function _update60() | ||||
|  if (btnp(4)) reroll() | ||||
|  slomo += btnp(2) and -1 or btnp(3) and 1 or 0 | ||||
|  slomo = (slomo < 0) and 0 or (slomo > 60) and 60 or slomo | ||||
|  sloc += 1 | ||||
|  if sloc > slomo then | ||||
|   the_ship:update() | ||||
|   sloc=0 | ||||
|  end | ||||
| end | ||||
|  | ||||
| function _draw() | ||||
|  cls(1) | ||||
|  the_ship:draw() | ||||
| end | ||||
|  | ||||
| -->8 | ||||
| -- ship | ||||
|  | ||||
| ship = { | ||||
|  maxspd=4, | ||||
|  thrust=0.25, | ||||
|  drag=0.0625, | ||||
|  y=32, | ||||
| } | ||||
| mknew(ship) | ||||
|  | ||||
| function ship:reroll() | ||||
|  self.x=rnd(128) | ||||
|  self.dx=rnd(2*self.maxspd)-self.maxspd | ||||
| end | ||||
|  | ||||
| function ship:draw() | ||||
|  if self.x < -7 then | ||||
|   spr(2, 0, self.y-7) | ||||
|   spr(2, 0, self.y+8) | ||||
|  elseif self.x > 127 then | ||||
|   spr(2, 120, self.y-7, 1, 1, true) | ||||
|   spr(2, 120, self.y+8, 1, 1, true) | ||||
|  else | ||||
|   spr(1,self.x,self.y) | ||||
|  end | ||||
| end | ||||
|  | ||||
| function ship:update() | ||||
|  local t = btn(0) and -1 or btn(1) and 1 or 0 | ||||
|  t *= self.thrust | ||||
|  t = constrain(self, t) | ||||
|  local s,lim=self.dx+t,self.maxspd | ||||
|  local sg = sgn(s) | ||||
|  s -= sg*self.drag | ||||
|  if (sgn(s) != sg) s=0 | ||||
|  if (abs(s)>lim) s=sg*lim | ||||
|  | ||||
|  self.x += s | ||||
|  self.dx = s | ||||
|  self:add_sparks(t) | ||||
| end | ||||
|  | ||||
| function ship:add_sparks(t) | ||||
| end | ||||
|  | ||||
| -->8 | ||||
| -- constraints | ||||
|  | ||||
| function constrain(s, want) | ||||
|  return want | ||||
| end | ||||
|  | ||||
| -->8 | ||||
| -- fx | ||||
|  | ||||
| -- todo: spark ring buffer | ||||
|  | ||||
| __gfx__ | ||||
| 00000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000006666000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000067777600800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000675555758008888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000675000750800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000067777500080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000005555000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user