diff --git a/components/Scenes/World.tscn b/components/Scenes/World.tscn index 76af829..2048b76 100644 --- a/components/Scenes/World.tscn +++ b/components/Scenes/World.tscn @@ -6,6 +6,31 @@ [ext_resource type="Script" path="res://scripts/Tools/CameraManager.gd" id="5_mk7bv"] [ext_resource type="Texture2D" uid="uid://ckk8kahhof06u" path="res://resources/maps/Castle 2.png" id="6_p0nkj"] +[sub_resource type="Animation" id="Animation_ykpvi"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:zoom:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:zoom:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} + [sub_resource type="Animation" id="Animation_kii8h"] resource_name = "bigLaser" length = 5.0 @@ -33,31 +58,6 @@ tracks/1/keys = { "times": PackedFloat32Array(0, 0.5, 3) } -[sub_resource type="Animation" id="Animation_ykpvi"] -length = 0.001 -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath(".:zoom:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath(".:zoom:y") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_44ixa"] _data = { "RESET": SubResource("Animation_ykpvi"), @@ -67,6 +67,7 @@ _data = { [node name="world" type="Node2D"] y_sort_enabled = true script = ExtResource("1_lxsxj") +metadata/_edit_vertical_guides_ = [-1.0, 57.0] [node name="UI" parent="." instance=ExtResource("2_04cdd")] diff --git a/scripts/Contents/Bullets/BigLaser.gd b/scripts/Contents/Bullets/BigLaser.gd index 165e39e..352d7a5 100644 --- a/scripts/Contents/Bullets/BigLaser.gd +++ b/scripts/Contents/Bullets/BigLaser.gd @@ -2,7 +2,7 @@ extends BulletBase class_name BigLaser func spawn(): - CameraManager.shake(5000) + CameraManager.shake(5000, 100) CameraManager.playAnimation("bigLaser") func ai(): rotation = lerp_angle(rotation, ((get_global_mouse_position() - position).angle()), 0.1) diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index dabc196..9dab2aa 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -7,8 +7,6 @@ signal healthChanged(health: float) signal energyChanged(energy: float) -signal itemCollected(itemType: ItemStore.ItemType, amount: int) - var fields = { FieldStore.Entity.MAX_HEALTH: 100, FieldStore.Entity.DAMAGE_MULTIPILER: 1, @@ -76,24 +74,11 @@ func _ready(): if isPlayer(): statebar.levelLabels.hide() UIState.player = self - hurtbox.body_entered.connect( - func(body): - if body is ItemDropped: - inventory[body.item] += body.stackCount - playSound("collect") - itemCollected.emit(body.item, body.stackCount) - body.queue_free() - ) energyChanged.connect( func(newEnergy): UIState.energyPercent.maxValue = fields.get(FieldStore.Entity.MAX_ENERGY) UIState.energyPercent.setCurrent(newEnergy) ) - itemCollected.connect( - func(itemType, amount): - if MathTool.rate(GameRule.tipSpawnRateWhenGetDroppedItem): - UIState.itemCollect.add_child(ItemShow.generate(itemType, amount, true)) - ) else: currentFocusedBoss = get_tree().get_nodes_in_group("players")[0] applyLevel() @@ -166,6 +151,9 @@ func takeDamage(bullet: BulletBase, crit: bool): bullet.launcher.storeEnergy(energy * 0.35) bullet.launcher.setBoss(null) tryDie(bullet) +func collectItem(itemType: ItemStore.ItemType, amount: int): + inventory[itemType] += amount + playSound("collect") func storeEnergy(value: float): energy += value * fields.get(FieldStore.Entity.ENERGY_MULTIPILER) energyChanged.emit(energy) diff --git a/scripts/Statemachine/ItemDropped.gd b/scripts/Statemachine/ItemDropped.gd index 42dc298..e4821e8 100644 --- a/scripts/Statemachine/ItemDropped.gd +++ b/scripts/Statemachine/ItemDropped.gd @@ -16,6 +16,9 @@ func _physics_process(_delta): targetPlayer = findPlayer() if is_instance_valid(targetPlayer): apply_central_force((targetPlayer.position - position).normalized() * 1000) + if position.distance_to(targetPlayer.position) < 60: + targetPlayer.collectItem(item, stackCount) + queue_free() func findPlayer() -> EntityBase: var result = null diff --git a/scripts/Tools/CameraManager.gd b/scripts/Tools/CameraManager.gd index a7164a6..ecbfff8 100644 --- a/scripts/Tools/CameraManager.gd +++ b/scripts/Tools/CameraManager.gd @@ -2,11 +2,9 @@ extends Camera2D class_name CameraManager -@export var shakeOffset: float = 100 - @onready var animator: AnimationPlayer = $"%animator" -var shaking: bool = false +var shakeIntensity: float = 0 static var instance: CameraManager = null @@ -15,14 +13,11 @@ func _ready(): func _physics_process(_delta): if is_instance_valid(UIState.player): position = UIState.player.position - if shaking: - position += MathTool.randv2_range(shakeOffset) + position += MathTool.randv2_range(shakeIntensity) -static func shake(millseconds: int = 1000): - print("shake start") - instance.shaking = true +static func shake(millseconds: int, intensity: float = 10): + instance.shakeIntensity += intensity await TickTool.millseconds(millseconds) - instance.shaking = false - print("shake end") + instance.shakeIntensity -= intensity static func playAnimation(animation: String): instance.animator.play(animation)