From 3893702330f481905c2fca0eba880c97ae43204e Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Sun, 2 Mar 2025 14:39:37 -0700 Subject: [PATCH] wheeeee but also try signal --- src/rust/src/player.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/rust/src/player.rs b/src/rust/src/player.rs index a8c0998..ce19c8f 100644 --- a/src/rust/src/player.rs +++ b/src/rust/src/player.rs @@ -2,27 +2,41 @@ use godot::{prelude::*, classes::{ISprite2D, Sprite2D}}; #[derive(GodotClass)] #[class(base=Sprite2D)] struct BreeLPlayer { - base: Base + base: Base, + speed: f64, + radians: f32, } #[godot_api] impl ISprite2D for BreeLPlayer { fn init(base: Base) -> Self { - BreeLPlayer{base: base} + BreeLPlayer{base: base, speed: 200.0, radians: 1.0} } fn physics_process(&mut self, delta: f64) { - let radians = (1.0 * delta) as f32; + let radians = self.radians * delta as f32; self.base_mut().rotate(radians); let rotation = self.base().get_rotation(); - let velocity = Vector2::UP.rotated(rotation) * 200 as f32; + let velocity = Vector2::UP.rotated(rotation) * self.speed as f32; self.base_mut().translate(velocity * delta as f32); + + self.increase_speed(100.0 * delta as f64); + self.radians *= 1.01 as f32; } } #[godot_api] impl BreeLPlayer { + #[func] + fn increase_speed(&mut self, amount: f64) { + self.speed += amount; + self.base_mut().emit_signal("speed_increased", &[]); + } + + #[signal] + fn speed_increased(); + fn drop(&mut self) { eprintln!("drop"); }