Merge branch 'main' of https://gamejam.fachschaft.info/Florian/The_Dark_Side_of_Earth and Leeches!!
This commit is contained in:
commit
434fc41db4
31 changed files with 582 additions and 38 deletions
13
building_generator.tscn
Normal file
13
building_generator.tscn
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://ceg7ahpj5x12g"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://colvx6wq0e8n7" path="res://world/building_generator.gd" id="1_cwnke"]
|
||||
|
||||
[node name="Building Generator" type="Node"]
|
||||
script = ExtResource("1_cwnke")
|
||||
initial_buildings = 10
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 2.5
|
||||
autostart = true
|
||||
|
||||
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
||||
|
|
@ -16,9 +16,12 @@ func _ready() -> void:
|
|||
|
||||
await get_tree().create_timer(0).timeout
|
||||
if get_node_or_null("EnemyList") != null:
|
||||
for enemy in $EnemyList.get_children():
|
||||
var enemies = $EnemyList.get_children()
|
||||
|
||||
$EnemyList.reparent(get_tree().get_root().get_node("main"), false)
|
||||
|
||||
for enemy in enemies:
|
||||
var oldpos = enemy.position;
|
||||
enemy.reparent(get_tree().get_root().get_node("main"))
|
||||
enemy.position = get_world_position(oldpos)
|
||||
if(enemy.has_method("init_at_horizontal_distortion")):
|
||||
enemy.init_at_horizontal_distortion(enemy.position.length() / grid.ground_radius)
|
||||
|
|
|
|||
66
buildings/room_bear_trap.tscn
Normal file
66
buildings/room_bear_trap.tscn
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
[gd_scene load_steps=10 format=3 uid="uid://dliwqqmrxldjh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_c7qov"]
|
||||
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_6a6ii"]
|
||||
[ext_resource type="Texture2D" uid="uid://dfy0gccqgggp2" path="res://buildings/Building 2x1 fixed.png" id="3_ihg0a"]
|
||||
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_505qw"]
|
||||
[ext_resource type="Texture2D" uid="uid://3weywjfsapax" path="res://buildings/Building 2x1 downside.png" id="5_012sa"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="6_qwyfo"]
|
||||
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="8_evf2t"]
|
||||
[ext_resource type="PackedScene" uid="uid://h3caql0b6vft" path="res://traps/bear_trap.tscn" id="9_c7qov"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfkkr"]
|
||||
shader = ExtResource("2_6a6ii")
|
||||
shader_parameter/ground_height = 3000.0
|
||||
shader_parameter/cell_height = 300.0
|
||||
shader_parameter/num_cells = 60
|
||||
|
||||
[node name="Building2" type="Node2D"]
|
||||
script = ExtResource("1_c7qov")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_pfkkr")
|
||||
scale = Vector2(25, 25)
|
||||
texture = ExtResource("3_ihg0a")
|
||||
script = ExtResource("4_505qw")
|
||||
|
||||
[node name="Sprite2D2" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_pfkkr")
|
||||
scale = Vector2(25, 25)
|
||||
texture = ExtResource("5_012sa")
|
||||
script = ExtResource("4_505qw")
|
||||
grid_offset = Vector2i(0, -1)
|
||||
|
||||
[node name="EnemyList" type="Node2D" parent="."]
|
||||
|
||||
[node name="MorningStar" parent="EnemyList" instance=ExtResource("6_qwyfo")]
|
||||
position = Vector2(238, -149)
|
||||
|
||||
[node name="Platform" parent="EnemyList" instance=ExtResource("8_evf2t")]
|
||||
visible = false
|
||||
position = Vector2(75, -285)
|
||||
|
||||
[node name="Platform2" parent="EnemyList" instance=ExtResource("8_evf2t")]
|
||||
visible = false
|
||||
position = Vector2(225, -285)
|
||||
|
||||
[node name="Platform3" parent="EnemyList" instance=ExtResource("8_evf2t")]
|
||||
visible = false
|
||||
position = Vector2(375, -285)
|
||||
|
||||
[node name="Platform4" parent="EnemyList" instance=ExtResource("8_evf2t")]
|
||||
visible = false
|
||||
position = Vector2(525, -285)
|
||||
|
||||
[node name="Platform5" parent="EnemyList" instance=ExtResource("8_evf2t")]
|
||||
position = Vector2(431, -150)
|
||||
scale = Vector2(2.688, 3)
|
||||
|
||||
[node name="BearTrap" parent="EnemyList" instance=ExtResource("9_c7qov")]
|
||||
position = Vector2(270, -9)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(300, -150)
|
||||
scale = Vector2(1.172, 1.172)
|
||||
texture = ExtResource("3_ihg0a")
|
||||
66
buildings/room_pedastal.tscn
Normal file
66
buildings/room_pedastal.tscn
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
[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"]
|
||||
[ext_resource type="Texture2D" uid="uid://djir4ehm8kif" path="res://buildings/Building 1x2 fixed.png" id="3_elmbw"]
|
||||
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_1cnhw"]
|
||||
[ext_resource type="PackedScene" uid="uid://chu67ci7sl488" path="res://enemies/ghost.tscn" id="5_rh5oo"]
|
||||
[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"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("2_wod1l")
|
||||
shader_parameter/ground_height = 3000.0
|
||||
shader_parameter/cell_height = 300.0
|
||||
shader_parameter/num_cells = 60
|
||||
|
||||
[node name="Building" type="Node2D"]
|
||||
script = ExtResource("1_w5m4l")
|
||||
dimension = Vector2i(1, 2)
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
self_modulate = Color(0.176471, 0, 0.00392157, 0.00392157)
|
||||
material = SubResource("ShaderMaterial_qnfc1")
|
||||
scale = Vector2(25, 25)
|
||||
texture = ExtResource("3_elmbw")
|
||||
script = ExtResource("4_1cnhw")
|
||||
|
||||
[node name="EnemyList" type="Node2D" parent="."]
|
||||
|
||||
[node name="Ghost" parent="EnemyList" instance=ExtResource("5_rh5oo")]
|
||||
position = Vector2(-38, -481)
|
||||
|
||||
[node name="Platform" parent="EnemyList" instance=ExtResource("6_caaff")]
|
||||
visible = false
|
||||
position = Vector2(75, -585)
|
||||
|
||||
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_caaff")]
|
||||
visible = false
|
||||
position = Vector2(225, -585)
|
||||
|
||||
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_caaff")]
|
||||
position = Vector2(5, -251)
|
||||
|
||||
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_caaff")]
|
||||
position = Vector2(286, -138)
|
||||
|
||||
[node name="Platform5" parent="EnemyList" instance=ExtResource("6_caaff")]
|
||||
position = Vector2(269, -435)
|
||||
scale = Vector2(2.49, 3.1)
|
||||
|
||||
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_elmbw")]
|
||||
position = Vector2(149, -645)
|
||||
|
||||
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_1cnhw")]
|
||||
position = Vector2(39, -552)
|
||||
|
||||
[node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")]
|
||||
position = Vector2(301, -39)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(150, -300)
|
||||
scale = Vector2(1.172, 1.172)
|
||||
texture = ExtResource("3_elmbw")
|
||||
58
buildings/room_pedastal_mean.tscn
Normal file
58
buildings/room_pedastal_mean.tscn
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
[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"]
|
||||
[ext_resource type="Texture2D" uid="uid://djir4ehm8kif" path="res://buildings/Building 1x2 fixed.png" id="3_0yjll"]
|
||||
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_ri5b7"]
|
||||
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_kom4b"]
|
||||
[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"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("2_qsju2")
|
||||
shader_parameter/ground_height = 3000.0
|
||||
shader_parameter/cell_height = 300.0
|
||||
shader_parameter/num_cells = 60
|
||||
|
||||
[node name="Building" type="Node2D"]
|
||||
script = ExtResource("1_pww4b")
|
||||
dimension = Vector2i(1, 2)
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
self_modulate = Color(0.176471, 0, 0.00392157, 0.00392157)
|
||||
material = SubResource("ShaderMaterial_qnfc1")
|
||||
scale = Vector2(25, 25)
|
||||
texture = ExtResource("3_0yjll")
|
||||
script = ExtResource("4_ri5b7")
|
||||
|
||||
[node name="EnemyList" type="Node2D" parent="."]
|
||||
|
||||
[node name="Platform" parent="EnemyList" instance=ExtResource("6_kom4b")]
|
||||
visible = false
|
||||
position = Vector2(75, -585)
|
||||
|
||||
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_kom4b")]
|
||||
visible = false
|
||||
position = Vector2(225, -585)
|
||||
|
||||
[node name="Platform5" parent="EnemyList" instance=ExtResource("6_kom4b")]
|
||||
position = Vector2(85, -287)
|
||||
scale = Vector2(2.49, 3.1)
|
||||
|
||||
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")]
|
||||
position = Vector2(149, -645)
|
||||
rarity_bonus = 2
|
||||
|
||||
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_ta0fd")]
|
||||
position = Vector2(39, -552)
|
||||
|
||||
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")]
|
||||
position = Vector2(165, -7)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(150, -300)
|
||||
scale = Vector2(1.172, 1.172)
|
||||
texture = ExtResource("3_0yjll")
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=11 format=3 uid="uid://djawvtdwp423v"]
|
||||
[gd_scene load_steps=12 format=3 uid="uid://djawvtdwp423v"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_5j34s"]
|
||||
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_xx8ra"]
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
[ext_resource type="PackedScene" uid="uid://chu67ci7sl488" path="res://enemies/ghost.tscn" id="7_35wcg"]
|
||||
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="8_sifiv"]
|
||||
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="9_i1qmw"]
|
||||
[ext_resource type="PackedScene" uid="uid://b62xcg0dd3vct" path="res://enemies/leech.tscn" id="10_ibnxs"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfkkr"]
|
||||
shader = ExtResource("2_xx8ra")
|
||||
|
|
@ -63,6 +64,9 @@ scale = Vector2(2.688, 3)
|
|||
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_i1qmw")]
|
||||
position = Vector2(300, -200)
|
||||
|
||||
[node name="Leech" parent="EnemyList" instance=ExtResource("10_ibnxs")]
|
||||
position = Vector2(84, -320)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(300, -150)
|
||||
71
buildings/room_wide_item_above.tscn
Normal file
71
buildings/room_wide_item_above.tscn
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
[gd_scene load_steps=12 format=3 uid="uid://c7ddsyd8kcjji"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_0710n"]
|
||||
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_7e5ul"]
|
||||
[ext_resource type="Texture2D" uid="uid://dfy0gccqgggp2" path="res://buildings/Building 2x1 fixed.png" id="3_lxvry"]
|
||||
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_h84o2"]
|
||||
[ext_resource type="Texture2D" uid="uid://3weywjfsapax" path="res://buildings/Building 2x1 downside.png" id="5_v4fh6"]
|
||||
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_me65q"]
|
||||
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_crruu"]
|
||||
[ext_resource type="PackedScene" uid="uid://h3caql0b6vft" path="res://traps/bear_trap.tscn" id="8_fkxmk"]
|
||||
[ext_resource type="PackedScene" uid="uid://chu67ci7sl488" path="res://enemies/ghost.tscn" id="9_6hrl3"]
|
||||
[ext_resource type="PackedScene" uid="uid://b62xcg0dd3vct" path="res://enemies/leech.tscn" id="10_7e5ul"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfkkr"]
|
||||
shader = ExtResource("2_7e5ul")
|
||||
shader_parameter/ground_height = 3000.0
|
||||
shader_parameter/cell_height = 300.0
|
||||
shader_parameter/num_cells = 60
|
||||
|
||||
[node name="Building2" type="Node2D"]
|
||||
script = ExtResource("1_0710n")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_pfkkr")
|
||||
scale = Vector2(25, 25)
|
||||
texture = ExtResource("3_lxvry")
|
||||
script = ExtResource("4_h84o2")
|
||||
|
||||
[node name="Sprite2D2" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_pfkkr")
|
||||
scale = Vector2(25, 25)
|
||||
texture = ExtResource("5_v4fh6")
|
||||
script = ExtResource("4_h84o2")
|
||||
grid_offset = Vector2i(0, -1)
|
||||
|
||||
[node name="EnemyList" type="Node2D" parent="."]
|
||||
|
||||
[node name="Platform" parent="EnemyList" instance=ExtResource("6_me65q")]
|
||||
visible = false
|
||||
position = Vector2(75, -285)
|
||||
|
||||
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_me65q")]
|
||||
visible = false
|
||||
position = Vector2(225, -285)
|
||||
|
||||
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_me65q")]
|
||||
visible = false
|
||||
position = Vector2(375, -285)
|
||||
|
||||
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_me65q")]
|
||||
visible = false
|
||||
position = Vector2(525, -285)
|
||||
|
||||
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_crruu")]
|
||||
position = Vector2(137, -329)
|
||||
rarity_bonus = 1
|
||||
|
||||
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_fkxmk")]
|
||||
position = Vector2(465, -301)
|
||||
|
||||
[node name="Ghost" parent="EnemyList" instance=ExtResource("9_6hrl3")]
|
||||
position = Vector2(301, -49)
|
||||
|
||||
[node name="Leech" parent="EnemyList" instance=ExtResource("10_7e5ul")]
|
||||
position = Vector2(176, -320)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(300, -150)
|
||||
scale = Vector2(1.172, 1.172)
|
||||
texture = ExtResource("3_lxvry")
|
||||
|
|
@ -4,12 +4,11 @@ func _on_button_quit_pressed() -> void:
|
|||
get_tree().quit()
|
||||
|
||||
func _on_button_main_menu_pressed() -> void:
|
||||
print("TODO")
|
||||
pass # TODO
|
||||
Engine.time_scale = 1.
|
||||
get_tree().change_scene_to_file("res://main_menu/main_menu.tscn")
|
||||
|
||||
func _on_player_player_died() -> void:
|
||||
visible = true
|
||||
|
||||
Engine.time_scale = 0.2
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,11 @@ var aggro_range = 900
|
|||
var chase_range = 1400
|
||||
|
||||
func _ready() -> void:
|
||||
player = get_tree().get_root().get_node("main/Player")
|
||||
player = get_tree().get_root().get_node_or_null("main/Player")
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if !is_instance_valid(player):
|
||||
return
|
||||
|
||||
var dist = (position - player.position).length()
|
||||
if(dist > chase_range):
|
||||
|
|
|
|||
|
|
@ -1,15 +1,23 @@
|
|||
extends Node2D
|
||||
@export var broadth = 250
|
||||
@export var move_dir = 1
|
||||
@export var move_dir = -1
|
||||
@export var angular_speed = 0.25
|
||||
@export var hp = 400
|
||||
var angle = 0.0 if move_dir == 1 else PI
|
||||
|
||||
@onready var segments : Array[Node] = $Segments.get_children()
|
||||
@onready var segment_count = segments.size()
|
||||
var paused = false
|
||||
var pause_time = 0.1
|
||||
var iframes = 0.2
|
||||
var iframe_time = 0
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
func _ready() -> void:
|
||||
for segment in segments:
|
||||
segment.segment_damaged.connect(hurt)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
iframe_time = max(0, iframe_time - delta)
|
||||
if not paused:
|
||||
angle -= TAU * delta * angular_speed * move_dir
|
||||
if(angle > PI or angle < 0):
|
||||
|
|
@ -22,7 +30,19 @@ func _process(delta: float) -> void:
|
|||
var rot_angle = - 2 * asin(ratio)
|
||||
position = position.rotated(rot_angle)
|
||||
|
||||
|
||||
if(move_dir == 1 and angle < 1 or move_dir == -1 and angle > PI - 1):
|
||||
var y = position.length()
|
||||
var ratio = - move_dir * broadth / (2 * y)
|
||||
var rot_angle = - 2 * asin(ratio)
|
||||
$RayCast2D.global_position = position.rotated(rot_angle)
|
||||
$RayCast2D.rotation = rot_angle
|
||||
if(move_dir == 1 and angle < 0.5 or move_dir == -1 and angle > PI - 0.5):
|
||||
if(not $RayCast2D.has_overlapping_bodies()):
|
||||
paused = true
|
||||
await get_tree().create_timer(pause_time).timeout
|
||||
paused = false
|
||||
move_dir *= -1
|
||||
|
||||
for i in range(segment_count):
|
||||
var segment_pos_data = calculate_segment_location_and_rotation(i)
|
||||
segments[i].position = segment_pos_data.position
|
||||
|
|
@ -52,5 +72,18 @@ func calculate_segment_location_and_rotation (i) -> Dictionary:
|
|||
var angle2 = - PI + (center-aerial_end_location).angle()
|
||||
if(switch_arc_dir):
|
||||
angle1 += TAU
|
||||
return {"position": center + radius * Vector2.from_angle((i * angle1 + (segment_count - 1 - i) * angle2)/(segment_count - 1))
|
||||
, "rotation": (i * angle1 + (segment_count - 1 - i) * angle2)/ (segment_count - 1) + PI/2}
|
||||
|
||||
if radius < 10000000:
|
||||
return {"position": center + radius * Vector2.from_angle((i * angle1 + (segment_count - 1 - i) * angle2)/(segment_count - 1))
|
||||
, "rotation": (i * angle1 + (segment_count - 1 - i) * angle2)/ (segment_count - 1) + PI/2}
|
||||
else:
|
||||
return {"position" : Vector2.UP * broadth * i / (segment_count - 1),
|
||||
"rotation" : 3 * PI / 2}
|
||||
|
||||
func hurt(damage : int, _dir):
|
||||
if iframe_time <= 0:
|
||||
hp -= damage
|
||||
if(hp<=0):
|
||||
queue_free()
|
||||
else:
|
||||
iframe_time = iframes
|
||||
|
|
|
|||
|
|
@ -1,8 +1,12 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://b62xcg0dd3vct"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://b62xcg0dd3vct"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b70f2ylbb3btt" path="res://enemies/leech.gd" id="1_6u582"]
|
||||
[ext_resource type="PackedScene" uid="uid://cvoicwo2xnf7e" path="res://segment.tscn" id="2_oqch2"]
|
||||
[ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_0r7dp"]
|
||||
[ext_resource type="Texture2D" uid="uid://djfc7sdc8wxp6" path="res://player/Heart_cut.png" id="4_cq6dk"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cq6dk"]
|
||||
size = Vector2(2, 24)
|
||||
|
||||
[node name="Leech" type="Node2D"]
|
||||
script = ExtResource("1_6u582")
|
||||
|
|
@ -28,3 +32,17 @@ script = ExtResource("1_6u582")
|
|||
[node name="Segment9" parent="Segments" instance=ExtResource("2_oqch2")]
|
||||
|
||||
[node name="EarthAligner" parent="." instance=ExtResource("3_0r7dp")]
|
||||
|
||||
[node name="RayCast2D" type="Area2D" parent="."]
|
||||
position = Vector2(248, 31.2)
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="RayCast2D"]
|
||||
position = Vector2(0, 15)
|
||||
scale = Vector2(0.05, 0.5)
|
||||
texture = ExtResource("4_cq6dk")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="RayCast2D"]
|
||||
position = Vector2(0, 14.8)
|
||||
shape = SubResource("RectangleShape2D_cq6dk")
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://ddn025xnjngko"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://ddn025xnjngko"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bkcip66at5sug" path="res://items/active_items/bow/bow.gd" id="1_xppub"]
|
||||
[ext_resource type="PackedScene" uid="uid://dfva4dhflxglr" path="res://items/active_items/bow/arrow.tscn" id="2_0id2q"]
|
||||
[ext_resource type="Texture2D" uid="uid://cy70quh6k3s1j" path="res://icon.svg" id="2_gllxn"]
|
||||
[ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="4_0id2q"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_gllxn"]
|
||||
|
||||
|
|
@ -13,6 +14,8 @@ script = ExtResource("1_xppub")
|
|||
arrow_scene = ExtResource("2_0id2q")
|
||||
sprite = ExtResource("2_gllxn")
|
||||
|
||||
[node name="EarthAligner" parent="." instance=ExtResource("4_0id2q")]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
scale = Vector2(3.1, 3.1)
|
||||
shape = SubResource("CircleShape2D_gllxn")
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://ewe36lqcjojk"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://ewe36lqcjojk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bbwsc2a2hd0ow" path="res://items/active_items/updash/updash.gd" id="1_ghbl6"]
|
||||
[ext_resource type="Texture2D" uid="uid://cy70quh6k3s1j" path="res://icon.svg" id="1_ptc3l"]
|
||||
[ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_ktv3s"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_ghbl6"]
|
||||
|
||||
|
|
@ -17,3 +18,5 @@ shape = SubResource("CircleShape2D_ghbl6")
|
|||
modulate = Color(1, 0, 1, 1)
|
||||
scale = Vector2(0.45, 0.45)
|
||||
texture = ExtResource("1_ptc3l")
|
||||
|
||||
[node name="EarthAligner" parent="." instance=ExtResource("3_ktv3s")]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
class_name Item extends Area2D
|
||||
@onready var player = get_tree().get_root().get_node("main/Player")
|
||||
@onready var player = get_tree().get_root().get_node_or_null("main/Player")
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if(overlaps_body(player)):
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if(is_instance_valid(player) and overlaps_body(player)):
|
||||
if(self.has_method("collect") and collect()):
|
||||
set_deferred("monitoring", false)
|
||||
set_deferred("monitorable", false)
|
||||
|
|
@ -14,3 +14,4 @@ func collect_animation():
|
|||
|
||||
func collect():
|
||||
push_error("Please specify item collection behavior")
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ class_name ItemSpawn extends Node2D
|
|||
|
||||
@export var common_items : Array[PackedScene]
|
||||
@export var rare_items : Array[PackedScene]
|
||||
@export var unique_items : Array[PackedScene]
|
||||
static var unique_items : Array[PackedScene] = [
|
||||
load("res://items/permanent_items/backslash.tscn")
|
||||
]
|
||||
|
||||
@export var rarity_bonus = 0
|
||||
@export var guarantee_rare : bool = false
|
||||
|
|
@ -24,7 +26,6 @@ func choose_pool() -> Array[PackedScene]:
|
|||
return unique_items
|
||||
elif random < unique_chance + rare_chance || guarantee_rare:
|
||||
return rare_items
|
||||
|
||||
return common_items
|
||||
|
||||
func _ready():
|
||||
|
|
@ -32,7 +33,7 @@ func _ready():
|
|||
var index = randi_range(0, pool.size() - 1)
|
||||
var packed_scene : PackedScene = pool[index]
|
||||
if remove_after_spawn:
|
||||
pool.remove_at(index)
|
||||
unique_items.remove_at(index)
|
||||
var object = packed_scene.instantiate()
|
||||
add_child.call_deferred(object)
|
||||
object.reparent.call_deferred(get_parent())
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@
|
|||
|
||||
[node name="ItemSpawn" type="Node2D"]
|
||||
script = ExtResource("1_ms6tn")
|
||||
common_items = Array[PackedScene]([ExtResource("2_w6i8k"), ExtResource("3_yi7ag"), ExtResource("5_uitgx"), ExtResource("4_v0ua0")])
|
||||
rare_items = Array[PackedScene]([ExtResource("4_v0ua0")])
|
||||
unique_items = Array[PackedScene]([ExtResource("5_uitgx")])
|
||||
common_items = Array[PackedScene]([ExtResource("2_w6i8k")])
|
||||
rare_items = Array[PackedScene]([ExtResource("4_v0ua0"), ExtResource("5_uitgx"), ExtResource("3_yi7ag")])
|
||||
unique_base_chance = 0.1
|
||||
rare_base_chance = 0.3
|
||||
metadata/_custom_type_script = "uid://b8em61mqgdi58"
|
||||
|
||||
[node name="EarthAligner" parent="." instance=ExtResource("3_5pwuf")]
|
||||
|
|
|
|||
|
|
@ -19,5 +19,5 @@ scale = Vector2(7, 7)
|
|||
shape = SubResource("CircleShape2D_hvhjo")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
modulate = Color(1, 1, 0, 1)
|
||||
modulate = Color(0.686275, 0.160784, 0.529412, 1)
|
||||
texture = ExtResource("3_vb0oa")
|
||||
|
|
|
|||
14
main.tscn
14
main.tscn
|
|
@ -1,7 +1,7 @@
|
|||
[gd_scene load_steps=10 format=3 uid="uid://cxo6bq26huau7"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cmaovvr15b3qk" path="res://player/player.tscn" id="2_1bvp3"]
|
||||
[ext_resource type="Script" uid="uid://vgxh2xdevat7" path="res://world/earth.gd" id="2_lquwl"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3fpq76anm4t7" path="res://world/Background prototype.png" id="3_kek77"]
|
||||
[ext_resource type="PackedScene" uid="uid://jjoyj1ldafkf" path="res://world/earth.tscn" id="3_lquwl"]
|
||||
[ext_resource type="Script" uid="uid://colvx6wq0e8n7" path="res://world/building_generator.gd" id="4_1bvp3"]
|
||||
[ext_resource type="PackedScene" uid="uid://73g8y37skebh" path="res://item_ui/item_ui.tscn" id="6_4c57u"]
|
||||
|
|
@ -14,17 +14,23 @@
|
|||
|
||||
[node name="Earth" parent="." instance=ExtResource("3_lquwl")]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("2_lquwl")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_1bvp3")]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(500, -3100)
|
||||
position = Vector2(709, -2980)
|
||||
scale = Vector2(3, 3)
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="Player"]
|
||||
position = Vector2(0, -50)
|
||||
ignore_rotation = false
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Player"]
|
||||
visible = false
|
||||
z_index = -20
|
||||
position = Vector2(0, -50)
|
||||
scale = Vector2(0.7, 0.7)
|
||||
texture = ExtResource("3_kek77")
|
||||
|
||||
[node name="Debug_Camera" type="Camera2D" parent="."]
|
||||
scale = Vector2(41.02, 41.02)
|
||||
zoom = Vector2(0.12, 0.12)
|
||||
|
|
@ -59,7 +65,7 @@ grow_horizontal = 0
|
|||
script = ExtResource("8_5vw27")
|
||||
|
||||
[node name="Leech" parent="." instance=ExtResource("9_kek77")]
|
||||
position = Vector2(0, -3000)
|
||||
position = Vector2(0, -3015)
|
||||
|
||||
[connection signal="active_item_changed" from="Player" to="CanvasLayer/ItemUI" method="_on_player_active_item_changed"]
|
||||
[connection signal="health_changed" from="Player" to="CanvasLayer/Healthbar" method="_on_player_health_changed"]
|
||||
|
|
|
|||
10
main_menu/main_menu.gd
Normal file
10
main_menu/main_menu.gd
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
extends Node
|
||||
|
||||
|
||||
|
||||
func _on_button_start_pressed() -> void:
|
||||
get_tree().change_scene_to_file("res://main.tscn")
|
||||
|
||||
|
||||
func _on_button_quit_pressed() -> void:
|
||||
get_tree().quit()
|
||||
1
main_menu/main_menu.gd.uid
Normal file
1
main_menu/main_menu.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bg4qx85we014d
|
||||
106
main_menu/main_menu.tscn
Normal file
106
main_menu/main_menu.tscn
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://dpkr8yoobtej6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bg4qx85we014d" path="res://main_menu/main_menu.gd" id="1_bws42"]
|
||||
[ext_resource type="PackedScene" uid="uid://jjoyj1ldafkf" path="res://world/earth.tscn" id="1_oa53l"]
|
||||
[ext_resource type="Script" uid="uid://colvx6wq0e8n7" path="res://world/building_generator.gd" id="2_d3a7t"]
|
||||
[ext_resource type="Theme" uid="uid://dwlus1hjwtch4" path="res://large_theme.tres" id="3_3shxk"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_d3a7t"]
|
||||
bg_color = Color(0, 0.7529412, 0, 1)
|
||||
draw_center = false
|
||||
corner_radius_top_left = 350
|
||||
corner_radius_top_right = 350
|
||||
corner_radius_bottom_right = 350
|
||||
corner_radius_bottom_left = 350
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3f7m4"]
|
||||
draw_center = false
|
||||
border_color = Color(0.8, 0.8, 0.8, 0)
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bws42"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bws42"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
corner_radius_top_left = 20
|
||||
corner_radius_top_right = 20
|
||||
corner_radius_bottom_right = 20
|
||||
corner_radius_bottom_left = 20
|
||||
|
||||
[node name="main" type="Node"]
|
||||
script = ExtResource("1_bws42")
|
||||
|
||||
[node name="Earth" parent="." instance=ExtResource("1_oa53l")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
zoom = Vector2(0.12, 0.12)
|
||||
|
||||
[node name="Building Generator" type="Node" parent="."]
|
||||
script = ExtResource("2_d3a7t")
|
||||
initial_buildings = 250
|
||||
initial_spawn_protection = false
|
||||
|
||||
[node name="Timer" type="Timer" parent="Building Generator"]
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Control" type="Control" parent="CanvasLayer"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer/Control"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -350.0
|
||||
offset_top = -350.0
|
||||
offset_right = 350.0
|
||||
offset_bottom = 350.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("3_3shxk")
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_d3a7t")
|
||||
|
||||
[node name="ButtonStart" type="Button" parent="CanvasLayer/Control/PanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"FlatButton"
|
||||
theme_override_styles/pressed = SubResource("StyleBoxFlat_3f7m4")
|
||||
theme_override_styles/focus = SubResource("StyleBoxEmpty_bws42")
|
||||
text = "PLAY"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/Control"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -400.0
|
||||
offset_top = -100.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
theme_override_constants/margin_left = 50
|
||||
theme_override_constants/margin_top = 50
|
||||
theme_override_constants/margin_right = 50
|
||||
theme_override_constants/margin_bottom = 50
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer/Control/MarginContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_bws42")
|
||||
|
||||
[node name="Button_Quit" type="Button" parent="CanvasLayer/Control/MarginContainer/PanelContainer"]
|
||||
custom_minimum_size = Vector2(400, 100)
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"FlatButton"
|
||||
text = "Quit Forever"
|
||||
|
||||
[connection signal="timeout" from="Building Generator/Timer" to="Building Generator" method="_on_timer_timeout"]
|
||||
[connection signal="pressed" from="CanvasLayer/Control/PanelContainer/ButtonStart" to="." method="_on_button_start_pressed"]
|
||||
[connection signal="pressed" from="CanvasLayer/Control/MarginContainer/PanelContainer/Button_Quit" to="." method="_on_button_quit_pressed"]
|
||||
|
|
@ -11,7 +11,7 @@ config_version=5
|
|||
[application]
|
||||
|
||||
config/name="The Dark Side of Earth"
|
||||
run/main_scene="uid://cxo6bq26huau7"
|
||||
run/main_scene="uid://dpkr8yoobtej6"
|
||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
|
|
@ -68,3 +68,4 @@ drop_item={
|
|||
|
||||
2d_physics/layer_2="EnemyHurtBox"
|
||||
2d_physics/layer_3="PlayerHurtBox"
|
||||
2d_physics/layer_4="SolidGround"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@ extends Area2D
|
|||
@onready var player = get_tree().get_root().get_node_or_null("main/Player")
|
||||
var damage = 1
|
||||
|
||||
signal segment_damaged
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if (player != null and overlaps_body(player)):
|
||||
player.hurt(damage, self.global_position-player.global_position)
|
||||
|
||||
|
||||
func _on_hurtbox_damaged(dmg : int, dir : Vector2):
|
||||
segment_damaged.emit(dmg, dir)
|
||||
|
|
|
|||
12
segment.tscn
12
segment.tscn
|
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://cvoicwo2xnf7e"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://cvoicwo2xnf7e"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b3q5khoqnnicx" path="res://segment.gd" id="1_o43lr"]
|
||||
[ext_resource type="Texture2D" uid="uid://cy70quh6k3s1j" path="res://icon.svg" id="2_sa5vt"]
|
||||
[ext_resource type="PackedScene" uid="uid://mtfsdd4cdf3a" path="res://utils/enemy_hurtbox.tscn" id="3_sa5vt"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fgt1l"]
|
||||
|
||||
|
|
@ -18,3 +19,12 @@ texture = ExtResource("2_sa5vt")
|
|||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
scale = Vector2(2, 1)
|
||||
shape = SubResource("RectangleShape2D_fgt1l")
|
||||
|
||||
[node name="EnemyHurtbox" parent="." instance=ExtResource("3_sa5vt")]
|
||||
hit_invulnerability = 0.0
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyHurtbox"]
|
||||
scale = Vector2(2, 1)
|
||||
shape = SubResource("RectangleShape2D_fgt1l")
|
||||
|
||||
[connection signal="damage_taken" from="EnemyHurtbox" to="." method="_on_hurtbox_damaged"]
|
||||
|
|
|
|||
22
traps/bear_trap.gd
Normal file
22
traps/bear_trap.gd
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
extends Node2D
|
||||
|
||||
@export var player_damage : int;
|
||||
@export var enemy_damage : int;
|
||||
|
||||
|
||||
|
||||
func damage_target(target: CollisionObject2D):
|
||||
if(target.get_collision_layer_value(3)):
|
||||
target.hurt(player_damage, Vector2.ZERO)
|
||||
else:
|
||||
target.hurt(enemy_damage, Vector2.ZERO)
|
||||
|
||||
|
||||
func _on_area_2d_area_entered(area: Area2D) -> void:
|
||||
damage_target(area)
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_area_2d_body_entered(body: Node2D) -> void:
|
||||
damage_target(body)
|
||||
queue_free()
|
||||
1
traps/bear_trap.gd.uid
Normal file
1
traps/bear_trap.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dttgoqksqnsm0
|
||||
32
traps/bear_trap.tscn
Normal file
32
traps/bear_trap.tscn
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://h3caql0b6vft"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dttgoqksqnsm0" path="res://traps/bear_trap.gd" id="1_u48ys"]
|
||||
[ext_resource type="Texture2D" uid="uid://cy70quh6k3s1j" path="res://icon.svg" id="2_mnxjq"]
|
||||
[ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_mnxjq"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_yh007"]
|
||||
radius = 30.0
|
||||
|
||||
[node name="BearTrap" type="Node2D"]
|
||||
script = ExtResource("1_u48ys")
|
||||
player_damage = 2
|
||||
enemy_damage = 50
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
collision_layer = 0
|
||||
collision_mask = 6
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
position = Vector2(0, -15)
|
||||
scale = Vector2(1, 0.5)
|
||||
shape = SubResource("CircleShape2D_yh007")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
self_modulate = Color(1, 0, 0, 1)
|
||||
scale = Vector2(0.75, 0.1)
|
||||
texture = ExtResource("2_mnxjq")
|
||||
|
||||
[node name="EarthAligner" parent="." instance=ExtResource("3_mnxjq")]
|
||||
|
||||
[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"]
|
||||
[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
|
||||
|
|
@ -9,6 +9,7 @@ size = Vector2(56, 6)
|
|||
|
||||
[node name="Platform" type="StaticBody2D"]
|
||||
scale = Vector2(2.778, 3.1)
|
||||
collision_layer = 9
|
||||
script = ExtResource("1_c1gtx")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
extends Node
|
||||
class_name BuildingGenerator extends Node
|
||||
|
||||
@onready var grid : Grid = %Earth.get_grid()
|
||||
@export var initial_buildings : int;
|
||||
@export var initial_spawn_protection = true
|
||||
|
||||
func random_oppostite_collumn() -> int:
|
||||
var playerpos = %Player.position
|
||||
|
|
@ -19,7 +20,7 @@ func random_collumn() -> int:
|
|||
func _ready():
|
||||
for i in range(initial_buildings):
|
||||
var collumn = random_collumn()
|
||||
if 43 <= collumn and collumn <= 49:
|
||||
if initial_spawn_protection and 43 <= collumn and collumn <= 49:
|
||||
continue
|
||||
var building = randomize_building()
|
||||
grid.add_building_to_collumn(building, collumn)
|
||||
|
|
|
|||
|
|
@ -1,16 +1,23 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://jjoyj1ldafkf"]
|
||||
[gd_scene load_steps=11 format=3 uid="uid://jjoyj1ldafkf"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://vgxh2xdevat7" path="res://world/earth.gd" id="1_wxnww"]
|
||||
[ext_resource type="Script" uid="uid://b5fhsy1xlreco" path="res://world/draw_circle.gd" id="2_2bhor"]
|
||||
[ext_resource type="Script" uid="uid://m3vyyfk8gnma" path="res://world/grid.gd" id="3_2bhor"]
|
||||
[ext_resource type="PackedScene" uid="uid://djawvtdwp423v" path="res://buildings/building.tscn" id="3_nihcy"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmofmd0vf3hx3" path="res://buildings/haunted_house.tscn" id="4_ml5no"]
|
||||
[ext_resource type="PackedScene" uid="uid://djawvtdwp423v" path="res://buildings/room_temple.tscn" id="3_nihcy"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmofmd0vf3hx3" path="res://buildings/room_haunted_house.tscn" id="4_ml5no"]
|
||||
[ext_resource type="PackedScene" uid="uid://dliwqqmrxldjh" path="res://buildings/room_bear_trap.tscn" id="4_r4pw8"]
|
||||
[ext_resource type="PackedScene" uid="uid://6y637jp2tbma" path="res://buildings/room_pedastal.tscn" id="6_640fc"]
|
||||
[ext_resource type="PackedScene" uid="uid://dt827qxyycg8n" path="res://buildings/room_pedastal_mean.tscn" id="7_abvrx"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7ddsyd8kcjji" path="res://buildings/room_wide_item_above.tscn" id="9_ej0af"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_5i67w"]
|
||||
radius = 3000.0
|
||||
|
||||
[node name="Earth" type="Node2D"]
|
||||
script = ExtResource("1_wxnww")
|
||||
|
||||
[node name="Ground" type="StaticBody2D" parent="."]
|
||||
collision_layer = 9
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground"]
|
||||
shape = SubResource("CircleShape2D_5i67w")
|
||||
|
|
@ -25,5 +32,5 @@ script = ExtResource("3_2bhor")
|
|||
ground_radius = 3000.0
|
||||
cell_height = 300.0
|
||||
num_collumns = 60
|
||||
packed_buildings = Array[PackedScene]([ExtResource("3_nihcy"), ExtResource("4_ml5no")])
|
||||
packed_buildings = Array[PackedScene]([ExtResource("4_r4pw8"), ExtResource("4_ml5no"), ExtResource("6_640fc"), ExtResource("7_abvrx"), ExtResource("3_nihcy"), ExtResource("9_ej0af")])
|
||||
metadata/_custom_type_script = "uid://m3vyyfk8gnma"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue