Some refactoring and documentation of the building code.

Removed empty background.gd.
This commit is contained in:
RealMelwei 2025-10-11 19:30:55 +02:00
parent 28640e94c6
commit c558f31583
10 changed files with 80 additions and 89 deletions

View file

@ -1,5 +0,0 @@
extends Node2D
#func _process(delta: float) -> void:
#for p : Parallax2D in get_children():
#p.scroll_offset += Vector2.RIGHT * 100 * delta * p.scroll_scale

View file

@ -1 +0,0 @@
uid://c6q1tgl7kag67

View file

@ -10,27 +10,29 @@ var destroyed = false
# make sure location is set before adding a building to the scene tree
# also make sure that the buildings are instantiated as children of the grid
func _ready() -> void:
position = Grid.get_world_position(location)
global_position = Grid.get_world_position(location)
if blocks_area:
Grid.buildings.append(self)
await get_tree().create_timer(0.2).timeout
if get_node_or_null("EnemyList") != null:
var enemies = $EnemyList.get_children()
$EnemyList.reparent(get_tree().get_root().get_node("main"), false)
for enemy in enemies:
var oldpos = enemy.global_position;
enemy.global_position = Grid.get_world_position(location, oldpos)
if "location" in enemy: enemy.location = location + Vector2i(floor(oldpos.x/300), ceil(-oldpos.y/300))
if "offset" in enemy:
enemy.offset = Global.vec_mod(oldpos, 300)
if enemy is Platform or enemy is Trap or enemy is Item:
objects.append(enemy)
if "building" in enemy: enemy.building = self
if(enemy.has_method("init_at_horizontal_distortion")):
enemy.init_at_horizontal_distortion(enemy.position.length() / Grid.ground_radius)
if get_node_or_null("ObjectList") != null:
var objects_to_be_placed = $ObjectList.get_children()
$ObjectList.reparent(get_tree().get_root().get_node("main"), false)
for object in objects_to_be_placed:
var offset = object.global_position;
object.global_position = Grid.get_world_position(location, offset)
# some objects, such as petals, require information about their position in the grid.
if "location" in object: object.location = Grid.get_location_from_world_pos(object.global_position)
if "offset" in object:
object.offset = Global.vec_mod(offset, 300)
# The building remembers these objects: If it is destroyed, so are they.
if object is Platform or object is Trap or object is Item:
objects.append(object)
if "building" in object: object.building = self
# This scales platforms hoizontally to make sure they still form a floor without gaps.
if(object.has_method("init_at_horizontal_distortion")):
object.init_at_horizontal_distortion(object.position.length() / Grid.ground_radius)
func overlaps(other : Building):
# heights don't overlap
@ -47,6 +49,7 @@ func overlaps(other : Building):
func destroy():
if not destroyed:
# On destruction, the building is removed from the list and destroyed together with all its objects.
Grid.buildings.remove_at(Grid.buildings.find(self))
for object in objects:
if object != null and not ("collected" in object and object.collected):

View file

@ -31,36 +31,36 @@ texture = ExtResource("5_012sa")
script = ExtResource("4_505qw")
grid_offset = Vector2i(0, -1)
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="MorningStar" parent="EnemyList" instance=ExtResource("6_qwyfo")]
[node name="MorningStar" parent="ObjectList" instance=ExtResource("6_qwyfo")]
position = Vector2(238, -149)
[node name="Platform" parent="EnemyList" instance=ExtResource("8_evf2t")]
[node name="Platform" parent="ObjectList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(75, -295)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("8_evf2t")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(225, -295)
collision_layer = 41
[node name="Platform3" parent="EnemyList" instance=ExtResource("8_evf2t")]
[node name="Platform3" parent="ObjectList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(375, -295)
collision_layer = 41
[node name="Platform4" parent="EnemyList" instance=ExtResource("8_evf2t")]
[node name="Platform4" parent="ObjectList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(525, -295)
collision_layer = 41
[node name="Platform5" parent="EnemyList" instance=ExtResource("8_evf2t")]
[node name="Platform5" parent="ObjectList" instance=ExtResource("8_evf2t")]
position = Vector2(431, -150)
scale = Vector2(2.688, 3)
[node name="BearTrap" parent="EnemyList" instance=ExtResource("9_c7qov")]
[node name="BearTrap" parent="ObjectList" instance=ExtResource("9_c7qov")]
position = Vector2(270, -9)
[node name="DebugSprite" type="Sprite2D" parent="."]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://oflm2yjjwhf"]
[gd_scene load_steps=10 format=3 uid="uid://oflm2yjjwhf"]
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_ivy1q"]
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_yuthg"]
@ -7,7 +7,6 @@
[ext_resource type="Texture2D" uid="uid://3weywjfsapax" path="res://buildings/Building 2x1 downside.png" id="5_hu6aj"]
[ext_resource type="PackedScene" uid="uid://5nb7pf8g1ck" path="res://enemies/leech/giant_leech.tscn" id="8_r3b86"]
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="8_y6yyb"]
[ext_resource type="PackedScene" uid="uid://bhhhvaqhm3ctc" path="res://petal.tscn" id="9_dasjy"]
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="9_jmdjr"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfkkr"]
@ -32,38 +31,36 @@ texture = ExtResource("5_hu6aj")
script = ExtResource("4_2shqy")
grid_offset = Vector2i(0, -1)
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="Platform" parent="EnemyList" instance=ExtResource("8_y6yyb")]
[node name="Platform" parent="ObjectList" instance=ExtResource("8_y6yyb")]
visible = false
position = Vector2(75, -295)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("8_y6yyb")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("8_y6yyb")]
visible = false
position = Vector2(225, -295)
collision_layer = 41
[node name="Platform3" parent="EnemyList" instance=ExtResource("8_y6yyb")]
[node name="Platform3" parent="ObjectList" instance=ExtResource("8_y6yyb")]
visible = false
position = Vector2(375, -295)
collision_layer = 41
[node name="Platform4" parent="EnemyList" instance=ExtResource("8_y6yyb")]
[node name="Platform4" parent="ObjectList" instance=ExtResource("8_y6yyb")]
visible = false
position = Vector2(525, -295)
collision_layer = 41
[node name="Platform5" parent="EnemyList" instance=ExtResource("8_y6yyb")]
[node name="Platform5" parent="ObjectList" instance=ExtResource("8_y6yyb")]
position = Vector2(300, -150)
scale = Vector2(2.688, 3)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_jmdjr")]
[node name="ItemSpawn" parent="ObjectList" 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")]
[node name="Giant_Leech" parent="ObjectList" instance=ExtResource("8_r3b86")]
position = Vector2(400, -340)
[node name="DebugSprite" type="Sprite2D" parent="."]

View file

@ -25,25 +25,25 @@ scale = Vector2(25, 25)
texture = ExtResource("3_uv7v8")
script = ExtResource("4_bl5jt")
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="Ghost" parent="EnemyList" instance=ExtResource("5_23fi7")]
[node name="Ghost" parent="ObjectList" instance=ExtResource("5_23fi7")]
position = Vector2(150, -300)
[node name="Platform" parent="EnemyList" instance=ExtResource("6_e6j05")]
[node name="Platform" parent="ObjectList" instance=ExtResource("6_e6j05")]
visible = false
position = Vector2(75, -595)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_e6j05")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("6_e6j05")]
visible = false
position = Vector2(225, -595)
collision_layer = 41
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_e6j05")]
[node name="Platform3" parent="ObjectList" instance=ExtResource("6_e6j05")]
position = Vector2(290, -431)
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_e6j05")]
[node name="Platform4" parent="ObjectList" instance=ExtResource("6_e6j05")]
position = Vector2(62, -184)
[node name="DebugSprite" type="Sprite2D" parent="."]

View file

@ -27,38 +27,38 @@ scale = Vector2(25, 25)
texture = ExtResource("3_elmbw")
script = ExtResource("4_1cnhw")
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="Ghost" parent="EnemyList" instance=ExtResource("5_rh5oo")]
[node name="Ghost" parent="ObjectList" instance=ExtResource("5_rh5oo")]
position = Vector2(-38, -481)
[node name="Platform" parent="EnemyList" instance=ExtResource("6_caaff")]
[node name="Platform" parent="ObjectList" instance=ExtResource("6_caaff")]
visible = false
position = Vector2(75, -595)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_caaff")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("6_caaff")]
visible = false
position = Vector2(225, -595)
collision_layer = 41
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_caaff")]
[node name="Platform3" parent="ObjectList" instance=ExtResource("6_caaff")]
position = Vector2(5, -251)
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_caaff")]
[node name="Platform4" parent="ObjectList" instance=ExtResource("6_caaff")]
position = Vector2(286, -138)
[node name="Platform5" parent="EnemyList" instance=ExtResource("6_caaff")]
[node name="Platform5" parent="ObjectList" instance=ExtResource("6_caaff")]
position = Vector2(269, -435)
scale = Vector2(2.49, 3.1)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_elmbw")]
[node name="ItemSpawn" parent="ObjectList" instance=ExtResource("7_elmbw")]
position = Vector2(149, -645)
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_1cnhw")]
[node name="MorningStar" parent="ObjectList" instance=ExtResource("8_1cnhw")]
position = Vector2(39, -552)
[node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")]
[node name="Ghost2" parent="ObjectList" instance=ExtResource("5_rh5oo")]
position = Vector2(301, -39)
[node name="DebugSprite" type="Sprite2D" parent="."]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://dt827qxyycg8n"]
[gd_scene load_steps=10 format=3 uid="uid://dt827qxyycg8n"]
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_pww4b"]
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_qsju2"]
@ -8,7 +8,6 @@
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_sr858"]
[ext_resource type="PackedScene" uid="uid://h3caql0b6vft" path="res://traps/bear_trap.tscn" id="8_pww4b"]
[ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="8_ta0fd"]
[ext_resource type="PackedScene" uid="uid://bhhhvaqhm3ctc" path="res://petal.tscn" id="9_qsju2"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
resource_local_to_scene = true
@ -28,32 +27,30 @@ scale = Vector2(25, 25)
texture = ExtResource("3_0yjll")
script = ExtResource("4_ri5b7")
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="Platform" parent="EnemyList" instance=ExtResource("6_kom4b")]
[node name="Platform" parent="ObjectList" instance=ExtResource("6_kom4b")]
visible = false
position = Vector2(75, -595)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_kom4b")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("6_kom4b")]
visible = false
position = Vector2(225, -595)
collision_layer = 41
[node name="Platform5" parent="EnemyList" instance=ExtResource("6_kom4b")]
[node name="Platform5" parent="ObjectList" instance=ExtResource("6_kom4b")]
position = Vector2(85, -287)
scale = Vector2(2.49, 3.1)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")]
[node name="ItemSpawn" parent="ObjectList" 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")]
[node name="MorningStar" parent="ObjectList" instance=ExtResource("8_ta0fd")]
position = Vector2(39, -552)
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")]
[node name="BearTrap" parent="ObjectList" instance=ExtResource("8_pww4b")]
position = Vector2(165, -7)
[node name="DebugSprite" type="Sprite2D" parent="."]

View file

@ -33,42 +33,42 @@ texture = ExtResource("5_pfkkr")
script = ExtResource("4_xr4t5")
grid_offset = Vector2i(0, -1)
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="MorningStar" parent="EnemyList" instance=ExtResource("5_xr4t5")]
[node name="MorningStar" parent="ObjectList" instance=ExtResource("5_xr4t5")]
position = Vector2(397, -3)
[node name="Ghost" parent="EnemyList" instance=ExtResource("7_35wcg")]
[node name="Ghost" parent="ObjectList" instance=ExtResource("7_35wcg")]
position = Vector2(118, -125)
[node name="Platform" parent="EnemyList" instance=ExtResource("8_sifiv")]
[node name="Platform" parent="ObjectList" instance=ExtResource("8_sifiv")]
visible = false
position = Vector2(75, -295)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("8_sifiv")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("8_sifiv")]
visible = false
position = Vector2(225, -295)
collision_layer = 41
[node name="Platform3" parent="EnemyList" instance=ExtResource("8_sifiv")]
[node name="Platform3" parent="ObjectList" instance=ExtResource("8_sifiv")]
visible = false
position = Vector2(375, -295)
collision_layer = 41
[node name="Platform4" parent="EnemyList" instance=ExtResource("8_sifiv")]
[node name="Platform4" parent="ObjectList" instance=ExtResource("8_sifiv")]
visible = false
position = Vector2(525, -295)
collision_layer = 41
[node name="Platform5" parent="EnemyList" instance=ExtResource("8_sifiv")]
[node name="Platform5" parent="ObjectList" instance=ExtResource("8_sifiv")]
position = Vector2(300, -150)
scale = Vector2(2.688, 3)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_i1qmw")]
[node name="ItemSpawn" parent="ObjectList" instance=ExtResource("9_i1qmw")]
position = Vector2(300, -200)
[node name="Leech" parent="EnemyList" instance=ExtResource("10_ibnxs")]
[node name="Leech" parent="ObjectList" instance=ExtResource("10_ibnxs")]
position = Vector2(240, -340)
[node name="DebugSprite" type="Sprite2D" parent="."]

View file

@ -33,39 +33,39 @@ texture = ExtResource("5_v4fh6")
script = ExtResource("4_h84o2")
grid_offset = Vector2i(0, -1)
[node name="EnemyList" type="Node2D" parent="."]
[node name="ObjectList" type="Node2D" parent="."]
[node name="Platform" parent="EnemyList" instance=ExtResource("6_me65q")]
[node name="Platform" parent="ObjectList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(75, -295)
collision_layer = 41
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_me65q")]
[node name="Platform2" parent="ObjectList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(225, -295)
collision_layer = 41
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_me65q")]
[node name="Platform3" parent="ObjectList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(375, -295)
collision_layer = 41
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_me65q")]
[node name="Platform4" parent="ObjectList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(525, -295)
collision_layer = 41
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_crruu")]
[node name="ItemSpawn" parent="ObjectList" instance=ExtResource("7_crruu")]
position = Vector2(137, -329)
rarity_bonus = 0.25
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_fkxmk")]
[node name="BearTrap" parent="ObjectList" instance=ExtResource("8_fkxmk")]
position = Vector2(465, -301)
[node name="Ghost" parent="EnemyList" instance=ExtResource("9_6hrl3")]
[node name="Ghost" parent="ObjectList" instance=ExtResource("9_6hrl3")]
position = Vector2(301, -49)
[node name="Leech" parent="EnemyList" instance=ExtResource("10_7e5ul")]
[node name="Leech" parent="ObjectList" instance=ExtResource("10_7e5ul")]
position = Vector2(176, -340)
[node name="DebugSprite" type="Sprite2D" parent="."]