finish room enter transition
This commit is contained in:
parent
4dd9b31c27
commit
bd6ced2a16
6 changed files with 83 additions and 9 deletions
|
|
@ -5,6 +5,8 @@ class_name Room extends Node2D
|
|||
|
||||
@onready var camera: RoomCamera = $RoomCamera
|
||||
@onready var director: StateMachine = $RoomDirector
|
||||
@onready var palette_shader: ColorRect = $CanvasLayer/PaletteShader
|
||||
@onready var canvas_modulate: CanvasModulate = $CanvasModulate
|
||||
|
||||
# TODO: better alternative to preloading as i add functionality?
|
||||
# https://theduriel.github.io/Godot/Do-not-use---Preload
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
[ext_resource type="Script" uid="uid://drnrd5xlt8imm" path="res://scenes/room/states/room_exiting.gd" id="6_7jj40"]
|
||||
[ext_resource type="Script" uid="uid://ceevyto3vbq7c" path="res://scenes/room/states/room_paused.gd" id="6_gui0a"]
|
||||
[ext_resource type="Shader" uid="uid://bxvmsjxx0tj21" path="res://shaders/palette.gdshader" id="8_dv301"]
|
||||
[ext_resource type="Texture2D" uid="uid://h5523ru86vrd" path="res://assets/palettes/forgotten.png" id="9_68b7a"]
|
||||
[ext_resource type="Texture2D" uid="uid://h5523ru86vrd" path="res://assets/palettes/forgotten-120.png" id="9_68b7a"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ip1yl"]
|
||||
shader = ExtResource("8_dv301")
|
||||
|
|
@ -21,7 +21,7 @@ script = ExtResource("1_8xru0")
|
|||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
||||
[node name="PaletteShader" type="ColorRect" parent="CanvasLayer"]
|
||||
material = SubResource("ShaderMaterial_ip1yl")
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
|
|
@ -29,6 +29,9 @@ anchor_bottom = 1.0
|
|||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
||||
visible = false
|
||||
|
||||
[node name="RoomDirector" type="Node" parent="." node_paths=PackedStringArray("initial_state")]
|
||||
process_mode = 3
|
||||
script = ExtResource("4_vaubn")
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@ class_name RoomConfig extends Resource
|
|||
@export var camera_position: Vector2i = Vector2i.ZERO
|
||||
|
||||
@export_group('Lighting')
|
||||
## Enables the default canvas modulate.
|
||||
@export var enable_canvas_modulate: bool = false
|
||||
## Color of the canvas modulate.
|
||||
@export var modulate_color: Color
|
||||
|
||||
@export_group('Room Loop')
|
||||
|
|
@ -24,3 +26,12 @@ class_name RoomConfig extends Resource
|
|||
@export var loopable: bool = false
|
||||
## Section of the room that will loop itself.
|
||||
@export var loop_size: Rect2i = Rect2i(Vector2i.ZERO, Vector2i.ZERO)
|
||||
|
||||
@export_group('Transitions')
|
||||
@export_subgroup('In')
|
||||
## Enables transition when room starts.
|
||||
@export var enable_transition_in: bool = true
|
||||
## What transition type plays when starting the room.
|
||||
@export var transition_in_type: Tween.TransitionType = Tween.TransitionType.TRANS_CUBIC
|
||||
## How long the transition lasts.
|
||||
@export var transition_in_duration: float = 1.0
|
||||
|
|
|
|||
|
|
@ -1,14 +1,70 @@
|
|||
extends RoomState
|
||||
|
||||
|
||||
var trans_tween: Tween
|
||||
var player_light_tween: Tween
|
||||
|
||||
|
||||
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
|
||||
print("entering room")
|
||||
room.player = _instantiate_player()
|
||||
assert(room.player != null, "player is null")
|
||||
room.camera.global_position = room.config.camera_position
|
||||
|
||||
room.player.enable_point_light(true, 0.4)
|
||||
room.player.point_light.texture_scale = 0
|
||||
|
||||
room.canvas_modulate.visible = true
|
||||
room.canvas_modulate.color = Color.BLACK
|
||||
|
||||
var timer: Timer = Timer.new()
|
||||
room.add_child(timer)
|
||||
timer.one_shot = true
|
||||
timer.start(room.config.transition_in_duration)
|
||||
|
||||
await timer.timeout
|
||||
timer.queue_free()
|
||||
|
||||
if player_light_tween:
|
||||
player_light_tween.kill()
|
||||
|
||||
player_light_tween = create_tween()
|
||||
|
||||
player_light_tween.tween_property(room.player.point_light, "texture_scale", 1.0, room.config.transition_in_duration).set_trans(Tween.TRANS_BOUNCE).set_ease(Tween.EASE_OUT)
|
||||
|
||||
await player_light_tween.finished
|
||||
|
||||
if player_light_tween:
|
||||
player_light_tween.kill()
|
||||
|
||||
player_light_tween = create_tween()
|
||||
|
||||
if room.config.enable_point_light:
|
||||
player_light_tween.tween_property(room.player.point_light, "energy", room.config.point_light_energy, room.config.transition_in_duration).set_trans(room.config.transition_in_type).set_ease(Tween.EASE_OUT)
|
||||
player_light_tween.tween_callback(func() -> void:
|
||||
player_light_tween = null
|
||||
)
|
||||
else:
|
||||
player_light_tween.tween_property(room.player.point_light, "energy", 0, room.config.transition_in_duration).set_trans(room.config.transition_in_type).set_ease(Tween.EASE_OUT)
|
||||
player_light_tween.tween_callback(func() -> void:
|
||||
room.player.point_light.enabled = false
|
||||
player_light_tween = null
|
||||
)
|
||||
|
||||
if trans_tween:
|
||||
trans_tween.kill()
|
||||
|
||||
assert(trans_tween == null, "transgender tween wasnt nulled")
|
||||
|
||||
trans_tween = create_tween()
|
||||
|
||||
if room.config.enable_canvas_modulate:
|
||||
trans_tween.tween_property(room.canvas_modulate, "color", room.config.modulate_color, room.config.transition_in_duration).set_trans(room.config.transition_in_type).set_ease(Tween.EASE_OUT)
|
||||
else:
|
||||
trans_tween.tween_property(room.canvas_modulate, "color", Color.WHITE, room.config.transition_in_duration).set_trans(room.config.transition_in_type).set_ease(Tween.EASE_OUT)
|
||||
|
||||
await trans_tween.finished
|
||||
finished.emit(PLAYING)
|
||||
return
|
||||
|
||||
|
||||
func _instantiate_player() -> Player:
|
||||
|
|
@ -22,7 +78,5 @@ func _instantiate_player() -> Player:
|
|||
"invalid player initial spawn provided"
|
||||
)
|
||||
p.global_position = room.config.initial_spawn
|
||||
if room.config.enable_point_light:
|
||||
p.enable_point_light(true, room.config.point_light_energy)
|
||||
|
||||
return p
|
||||
|
|
|
|||
|
|
@ -8,17 +8,17 @@
|
|||
[node name="Yukotsuki\'s Room" instance=ExtResource("1_1k8b4")]
|
||||
config = ExtResource("2_vqekq")
|
||||
|
||||
[node name="FloorLayer" type="TileMapLayer" parent="." index="2"]
|
||||
[node name="FloorLayer" type="TileMapLayer" parent="." index="3"]
|
||||
tile_map_data = PackedByteArray("AAAPAA4AAQALAAMAAAAPAA0AAQALAAIAAAAPAAwAAQALAA4AAAAPAAsAAQALAAYAAAAPAAoAAQALAAQAAAAOAA4AAQAJAA8AAAAOAA0AAQAJAA4AAAAOAAwAAQAJAAIAAAAOAAsAAQAJAAoAAAAOAAoAAQAKAAQAAAANAA4AAQAJAA8AAAANAA0AAQAJAA4AAAANAAwAAQAJAAYAAAANAAsAAQAJAAYAAAANAAoAAQAKAAwAAAAMAA4AAQAJAAMAAAAMAA0AAQAJAAoAAAAMAAwAAQAJAAYAAAAMAAsAAQAJAA4AAAAMAAoAAQAKAAQAAAALAA4AAQAJAAsAAAALAA0AAQAJAAYAAAALAAwAAQAJAAoAAAALAAsAAQAJAAoAAAALAAoAAQAKAAAAAAAKAA4AAQAJAA8AAAAKAA0AAQAJAAYAAAAKAAwAAQAJAAIAAAAKAAsAAQAJAAIAAAAKAAoAAQAKAAAAAAAJAA4AAQAJAAMAAAAJAA0AAQAJAAYAAAAJAAwAAQAJAAIAAAAJAAsAAQAJAAoAAAAJAAoAAQAKAAwAAAAIAA4AAQAJAAcAAAAIAA0AAQAJAA4AAAAIAAwAAQAJAAIAAAAIAAsAAQAJAAoAAAAIAAoAAQAKAAAAAAAHAA4AAQAJAA8AAAAHAA0AAQAJAAoAAAAHAAwAAQAJAAYAAAAHAAsAAQAJAAoAAAAHAAoAAQAKAAgAAAAGAA4AAQAJAAsAAAAGAA0AAQAJAAYAAAAGAAwAAQAJAAYAAAAGAAsAAQAJAAoAAAAGAAoAAQAKAAgAAAAFAA4AAQAJAA8AAAAFAA0AAQAJAAoAAAAFAAwAAQAJAAoAAAAFAAsAAQAJAAYAAAAFAAoAAQAKAAQAAAAEAA4AAQAIAAcAAAAEAA0AAQAIAAUAAAAEAAwAAQAIAAEAAAAEAAsAAQAIAAUAAAAEAAoAAQAIAAQAAAA=")
|
||||
tile_set = ExtResource("3_od2gb")
|
||||
|
||||
[node name="CarpetLayer" type="TileMapLayer" parent="." index="3"]
|
||||
[node name="CarpetLayer" type="TileMapLayer" parent="." index="4"]
|
||||
tile_map_data = PackedByteArray("AAAIAAsAAwAIAAAAAAAJAAsAAwAFAAEAAAAJAAoAAwAIAAAAAAAKAAoAAwAKAAAAAAALAAoAAwAKAAAAAAAMAAoAAwAKAAAAAAANAAoAAwALAAAAAAANAAsAAwAGAAEAAAAOAAsAAwALAAAAAAAOAAwAAwALAAMAAAANAAwAAwAGAAIAAAANAA0AAwALAAMAAAAMAA0AAwAJAAMAAAALAA0AAwAJAAMAAAAKAA0AAwAJAAMAAAAJAA0AAwAJAAMAAAAIAA0AAwAIAAMAAAAIAAwAAwAIAAEAAAAMAAsAAwAJAAIAAAAMAAwAAwAJAAIAAAALAAwAAwAJAAIAAAAKAAwAAwAJAAIAAAAJAAwAAwAJAAIAAAAKAAsAAwAJAAIAAAALAAsAAwAJAAIAAAA=")
|
||||
tile_set = ExtResource("4_od2gb")
|
||||
|
||||
[node name="WallLayer" type="TileMapLayer" parent="." index="4"]
|
||||
[node name="WallLayer" type="TileMapLayer" parent="." index="5"]
|
||||
tile_map_data = PackedByteArray("AAADAA4AAAAKAAkAAAADAA0AAAAKAAkAAAADAAwAAAAKAAkAAAADAAsAAAAKAAkAAAADAAoAAAAKAAkAAAADAAkAAAAKAAkAAAAEAAkAAAAKAAkAAAAFAAkAAAAKAAkAAAAGAAkAAAAKAAkAAAAHAAkAAAAKAAkAAAAIAAkAAAAKAAkAAAAJAAkAAAAKAAkAAAAKAAkAAAAKAAkAAAALAAkAAAAKAAkAAAAMAAkAAAAKAAkAAAANAAkAAAAKAAkAAAAOAAkAAAAKAAkAAAAPAAkAAAAKAAkAAAAQAAkAAAAKAAkAAAAQAAoAAAAKAAkAAAAQAAsAAAAKAAkAAAAQAAwAAAAKAAkAAAAQAA0AAAAKAAkAAAAQAA4AAAAKAAkAAAADAA8AAAAKAAkAAAAEAA8AAAAKAAkAAAAFAA8AAAAKAAkAAAAGAA8AAAAKAAkAAAAHAA8AAAAKAAkAAAAIAA8AAAAKAAkAAAAJAA8AAAAKAAkAAAAKAA8AAAAKAAkAAAALAA8AAAAKAAkAAAAMAA8AAAAKAAkAAAANAA8AAAAKAAkAAAAOAA8AAAAKAAkAAAAPAA8AAAAKAAkAAAAQAA8AAAAKAAkAAAA=")
|
||||
tile_set = ExtResource("4_od2gb")
|
||||
|
||||
[node name="CurtainLayer" type="TileMapLayer" parent="." index="5"]
|
||||
[node name="CurtainLayer" type="TileMapLayer" parent="." index="6"]
|
||||
tile_set = ExtResource("3_od2gb")
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@
|
|||
[resource]
|
||||
script = ExtResource("1_vlksg")
|
||||
initial_spawn = Vector2i(85, 225)
|
||||
enable_point_light = true
|
||||
point_light_energy = 0.4
|
||||
follow_player = false
|
||||
camera_position = Vector2i(160, 120)
|
||||
enable_canvas_modulate = true
|
||||
modulate_color = Color(0.35156274, 0.35156295, 0.35156283, 1)
|
||||
metadata/_custom_type_script = "uid://bamoq5wi0lkdy"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue