diff --git a/colorgame.ayin b/colorgame.ayin index ae0cdfa..208f0fb 100644 --- a/colorgame.ayin +++ b/colorgame.ayin @@ -1,3 +1,5 @@ +let speed = 100 + let setup = fn() { return { .color: { @@ -23,6 +25,15 @@ let setup = fn() { let update = fn(state, input) { let delta = get_frame_time(); + let movement = { + .x: input.gamepad1.sticks.left.x, + .y: input.gamepad1.sticks.left.y, + }; + + state.rect.dimensions.x = + state.rect.dimensions.x + (delta * speed * movement.x); + state.rect.dimensions.y = + state.rect.dimensions.y + (delta * speed * movement.y); return state; } diff --git a/src/ast/types.rs b/src/ast/types.rs index e582c52..e4fb0f9 100644 --- a/src/ast/types.rs +++ b/src/ast/types.rs @@ -203,6 +203,18 @@ impl From for Expr { } } +impl From for Value { + fn from(f: f32) -> Value { + Value::Float(f) + } +} + +impl From for Expr { + fn from(f: f32) -> Expr { + Expr::Value(f.into()) + } +} + impl From for Value { fn from(b: bool) -> Value { Value::Boolean(b) diff --git a/src/runtime/runtime.rs b/src/runtime/runtime.rs index 69098fb..19fe1ba 100644 --- a/src/runtime/runtime.rs +++ b/src/runtime/runtime.rs @@ -88,6 +88,25 @@ pub fn update(state: &mut State, input: Input) { ("down", input.gamepad1.dpad.down.into()), ]), ), + ( + "sticks", + helpers::record(vec![ + ( + "left", + helpers::record(vec![ + ("x", input.gamepad1.left_stick.x.into()), + ("y", (0.0 - input.gamepad1.left_stick.y).into()), + ]), + ), + ( + "right", + helpers::record(vec![ + ("x", input.gamepad1.right_stick.x.into()), + ("y", (0.0 - input.gamepad1.right_stick.y).into()), + ]), + ), + ]), + ), ]), )]); match interpret::interpret( @@ -105,6 +124,7 @@ pub fn fetch_events(state: &mut State) -> Input { let mut input = Input::new(); for gamepad in state.gamepads.all() { + //println!("{:#?}", gamepad.all_currently_pressed().collect::>()); // action buttons input.gamepad1.buttons.a = gamepad.is_currently_pressed(gamepads::Button::ActionRight); input.gamepad1.buttons.b = gamepad.is_currently_pressed(gamepads::Button::ActionDown);