From 007420dedb033bb2916789fe8c09d46c8c157181 Mon Sep 17 00:00:00 2001 From: limuy Date: Thu, 6 Jun 2024 00:00:24 +0800 Subject: [PATCH] update --- gdrust/src/Zenith.rs | 15 ++++++++++ gdrust/src/fight_items/block_drawer.rs | 39 +++++++++++++++++--------- gdrust/src/lib.rs | 1 + scenes/fight.tscn | 10 ++++--- 4 files changed, 47 insertions(+), 18 deletions(-) create mode 100644 gdrust/src/Zenith.rs diff --git a/gdrust/src/Zenith.rs b/gdrust/src/Zenith.rs new file mode 100644 index 0000000..d50bbe1 --- /dev/null +++ b/gdrust/src/Zenith.rs @@ -0,0 +1,15 @@ +use godot::engine::{Area2D, IArea2D}; +use godot::prelude::*; + +#[derive(GodotClass)] +#[class(base = Area2D)] +struct ZenithBegin { + base: Base, +} + +#[godot_api()] +impl IArea2D for ZenithBegin { + fn init(base: Base) -> ZenithBegin { + ZenithBegin { base } + } +} diff --git a/gdrust/src/fight_items/block_drawer.rs b/gdrust/src/fight_items/block_drawer.rs index 4f5263d..ef5e87e 100644 --- a/gdrust/src/fight_items/block_drawer.rs +++ b/gdrust/src/fight_items/block_drawer.rs @@ -7,11 +7,9 @@ use godot::prelude::*; struct BlockDrawer { base: Base, #[var] - // x方向上的block数量 - x: i32, + x: f32, #[var] - // y方向上的block数量 - y: i32, + y: f32, } #[godot_api] @@ -19,26 +17,39 @@ impl INode2D for BlockDrawer { fn init(base: Base) -> BlockDrawer { // godot_print!("BlockDrawer created from Godot Rust"); Self { - x: Self::X_BLOCKS, - y: Self::Y_BLOCKS, + x: Self::BOX_START_POS_X, + y: Self::BOX_START_POS_Y, base, } } fn process(&mut self, delta: f64) {} - fn draw(&mut self) {} + fn draw(&mut self) { + let tmp = self.x; + let xsize = self.base_mut().get_viewport_rect().size.x - tmp * 2.0; + + godot_print!("enter"); + let tmp = Vector2::new(self.x, self.y); + self.base_mut() + .draw_rect_ex( + Rect2::new(tmp, Vector2::new(xsize, Self::Y_SIZE_DEFAULT)), + Color::from_rgb(10.0, 10.0, 10.0), + ) + .width(20.0) + .filled(false) + .done(); + } } #[godot_api] impl BlockDrawer { - #[constant] - const X_BLOCKS: i32 = 10; - #[constant] - const Y_BLOCKS: i32 = 10; + const BOX_START_POS_X: f32 = 400.0; + const BOX_START_POS_Y: f32 = 330.0; + const Y_SIZE_DEFAULT: f32 = 200.0; #[func] - fn change_block_immediate(&mut self, x: i32, y: i32) { + fn change_block_immediate(&mut self, x: f32, y: f32) { self.x = x; self.y = y; } @@ -49,12 +60,12 @@ impl BlockDrawer { #[func] fn get_y_min(&mut self) -> i32 { // self.base(). - (self.base().get_viewport_rect().size.y - self.y as f32) as i32 + (self.base().get_viewport_rect().size.y - self.y) as i32 } #[func] fn get_x_min(&mut self) -> i32 { // self.base(). - (self.base().get_viewport_rect().size.x - self.x as f32) as i32 + (self.base().get_viewport_rect().size.x - self.x) as i32 } } diff --git a/gdrust/src/lib.rs b/gdrust/src/lib.rs index 4394415..c890a9a 100644 --- a/gdrust/src/lib.rs +++ b/gdrust/src/lib.rs @@ -1,3 +1,4 @@ +mod Zenith; mod fight_items; mod player; diff --git a/scenes/fight.tscn b/scenes/fight.tscn index 8bbd2f5..81d9670 100644 --- a/scenes/fight.tscn +++ b/scenes/fight.tscn @@ -26,10 +26,12 @@ grow_horizontal = 2 grow_vertical = 2 color = Color(0, 0, 0, 1) -[node name="ZenithBegin" type="Sprite2D" parent="."] -position = Vector2(563, 154) -rotation = 2.35389 -scale = Vector2(-3.28571, -3.28571) +[node name="ZenithBegin" type="ZenithBegin" parent="."] +position = Vector2(569, 137) +rotation = -0.787703 +scale = Vector2(3.28571, 3.28571) + +[node name="image" type="Sprite2D" parent="ZenithBegin"] texture = ExtResource("3_2spkb") [node name="Star_Wrath" parent="." instance=ExtResource("4_8ipx5")]