beta-1.0
This commit is contained in:
12
Scripts/Objects/Chests/Bases/chest_base.gd
Normal file
12
Scripts/Objects/Chests/Bases/chest_base.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
extends StaticBody2D
|
||||
class_name BaseChest
|
||||
|
||||
@export var is_open := false
|
||||
|
||||
# Public Methods
|
||||
func Open() -> void:
|
||||
is_open = true
|
||||
|
||||
|
||||
func OpenAlreadyOpened() -> void:
|
||||
pass
|
||||
1
Scripts/Objects/Chests/Bases/chest_base.gd.uid
Normal file
1
Scripts/Objects/Chests/Bases/chest_base.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://0fsmtp1umvmp
|
||||
4
Scripts/Objects/Chests/Bases/item_chest.gd
Normal file
4
Scripts/Objects/Chests/Bases/item_chest.gd
Normal file
@@ -0,0 +1,4 @@
|
||||
extends BaseChest
|
||||
class_name BaseItemChest
|
||||
|
||||
@export var item_id: Enums.Items
|
||||
1
Scripts/Objects/Chests/Bases/item_chest.gd.uid
Normal file
1
Scripts/Objects/Chests/Bases/item_chest.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dbuc0f87m24xf
|
||||
31
Scripts/Objects/Chests/item_chest_01.gd
Normal file
31
Scripts/Objects/Chests/item_chest_01.gd
Normal file
@@ -0,0 +1,31 @@
|
||||
extends BaseItemChest
|
||||
|
||||
@onready var chest_01_sprite: AnimatedSprite2D = $"Sprite"
|
||||
|
||||
@export var is_locked := false
|
||||
@export var locked_message_dialogue_trigger: DialogueTrigger
|
||||
@export var already_opened_message_dialogue_trigger: DialogueTrigger
|
||||
|
||||
# Public Methods
|
||||
func Open() -> void:
|
||||
if is_locked:
|
||||
if locked_message_dialogue_trigger:
|
||||
locked_message_dialogue_trigger.Trigger()
|
||||
return
|
||||
|
||||
super.Open()
|
||||
chest_01_sprite.play("opening")
|
||||
|
||||
var item_name: String = Enums.Items.keys()[item_id]
|
||||
print(item_name)
|
||||
|
||||
|
||||
func OpenAlreadyOpened() -> void:
|
||||
if already_opened_message_dialogue_trigger:
|
||||
already_opened_message_dialogue_trigger.Trigger()
|
||||
|
||||
|
||||
# Private Methods
|
||||
func _ready() -> void:
|
||||
if is_open:
|
||||
chest_01_sprite.play("opened")
|
||||
1
Scripts/Objects/Chests/item_chest_01.gd.uid
Normal file
1
Scripts/Objects/Chests/item_chest_01.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bvq13h8uyx572
|
||||
2
Scripts/Objects/Decorative/Outdoor/wooden_bench.gd
Normal file
2
Scripts/Objects/Decorative/Outdoor/wooden_bench.gd
Normal file
@@ -0,0 +1,2 @@
|
||||
extends StaticBody2D
|
||||
class_name WoodenBench
|
||||
1
Scripts/Objects/Decorative/Outdoor/wooden_bench.gd.uid
Normal file
1
Scripts/Objects/Decorative/Outdoor/wooden_bench.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c6n652dy18xbm
|
||||
10
Scripts/Objects/Dialogue/dialogue_trigger.gd
Normal file
10
Scripts/Objects/Dialogue/dialogue_trigger.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
extends Area2D
|
||||
class_name DialogueTrigger
|
||||
|
||||
signal DialogueTriggered(dialogue_name: String)
|
||||
|
||||
@export var dialogue_name: String
|
||||
|
||||
# Public Methods
|
||||
func Trigger() -> void:
|
||||
DialogueTriggered.emit(dialogue_name)
|
||||
1
Scripts/Objects/Dialogue/dialogue_trigger.gd.uid
Normal file
1
Scripts/Objects/Dialogue/dialogue_trigger.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cfsfx0sahh5t7
|
||||
17
Scripts/Objects/Gates/Spike Gate/spike_gate.gd
Normal file
17
Scripts/Objects/Gates/Spike Gate/spike_gate.gd
Normal file
@@ -0,0 +1,17 @@
|
||||
extends StaticBody2D
|
||||
|
||||
@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D
|
||||
@onready var collision_shape_2d: CollisionShape2D = $CollisionShape2D
|
||||
|
||||
var is_open := false
|
||||
|
||||
func OpenGate() -> void:
|
||||
if is_open:
|
||||
return
|
||||
is_open = true
|
||||
|
||||
sprite.play("opening")
|
||||
await sprite.animation_finished
|
||||
|
||||
collision_shape_2d.set_deferred("disabled", true)
|
||||
sprite.play("open")
|
||||
1
Scripts/Objects/Gates/Spike Gate/spike_gate.gd.uid
Normal file
1
Scripts/Objects/Gates/Spike Gate/spike_gate.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://8erg53skow38
|
||||
11
Scripts/Objects/Loading Zone/collision_loading_zone.gd
Normal file
11
Scripts/Objects/Loading Zone/collision_loading_zone.gd
Normal file
@@ -0,0 +1,11 @@
|
||||
extends Area2D
|
||||
class_name CollisionLoadingZone
|
||||
|
||||
@export var loading_zone_transporter: LoadingZoneTransporter
|
||||
|
||||
# Private Methods
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body is not PlayerCharacter:
|
||||
return
|
||||
|
||||
loading_zone_transporter.Activate()
|
||||
@@ -0,0 +1 @@
|
||||
uid://g0r5waf50gp5
|
||||
8
Scripts/Objects/Loading Zone/interactive_loading_zone.gd
Normal file
8
Scripts/Objects/Loading Zone/interactive_loading_zone.gd
Normal file
@@ -0,0 +1,8 @@
|
||||
extends Area2D
|
||||
class_name InteractiveLoadingZone
|
||||
|
||||
@export var loading_zone_transporter: LoadingZoneTransporter
|
||||
|
||||
# Public Methods
|
||||
func Activate() -> void:
|
||||
loading_zone_transporter.Activate()
|
||||
@@ -0,0 +1 @@
|
||||
uid://dla7fe0nsbdvv
|
||||
18
Scripts/Objects/Loading Zone/loading_zone_transporter.gd
Normal file
18
Scripts/Objects/Loading Zone/loading_zone_transporter.gd
Normal file
@@ -0,0 +1,18 @@
|
||||
extends Node
|
||||
class_name LoadingZoneTransporter
|
||||
|
||||
signal MapTransitionQueued(map_id: Enums.MapIds, marker_name: String)
|
||||
|
||||
@export var destination_map_id: Enums.MapIds
|
||||
@export var destination_marker_name: String
|
||||
|
||||
var _packed_scene: PackedScene
|
||||
|
||||
# Public Methods
|
||||
func Activate() -> void:
|
||||
MapTransitionQueued.emit(destination_map_id, destination_marker_name)
|
||||
|
||||
|
||||
# Private Methods
|
||||
func _ready() -> void:
|
||||
_packed_scene = MapLoader.GetMap(destination_map_id)
|
||||
@@ -0,0 +1 @@
|
||||
uid://cshtpe5n2iubh
|
||||
15
Scripts/Objects/Mechanisms/pressure_plate.gd
Normal file
15
Scripts/Objects/Mechanisms/pressure_plate.gd
Normal file
@@ -0,0 +1,15 @@
|
||||
extends Area2D
|
||||
|
||||
signal PressurePlateTripped
|
||||
|
||||
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
|
||||
|
||||
var activated := false
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if activated:
|
||||
return
|
||||
|
||||
activated = true
|
||||
animated_sprite_2d.play("activated")
|
||||
PressurePlateTripped.emit()
|
||||
1
Scripts/Objects/Mechanisms/pressure_plate.gd.uid
Normal file
1
Scripts/Objects/Mechanisms/pressure_plate.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cxt7ht66jiac8
|
||||
15
Scripts/Objects/Occlusion/occlusion_culler.gd
Normal file
15
Scripts/Objects/Occlusion/occlusion_culler.gd
Normal file
@@ -0,0 +1,15 @@
|
||||
extends Area2D
|
||||
|
||||
@export var to_alpha := 0.38
|
||||
@export var fade_out_duration := 0.2
|
||||
@export var fade_in_duration := 0.2
|
||||
@export var nodes_to_occlude: Array[Node2D]
|
||||
|
||||
func _on_area_entered(_area: Area2D) -> void:
|
||||
for node in nodes_to_occlude:
|
||||
get_tree().create_tween().tween_property(node, "self_modulate:a", to_alpha, fade_out_duration)
|
||||
|
||||
|
||||
func _on_area_exited(_area: Area2D) -> void:
|
||||
for node in nodes_to_occlude:
|
||||
get_tree().create_tween().tween_property(node, "self_modulate:a", 1.0, fade_in_duration)
|
||||
1
Scripts/Objects/Occlusion/occlusion_culler.gd.uid
Normal file
1
Scripts/Objects/Occlusion/occlusion_culler.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d4g6s63d0bh4o
|
||||
78
Scripts/Objects/Trees/leaf_spawner.gd
Normal file
78
Scripts/Objects/Trees/leaf_spawner.gd
Normal file
@@ -0,0 +1,78 @@
|
||||
extends Node2D
|
||||
|
||||
@export var leaf_texture: Texture2D
|
||||
@export var spawn_markers: Node2D
|
||||
@export var destination_markers: Node2D
|
||||
|
||||
var _spawn_markers: Array[Marker2D] = []
|
||||
var _destination_markers: Array[Marker2D] = []
|
||||
var _spawn_schedule := 0.0
|
||||
var _spawn_timer := 0.0
|
||||
|
||||
# Private Methods
|
||||
func _ready() -> void:
|
||||
for child in spawn_markers.get_children():
|
||||
_spawn_markers.append(child)
|
||||
|
||||
for child in destination_markers.get_children():
|
||||
_destination_markers.append(child)
|
||||
|
||||
_set_random_spawn_schedule()
|
||||
|
||||
# At spawn, we might want to spawn some leaves sooner...
|
||||
_spawn_schedule -= randf_range(0.0, 15.0)
|
||||
_spawn_schedule = max(0, _spawn_schedule)
|
||||
print("%s - Leaf Spawn Schedule: %f" % [get_parent().name, _spawn_schedule])
|
||||
|
||||
# Debug
|
||||
_spawn_schedule = randf_range(1.0, 3.0)
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
_spawn_timer += delta
|
||||
if _spawn_timer >= _spawn_schedule:
|
||||
_spawn_timer = 0.0
|
||||
_set_random_spawn_schedule()
|
||||
|
||||
var spawn := _get_random_spawn_point()
|
||||
var destination := _get_random_destination_point()
|
||||
|
||||
# TODO Refactor this into scene
|
||||
var sprite := Sprite2D.new()
|
||||
sprite.texture = leaf_texture
|
||||
sprite.position = spawn
|
||||
sprite.rotate(deg_to_rad(randf_range(0, 360)))
|
||||
var tween := get_tree().create_tween().tween_property(sprite, "position", destination, randf_range(2.0, 3.0))
|
||||
tween.finished.connect(
|
||||
func():
|
||||
var timer := get_tree().create_timer(randf_range(8.0, 15.0))
|
||||
timer.timeout.connect(
|
||||
func():
|
||||
if !sprite: return
|
||||
var tween2 := get_tree().create_tween().tween_property(sprite, "self_modulate:a", 0.0, randf_range(4.0, 6.0))
|
||||
tween2.finished.connect(
|
||||
func():
|
||||
if !sprite: return
|
||||
sprite.queue_free()
|
||||
)
|
||||
)
|
||||
)
|
||||
add_child(sprite)
|
||||
|
||||
|
||||
func _set_random_spawn_schedule() -> void:
|
||||
_spawn_schedule = randf_range(20.0, 60.0)
|
||||
|
||||
|
||||
func _get_random_spawn_point() -> Vector2:
|
||||
var idx := randi_range(0, len(_spawn_markers) - 1)
|
||||
var marker := _spawn_markers[idx]
|
||||
return marker.position
|
||||
|
||||
|
||||
func _get_random_destination_point() -> Vector2:
|
||||
var idx := randi_range(0, len(_destination_markers) - 1)
|
||||
var marker := _destination_markers[idx]
|
||||
var offset := Vector2(randf_range(-5.0, 5.0), randf_range(-5.0, 5.0))
|
||||
|
||||
return marker.position + offset
|
||||
1
Scripts/Objects/Trees/leaf_spawner.gd.uid
Normal file
1
Scripts/Objects/Trees/leaf_spawner.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://vmyfl4obus88
|
||||
17
Scripts/Objects/Weapons/Projectiles/base_projectile.gd
Normal file
17
Scripts/Objects/Weapons/Projectiles/base_projectile.gd
Normal file
@@ -0,0 +1,17 @@
|
||||
extends CharacterBody2D
|
||||
class_name BaseProjectile
|
||||
|
||||
@export var direction: Vector2
|
||||
@export var speed := 100
|
||||
|
||||
# Public Methods
|
||||
func SetProjectileStartAndDirection(start_position: Vector2, projectile_direction: Vector2) -> void:
|
||||
position = start_position
|
||||
direction = projectile_direction
|
||||
rotation = projectile_direction.angle()
|
||||
|
||||
|
||||
# Private Methods
|
||||
func _physics_process(delta: float) -> void:
|
||||
velocity = direction * speed * delta
|
||||
move_and_slide()
|
||||
@@ -0,0 +1 @@
|
||||
uid://8q26ldhfyijx
|
||||
29
Scripts/Objects/Weapons/Projectiles/wooden_arrow.gd
Normal file
29
Scripts/Objects/Weapons/Projectiles/wooden_arrow.gd
Normal file
@@ -0,0 +1,29 @@
|
||||
extends BaseProjectile
|
||||
class_name WoodenArrow
|
||||
|
||||
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||
|
||||
var _despawn_queued := false
|
||||
|
||||
# Private Methods
|
||||
func _ready() -> void:
|
||||
speed = 8000
|
||||
|
||||
|
||||
func _on_collision_detector_area_entered(_area: Area2D) -> void:
|
||||
queue_despawn()
|
||||
|
||||
|
||||
func _on_collision_detector_body_entered(body: Node2D) -> void:
|
||||
if body == self: return
|
||||
queue_despawn()
|
||||
|
||||
|
||||
func queue_despawn() -> void:
|
||||
if _despawn_queued: return
|
||||
_despawn_queued = true
|
||||
|
||||
animation_player.play("shaking")
|
||||
await animation_player.animation_finished
|
||||
|
||||
queue_free()
|
||||
1
Scripts/Objects/Weapons/Projectiles/wooden_arrow.gd.uid
Normal file
1
Scripts/Objects/Weapons/Projectiles/wooden_arrow.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://j5yj4piyfql1
|
||||
8
Scripts/Objects/arrow_target.gd
Normal file
8
Scripts/Objects/arrow_target.gd
Normal file
@@ -0,0 +1,8 @@
|
||||
extends Area2D
|
||||
|
||||
signal TargetHit
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body is not CharacterBody2D:
|
||||
return
|
||||
TargetHit.emit()
|
||||
1
Scripts/Objects/arrow_target.gd.uid
Normal file
1
Scripts/Objects/arrow_target.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://6jls1eokv2to
|
||||
Reference in New Issue
Block a user