about summary refs log tree commit diff stats
path: root/apps/tile/value.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-11-29 09:50:15 -0800
committerKartik Agaram <vc@akkartik.com>2020-11-29 12:17:23 -0800
commit6b1cde4761711934211465c3e4ade12d344662ff (patch)
tree1738cf4b1e521c6e31b1fede23504ab0b2e3d3d9 /apps/tile/value.mu
parent4a280280cd6c0d24c4719727b86ed86aef1d74f2 (diff)
downloadmu-6b1cde4761711934211465c3e4ade12d344662ff.tar.gz
7297 - tile: use floats everywhere
Diffstat (limited to 'apps/tile/value.mu')
-rw-r--r--apps/tile/value.mu24
1 files changed, 13 insertions, 11 deletions
diff --git a/apps/tile/value.mu b/apps/tile/value.mu
index 790b2de2..3cb93a1d 100644
--- a/apps/tile/value.mu
+++ b/apps/tile/value.mu
@@ -57,20 +57,22 @@ fn render-value-at screen: (addr screen), row: int, col: int, _val: (addr value)
     return
   }
   # render ints by default for now
-  var val-int/eax: (addr int) <- get val, int-data
-  render-integer screen, *val-int, max-width
+  var val-num/eax: (addr float) <- get val, number-data
+  render-number screen, *val-num, max-width
 }
 
 # synaesthesia
-fn render-integer screen: (addr screen), val: int, max-width: int {
+# TODO: right-justify
+fn render-number screen: (addr screen), val: float, max-width: int {
   # if max-width is 0, we're inside an array. No coloring.
   compare max-width, 0
   {
     break-if-!=
-    print-int32-decimal screen, val
+    print-float-decimal-approximate screen, val, 3
     return
   }
-  var bg/eax: int <- hash-color val
+  var val-int/eax: int <- convert val
+  var bg/eax: int <- hash-color val-int
   var fg/ecx: int <- copy 7
   {
     compare bg, 2
@@ -89,7 +91,7 @@ fn render-integer screen: (addr screen), val: int, max-width: int {
   }
   start-color screen, fg, bg
   print-grapheme screen, 0x20  # space
-  print-int32-decimal-right-justified screen, val, max-width
+  print-float-decimal-approximate screen, val, 3
   print-grapheme screen, 0x20  # space
 }
 
@@ -219,8 +221,8 @@ fn value-width _v: (addr value), top-level: boolean -> _/eax: int {
   {
     compare *type, 0  # int
     break-if-!=
-    var v-int/edx: (addr int) <- get v, int-data
-    var result/eax: int <- decimal-size *v-int
+    var v-num/edx: (addr float) <- get v, number-data
+    var result/eax: int <- float-size *v-num, 3
     return result
   }
   {
@@ -344,9 +346,9 @@ fn deep-copy-value _src: (addr value), _dest: (addr value) {
   {
     break-if-!=
 #?     print-string 0, "int value\n"
-    var x/eax: (addr int) <- get src, int-data
-    y <- get dest, int-data
-    copy-object x, y
+    var src-n/eax: (addr float) <- get src, number-data
+    var dest-n/ecx: (addr float) <- get dest, number-data
+    copy-object src-n, dest-n
     return
   }
   compare *type, 1  # string