diff --git a/gdrust/Cargo.lock b/gdrust/Cargo.lock index 826ff32..8eb4567 100644 --- a/gdrust/Cargo.lock +++ b/gdrust/Cargo.lock @@ -158,9 +158,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779e6b7d17797c0b42023d417228c02889300190e700cb074c3438d9c541d332" +checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490" dependencies = [ "jobserver", "libc", @@ -380,6 +380,7 @@ dependencies = [ "derive", "godot", "prost", + "prost-types", "proto", "rand", "tokio", diff --git a/gdrust/Cargo.toml b/gdrust/Cargo.toml index 94efd3d..57161d4 100644 --- a/gdrust/Cargo.toml +++ b/gdrust/Cargo.toml @@ -1,11 +1,10 @@ -cargo-features = ["edition2024", "profile-rustflags"] [package] name = "gdrust" version = "0.1.0" -edition = "2024" +edition = "2021" [dependencies] -godot = {version = "0", features = ["experimental-threads"]} +godot = { version = "0", features = ["experimental-threads"] } rand = "0.8" derive = { path = "./derive" } proto = { path = "proto" } diff --git a/gdrust/src/bullets/star_wrath_bullet.rs b/gdrust/src/bullets/star_wrath_bullet.rs index 18b24b5..63494b1 100644 --- a/gdrust/src/bullets/star_wrath_bullet.rs +++ b/gdrust/src/bullets/star_wrath_bullet.rs @@ -36,6 +36,8 @@ impl IArea2D for StarWrathBullet { let tmp = self.base().get_position() + self.direct * delta as f32 * self.speed as f32; self.base_mut().set_position(tmp); } + + fn draw(&mut self) {} } #[godot_api] @@ -79,12 +81,16 @@ impl StarWrathBullet { let pos = Vector2::new(x_idx, 0.0); self.base_mut().set_global_position(pos); let mask = self.get_track_scene(); - let mut new_mask = mask.instantiate().unwrap(); - self.base_mut().add_child(new_mask.clone()); + // let mut new_mask = mask.instantiate().unwrap(); + // self.base_mut().add_child(new_mask.clone()); godot_print!("now pos:{}", pos); - new_mask.call("init".into(), &[pos.to_variant()]); + // new_mask.call("init".into(), &[pos.to_variant()]); self.base_mut().show(); - self.base_mut().set_rotation(-PI / 2.0); + self.base_mut().set_global_rotation(-PI / 2.0); + } + + fn track(&mut self) { + self.base_mut().queue_redraw(); } #[func] diff --git a/gdrust/src/lib.rs b/gdrust/src/lib.rs index 5c3e6f6..c5f7730 100644 --- a/gdrust/src/lib.rs +++ b/gdrust/src/lib.rs @@ -13,7 +13,7 @@ mod zenith; use godot::prelude::*; use multi::{MultiManager, MultiManagerImpl}; use std::{ - panic::{set_hook, PanicHookInfo}, + panic::{set_hook, PanicInfo}, sync::{Arc, Mutex, OnceLock}, }; use tokio::runtime::{Builder, Runtime}; @@ -31,7 +31,7 @@ fn get_tokio_runtime() -> &'static Runtime { TMP.get_or_init(|| Builder::new_multi_thread().enable_all().build().unwrap()) } -fn panic_handler(info: &PanicHookInfo) { +fn panic_handler(info: &PanicInfo) { if let Some(p) = info.location() { godot_error!( "Panic occurred in file '{}' at line {}\n", diff --git a/gdrust/src/weapons/star_wrath.rs b/gdrust/src/weapons/star_wrath.rs index fccd572..f565fc5 100644 --- a/gdrust/src/weapons/star_wrath.rs +++ b/gdrust/src/weapons/star_wrath.rs @@ -95,14 +95,14 @@ impl StarWrath { } #[func] + /// 新建一个从天而降垂直下落的弹幕 fn fall_star(&mut self) { let bullet = self.get_bullet_scene(); let mut star = bullet.instantiate_as::(); - let sz = self.base_mut().get_viewport_rect().size.x; - let random_x = thread_rng().gen_range(0.0..sz); + let sz = self.base_mut().get_viewport_rect().size.x - 100.0; + let random_x = thread_rng().gen_range(100.0..sz); godot_print!("{}", random_x); + self.base_mut().add_child(star.clone().upcast()); star.bind_mut().init_from_sky(random_x); - self.base_mut().add_child(star.upcast()); - // godot_print!("Star Falling!") } } diff --git a/scenes/bullets/star_wrath_original.tscn b/scenes/bullets/star_wrath_original.tscn index 7fbb9de..bfb0c0a 100644 --- a/scenes/bullets/star_wrath_original.tscn +++ b/scenes/bullets/star_wrath_original.tscn @@ -1,13 +1,14 @@ -[gd_scene load_steps=3 format=3 uid="uid://d1po1tqcrrhe3"] +[gd_scene load_steps=4 format=3 uid="uid://d1po1tqcrrhe3"] [ext_resource type="Texture2D" uid="uid://ca6gwuskjes5u" path="res://resources/images/bullets/star_wrath/Star_Wrath_Original_Bullet.webp" id="1_do8sq"] +[ext_resource type="Script" path="res://scripts/bullets/star_wrath_original.gd" id="1_y6as6"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_kmd7p"] radius = 27.3309 height = 172.02 [node name="StarWrathBullet" type="StarWrathBullet"] -visible = false +script = ExtResource("1_y6as6") [node name="Image" type="Sprite2D" parent="."] scale = Vector2(2, 2) diff --git a/scripts/bullets/star_wrath_original.gd b/scripts/bullets/star_wrath_original.gd new file mode 100644 index 0000000..4d9ccca --- /dev/null +++ b/scripts/bullets/star_wrath_original.gd @@ -0,0 +1,11 @@ +extends StarWrathBullet + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + hide() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass