ADD: doors.

main
bog 2023-09-30 18:05:08 +02:00
parent 407e12fd38
commit 93003abb2a
13 changed files with 144 additions and 31 deletions

33
src/Door/door.gd Normal file
View File

@ -0,0 +1,33 @@
extends StaticBody2D
@export var ID : int = 0
var m_state = null
var m_open_timer = 0.0
var m_open_time = 0.2
@onready var m_init_y_scale = $Sprite2D.scale.y
@onready var m_init_y_pos = $Sprite2D.global_position.y
func _ready():
m_state = self.process_idle
func open():
m_state = self.process_open
pass
func _process(delta):
if m_state != null:
m_state.call(delta)
func process_idle(_delta):
pass
func process_open(delta):
if m_open_timer >= m_open_time:
queue_free()
else:
var t = min(1.0, m_open_timer / m_open_time)
var ratio = (1.0 - t) * m_init_y_scale
$Sprite2D.scale.y = ratio
m_open_timer += delta

18
src/Door/door.tscn Normal file
View File

@ -0,0 +1,18 @@
[gd_scene load_steps=4 format=3 uid="uid://d30oryxv0w7pf"]
[ext_resource type="Script" path="res://Door/door.gd" id="1_62c16"]
[ext_resource type="Texture2D" uid="uid://blr8qcmuqs5vl" path="res://icon.svg" id="1_urwyt"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2o8ax"]
size = Vector2(74, 20)
[node name="Door" type="StaticBody2D" groups=["doors"]]
script = ExtResource("1_62c16")
[node name="Sprite2D" type="Sprite2D" parent="."]
modulate = Color(1, 0, 1, 1)
scale = Vector2(0.5, 0.25)
texture = ExtResource("1_urwyt")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_2o8ax")

View File

@ -0,0 +1,17 @@
extends Area2D
@export var ID : int = 0
func _ready():
pass
func _process(delta):
pass
func _on_body_entered(body):
if body in get_tree().get_nodes_in_group('bombs'):
body._explode(0)
for door in get_tree().get_nodes_in_group('doors'):
if door.ID == self.ID:
door.open()
queue_free()

View File

@ -0,0 +1,24 @@
[gd_scene load_steps=4 format=3 uid="uid://c5f7m5oi32kr5"]
[ext_resource type="Script" path="res://DoorCommand/door_command.gd" id="1_l2uva"]
[ext_resource type="Texture2D" uid="uid://blr8qcmuqs5vl" path="res://icon.svg" id="1_uchk3"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6j0py"]
size = Vector2(36, 60)
[node name="DoorCommand" type="Area2D"]
collision_layer = 2
collision_mask = 2
script = ExtResource("1_l2uva")
[node name="Sprite2D" type="Sprite2D" parent="."]
modulate = Color(0.329412, 0.329412, 0.329412, 1)
position = Vector2(-0.5, -8.5)
scale = Vector2(0.179688, 0.382812)
texture = ExtResource("1_uchk3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(3, -10)
shape = SubResource("RectangleShape2D_6j0py")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

22
src/Levels/level_0.tscn Normal file

File diff suppressed because one or more lines are too long

15
src/MainMenu/main_menu.gd Normal file
View File

@ -0,0 +1,15 @@
extends Control
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func _on_button_pressed():
get_tree().change_scene_to_file("res://Levels/level_0.tscn")

View File

@ -1,4 +1,6 @@
[gd_scene format=3 uid="uid://sj7j3yxfjkko"] [gd_scene load_steps=2 format=3 uid="uid://sj7j3yxfjkko"]
[ext_resource type="Script" path="res://MainMenu/main_menu.gd" id="1_ga0yx"]
[node name="MainMenu" type="Control"] [node name="MainMenu" type="Control"]
layout_mode = 3 layout_mode = 3
@ -7,6 +9,7 @@ anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_ga0yx")
[node name="Button" type="Button" parent="."] [node name="Button" type="Button" parent="."]
layout_mode = 0 layout_mode = 0
@ -16,3 +19,5 @@ offset_right = 565.0
offset_bottom = 215.0 offset_bottom = 215.0
text = "PLAY text = "PLAY
" "
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]

View File

@ -37,6 +37,3 @@ func _moving(delta):
self.velocity = m_dir * m_speed self.velocity = m_dir * m_speed
move_and_collide(self.velocity * delta) move_and_collide(self.velocity * delta)
func _on_area_2d_area_entered(area):
pass

View File

@ -9,9 +9,9 @@ radius = 14.0
[sub_resource type="CircleShape2D" id="CircleShape2D_v1u5d"] [sub_resource type="CircleShape2D" id="CircleShape2D_v1u5d"]
radius = 34.0147 radius = 34.0147
[node name="Molotov" type="CharacterBody2D"] [node name="Molotov" type="CharacterBody2D" groups=["bombs"]]
collision_layer = 0 collision_layer = 2
collision_mask = 0 collision_mask = 2
script = ExtResource("1_uepii") script = ExtResource("1_uepii")
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]
@ -22,9 +22,7 @@ texture = ExtResource("1_ga5l4")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_oq4si") shape = SubResource("CircleShape2D_oq4si")
[node name="Area2D" type="Area2D" parent="." groups=["bombs"]] [node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_v1u5d") shape = SubResource("CircleShape2D_v1u5d")
[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" path="res://Player/player.gd" id="1_2pfvx"] [ext_resource type="Script" path="res://Player/player.gd" id="1_2pfvx"]
[ext_resource type="PackedScene" uid="uid://c0kqx6dsury58" path="res://Actor/actor.tscn" id="2_s40rr"] [ext_resource type="PackedScene" uid="uid://c0kqx6dsury58" path="res://Actor/actor.tscn" id="2_s40rr"]
[node name="Player" type="Node2D"] [node name="Player" type="Node2D" groups=["player"]]
script = ExtResource("1_2pfvx") script = ExtResource("1_2pfvx")
[node name="Actor" parent="." instance=ExtResource("2_s40rr")] [node name="Actor" parent="." instance=ExtResource("2_s40rr")]

View File

@ -4,7 +4,7 @@ var m_broken_timer = 0.0
var m_broken_time = 0.2 var m_broken_time = 0.2
var process_state = null var process_state = null
var m_death_timer = 0.0 var m_death_timer = 0.0
var m_death_time = 1.0 var m_death_time = 2.0
func _ready(): func _ready():
for bear in get_tree().get_nodes_in_group('bears'): for bear in get_tree().get_nodes_in_group('bears'):

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="Ludum Dare 54" config/name="Ludum Dare 54"
run/main_scene="res://Sandbox/sandbox.tscn" run/main_scene="res://MainMenu/main_menu.tscn"
config/features=PackedStringArray("4.2", "GL Compatibility") config/features=PackedStringArray("4.2", "GL Compatibility")
config/icon="res://icon.svg" config/icon="res://icon.svg"