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 camera: RoomCamera = $RoomCamera
|
||||||
@onready var director: StateMachine = $RoomDirector
|
@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?
|
# TODO: better alternative to preloading as i add functionality?
|
||||||
# https://theduriel.github.io/Godot/Do-not-use---Preload
|
# 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://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="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="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"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ip1yl"]
|
||||||
shader = ExtResource("8_dv301")
|
shader = ExtResource("8_dv301")
|
||||||
|
|
@ -21,7 +21,7 @@ script = ExtResource("1_8xru0")
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
[node name="PaletteShader" type="ColorRect" parent="CanvasLayer"]
|
||||||
material = SubResource("ShaderMaterial_ip1yl")
|
material = SubResource("ShaderMaterial_ip1yl")
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|
@ -29,6 +29,9 @@ anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="RoomDirector" type="Node" parent="." node_paths=PackedStringArray("initial_state")]
|
[node name="RoomDirector" type="Node" parent="." node_paths=PackedStringArray("initial_state")]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
script = ExtResource("4_vaubn")
|
script = ExtResource("4_vaubn")
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,9 @@ class_name RoomConfig extends Resource
|
||||||
@export var camera_position: Vector2i = Vector2i.ZERO
|
@export var camera_position: Vector2i = Vector2i.ZERO
|
||||||
|
|
||||||
@export_group('Lighting')
|
@export_group('Lighting')
|
||||||
|
## Enables the default canvas modulate.
|
||||||
@export var enable_canvas_modulate: bool = false
|
@export var enable_canvas_modulate: bool = false
|
||||||
|
## Color of the canvas modulate.
|
||||||
@export var modulate_color: Color
|
@export var modulate_color: Color
|
||||||
|
|
||||||
@export_group('Room Loop')
|
@export_group('Room Loop')
|
||||||
|
|
@ -24,3 +26,12 @@ class_name RoomConfig extends Resource
|
||||||
@export var loopable: bool = false
|
@export var loopable: bool = false
|
||||||
## Section of the room that will loop itself.
|
## Section of the room that will loop itself.
|
||||||
@export var loop_size: Rect2i = Rect2i(Vector2i.ZERO, Vector2i.ZERO)
|
@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
|
extends RoomState
|
||||||
|
|
||||||
|
|
||||||
|
var trans_tween: Tween
|
||||||
|
var player_light_tween: Tween
|
||||||
|
|
||||||
|
|
||||||
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
|
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
|
||||||
print("entering room")
|
print("entering room")
|
||||||
room.player = _instantiate_player()
|
room.player = _instantiate_player()
|
||||||
assert(room.player != null, "player is null")
|
assert(room.player != null, "player is null")
|
||||||
room.camera.global_position = room.config.camera_position
|
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)
|
finished.emit(PLAYING)
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
func _instantiate_player() -> Player:
|
func _instantiate_player() -> Player:
|
||||||
|
|
@ -22,7 +78,5 @@ func _instantiate_player() -> Player:
|
||||||
"invalid player initial spawn provided"
|
"invalid player initial spawn provided"
|
||||||
)
|
)
|
||||||
p.global_position = room.config.initial_spawn
|
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
|
return p
|
||||||
|
|
|
||||||
|
|
@ -8,17 +8,17 @@
|
||||||
[node name="Yukotsuki\'s Room" instance=ExtResource("1_1k8b4")]
|
[node name="Yukotsuki\'s Room" instance=ExtResource("1_1k8b4")]
|
||||||
config = ExtResource("2_vqekq")
|
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_map_data = PackedByteArray("AAAPAA4AAQALAAMAAAAPAA0AAQALAAIAAAAPAAwAAQALAA4AAAAPAAsAAQALAAYAAAAPAAoAAQALAAQAAAAOAA4AAQAJAA8AAAAOAA0AAQAJAA4AAAAOAAwAAQAJAAIAAAAOAAsAAQAJAAoAAAAOAAoAAQAKAAQAAAANAA4AAQAJAA8AAAANAA0AAQAJAA4AAAANAAwAAQAJAAYAAAANAAsAAQAJAAYAAAANAAoAAQAKAAwAAAAMAA4AAQAJAAMAAAAMAA0AAQAJAAoAAAAMAAwAAQAJAAYAAAAMAAsAAQAJAA4AAAAMAAoAAQAKAAQAAAALAA4AAQAJAAsAAAALAA0AAQAJAAYAAAALAAwAAQAJAAoAAAALAAsAAQAJAAoAAAALAAoAAQAKAAAAAAAKAA4AAQAJAA8AAAAKAA0AAQAJAAYAAAAKAAwAAQAJAAIAAAAKAAsAAQAJAAIAAAAKAAoAAQAKAAAAAAAJAA4AAQAJAAMAAAAJAA0AAQAJAAYAAAAJAAwAAQAJAAIAAAAJAAsAAQAJAAoAAAAJAAoAAQAKAAwAAAAIAA4AAQAJAAcAAAAIAA0AAQAJAA4AAAAIAAwAAQAJAAIAAAAIAAsAAQAJAAoAAAAIAAoAAQAKAAAAAAAHAA4AAQAJAA8AAAAHAA0AAQAJAAoAAAAHAAwAAQAJAAYAAAAHAAsAAQAJAAoAAAAHAAoAAQAKAAgAAAAGAA4AAQAJAAsAAAAGAA0AAQAJAAYAAAAGAAwAAQAJAAYAAAAGAAsAAQAJAAoAAAAGAAoAAQAKAAgAAAAFAA4AAQAJAA8AAAAFAA0AAQAJAAoAAAAFAAwAAQAJAAoAAAAFAAsAAQAJAAYAAAAFAAoAAQAKAAQAAAAEAA4AAQAIAAcAAAAEAA0AAQAIAAUAAAAEAAwAAQAIAAEAAAAEAAsAAQAIAAUAAAAEAAoAAQAIAAQAAAA=")
|
||||||
tile_set = ExtResource("3_od2gb")
|
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_map_data = PackedByteArray("AAAIAAsAAwAIAAAAAAAJAAsAAwAFAAEAAAAJAAoAAwAIAAAAAAAKAAoAAwAKAAAAAAALAAoAAwAKAAAAAAAMAAoAAwAKAAAAAAANAAoAAwALAAAAAAANAAsAAwAGAAEAAAAOAAsAAwALAAAAAAAOAAwAAwALAAMAAAANAAwAAwAGAAIAAAANAA0AAwALAAMAAAAMAA0AAwAJAAMAAAALAA0AAwAJAAMAAAAKAA0AAwAJAAMAAAAJAA0AAwAJAAMAAAAIAA0AAwAIAAMAAAAIAAwAAwAIAAEAAAAMAAsAAwAJAAIAAAAMAAwAAwAJAAIAAAALAAwAAwAJAAIAAAAKAAwAAwAJAAIAAAAJAAwAAwAJAAIAAAAKAAsAAwAJAAIAAAALAAsAAwAJAAIAAAA=")
|
||||||
tile_set = ExtResource("4_od2gb")
|
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_map_data = PackedByteArray("AAADAA4AAAAKAAkAAAADAA0AAAAKAAkAAAADAAwAAAAKAAkAAAADAAsAAAAKAAkAAAADAAoAAAAKAAkAAAADAAkAAAAKAAkAAAAEAAkAAAAKAAkAAAAFAAkAAAAKAAkAAAAGAAkAAAAKAAkAAAAHAAkAAAAKAAkAAAAIAAkAAAAKAAkAAAAJAAkAAAAKAAkAAAAKAAkAAAAKAAkAAAALAAkAAAAKAAkAAAAMAAkAAAAKAAkAAAANAAkAAAAKAAkAAAAOAAkAAAAKAAkAAAAPAAkAAAAKAAkAAAAQAAkAAAAKAAkAAAAQAAoAAAAKAAkAAAAQAAsAAAAKAAkAAAAQAAwAAAAKAAkAAAAQAA0AAAAKAAkAAAAQAA4AAAAKAAkAAAADAA8AAAAKAAkAAAAEAA8AAAAKAAkAAAAFAA8AAAAKAAkAAAAGAA8AAAAKAAkAAAAHAA8AAAAKAAkAAAAIAA8AAAAKAAkAAAAJAA8AAAAKAAkAAAAKAA8AAAAKAAkAAAALAA8AAAAKAAkAAAAMAA8AAAAKAAkAAAANAA8AAAAKAAkAAAAOAA8AAAAKAAkAAAAPAA8AAAAKAAkAAAAQAA8AAAAKAAkAAAA=")
|
||||||
tile_set = ExtResource("4_od2gb")
|
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")
|
tile_set = ExtResource("3_od2gb")
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_vlksg")
|
script = ExtResource("1_vlksg")
|
||||||
initial_spawn = Vector2i(85, 225)
|
initial_spawn = Vector2i(85, 225)
|
||||||
|
enable_point_light = true
|
||||||
|
point_light_energy = 0.4
|
||||||
follow_player = false
|
follow_player = false
|
||||||
camera_position = Vector2i(160, 120)
|
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"
|
metadata/_custom_type_script = "uid://bamoq5wi0lkdy"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue