random flickering screen

This commit is contained in:
me 2025-12-20 00:55:27 +02:00
parent eb22107a80
commit 2372f0d254
4 changed files with 104 additions and 4 deletions

92
Cargo.lock generated
View file

@ -116,6 +116,7 @@ dependencies = [
"log", "log",
"lyn", "lyn",
"macroquad", "macroquad",
"rand",
"thiserror", "thiserror",
] ]
@ -330,6 +331,18 @@ dependencies = [
"web-sys", "web-sys",
] ]
[[package]]
name = "getrandom"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
"libc",
"r-efi",
"wasip2",
]
[[package]] [[package]]
name = "gilrs" name = "gilrs"
version = "0.10.10" version = "0.10.10"
@ -660,6 +673,15 @@ dependencies = [
"portable-atomic", "portable-atomic",
] ]
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.103" version = "1.0.103"
@ -694,6 +716,41 @@ dependencies = [
"proc-macro2", "proc-macro2",
] ]
[[package]]
name = "r-efi"
version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "rand"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
"getrandom",
]
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.12.2" version = "1.12.2"
@ -878,6 +935,15 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "wasip2"
version = "1.0.1+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
dependencies = [
"wit-bindgen",
]
[[package]] [[package]]
name = "wasm-bindgen" name = "wasm-bindgen"
version = "0.2.106" version = "0.2.106"
@ -1106,3 +1172,29 @@ name = "windows_x86_64_msvc"
version = "0.52.6" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "wit-bindgen"
version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
[[package]]
name = "zerocopy"
version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]

View file

@ -24,6 +24,7 @@ macroquad = "0.4.14"
lyn = "0.1.0" lyn = "0.1.0"
chumsky = "0.11.2" chumsky = "0.11.2"
gamepads = "0.1.7" gamepads = "0.1.7"
rand = "0.9.2"
[dev-dependencies] [dev-dependencies]
insta = "1.44.3" insta = "1.44.3"

View file

@ -5,7 +5,7 @@ let setup = fn() {
}; };
let update = fn(state, input) { let update = fn(state, input) {
let new = 200; let new = random_u8();
state.player.position.x = new; state.player.position.x = new;
return state; return state;
}; };

View file

@ -1,16 +1,18 @@
use rand::prelude::*;
use crate::ast; use crate::ast;
use crate::interpret::PrimitiveFuncs; use crate::interpret::PrimitiveFuncs;
use macroquad::prelude::*; use macroquad::prelude as mq;
pub fn primitive_funcs() -> PrimitiveFuncs { pub fn primitive_funcs() -> PrimitiveFuncs {
PrimitiveFuncs::new(vec![("frame_clear", clear)]) PrimitiveFuncs::new(vec![("frame_clear", clear), ("random_u8", random_u8)])
} }
fn clear(args: Vec<ast::Value>) -> ast::Value { fn clear(args: Vec<ast::Value>) -> ast::Value {
let r = to_u32(args.get(0)); let r = to_u32(args.get(0));
let g = to_u32(args.get(1)); let g = to_u32(args.get(1));
let b = to_u32(args.get(2)); let b = to_u32(args.get(2));
clear_background(Color::from_rgba(r, g, b, 255)); mq::clear_background(mq::Color::from_rgba(r, g, b, 255));
ast::UNIT_VALUE ast::UNIT_VALUE
} }
@ -20,3 +22,8 @@ fn to_u32(value: Option<&ast::Value>) -> u8 {
_ => 0, _ => 0,
} }
} }
fn random_u8(_args: Vec<ast::Value>) -> ast::Value {
let random: u8 = rand::rng().random::<u8>();
ast::Value::Int(random as i32)
}