feat: add esc_current_scene reserved global (#474)
Co-authored-by: Duncan Brown <duncan@bhs-consultants.com>
This commit is contained in:
@@ -66,13 +66,14 @@ func run(command_params: Array) -> int:
|
|||||||
# exit_scene event. Also room selector actions require the transition.
|
# exit_scene event. Also room selector actions require the transition.
|
||||||
if command_params[1] \
|
if command_params[1] \
|
||||||
and (
|
and (
|
||||||
not escoria.globals_manager.get_global("ESC_LAST_SCENE").empty()
|
not escoria.globals_manager.get_global( \
|
||||||
|
escoria.room_manager.GLOBAL_LAST_SCENE).empty()
|
||||||
or (
|
or (
|
||||||
escoria.event_manager.get_running_event("_front") != null \
|
escoria.event_manager.get_running_event("_front") != null \
|
||||||
and escoria.event_manager.get_running_event("_front").name \
|
and escoria.event_manager.get_running_event("_front").name \
|
||||||
in ["newgame", "exit_scene", "room_selector"]
|
in ["newgame", "exit_scene", "room_selector"]
|
||||||
and escoria.globals_manager.get_global(
|
and escoria.globals_manager.get_global(
|
||||||
"ESC_LAST_SCENE"
|
escoria.room_manager.GLOBAL_LAST_SCENE
|
||||||
).empty()
|
).empty()
|
||||||
)
|
)
|
||||||
):
|
):
|
||||||
@@ -91,16 +92,18 @@ func run(command_params: Array) -> int:
|
|||||||
escoria.game_scene.unpause_game()
|
escoria.game_scene.unpause_game()
|
||||||
|
|
||||||
# If FORCE_LAST_SCENE_NULL is true, force ESC_LAST_SCENE to empty
|
# If FORCE_LAST_SCENE_NULL is true, force ESC_LAST_SCENE to empty
|
||||||
if escoria.globals_manager.get_global("FORCE_LAST_SCENE_NULL"):
|
if escoria.globals_manager.get_global( \
|
||||||
|
escoria.room_manager.GLOBAL_FORCE_LAST_SCENE_NULL):
|
||||||
|
|
||||||
escoria.globals_manager.set_global(
|
escoria.globals_manager.set_global(
|
||||||
"ESC_LAST_SCENE",
|
escoria.room_manager.GLOBAL_LAST_SCENE,
|
||||||
null,
|
null,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
elif escoria.main.current_scene:
|
elif escoria.main.current_scene:
|
||||||
# If FORCE_LAST_SCENE_NULL is false, set ESC_LAST_SCENE = current roomid
|
# If FORCE_LAST_SCENE_NULL is false, set ESC_LAST_SCENE = current roomid
|
||||||
escoria.globals_manager.set_global(
|
escoria.globals_manager.set_global(
|
||||||
"ESC_LAST_SCENE",
|
escoria.room_manager.GLOBAL_LAST_SCENE,
|
||||||
escoria.main.current_scene.global_id,
|
escoria.main.current_scene.global_id,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
@@ -150,6 +153,14 @@ func run(command_params: Array) -> int:
|
|||||||
room_scene.game = escoria.game_scene
|
room_scene.game = escoria.game_scene
|
||||||
escoria.main.set_scene(room_scene)
|
escoria.main.set_scene(room_scene)
|
||||||
|
|
||||||
|
# We know the scene has been loaded. Make its global ID available for
|
||||||
|
# use by ESC script.
|
||||||
|
escoria.globals_manager.set_global(
|
||||||
|
escoria.room_manager.GLOBAL_CURRENT_SCENE,
|
||||||
|
room_scene.global_id,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
# Clear queued resources
|
# Clear queued resources
|
||||||
escoria.resource_cache.clear()
|
escoria.resource_cache.clear()
|
||||||
|
|
||||||
|
|||||||
@@ -5,30 +5,16 @@ extends Resource
|
|||||||
class_name ESCGlobalsManager
|
class_name ESCGlobalsManager
|
||||||
|
|
||||||
|
|
||||||
const GLOBAL_ANIMATION_RESOURCES = "ANIMATION_RESOURCES"
|
|
||||||
|
|
||||||
|
|
||||||
# Emitted when a global is changed
|
# Emitted when a global is changed
|
||||||
signal global_changed(global, old_value, new_value)
|
signal global_changed(global, old_value, new_value)
|
||||||
|
|
||||||
|
|
||||||
# A list of reserved globals which can not be overridden
|
|
||||||
const RESERVED_GLOBALS = [
|
|
||||||
"ESC_LAST_SCENE", # Contains the global_id of previous room
|
|
||||||
"FORCE_LAST_SCENE_NULL", # If true, ESC_LAST_SCENE is not considered for
|
|
||||||
# automatic transitions
|
|
||||||
"ANIMATION_RESOURCES"
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# The globals registry
|
# The globals registry
|
||||||
export(Dictionary) var _globals = {}
|
export(Dictionary) var _globals = {}
|
||||||
|
|
||||||
|
|
||||||
|
# Registry of globals that are to be reserved for internal use only.
|
||||||
func _init():
|
var _reserved_globals: Dictionary = {}
|
||||||
set_global("ESC_LAST_SCENE", "", true)
|
|
||||||
set_global("FORCE_LAST_SCENE_NULL", false, true)
|
|
||||||
|
|
||||||
|
|
||||||
# Check if a global was registered
|
# Check if a global was registered
|
||||||
@@ -41,6 +27,27 @@ func has(key: String) -> bool:
|
|||||||
return _globals.has(key)
|
return _globals.has(key)
|
||||||
|
|
||||||
|
|
||||||
|
# Registers a global as being reserved and initializes it.
|
||||||
|
#
|
||||||
|
# #### Parameters
|
||||||
|
#
|
||||||
|
# - key: The key of the global to register
|
||||||
|
# - value: The initial value (optional)
|
||||||
|
func register_reserved_global(key: String, value = null) -> void:
|
||||||
|
if key in _reserved_globals:
|
||||||
|
escoria.logger.report_errors(
|
||||||
|
"ESCGlobalsManager.register_reserved_global: Can not override reserved global",
|
||||||
|
[
|
||||||
|
"Global key %s is already registered as reserved" % key
|
||||||
|
]
|
||||||
|
)
|
||||||
|
_reserved_globals[key] = value
|
||||||
|
_globals[key] = value
|
||||||
|
|
||||||
|
if value != null:
|
||||||
|
emit_signal("global_changed", key, _globals[key], value)
|
||||||
|
|
||||||
|
|
||||||
# Get the current value of a global
|
# Get the current value of a global
|
||||||
#
|
#
|
||||||
# #### Parameters
|
# #### Parameters
|
||||||
@@ -77,7 +84,7 @@ func filter(pattern: String) -> Dictionary:
|
|||||||
# - key: The key of the global to modify
|
# - key: The key of the global to modify
|
||||||
# - value: The new value
|
# - value: The new value
|
||||||
func set_global(key: String, value, ignore_reserved: bool = false) -> void:
|
func set_global(key: String, value, ignore_reserved: bool = false) -> void:
|
||||||
if key in RESERVED_GLOBALS and not ignore_reserved:
|
if key in _reserved_globals and not ignore_reserved:
|
||||||
escoria.logger.report_errors(
|
escoria.logger.report_errors(
|
||||||
"ESCGlobalsManager.set_global: Can not override reserved global",
|
"ESCGlobalsManager.set_global: Can not override reserved global",
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
extends Object
|
||||||
|
class_name ESCRoomManager
|
||||||
|
|
||||||
|
|
||||||
|
# Reserved globals which can not be overridden; prefixed with "GLOBAL_"
|
||||||
|
#
|
||||||
|
# Contains the global_id of previous room
|
||||||
|
const GLOBAL_LAST_SCENE = "ESC_LAST_SCENE"
|
||||||
|
|
||||||
|
# If true, ESC_LAST_SCENE is not considered for automatic transitions
|
||||||
|
const GLOBAL_FORCE_LAST_SCENE_NULL = "FORCE_LAST_SCENE_NULL"
|
||||||
|
|
||||||
|
const GLOBAL_ANIMATION_RESOURCES = "ANIMATION_RESOURCES"
|
||||||
|
|
||||||
|
# Contains the global_id of the current room
|
||||||
|
const GLOBAL_CURRENT_SCENE = "ESC_CURRENT_SCENE"
|
||||||
|
|
||||||
|
# Dict of the reserved globals to register and their initial values.
|
||||||
|
const RESERVED_GLOBALS = {
|
||||||
|
GLOBAL_LAST_SCENE: "",
|
||||||
|
GLOBAL_FORCE_LAST_SCENE_NULL: false,
|
||||||
|
GLOBAL_ANIMATION_RESOURCES: [],
|
||||||
|
GLOBAL_CURRENT_SCENE: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Registers all reserved global flags for use.
|
||||||
|
func register_reserved_globals() -> void:
|
||||||
|
for key in RESERVED_GLOBALS:
|
||||||
|
escoria.globals_manager.register_reserved_global( \
|
||||||
|
key,
|
||||||
|
RESERVED_GLOBALS[key])
|
||||||
@@ -96,10 +96,10 @@ func _ready():
|
|||||||
true
|
true
|
||||||
)
|
)
|
||||||
if escoria.globals_manager.has(
|
if escoria.globals_manager.has(
|
||||||
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES
|
escoria.room_manager.GLOBAL_ANIMATION_RESOURCES
|
||||||
):
|
):
|
||||||
var animations = escoria.globals_manager.get_global(
|
var animations = escoria.globals_manager.get_global(
|
||||||
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES
|
escoria.room_manager.GLOBAL_ANIMATION_RESOURCES
|
||||||
)
|
)
|
||||||
|
|
||||||
if player.global_id in animations and \
|
if player.global_id in animations and \
|
||||||
@@ -168,7 +168,8 @@ func perform_script_events():
|
|||||||
if enabled_automatic_transitions \
|
if enabled_automatic_transitions \
|
||||||
or (
|
or (
|
||||||
not enabled_automatic_transitions \
|
not enabled_automatic_transitions \
|
||||||
and escoria.globals_manager.get_global("FORCE_LAST_SCENE_NULL")
|
and escoria.globals_manager.get_global( \
|
||||||
|
escoria.room_manager.GLOBAL_FORCE_LAST_SCENE_NULL)
|
||||||
):
|
):
|
||||||
var script_transition_in = escoria.esc_compiler.compile([
|
var script_transition_in = escoria.esc_compiler.compile([
|
||||||
":transition_in",
|
":transition_in",
|
||||||
@@ -195,18 +196,28 @@ func perform_script_events():
|
|||||||
|
|
||||||
# Now that :ready is finished, if FORCE_LAST_SCENE_NULL was true, reset it
|
# Now that :ready is finished, if FORCE_LAST_SCENE_NULL was true, reset it
|
||||||
# to false
|
# to false
|
||||||
if escoria.globals_manager.get_global("FORCE_LAST_SCENE_NULL"):
|
if escoria.globals_manager.get_global( \
|
||||||
|
escoria.room_manager.GLOBAL_FORCE_LAST_SCENE_NULL):
|
||||||
|
|
||||||
escoria.globals_manager.set_global(
|
escoria.globals_manager.set_global(
|
||||||
"FORCE_LAST_SCENE_NULL",
|
escoria.room_manager.GLOBAL_FORCE_LAST_SCENE_NULL,
|
||||||
false,
|
false,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
escoria.globals_manager.set_global(
|
escoria.globals_manager.set_global(
|
||||||
"ESC_LAST_SCENE",
|
escoria.room_manager.GLOBAL_LAST_SCENE,
|
||||||
escoria.main.current_scene.global_id \
|
escoria.main.current_scene.global_id \
|
||||||
if escoria.main.current_scene != null else "",
|
if escoria.main.current_scene != null else "",
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Make the room's global ID available for use in ESC script.
|
||||||
|
escoria.globals_manager.set_global(
|
||||||
|
escoria.room_manager.GLOBAL_CURRENT_SCENE,
|
||||||
|
escoria.main.current_scene.global_id \
|
||||||
|
if escoria.main.current_scene != null else "",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Runs the script event from the script attached, if any.
|
# Runs the script event from the script attached, if any.
|
||||||
|
|||||||
@@ -47,6 +47,9 @@ var event_manager: ESCEventManager
|
|||||||
# ESC globals registry instance
|
# ESC globals registry instance
|
||||||
var globals_manager: ESCGlobalsManager
|
var globals_manager: ESCGlobalsManager
|
||||||
|
|
||||||
|
# ESC room manager instance
|
||||||
|
var room_manager: ESCRoomManager
|
||||||
|
|
||||||
# ESC object manager instance
|
# ESC object manager instance
|
||||||
var object_manager: ESCObjectManager
|
var object_manager: ESCObjectManager
|
||||||
|
|
||||||
@@ -113,6 +116,7 @@ func _init():
|
|||||||
self.save_manager = ESCSaveManager.new()
|
self.save_manager = ESCSaveManager.new()
|
||||||
self.inputs_manager = ESCInputsManager.new()
|
self.inputs_manager = ESCInputsManager.new()
|
||||||
self.controller = ESCController.new()
|
self.controller = ESCController.new()
|
||||||
|
self.room_manager = ESCRoomManager.new()
|
||||||
|
|
||||||
settings = ESCSaveSettings.new()
|
settings = ESCSaveSettings.new()
|
||||||
|
|
||||||
@@ -130,6 +134,7 @@ func _init():
|
|||||||
func _ready():
|
func _ready():
|
||||||
settings = save_manager.load_settings()
|
settings = save_manager.load_settings()
|
||||||
apply_settings(settings)
|
apply_settings(settings)
|
||||||
|
room_manager.register_reserved_globals()
|
||||||
inputs_manager.register_core()
|
inputs_manager.register_core()
|
||||||
if ProjectSettings.get_setting("escoria/main/game_start_script").empty():
|
if ProjectSettings.get_setting("escoria/main/game_start_script").empty():
|
||||||
logger.report_errors("escoria.gd",
|
logger.report_errors("escoria.gd",
|
||||||
|
|||||||
@@ -54,7 +54,12 @@ func _on_button_pressed():
|
|||||||
# automatic transitions.
|
# automatic transitions.
|
||||||
# If FORCE_LAST_SCENE_NULL is True when change_scene starts:
|
# If FORCE_LAST_SCENE_NULL is True when change_scene starts:
|
||||||
# - ESC_LAST_SCENE is set to empty
|
# - ESC_LAST_SCENE is set to empty
|
||||||
escoria.globals_manager.set_global("FORCE_LAST_SCENE_NULL", true, true)
|
escoria.globals_manager.set_global(
|
||||||
|
escoria.room_manager.GLOBAL_FORCE_LAST_SCENE_NULL,
|
||||||
|
true,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
var script = escoria.esc_compiler.compile([
|
var script = escoria.esc_compiler.compile([
|
||||||
":room_selector",
|
":room_selector",
|
||||||
"change_scene %s" % _options_paths[_selected_id]
|
"change_scene %s" % _options_paths[_selected_id]
|
||||||
|
|||||||
3
game/rooms/room15/esc/right_exit.esc
Normal file
3
game/rooms/room15/esc/right_exit.esc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
:exit_scene
|
||||||
|
play_snd res://game/sfx/sounds/doorOpen_2.ogg
|
||||||
|
change_scene "res://game/rooms/room16/room16.tscn"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=11 format=2]
|
[gd_scene load_steps=10 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" type="Script" id=1]
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://game/rooms/room15/background.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://game/rooms/room15/background.tscn" type="PackedScene" id=2]
|
||||||
@@ -8,7 +8,6 @@
|
|||||||
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_room.gd" type="Script" id=6]
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_room.gd" type="Script" id=6]
|
||||||
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_item.gd" type="Script" id=7]
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_item.gd" type="Script" id=7]
|
||||||
[ext_resource path="res://game/items/escitems/button.tscn" type="PackedScene" id=9]
|
[ext_resource path="res://game/items/escitems/button.tscn" type="PackedScene" id=9]
|
||||||
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_exit.gd" type="Script" id=10]
|
|
||||||
|
|
||||||
[sub_resource type="NavigationPolygon" id=1]
|
[sub_resource type="NavigationPolygon" id=1]
|
||||||
vertices = PoolVector2Array( 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, 864.626, 613.518, 1143.08, 613.35, -9.16094, 803.802, 386.666, 618.012, 129.634, 615.792, 84.5821, 654.06, -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698 )
|
vertices = PoolVector2Array( 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, 864.626, 613.518, 1143.08, 613.35, -9.16094, 803.802, 386.666, 618.012, 129.634, 615.792, 84.5821, 654.06, -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698 )
|
||||||
@@ -81,9 +80,15 @@ script = ExtResource( 5 )
|
|||||||
global_id = "r12_l_exit"
|
global_id = "r12_l_exit"
|
||||||
|
|
||||||
[node name="r_door" type="Area2D" parent="Hotspots"]
|
[node name="r_door" type="Area2D" parent="Hotspots"]
|
||||||
script = ExtResource( 10 )
|
pause_mode = 1
|
||||||
|
script = ExtResource( 7 )
|
||||||
|
global_id = "r15_r_exit"
|
||||||
|
esc_script = "res://game/rooms/room15/esc/right_exit.esc"
|
||||||
|
is_exit = true
|
||||||
tooltip_name = "Right exit"
|
tooltip_name = "Right exit"
|
||||||
switch_sound = "res://game/sfx/sounds/doorOpen_2.ogg"
|
default_action = "walk"
|
||||||
|
dialog_color = Color( 1, 1, 1, 1 )
|
||||||
|
animations = null
|
||||||
|
|
||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/r_door"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/r_door"]
|
||||||
position = Vector2( 0, -1 )
|
position = Vector2( 0, -1 )
|
||||||
|
|||||||
30
game/rooms/room16/background.tscn
Normal file
30
game/rooms/room16/background.tscn
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_background.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="background" type="TextureRect"]
|
||||||
|
margin_right = 1289.0
|
||||||
|
margin_bottom = 555.0
|
||||||
|
mouse_filter = 2
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="l_platform" type="Line2D" parent="."]
|
||||||
|
position = Vector2( 2, -266 )
|
||||||
|
points = PoolVector2Array( -2.96298, 712.01, 129.973, 614.429, 1167.5, 612.894, 1274.59, 669.705, 1273.25, 812.694, 2.36697, 811.043, 2.36697, 713.389 )
|
||||||
|
|
||||||
|
[node name="l_door" type="Line2D" parent="."]
|
||||||
|
position = Vector2( 0, -266 )
|
||||||
|
points = PoolVector2Array( 6.61201, 704.409, 6.61203, 389.558, 87.755, 339.775, 87.5463, 649.784 )
|
||||||
|
__meta__ = {
|
||||||
|
"_editor_description_": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="r_door" type="Line2D" parent="."]
|
||||||
|
position = Vector2( 0, -267.828 )
|
||||||
|
points = PoolVector2Array( 1175.07, 620.086, 1171.24, 311.267, 1274.8, 356.87, 1278.31, 672.412, 1188.64, 624.843 )
|
||||||
|
__meta__ = {
|
||||||
|
"_editor_description_": ""
|
||||||
|
}
|
||||||
11
game/rooms/room16/esc/current_scene_button.esc
Normal file
11
game/rooms/room16/esc/current_scene_button.esc
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
:use
|
||||||
|
|
||||||
|
> [eq ESC_CURRENT_SCENE room16]
|
||||||
|
say player "This sure looks like room 16."
|
||||||
|
|
||||||
|
> [eq ESC_CURRENT_SCENE ESC_LAST_SCENE]
|
||||||
|
say player "I'll never say this."
|
||||||
|
|
||||||
|
> [eq ESC_CURRENT_SCENE room1]
|
||||||
|
say player "I'll never say this, either."
|
||||||
|
|
||||||
3
game/rooms/room16/esc/left_exit.esc
Normal file
3
game/rooms/room16/esc/left_exit.esc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
:exit_scene
|
||||||
|
play_snd res://game/sfx/sounds/doorOpen_2.ogg
|
||||||
|
change_scene "res://game/rooms/room15/room15.tscn"
|
||||||
8
game/rooms/room16/esc/room16.esc
Normal file
8
game/rooms/room16/esc/room16.esc
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
:setup
|
||||||
|
|
||||||
|
> [eq ESC_LAST_SCENE room15]
|
||||||
|
teleport player r16_l_exit
|
||||||
|
# Set player look right
|
||||||
|
set_angle player 90
|
||||||
|
stop
|
||||||
|
|
||||||
102
game/rooms/room16/room16.tscn
Normal file
102
game/rooms/room16/room16.tscn
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
[gd_scene load_steps=11 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://game/rooms/room14/background.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://game/fonts/caslonantique.tres" type="DynamicFont" id=3]
|
||||||
|
[ext_resource path="res://game/characters/mark/mark.tscn" type="PackedScene" id=4]
|
||||||
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_location.gd" type="Script" id=5]
|
||||||
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_room.gd" type="Script" id=6]
|
||||||
|
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_item.gd" type="Script" id=7]
|
||||||
|
[ext_resource path="res://game/rooms/room14/r_door.tscn" type="PackedScene" id=8]
|
||||||
|
[ext_resource path="res://game/items/escitems/button.tscn" type="PackedScene" id=9]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationPolygon" id=1]
|
||||||
|
vertices = PoolVector2Array( 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, 864.626, 613.518, 1143.08, 613.35, -9.16094, 803.802, 386.666, 618.012, 129.634, 615.792, 84.5821, 654.06, -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698 )
|
||||||
|
polygons = [ PoolIntArray( 0, 1, 2, 3 ), PoolIntArray( 4, 5, 0, 3, 6, 7 ), PoolIntArray( 8, 7, 6, 9 ), PoolIntArray( 9, 6, 10, 11, 12 ) ]
|
||||||
|
outlines = [ PoolVector2Array( -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698, 84.5821, 654.06, 129.634, 615.792, 386.666, 618.012, 864.626, 613.518, 1143.08, 613.35, 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, -9.16094, 803.802 ) ]
|
||||||
|
|
||||||
|
[node name="room16" type="Node2D"]
|
||||||
|
script = ExtResource( 6 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_vertical_guides_": [ ]
|
||||||
|
}
|
||||||
|
global_id = "room16"
|
||||||
|
esc_script = "res://game/rooms/room16/esc/room16.esc"
|
||||||
|
player_scene = ExtResource( 4 )
|
||||||
|
camera_limits = [ Rect2( 0, 0, 1289, 555 ) ]
|
||||||
|
|
||||||
|
[node name="background" parent="." instance=ExtResource( 2 )]
|
||||||
|
|
||||||
|
[node name="room_label" type="Label" parent="background"]
|
||||||
|
margin_right = 92.0
|
||||||
|
margin_bottom = 21.0
|
||||||
|
custom_fonts/font = ExtResource( 3 )
|
||||||
|
text = "ROOM 16"
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="walkable_area" type="Navigation2D" parent="."]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="platform" type="NavigationPolygonInstance" parent="walkable_area"]
|
||||||
|
position = Vector2( 6.73163, -264.779 )
|
||||||
|
navpoly = SubResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_editor_description_": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Hotspots" type="Node" parent="."]
|
||||||
|
|
||||||
|
[node name="l_door" type="Area2D" parent="Hotspots"]
|
||||||
|
pause_mode = 1
|
||||||
|
script = ExtResource( 7 )
|
||||||
|
global_id = "r16_l_exit"
|
||||||
|
esc_script = "res://game/rooms/room16/esc/left_exit.esc"
|
||||||
|
is_exit = true
|
||||||
|
tooltip_name = "Left exit"
|
||||||
|
default_action = "walk"
|
||||||
|
dialog_color = Color( 1, 1, 1, 1 )
|
||||||
|
animations = null
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/l_door"]
|
||||||
|
polygon = PoolVector2Array( 0.328762, 440.897, 1.85199, 119.926, 85.9517, 74.6212, 87.1409, 377.869 )
|
||||||
|
|
||||||
|
[node name="Position2D" type="Position2D" parent="Hotspots/l_door"]
|
||||||
|
position = Vector2( 37.4521, 392.045 )
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
global_id = "r12_l_exit"
|
||||||
|
|
||||||
|
[node name="r_door" parent="Hotspots" instance=ExtResource( 8 )]
|
||||||
|
global_id = ""
|
||||||
|
esc_script = ""
|
||||||
|
|
||||||
|
[node name="ESCLocation" type="Position2D" parent="Hotspots/r_door"]
|
||||||
|
position = Vector2( 1231.78, 360.624 )
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
|
||||||
|
[node name="start" type="Position2D" parent="Hotspots"]
|
||||||
|
position = Vector2( 243.677, 455.569 )
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
global_id = "start"
|
||||||
|
is_start_location = true
|
||||||
|
interaction_direction = 180
|
||||||
|
|
||||||
|
[node name="current_scene_button" parent="." instance=ExtResource( 9 )]
|
||||||
|
position = Vector2( 30, 0 )
|
||||||
|
global_id = "current_scene_button"
|
||||||
|
esc_script = "res://game/rooms/room16/esc/current_scene_button.esc"
|
||||||
|
|
||||||
|
[node name="Position2D" type="Position2D" parent="current_scene_button"]
|
||||||
|
position = Vector2( 336, 384 )
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="current_scene_button"]
|
||||||
|
margin_left = 294.887
|
||||||
|
margin_top = 199.561
|
||||||
|
margin_right = 398.887
|
||||||
|
margin_bottom = 213.561
|
||||||
|
text = "Is this room 16?"
|
||||||
|
align = 1
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
@@ -309,6 +309,11 @@ _global_script_classes=[ {
|
|||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/escoria-core/game/core-scripts/esc_room.gd"
|
"path": "res://addons/escoria-core/game/core-scripts/esc_room.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Object",
|
||||||
|
"class": "ESCRoomManager",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://addons/escoria-core/game/core-scripts/esc/esc_room_manager.gd"
|
||||||
|
}, {
|
||||||
"base": "Resource",
|
"base": "Resource",
|
||||||
"class": "ESCSaveGame",
|
"class": "ESCSaveGame",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
@@ -615,6 +620,7 @@ _global_script_class_icons={
|
|||||||
"ESCPlayer": "res://addons/escoria-core/design/esc_player.svg",
|
"ESCPlayer": "res://addons/escoria-core/design/esc_player.svg",
|
||||||
"ESCResourceCache": "",
|
"ESCResourceCache": "",
|
||||||
"ESCRoom": "res://addons/escoria-core/design/esc_room.svg",
|
"ESCRoom": "res://addons/escoria-core/design/esc_room.svg",
|
||||||
|
"ESCRoomManager": "",
|
||||||
"ESCSaveGame": "",
|
"ESCSaveGame": "",
|
||||||
"ESCSaveManager": "",
|
"ESCSaveManager": "",
|
||||||
"ESCSaveSettings": "",
|
"ESCSaveSettings": "",
|
||||||
|
|||||||
Reference in New Issue
Block a user