aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2025-09-27 15:51:29 +0000
committers-ol <s+removethis@s-ol.nu>2025-09-27 15:51:29 +0000
commit13cfcd8c0f9446614cffdac793983518cd426c40 (patch)
tree723a0af52d6a660dab823c2d5b682283588e4587
parentlib/love: add text-wrap (diff)
downloadalive-13cfcd8c0f9446614cffdac793983518cd426c40.tar.gz
alive-13cfcd8c0f9446614cffdac793983518cd426c40.zip
lib/random: accept [min max] ranges
-rw-r--r--alv-lib/random.moon9
1 files changed, 7 insertions, 2 deletions
diff --git a/alv-lib/random.moon b/alv-lib/random.moon
index 3edc98b..a25c6ad 100644
--- a/alv-lib/random.moon
+++ b/alv-lib/random.moon
@@ -1,5 +1,6 @@
import Constant, Error, Op, Input, T, Array, sig, evt from require 'alv.base'
+vec2 = Array 2, T.num
apply_range = (range, val) ->
if range\type! == T.str
switch range!
@@ -11,6 +12,9 @@ apply_range = (range, val) ->
error Error 'argument', "unknown range '#{range!}'"
elseif range\type! == T.num
val * range!
+ elseif range\type! == vec2
+ { min, max } = range!
+ min + val * (max - min)
else
error Error 'argument', "range has to be a string or number"
@@ -21,9 +25,10 @@ range can be one of:
- 'bip' [-1 - 1[
- 'rad' [ 0 - tau[
- 'deg' [ 0 - 360[
-- (num) [ 0 - num["
+- (num) [ 0 - num[
+- [min max]"
-pattern = -evt.bang + -(sig.num / sig.str)
+pattern = -evt.bang + -(sig.num / sig.str / sig[vec2])
num = Constant.meta
meta: