diff options
| author | Brian Cully <bjc@spork.org> | 2025-12-18 20:28:53 -0500 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-12-18 20:36:39 -0500 |
| commit | 0f990eb95a9ef3a1be8847a863f7216a8625692a (patch) | |
| tree | 9742a3730168e0ed9b1b6d259a79a430eda71f31 /src | |
| parent | 8e65c1c439b2fc0d0ae5d8482e9350e283cde882 (diff) | |
| download | automathon-0f990eb95a9ef3a1be8847a863f7216a8625692a.tar.gz automathon-0f990eb95a9ef3a1be8847a863f7216a8625692a.zip | |
add bouncing when hitting arena edge
Diffstat (limited to 'src')
| -rw-r--r-- | src/forth/vm.rs | 6 | ||||
| -rwxr-xr-x | src/lib.rs | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/forth/vm.rs b/src/forth/vm.rs index 564a647..25ed516 100644 --- a/src/forth/vm.rs +++ b/src/forth/vm.rs @@ -4,9 +4,9 @@ use std::ops::Index; pub type DataStackType = isize; -const MIN_SPEED: DataStackType = 0; -const MAX_SPEED: DataStackType = 10; -const UNITS_PER_ROTATION: DataStackType = 360; +pub const MIN_SPEED: DataStackType = 0; +pub const MAX_SPEED: DataStackType = 10; +pub const UNITS_PER_ROTATION: DataStackType = 360; #[derive(Clone, Debug, Eq, PartialEq)] pub enum OpCode { @@ -135,6 +135,14 @@ impl ExportedVM { vm.ip.offset = 0; } + pub fn setheading(&mut self, v: forth::vm::DataStackType) { + let Some(vm) = &mut self.vm else { + return; + }; + use forth::vm::UNITS_PER_ROTATION; + vm.heading = (UNITS_PER_ROTATION + (v % UNITS_PER_ROTATION)) % UNITS_PER_ROTATION; + } + pub fn trans(&mut self) -> Result<js_sys::Object, JsValue> { let vm = (&mut self.vm).as_mut().ok_or(Error::NoVM)?; let res = js_sys::Map::new(); |
