diff --git a/buildings/room_giant_leech.tscn b/buildings/room_giant_leech.tscn index 5b8fe7d..0439dfc 100644 --- a/buildings/room_giant_leech.tscn +++ b/buildings/room_giant_leech.tscn @@ -60,13 +60,12 @@ scale = Vector2(2.688, 3) [node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_jmdjr")] position = Vector2(300, -200) +spawn_petal = true +petal_scene = ExtResource("9_dasjy") [node name="Giant_Leech" parent="EnemyList" instance=ExtResource("8_r3b86")] position = Vector2(400, -340) -[node name="Petal" parent="EnemyList" instance=ExtResource("9_dasjy")] -position = Vector2(511, -172) - [node name="DebugSprite" type="Sprite2D" parent="."] visible = false position = Vector2(300, -150) diff --git a/buildings/room_pedastal.tscn b/buildings/room_pedastal.tscn index a2d09da..f4f997d 100644 --- a/buildings/room_pedastal.tscn +++ b/buildings/room_pedastal.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://6y637jp2tbma"] +[gd_scene load_steps=10 format=3 uid="uid://6y637jp2tbma"] [ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_w5m4l"] [ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_wod1l"] @@ -8,7 +8,6 @@ [ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_caaff"] [ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_elmbw"] [ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="8_1cnhw"] -[ext_resource type="PackedScene" uid="uid://bhhhvaqhm3ctc" path="res://petal.tscn" id="9_1cnhw"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"] resource_local_to_scene = true @@ -62,9 +61,6 @@ position = Vector2(39, -552) [node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")] position = Vector2(301, -39) -[node name="Petal" parent="EnemyList" instance=ExtResource("9_1cnhw")] -position = Vector2(260, -525) - [node name="DebugSprite" type="Sprite2D" parent="."] visible = false position = Vector2(150, -300) diff --git a/buildings/room_pedastal_mean.tscn b/buildings/room_pedastal_mean.tscn index 0f5bc9b..d224964 100644 --- a/buildings/room_pedastal_mean.tscn +++ b/buildings/room_pedastal_mean.tscn @@ -47,6 +47,8 @@ scale = Vector2(2.49, 3.1) [node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")] position = Vector2(149, -645) rarity_bonus = 0.5 +spawn_petal = true +petal_scene = ExtResource("9_qsju2") [node name="MorningStar" parent="EnemyList" instance=ExtResource("8_ta0fd")] position = Vector2(39, -552) @@ -54,9 +56,6 @@ position = Vector2(39, -552) [node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")] position = Vector2(165, -7) -[node name="Petal" parent="EnemyList" instance=ExtResource("9_qsju2")] -position = Vector2(86, -397) - [node name="DebugSprite" type="Sprite2D" parent="."] visible = false position = Vector2(150, -300) diff --git a/items/generic/item_spawn.gd b/items/generic/item_spawn.gd index b6befd3..70747df 100644 --- a/items/generic/item_spawn.gd +++ b/items/generic/item_spawn.gd @@ -10,6 +10,9 @@ static var item_pool = ResourceLoader.load("res://items/generic/item_pool.tres", @export var unique_bonus_multiplier = .05 @export var rare_bonus_multiplier = 0 +@export var spawn_petal = true +@export var petal_scene : PackedScene = ResourceLoader.load("res://petal.tscn") + var remove_after_spawn = false func choose_pool() -> Array[PackedScene]: @@ -22,8 +25,15 @@ func choose_pool() -> Array[PackedScene]: return item_pool.unique elif random < unique_chance + rare_chance || guarantee_rare: return item_pool.rare + spawn_petal = false return item_pool.common - + +func instantiate_petal(item): + var petal : Petal = petal_scene.instantiate() + get_parent().call_deferred("add_child", petal) + petal.item = item + petal.global_position = global_position + func _ready(): var pool = choose_pool() var index = randi_range(0, pool.size() - 1) @@ -33,3 +43,4 @@ func _ready(): var object = packed_scene.instantiate() add_child.call_deferred(object) object.reparent.call_deferred(get_parent()) + if spawn_petal: instantiate_petal(object) diff --git a/items/generic/item_spawn.tscn b/items/generic/item_spawn.tscn index ed399fc..1fd4397 100644 --- a/items/generic/item_spawn.tscn +++ b/items/generic/item_spawn.tscn @@ -1,10 +1,12 @@ -[gd_scene load_steps=3 format=3 uid="uid://xj0of571aur1"] +[gd_scene load_steps=4 format=3 uid="uid://xj0of571aur1"] [ext_resource type="Script" uid="uid://b8em61mqgdi58" path="res://items/generic/item_spawn.gd" id="1_ms6tn"] +[ext_resource type="PackedScene" uid="uid://bhhhvaqhm3ctc" path="res://petal.tscn" id="2_5to52"] [ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_5pwuf"] [node name="ItemSpawn" type="Node2D"] script = ExtResource("1_ms6tn") +petal_scene = ExtResource("2_5to52") metadata/_custom_type_script = "uid://b8em61mqgdi58" [node name="EarthAligner" parent="." instance=ExtResource("3_5pwuf")] diff --git a/petal.gd b/petal.gd index 9b3c3b1..910fe05 100644 --- a/petal.gd +++ b/petal.gd @@ -1,9 +1,17 @@ -extends Node2D +class_name Petal extends Node2D @onready var grid : Grid = get_tree().get_root().get_node("main/Earth/Grid") -@export var location : Vector2 -@export var offset : Vector2 +@onready var location : Vector2 = grid.get_location_from_world_pos(global_position) +@onready var offset : Vector2 = grid.get_offset_from_world_pos(global_position) @export var vine_resource : PackedScene var vine : Vine +var activated = false +var item : Item: + set(item_in): + item = item_in + if not activated and item is Item: + item.monitoring = false + item.monitorable = false + item.modulate = Color(1,1,1,0.8) func _ready() -> void: await get_tree().create_timer(1).timeout @@ -15,4 +23,9 @@ func _ready() -> void: vine.init_random() func _on_interaction() -> void: + activated = true vine.activate() + if item != null: + item.monitorable = true + item.monitoring = true + item.modulate = Color.WHITE diff --git a/petal.tscn b/petal.tscn index 3d8265f..b2e6e2a 100644 --- a/petal.tscn +++ b/petal.tscn @@ -15,6 +15,7 @@ vine_resource = ExtResource("2_4btcp") [node name="BudOpen" type="Sprite2D" parent="."] modulate = Color(18.892157, 1.8483434, 18.892157, 1) +z_index = -1 scale = Vector2(5, 5) texture = ExtResource("1_05pvv") diff --git a/vines_petals/vine.gd b/vines_petals/vine.gd index ed6fff7..ff03295 100644 --- a/vines_petals/vine.gd +++ b/vines_petals/vine.gd @@ -126,4 +126,4 @@ func init_random(): vine_end_data.append({"location": petal_location, "offset": petal_offset, "depth": 0}) func random_offset(): - return 0*Vector2(randf_range(60, 240), randf_range(90, 270)) + return Vector2(randf_range(60, 240), randf_range(90, 270)) diff --git a/world/grid.gd b/world/grid.gd index c66da37..c4af695 100644 --- a/world/grid.gd +++ b/world/grid.gd @@ -54,7 +54,21 @@ func get_world_position (location: Vector2, offset: Vector2 = Vector2.ZERO) -> V var height = ground_radius + location.y * cell_height - offset.y # currently assumes anchor is bottom left var angle = (location.x + offset.x / cell_height) * TAU / num_collumns return height * Vector2.from_angle(angle) - + +func get_location_from_world_pos(pos : Vector2): + var angle = pos.angle() + var x = floor(num_collumns * angle / TAU) + var height = pos.length() + var y = ceil((height - ground_radius)/cell_height) + return Vector2(x, y) + +func get_offset_from_world_pos(pos : Vector2): + var angle = pos.angle() + var x = fposmod(num_collumns * angle / TAU, 1) * cell_height + var height = pos.length() + var y = fposmod((height - ground_radius)/cell_height, 1) * cell_height + return Vector2(x, y) + # for testing #func _ready() -> void: #