From d0a17488d055565909d284a192b0c827f4fa8ae0 Mon Sep 17 00:00:00 2001 From: Kistaro Windrider Date: Sun, 14 Jan 2024 19:33:57 -0800 Subject: [PATCH] pull out calc_velocity also prepare constraints to change color based on whether it changed the requested thrust --- autobrake_test.p8 | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/autobrake_test.p8 b/autobrake_test.p8 index a000557..bf88058 100644 --- a/autobrake_test.p8 +++ b/autobrake_test.p8 @@ -128,15 +128,20 @@ function ship:draw() end end +function calc_velocity(v0, t, vmax, drag) + local v1 = v0 + t + local sg = sgn(v1) + v1 -= sg*drag + if (sgn(v1) != sg) return 0 + if (abs(v1) > vmax) return sg*vmax + return v1 +end + function ship:update() local t = btn(0) and -1 or btn(1) and 1 or 0 t *= self.thrust t = constraints: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 + local s = calc_velocity(self.dx, t, self.maxspd, self.drag) self.x += s self.dx = s @@ -153,9 +158,11 @@ end constraints = { ymin=20, ymax=52, + color=10 } function constraints:constrain(s, want) + self.color=10 return want end @@ -185,7 +192,7 @@ end function constraints:draw() if (not self.xmin) return - rect(self.xmin, self.ymin, self.xmax, self.ymax, 10) + rect(self.xmin, self.ymin, self.xmax, self.ymax, self.color) end -->8