diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-05-16 19:48:30 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-05-16 19:48:30 -0700 |
commit | 02d11692669560311b6db48e359fd7834d8f2d40 (patch) | |
tree | 4086a79fcceb2f0d5b10e9ebfd5bbc1d36e819d6 /hest-life.mu | |
parent | 7bd4660c46b0d6f2d817279268b24135465f425b (diff) | |
download | mu-02d11692669560311b6db48e359fd7834d8f2d40.tar.gz |
spacebar plays/pauses
Diffstat (limited to 'hest-life.mu')
-rw-r--r-- | hest-life.mu | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/hest-life.mu b/hest-life.mu index 9ff7e6d3..e98427bb 100644 --- a/hest-life.mu +++ b/hest-life.mu @@ -16,11 +16,17 @@ fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) var env-storage: environment var env/esi: (addr environment) <- address env-storage initialize-environment env + render screen, env { - render screen, env - pause env edit keyboard, env - step env + var play?/eax: (addr boolean) <- get env, play? + compare *play?, 0/false + { + break-if-= + step env + render screen, env + } + pause env loop } } @@ -29,6 +35,7 @@ type environment { data: (handle array handle array cell) zoom: int # 0 = 1024 px per cell; 5 = 4px per cell; each step adjusts by a factor of 4 tick: int + play?: boolean } type cell { @@ -193,7 +200,19 @@ fn draw-linear-point screen: (addr screen), u: float, x0: int, y0: int, x1: int, fn edit keyboard: (addr keyboard), _self: (addr environment) { var self/esi: (addr environment) <- copy _self var key/eax: byte <- read-key keyboard - # TODO: hotkeys + compare key, 0x20/space + { + break-if-!= + var play?/eax: (addr boolean) <- get self, play? + compare *play?, 0/false + { + break-if-= + copy-to *play?, 0/false + return + } + copy-to *play?, 1/true + return + } } fn pause _self: (addr environment) { @@ -234,6 +253,8 @@ fn initialize-environment _self: (addr environment) { var self/esi: (addr environment) <- copy _self var zoom/eax: (addr int) <- get self, zoom #? copy-to *zoom, 4 + var play?/eax: (addr boolean) <- get self, play? + copy-to *play?, 1/true var data-ah/eax: (addr handle array handle array cell) <- get self, data populate data-ah, 0x100 var data/eax: (addr array handle array cell) <- lookup *data-ah |