ESC compiler rewrite

Splits the former ESC_Runner and ESC_Level_Runner into multiple dedicated managers. 
Authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
Dennis Ploeger
2021-06-04 16:12:42 +02:00
committed by GitHub
parent f069ab2ffd
commit 746a724f5a
115 changed files with 4740 additions and 2584 deletions

View File

@@ -3,7 +3,7 @@ say player "It's a bottle."
stop
:pickup
inventory_add r9_bottle true
inventory_add r9_bottle
set_active r9_bottle_left false
set_active r9_bottle_middle false
set_active r9_bottle_right false

View File

@@ -4,7 +4,7 @@
# Set player look left
set_angle player 270
stop
> [!last_scene]
> [!eq ESC_LAST_SCENE room2]
teleport player player_start
stop

View File

@@ -1,13 +1,13 @@
:look
> [! dialog_advance]
say player ROOM1_look_wall_item_1:"I don't know what that stuff is."
say player "I don't know what that stuff is."
set_global dialog_advance 1
stop
> [eq dialog_advance 1]
say player ROOM1_look_wall_item_2:"I REALLY don't know what that stuff is."
say player "I REALLY don't know what that stuff is."
set_global dialog_advance 2
stop
> [eq dialog_advance 2]
say player ROOM1_look_wall_item_3:"No, SERIOUSLY, I have no idea what that is!"
say player ROOM1_look_wall_item_4:"Please stop asking me that!"
say player "No, SERIOUSLY, I have no idea what that is!"
say player "Please stop asking me that!"
stop

View File

@@ -1,13 +1,13 @@
:look
> [! dialog_popup_advance]
say player ROOM1_look_wall_item_1:"I don't know what that stuff is." dialog_box_inset
say player "I don't know what that stuff is." dialog_box_inset
set_global dialog_popup_advance 1
stop
> [eq dialog_popup_advance 1]
say player ROOM1_look_wall_item_2:"I REALLY don't know what that stuff is." dialog_box_inset
say player "I REALLY don't know what that stuff is." dialog_box_inset
set_global dialog_popup_advance 2
stop
> [eq dialog_popup_advance 2]
say player ROOM1_look_wall_item_3:"No, SERIOUSLY, I have no idea what that is!" dialog_box_inset
say player ROOM1_look_wall_item_4:"Please stop asking me that!" dialog_box_inset
say player "No, SERIOUSLY, I have no idea what that is!" dialog_box_inset
say player "Please stop asking me that!" dialog_box_inset
stop

View File

@@ -27,12 +27,12 @@ say player "I don't think he'd like that."
say player "I've got better things to do."
say worker "Eh! I'm not asking you anythin'!"
stop
!
- "I'm selling these fine leather jackets."
say player "I'm selling these fine leather jackets."
say worker "Go away, kid."
stop
!
####################################################################################################
:use r5_filled_sheet
jump give r5_filled_sheet

View File

@@ -143,9 +143,6 @@ esc_script = "res://game/rooms/room7/esc/left_exit.esc"
is_exit = true
tooltip_name = "Exit"
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 37.4521, 1801.64 )
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/l_exit"]
polygon = PoolVector2Array( 0.328762, 440.897, 1.85199, 119.926, 85.9517, 74.6212, 87.1409, 377.869 )
@@ -165,11 +162,6 @@ is_exit = true
interaction_direction = 1
tooltip_name = "Exit"
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 2038.8, 1756.78 ),
"r6_r_exit_closed": NodePath("r_door_closed/Position2D"),
"r6_r_exit_opened": NodePath("r_door_opened/Position2D")
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/r_exit"]
polygon = PoolVector2Array( 1982.34, 349.116, 1980.1, 46.0513, 2081.12, 86.4599, 2075, 394 )
@@ -185,9 +177,6 @@ position = Vector2( 358.099, -1195.07 )
script = ExtResource( 7 )
global_id = "r7_object_1"
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 818.94, 320.88 )
}
[node name="Line2D" type="Line2D" parent="Hotspots/object_1"]
position = Vector2( 0, 1345.52 )
@@ -205,9 +194,6 @@ __meta__ = {
}
global_id = "r7_object2"
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 1770.63, 1358.99 )
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/object2"]
polygon = PoolVector2Array( -112.101, 14.6226, -103.122, 288.503, 130.35, 286.258, 125.861, 16.8675 )
@@ -225,9 +211,6 @@ global_id = "r7_lower_stairs"
esc_script = "res://game/rooms/room7/esc/lower_stairs.esc"
is_exit = true
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 953.985, 1725.12 )
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/lower_stairs"]
polygon = PoolVector2Array( 831.375, 344.577, 829.788, 19.1602, 1058.37, 19.1602, 1052.02, 347.752 )
@@ -243,9 +226,6 @@ esc_script = "res://game/rooms/room7/esc/upper_stairs.esc"
is_exit = true
tooltip_name = "Stairs"
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 1375.17, 604.793 )
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/upper_stairs"]
position = Vector2( -1334.92, 936.565 )
@@ -258,9 +238,6 @@ position = Vector2( 27.5337, 131.767 )
position = Vector2( -167.43, 1463.23 )
global_id = "r7_button_push"
esc_script = "res://game/rooms/room7/esc/button_push.esc"
interact_positions = {
"default": Vector2( 175.618, 1763.84 )
}
[node name="Position2D" type="Position2D" parent="Hotspots/button_camera_push"]
position = Vector2( 343.048, 300.613 )
@@ -283,9 +260,6 @@ __meta__ = {
position = Vector2( 9.393, 1464.03 )
global_id = "r7_button_shift"
esc_script = "res://game/rooms/room7/esc/button_shift.esc"
interact_positions = {
"default": Vector2( 359.651, 1765.65 )
}
[node name="Position2D" type="Position2D" parent="Hotspots/button_camera_shift"]
position = Vector2( 350.258, 301.616 )
@@ -305,9 +279,6 @@ __meta__ = {
position = Vector2( 172.527, 1464.03 )
global_id = "r7_button_follow"
esc_script = "res://game/rooms/room7/esc/button_follow.esc"
interact_positions = {
"default": Vector2( 522.785, 1765.65 )
}
[node name="Position2D" type="Position2D" parent="Hotspots/button_camera_follow"]
position = Vector2( 350.258, 301.616 )
@@ -327,9 +298,6 @@ __meta__ = {
position = Vector2( 332.527, 1464.03 )
global_id = "r7_button_zoom"
esc_script = "res://game/rooms/room7/esc/button_zoom.esc"
interact_positions = {
"default": Vector2( 682.785, 1765.65 )
}
[node name="Position2D" type="Position2D" parent="Hotspots/button_camera_zoom"]
position = Vector2( 350.258, 301.616 )
@@ -349,9 +317,6 @@ __meta__ = {
position = Vector2( 910.482, 1464.03 )
global_id = "r7_button_set_pos"
esc_script = "res://game/rooms/room7/esc/button_set_pos.esc"
interact_positions = {
"default": Vector2( 682.785, 1765.65 )
}
[node name="Position2D" type="Position2D" parent="Hotspots/button_camera_set_pos"]
position = Vector2( 350.258, 301.616 )
@@ -376,9 +341,6 @@ is_trigger = true
is_interactive = false
player_orients_on_arrival = false
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 406, 0 )
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/trigger_left"]
polygon = PoolVector2Array( 724.356, 1944.36, 716.865, 1752.57, 800.77, 1752.57, 814.254, 1942.86 )
@@ -408,9 +370,6 @@ is_trigger = true
is_interactive = false
player_orients_on_arrival = false
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 592.68, 4.12805 )
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/trigger_right"]
position = Vector2( 372.68, 4.12805 )
@@ -438,9 +397,6 @@ script = ExtResource( 7 )
global_id = "r7_light_left"
is_interactive = false
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 1154.19, 1518.8 )
}
[node name="Polygon2D" type="Polygon2D" parent="Hotspots/light_left"]
color = Color( 0.0313726, 0.996078, 0, 1 )
@@ -460,9 +416,6 @@ script = ExtResource( 7 )
global_id = "r7_light_right"
is_interactive = false
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 1355.53, 1517.67 )
}
[node name="Polygon2D" type="Polygon2D" parent="Hotspots/light_right"]
color = Color( 1, 0, 0, 1 )

View File

@@ -50,8 +50,8 @@ func win():
escoria.main.current_scene.game.show_ui()
escoria.main.current_scene.show()
escoria.esc_runner.set_global("r8_m_door_open", "true")
escoria.esc_runner.set_state("r8_m_door", ["door_open"])
escoria.globals_manager.set_global("r8_m_door_open", true)
escoria.object_manager.get_object("r8_m_door").set_state("door_open")
func _on_quit_pressed():

View File

@@ -19,7 +19,7 @@ font = ExtResource( 2 )
margin_left = 20.0
margin_top = 20.0
margin_right = 1280.0
margin_bottom = 800.0
margin_bottom = 900.0
scroll_horizontal_enabled = false
__meta__ = {
"_edit_use_anchors_": false

View File

@@ -2,8 +2,23 @@ extends Control
func _ready():
escoria.esc_level_runner.set_sound_state(["bg_music",
"res://game/sfx/Game-Menu_Looping.mp3", true])
var event = ESCEvent.new(":music")
event.statements.append(
ESCCommand.new(
"set_sound_state bg_music res://game/sfx/Game-Menu_Looping.mp3 true"
)
)
escoria.event_manager.queue_event(event)
var rc = yield(event, "finished")
if rc != ESCExecution.RC_OK:
escoria.logger.report_errors(
"main_menu: Can't start menu music",
[
"set_sound_state returned %d" % rc
]
)
return false
func _on_continue_pressed():

View File

@@ -15,21 +15,21 @@ func _on_language_input(event : InputEvent, language : String):
if event.is_pressed():
TranslationServer.set_locale(language)
escoria.settings["text_lang"] = language
escoria.esc_runner.save_data.save_settings(escoria.settings, null)
escoria.save_data.save_settings(escoria.settings, null)
func _on_sound_volume_changed(value):
escoria.settings["sfx_volume"] = value
escoria.esc_runner.save_data.save_settings(escoria.settings, null)
escoria.save_data.save_settings(escoria.settings, null)
escoria._on_settings_loaded(escoria.settings)
func _on_music_volume_changed(value):
escoria.settings["music_volume"] = value
escoria.esc_runner.save_data.save_settings(escoria.settings, null)
escoria.save_data.save_settings(escoria.settings, null)
escoria._on_settings_loaded(escoria.settings)
func _on_general_volume_changed(value):
escoria.settings["master_volume"] = value
escoria.esc_runner.save_data.save_settings(escoria.settings, null)
escoria.save_data.save_settings(escoria.settings, null)
escoria._on_settings_loaded(escoria.settings)

View File

@@ -23,14 +23,13 @@ func _ready():
func _on_button_pressed():
var actual_command = ":debug\nchange_scene " + options_paths[selected_id] + "\n"
var errors = []
var events = escoria.esc_compiler.compile_str(actual_command, errors)
var script = escoria.esc_compiler.compile([
":debug",
"change_scene %s" % options_paths[selected_id]
])
if errors.empty():
#past_actions.text += str(events)
var _ret = escoria.esc_runner.run_event(events["debug"])
escoria.event_manager.queue_event(script.events['debug'])
func _on_option_item_selected(index):
selected_id = index

View File

@@ -49,27 +49,28 @@ func _input(event):
func left_click_on_bg(position : Vector2) -> void:
escoria.do("walk", ["player", position])
escoria.esc_runner.clear_current_action()
escoria.action_manager.clear_current_action()
verbs_menu.unselect_actions()
func right_click_on_bg(position : Vector2) -> void:
escoria.do("walk", ["player", position])
escoria.esc_runner.clear_current_action()
escoria.action_manager.clear_current_action()
verbs_menu.unselect_actions()
func left_double_click_on_bg(position : Vector2) -> void:
escoria.do("walk", ["player", position, true])
escoria.esc_runner.clear_current_action()
escoria.action_manager.clear_current_action()
verbs_menu.unselect_actions()
## ITEM FOCUS ##
func element_focused(element_id : String) -> void:
var target_obj = escoria.esc_runner.get_object(element_id)
var target_obj = escoria.object_manager.get_object(element_id).node
tooltip.set_target(target_obj.tooltip_name)
if escoria.esc_runner.current_action != "use" && escoria.esc_runner.current_tool == null:
if escoria.action_manager.current_action != "use" \
and escoria.action_manager.current_tool == null:
if target_obj is ESCItem:
verbs_menu.set_by_name(target_obj.default_action)
@@ -83,7 +84,7 @@ func left_click_on_item(item_global_id : String, event : InputEvent) -> void:
escoria.do("item_left_click", [item_global_id, event])
func right_click_on_item(item_global_id : String, event : InputEvent) -> void:
escoria.esc_runner.set_current_action(verbs_menu.selected_action)
escoria.action_manager.set_current_action(verbs_menu.selected_action)
escoria.do("item_right_click", [item_global_id, event])
func left_double_click_on_item(item_global_id : String, event : InputEvent) -> void:
@@ -93,26 +94,23 @@ func left_double_click_on_item(item_global_id : String, event : InputEvent) -> v
## INVENTORY ##
func left_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent) -> void:
escoria.do("item_left_click", [inventory_item_global_id, event])
# if escoria.esc_runner.current_action == "use":
# var item = escoria.esc_runner.get_object(inventory_item_global_id)
# if item.texture:
# verbs_menu.set_tool_texture(item.texture)
# elif item.inventory_item_scene_file.instance().texture_normal:
# verbs_menu.set_tool_texture(item.inventory_item_scene_file.instance().texture_normal)
func right_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent) -> void:
escoria.esc_runner.set_current_action(verbs_menu.selected_action)
escoria.action_manager.set_current_action(verbs_menu.selected_action)
escoria.do("item_right_click", [inventory_item_global_id, event])
func left_double_click_on_inventory_item(_inventory_item_global_id : String, _event : InputEvent) -> void:
pass
func inventory_item_focused(inventory_item_global_id : String) -> void:
var target_obj = escoria.esc_runner.get_object(inventory_item_global_id)
var target_obj = escoria.object_manager.get_object(
inventory_item_global_id
).node
tooltip.set_target(target_obj.tooltip_name)
if escoria.esc_runner.current_action != "use" && escoria.esc_runner.current_tool == null:
if escoria.action_manager.current_action != "use" \
and escoria.action_manager.current_tool == null:
if target_obj is ESCItem:
verbs_menu.set_by_name(target_obj.default_action_inventory)
@@ -148,7 +146,7 @@ func show_ui():
tooltip.show()
func _on_event_done(_event_name: String):
escoria.esc_runner.clear_current_action()
escoria.action_manager.clear_current_action()
verbs_menu.unselect_actions()

View File

@@ -14,7 +14,7 @@ func _ready():
but.toggle_mode = true
func _on_action_selected(action : String):
escoria.esc_runner.set_current_action(action)
escoria.action_manager.set_current_action(action)
for but in get_children():
but.set_pressed(but.get_name() == action)

View File

@@ -55,10 +55,11 @@ func left_double_click_on_bg(position : Vector2) -> void:
## ITEM/HOTSPOT FOCUS ##
func element_focused(element_id : String) -> void:
var target_obj = escoria.esc_runner.get_object(element_id)
var target_obj = escoria.object_manager.get_object(element_id).node
$ui/tooltip_layer/tooltip.set_target(target_obj.tooltip_name)
if escoria.esc_runner.current_action != "use" && escoria.esc_runner.current_tool == null:
if escoria.action_manager.current_action != "use" \
and escoria.action_manager.current_tool == null:
if target_obj is ESCItem:
$ui/verbs_layer/verbs_menu.set_by_name(target_obj.default_action)
@@ -81,8 +82,10 @@ func left_double_click_on_item(item_global_id : String, event : InputEvent) -> v
## INVENTORY ##
func left_click_on_inventory_item(inventory_item_global_id : String, event : InputEvent) -> void:
escoria.do("item_left_click", [inventory_item_global_id, event])
if escoria.esc_runner.current_action == "use":
var item = escoria.esc_runner.get_object(inventory_item_global_id)
if escoria.action_manager.current_action == "use":
var item = escoria.object_manager.get_object(
inventory_item_global_id
).node
if item.get_node("sprite").texture:
$ui/verbs_layer/verbs_menu.set_tool_texture(item.get_node("sprite").texture)
elif item.inventory_item_scene_file.instance().texture_normal:
@@ -96,7 +99,11 @@ func left_double_click_on_inventory_item(inventory_item_global_id : String, even
pass
func inventory_item_focused(inventory_item_global_id : String) -> void:
$ui/tooltip_layer/tooltip.set_target(escoria.esc_runner.get_object(inventory_item_global_id).tooltip_name)
$ui/tooltip_layer/tooltip.set_target(
escoria.object_manager.get_object(
inventory_item_global_id
).node.tooltip_name
)
func inventory_item_unfocused() -> void:
$ui/tooltip_layer/tooltip.set_target("")
@@ -119,5 +126,5 @@ func show_ui():
$ui/inventory_layer/inventory_ui.show()
func _on_event_done(event_name: String):
escoria.esc_runner.clear_current_action()
escoria.action_manager.clear_current_action()
$ui/verbs_layer/verbs_menu.clear_tool_texture()

View File

@@ -32,7 +32,7 @@ func iterate_actions_cursor(direction : int):
current_cursor_id = cursors.size() - 1
Input.set_custom_mouse_cursor(cursors[current_cursor_id].texture)
escoria.esc_runner.set_current_action(cursors[current_cursor_id].name)
escoria.action_manager.set_current_action(cursors[current_cursor_id].name)
if $mouse_position/tool.texture != null:
clear_tool_texture()
@@ -43,7 +43,7 @@ func set_by_name(name : String) -> void:
break
Input.set_custom_mouse_cursor(cursors[current_cursor_id].texture)
escoria.esc_runner.set_current_action(cursors[current_cursor_id].name)
escoria.action_manager.set_current_action(cursors[current_cursor_id].name)
func set_tool_texture(texture : Texture):
set_process(true)