Compare commits

..

51 Commits

Author SHA1 Message Date
89440a0180 WIP 2025-11-23 18:03:13 +01:00
2252a80bb9 feat(i18n): EN fixes.
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m44s
2025-11-12 01:19:53 +01:00
29c9cd4828 feat(scoreboard): Label with note. 2025-11-12 01:19:23 +01:00
6d426fe4fb feat(save): new savegames for post-intro and con ajo 2025-11-12 00:30:53 +01:00
e5259f500f feat(build): Fix patches conflict. Merged audio PR with conflicting ones
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m45s
2025-11-12 00:05:32 +01:00
d99320fcc8 fix(web): submit score params in path, hopefully fixes #270
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m44s
2025-11-11 23:16:33 +01:00
44d838fedf feat(i18n): French fixes 2025-11-11 23:12:24 +01:00
8e0f13a10c feat(build): Update patches & rejected files list. 2025-11-11 22:12:03 +01:00
8aacb4b615 fix(web): refresh page if service worker was installed, fixes #267 2025-11-11 20:53:47 +01:00
990acac845 chore: cleanup 2025-11-11 20:07:44 +01:00
af6ae3e137 uids 2025-11-11 20:00:19 +01:00
72f2d1b091 i18n 2025-11-11 15:08:55 +01:00
7f380e7ccd feat(i18n): Credits fix EN. Closes #157
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m45s
2025-11-11 01:08:53 +01:00
cfe374f350 feat(i18n): Credits #157 2025-11-11 01:07:56 +01:00
93f2651889 feat(i18n): Missing translations #157 2025-11-11 00:57:22 +01:00
acc55fb462 feat(build): exe artifact 2025-11-10 02:13:19 +01:00
33b9af05d9 feat(build): Windows export.
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m41s
2025-11-10 01:38:11 +01:00
12c4167c23 feat(i18n): Generate translations #157 2025-11-09 21:57:49 +01:00
d01336a938 feat(i18n): Remove english #157 2025-11-09 20:55:02 +01:00
cb5acb0a0d feat(rtmi): Remove inventory shadow
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m29s
2025-11-09 18:48:12 +01:00
34e5cdb80f feat(scoreboard): Changed submit score url. #266 2025-11-09 18:43:23 +01:00
8337f3d150 fix(video): Acortar intro. Closes #265 2025-11-09 18:10:14 +01:00
94c0363156 feat(i18n): basque corrections by Naiara 2025-11-09 17:59:12 +01:00
c9fee9ad87 feat(achievements): i18n #253 2025-11-09 17:27:20 +01:00
279fd91aa1 feat(achievements): Remove timer from pause menu. #253 2025-11-09 17:20:11 +01:00
481c7993c4 Web thread export. #254
All checks were successful
Gymkhana exports / All exports (push) Successful in 2m34s
2025-11-09 16:10:41 +01:00
080ea1dfe1 fix(sounds): Bajar fregaderos. Closes #256 2025-11-09 15:50:00 +01:00
01835d0a4e feat(achievements) Summary menu. #253 2025-11-09 15:34:00 +01:00
981df00da2 fix(build): Key env var #263 2025-11-09 15:34:00 +01:00
ed20451c36 feat(credits): Fade all elements. 2025-11-09 15:34:00 +01:00
1c74528184 feat(achievements): new achievement hambrientas, closes #261 2025-11-09 15:33:24 +01:00
2f1971c52a feat(i18n): some eu translations 2025-11-09 15:22:27 +01:00
e5949dc0cf fix(story): horn was not visible in intro, fixes #255 2025-11-09 15:05:25 +01:00
67228746b5 fix(speech): fix cut audio, fixes #259 2025-11-09 15:01:45 +01:00
9eec24157d fix(speech): fix missing audio, fixes #260 2025-11-09 14:50:12 +01:00
021c862f7b feat(romer): only smart people will get romero, closes #257 2025-11-09 14:37:15 +01:00
3fa3f48476 fix(rtmi): Layer order.
All checks were successful
Gymkhana exports / All exports (push) Successful in 1m50s
2025-11-08 20:48:12 +01:00
d03c46fb33 fix(rtmi-ui): no quit button on web, fixes #251
All checks were successful
Gymkhana exports / All exports (push) Successful in 1m51s
2025-11-08 20:31:16 +01:00
3d0b68a280 fix(rtmi): Hide dialog on pause. #252 2025-11-08 20:24:33 +01:00
bd93904bcb fix(rtmi): Always show buttons. #252 2025-11-08 20:06:48 +01:00
3d9445a40a fix(rtmi): Always show buttons. #252 2025-11-08 20:06:12 +01:00
0b63c25df1 fix(rtmi-ui): ugly hack for menu/fullscreen/music buttons 2025-11-08 20:04:44 +01:00
173dc4e01c fix(i18n): tilde 2025-11-08 19:12:40 +01:00
a889dca375 feat(i18n): credits placeholders
All checks were successful
Gymkhana exports / All exports (push) Successful in 1m52s
2025-11-08 18:41:01 +01:00
39d14cb7de feat(rtmi): Unify icon width, tweak exit fullscreen. 2025-11-08 18:40:08 +01:00
1266cc3355 feat(publish): Itch.io logo 2025-11-08 18:40:08 +01:00
39bf0d68e0 feat(dev): Achievement unlocker. 2025-11-08 18:40:08 +01:00
9406706a83 fix(rtmi): Load game dont hide buttons. 2025-11-08 18:40:08 +01:00
179883ef30 feat(story): perfect score 2025-11-08 18:27:42 +01:00
31f04e5881 feat(story): reworked palestina dialog 2025-11-08 18:08:52 +01:00
b5365d3644 featu(build): Fix api path
All checks were successful
Gymkhana exports / All exports (push) Successful in 1m52s
2025-11-08 17:33:16 +01:00
526 changed files with 3132 additions and 3725 deletions

3
.cursorignore Normal file
View File

@@ -0,0 +1,3 @@
*.import
*.uid
*.translation

View File

@@ -9,7 +9,7 @@ env:
GODOT_VERSION: 4.5
EXPORT_NAME: LasGymkhanikasDeUli
PROJECT_PATH: .
APPWRITE_API_KEY: ${{ secrets.APPWRITE_API_KEY }}
APPWRITE_API_KEY: "${{ secrets.APPWRITE_API_KEY }}"
jobs:
all-exports:
@@ -36,3 +36,4 @@ jobs:
build/**/*.appimage
build/**/*.tar.gz
build/**/*.zip
build/**/*.exe

View File

@@ -1,9 +0,0 @@
## Development
- Oier
- Eneko
## Collaborations
- Pico
- Miette
- Niko
- Urtzi

File diff suppressed because it is too large Load Diff

View File

@@ -1,83 +0,0 @@
Subject: [PATCH] feat(deploy): Itch.io publishing. #203
---
Index: .gitea/workflows/push-release.yml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/.gitea/workflows/push-release.yml b/.gitea/workflows/push-release.yml
--- a/.gitea/workflows/push-release.yml (revision 1c1f32e2aa839ccf963326d88f5f21bb3085ba1d)
+++ b/.gitea/workflows/push-release.yml (revision 8d2907c071001995b91dc6234ec511729fd49137)
@@ -34,16 +34,6 @@
files: |
build/**/*.appimage
build/**/*.tar.gz
- - name: Publish AMD to itch.io
- uses: yeslayla/butler-publish-itchio-action@master
- env:
- BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }}
- CHANNEL: linux
- PACKAGE: build/debug/amd64/*.appimage
- - name: Publish ARM to itch.io
- uses: yeslayla/butler-publish-itchio-action@master
- env:
- BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }}
- CHANNEL: linux
- PACKAGE: build/debug/arm64/*.appimage
- VERSION_FILE: build/version.txt
\ No newline at end of file
+ - name: Publishing
+ run: |
+ ./publish.sh
\ No newline at end of file
Index: bash_colors.sh
===================================================================
diff --git a/bash_colors.sh b/bash_colors.sh
new file mode 100644
--- /dev/null (revision 8d2907c071001995b91dc6234ec511729fd49137)
+++ b/bash_colors.sh (revision 8d2907c071001995b91dc6234ec511729fd49137)
@@ -0,0 +1,6 @@
+NOCOLOR='\033[0m' # No Color
+BLUE='\e[34m' # BrightBlue
+BOLD_BLUE='\033[1;94m' # BrightBlue
+GREEN='\e[49;32m' # Green
+ORANGE='\033[1;33m'
+RED='\033[1;31m'
\ No newline at end of file
Index: publish.sh
===================================================================
diff --git a/publish.sh b/publish.sh
new file mode 100644
--- /dev/null (revision 8d2907c071001995b91dc6234ec511729fd49137)
+++ b/publish.sh (revision 8d2907c071001995b91dc6234ec511729fd49137)
@@ -0,0 +1,29 @@
+#!/bin/bash
+source bash_colors.sh
+
+ITCHIO_ENABLED=true
+
+VERSION=`cat build/version.txt`
+echo -e "Publishing ${GREEN}v${VERSION}${NOCOLOR}"
+
+# Publish to Itch.io
+if [ "$ITCHIO_ENABLED" = true ] ; then
+ echo -e "${BLUE}Publishing to Itch.io${NOCOLOR}"
+ if ! command -v butler >/dev/null 2>&1
+ then
+ echo -e "${RED}butler could not be found. Aborting!${NOCOLOR}"
+ exit 1
+ fi
+
+
+
+ echo -e "${ORANGE}Publishing AMD64${NOCOLOR}"
+ butler push build/debug/amd64/LasGymkhanikasDeUli--debug.x86_64.appimage uliwood/las-gymkhanikas-de-uli-turno-cocina:linux-amd64 --userversion $VERSION
+
+ echo -e "${ORANGE}Publishing ARM64${NOCOLOR}"
+ butler push build/debug/arm64/LasGymkhanikasDeUli--debug.arm_64.appimage uliwood/las-gymkhanikas-de-uli-turno-cocina:linux-arm64 --userversion $VERSION
+
+
+ else
+ echo -e "${ORANGE}Itch.io not enabled.{NOCOLOR}"
+fi
\ No newline at end of file

View File

@@ -40,6 +40,11 @@ func initialize(dialog_manager: ESCDialogManager, character: String, text: Strin
func handle_input(_event):
if _event is InputEventMouseButton and _event.pressed:
# MODIFIED FOR RTMI-UI: HACK FOR MENU/FULLSCREEN/MUSIC BUTTONS
var position: Vector2 = _event.global_position
if position.x > 1080 and position.y < 70:
return
# END MODIFIED FOR RTMI-UI
if escoria.inputs_manager.input_mode != \
escoria.inputs_manager.INPUT_NONE and \
_dialog_manager != null:

View File

@@ -68,6 +68,9 @@ var _progress_tween: Tween
# Build up the UI
func _ready():
escoria.paused.connect(_on_paused)
escoria.resumed.connect(_on_resumed)
_click_to_continue = escoria.settings_manager.get_custom_setting(
RTMISimpleDialogSettings.CLEAR_TEXT_BY_CLICK_ONLY_KEY,
RTMISimpleDialogSettings.CLEAR_TEXT_BY_CLICK_ONLY_DEFAULT_VALUE
@@ -304,12 +307,14 @@ func _on_dialog_finished():
# Handler managing pause notification from Escoria
func _on_paused():
_talking_timer.set_paused(true)
hide()
# Handler managing resume notification from Escoria
func _on_resumed():
_talking_timer.set_paused(false)
show()
func _stop_character_talking():
# Make the speaking item animation stop talking, if it is still alive

View File

@@ -0,0 +1,11 @@
class_name RTMIAchievementSummaryMenu
extends PanelContainer
func ready() -> void:
%SummaryPanel.hide_position()
func _on_rtmi_menu_button_pressed() -> void:
hide()
func refresh() -> void:
%SummaryPanel.refresh()

View File

@@ -0,0 +1 @@
uid://bp676ele1a2dk

View File

@@ -0,0 +1,54 @@
[gd_scene load_steps=5 format=3 uid="uid://bcu6ik8qq0dl6"]
[ext_resource type="PackedScene" uid="uid://cbq03pmsdusib" path="res://addons/escoria-ui-return-monkey-island/achievements/summary/rtmi_achievement_summary_panel.tscn" id="1_iv6go"]
[ext_resource type="Script" uid="uid://bp676ele1a2dk" path="res://addons/escoria-ui-return-monkey-island/achievements/menu/rtmi_achievements_menu.gd" id="1_krbpm"]
[ext_resource type="Script" uid="uid://elqkwjm0r5c7" path="res://addons/escoria-ui-return-monkey-island/menus/rtmi_menu_button.gd" id="2_ntqhu"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_krbpm"]
bg_color = Color(0.21960784, 0.21960784, 0.21960784, 1)
[node name="AchievementsMenu" type="PanelContainer"]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_krbpm")
script = ExtResource("1_krbpm")
[node name="CenterContainer" type="CenterContainer" parent="."]
layout_mode = 2
[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 20
theme_override_constants/margin_bottom = 20
[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
[node name="SummaryPanel" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer" instance=ExtResource("1_iv6go")]
unique_name_in_owner = true
layout_mode = 2
[node name="RichTextLabel" type="RichTextLabel" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
theme_override_font_sizes/normal_font_size = 16
text = "ACHIEVEMENTS_MENU_NOTE"
vertical_alignment = 1
[node name="Back" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "OPTIONS_BACK"
script = ExtResource("2_ntqhu")
metadata/_custom_type_script = "uid://elqkwjm0r5c7"
[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Back" to="." method="_on_rtmi_menu_button_pressed"]

View File

@@ -46,6 +46,8 @@ func get_unlocked_achievements_total() -> int:
unlocked_achievements_total += 1
return unlocked_achievements_total
func is_perfect_score() -> bool:
return get_achievements_total() == get_unlocked_achievements_total()
func reset_achievements() -> void:
_achievement_tracker.clear()
@@ -65,7 +67,6 @@ func unlock_achievement(achievement_id) -> void:
_achievement_tracker.set(achievement_id, true)
unlocked.emit(achievement_id)
func is_unlocked(achievement_id: String) -> bool:
if not has(achievement_id):
escoria.logger.error(self, "Achievement '%s' not found.")

View File

@@ -21,7 +21,9 @@ func update() -> void:
var achievements = gymkhana.achievement_manager.get_achievements()
achievements.sort()
for key in achievements:
%Container.add_child(UiEscoriaVariableBuilder.create(key, achievements[key]))
var variable: UIEscoriaVariable = UiEscoriaVariableBuilder.create(key, achievements[key])
variable.double_clicked.connect(_on_double_clicked)
%Container.add_child(variable)
func clear() -> void:
@@ -32,3 +34,6 @@ func clear() -> void:
func _on_time_updated(elapsed_time_in_seconds: int) -> void:
%TimeTrackerLabel.text = str(elapsed_time_in_seconds)
func _on_double_clicked(achievement_id) -> void:
gymkhana.achievement_manager.unlock_achievement(achievement_id)

View File

@@ -73,22 +73,12 @@ func get_scores(collection: String) -> Array[RTMIScoreRow]:
func submit_score(collection: String, name: String, time: int) -> bool:
var hash = ("%s_%s_%s_%s" % [collection, name, time, score_submit_key]).sha256_text()
var request_data: String = (
JSON
. new()
. stringify(
{
"collectionId": collection,
"score":
{
"name": name,
"time": time,
},
"hash": hash
}
)
)
var response_data = await _score_http_request(http_requests[SUBMIT], score_submit_url, HTTPClient.METHOD_POST, request_data)
var url = "%s/%s/%s/%s/%s" % [score_submit_url, collection, name.uri_encode(), time, hash]
var response_data = await _score_http_request(http_requests[SUBMIT], url)
if response_data == null:
push_error("Error submitting score: response data is null")
return false
if not response_data.success:
push_error("Error submitting score: error=%s" % response_data.errorMsg)
@@ -134,7 +124,7 @@ func _score_http_request(
return response_data
func format_time(time: int) -> String:
static func format_time(time: int) -> String:
var hours = time / 3600
var minutes = (time % 3600) / 60
var seconds = time % 60

View File

@@ -41,6 +41,11 @@ unique_name_in_owner = true
layout_mode = 2
collection = "perfect"
[node name="Label" type="Label" parent="CenterContainer/VBoxContainer"]
layout_mode = 2
text = "SCOREBOARD_NOTE"
horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
layout_mode = 2
alignment = 1

View File

@@ -6,88 +6,42 @@ signal score_submitted()
const CHARACTER_LIMIT: int = 32
const ALLOWED_CHARACTERS = "[à-ÿÀ-ŸA-Za-z0-9 _-]"
var perfect = false
var collection: String
@onready var input_name: LineEdit = %InputName
@onready var total_time: Label = %TotalTime
@onready var pos: Label = %Position
@onready var achievement_count: Label = %AchievementCount
@onready var unlocked_achievements_container: VBoxContainer = %UnlockedAchievementsContainer
@onready var submit_button: RTMIMenuButton = %SubmitButton
@onready var spinner: Spinner = %Spinner
@onready var summary_panel: RTMIAchievementSummaryPanel = %SummaryPanel
func _ready() -> void:
_fill()
input_name.text_changed.connect(_on_input_name_changed)
input_name.grab_focus()
func show():
super.show()
summary_panel.show_position()
check_perfect()
check_score()
func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_enter"):
_on_submit_button_up()
func _fill():
_clear()
total_time.text = gymkhana.score_manager.format_time(gymkhana.achievement_manager.played_time)
var achievements = gymkhana.achievement_manager.get_achievements()
var unlocked = 0
for achievement_key in achievements:
var label = Label.new()
label.text = tr(gymkhana.achievement_manager.generate_achievement_literal(
achievement_key, "title"
))
label.add_theme_color_override("font_color", Color.DIM_GRAY)
if achievements.get(achievement_key):
label.add_theme_color_override("font_color", Color.GREEN)
unlocked += 1
unlocked_achievements_container.add_child(label)
achievement_count.text = "%s / %s" % [unlocked, achievements.size()]
if unlocked == achievements.size():
submit_button.text = tr("SUBMIT_PERFECT_SCORE")
perfect = true
collection = gymkhana.score_manager.PERFECT if perfect else gymkhana.score_manager.FASTEST
check_score()
func check_score():
if perfect:
func check_perfect():
if gymkhana.achievement_manager.is_perfect_score():
escoria.game_scene.launch_confetti()
escoria.globals_manager.set_global("turno_cocina_perfect_score", true)
submit_button.text = tr("SUBMIT_PERFECT_SCORE")
func check_score():
var played_time = floor(randf() * 1000)
collection = gymkhana.score_manager.PERFECT if gymkhana.achievement_manager.is_perfect_score() else gymkhana.score_manager.FASTEST
var pos_int = await gymkhana.score_manager.calculate_score_position(collection, gymkhana.achievement_manager.played_time)
pos.text = "#" + str(pos_int + 1)
summary_panel.score_position = pos_int + 1
func _clear() -> void:
for child in unlocked_achievements_container.get_children():
unlocked_achievements_container.remove_child(child)
child.queue_free()
func _get_all_achievements() -> Array:
var unlocked_achievements: Array = []
var all_achievements = gymkhana.achievement_manager.get_achievements()
for achievement in all_achievements:
if all_achievements.get(achievement) == true:
unlocked_achievements.append(achievement)
return unlocked_achievements
func _on_input_name_changed(_new_text: String):
var valid = _validate_name()
if not valid:
_set_label_error()
return

View File

@@ -1,6 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://ch5d4emoxq6t4"]
[gd_scene load_steps=6 format=3 uid="uid://ch5d4emoxq6t4"]
[ext_resource type="Script" uid="uid://wor3bvk7tdh0" path="res://addons/escoria-ui-return-monkey-island/achievements/summary/rtmi_achievement_summary.gd" id="1_vcqj7"]
[ext_resource type="PackedScene" uid="uid://cbq03pmsdusib" path="res://addons/escoria-ui-return-monkey-island/achievements/summary/rtmi_achievement_summary_panel.tscn" id="2_0xx2m"]
[ext_resource type="Script" uid="uid://elqkwjm0r5c7" path="res://addons/escoria-ui-return-monkey-island/menus/rtmi_menu_button.gd" id="2_3d1qx"]
[ext_resource type="Script" uid="uid://doqt8bqgwakt" path="res://addons/tattomoosa.spinner/spinner.gd" id="3_co5jd"]
@@ -22,101 +23,9 @@ theme_override_constants/margin_bottom = 10
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TotalTimeLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "TOTAL_TIME"
horizontal_alignment = 1
[node name="TotalTime" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"]
[node name="SummaryPanel" parent="MarginContainer/VBoxContainer" instance=ExtResource("2_0xx2m")]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "0h 00m 00s"
horizontal_alignment = 1
vertical_alignment = 2
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="PositionLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "POSITION"
horizontal_alignment = 1
[node name="Position" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "-"
horizontal_alignment = 1
vertical_alignment = 2
[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_styles/separator = SubResource("StyleBoxEmpty_co5jd")
[node name="MarginContainer2" type="MarginContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="AchievementTitle" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
theme_override_font_sizes/font_size = 12
text = "ACHIEVEMENT_SUMMARY"
[node name="AchievementCount" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 12
text = "1 / 7"
horizontal_alignment = 2
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_top = 10
theme_override_constants/margin_bottom = 10
[node name="UnlockedAchievementsContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/separation = 4
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label4" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label5" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label6" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="HSeparator3" type="HSeparator" parent="MarginContainer/VBoxContainer"]
layout_mode = 2

View File

@@ -0,0 +1,48 @@
class_name RTMIAchievementSummaryPanel
extends VBoxContainer
@onready var total_time: Label = %TotalTime
@onready var pos: Label = %Position
@onready var achievement_count: Label = %AchievementCount
@onready var unlocked_achievements_container: VBoxContainer = %UnlockedAchievementsContainer
var score_position: int = 0:
set(new_value):
score_position = new_value
%Position.text = "#%d" % new_value
func _ready() -> void:
_fill()
func refresh() -> void:
_fill()
func _fill():
_clear()
total_time.text = RTMIScoreManager.format_time(gymkhana.achievement_manager.played_time)
var achievements = gymkhana.achievement_manager.get_achievements()
for achievement_key in achievements:
var label = Label.new()
label.text = tr(gymkhana.achievement_manager.generate_achievement_literal(
achievement_key, "title"
))
label.add_theme_color_override("font_color", Color.DIM_GRAY)
if achievements.get(achievement_key):
label.add_theme_color_override("font_color", Color.GREEN)
unlocked_achievements_container.add_child(label)
achievement_count.text = "%s / %s" % [gymkhana.achievement_manager.get_unlocked_achievements_total(), achievements.size()]
func _clear() -> void:
for child in unlocked_achievements_container.get_children():
unlocked_achievements_container.remove_child(child)
child.queue_free()
func show_position() -> void:
%PositionContainer.show()
func hide_position() -> void:
%PositionContainer.hide()

View File

@@ -0,0 +1,105 @@
[gd_scene load_steps=3 format=3 uid="uid://cbq03pmsdusib"]
[ext_resource type="Script" uid="uid://b7llgro3vx5rr" path="res://addons/escoria-ui-return-monkey-island/achievements/summary/rtmi_achievement_summary_panel.gd" id="1_cgp0k"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_co5jd"]
[node name="SummaryPanel" type="VBoxContainer"]
script = ExtResource("1_cgp0k")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TotalTimeLabel" type="Label" parent="HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "TOTAL_TIME"
horizontal_alignment = 1
[node name="TotalTime" type="Label" parent="HBoxContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "0h 00m 00s"
horizontal_alignment = 1
vertical_alignment = 2
[node name="PositionContainer" type="VBoxContainer" parent="HBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 3
[node name="PositionLabel" type="Label" parent="HBoxContainer/PositionContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "POSITION"
horizontal_alignment = 1
[node name="Position" type="Label" parent="HBoxContainer/PositionContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "-"
horizontal_alignment = 1
vertical_alignment = 2
[node name="HSeparator" type="HSeparator" parent="."]
layout_mode = 2
theme_override_styles/separator = SubResource("StyleBoxEmpty_co5jd")
[node name="MarginContainer2" type="MarginContainer" parent="."]
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="."]
layout_mode = 2
[node name="AchievementTitle" type="Label" parent="HBoxContainer2"]
layout_mode = 2
theme_override_font_sizes/font_size = 12
text = "ACHIEVEMENT_SUMMARY"
[node name="AchievementCount" type="Label" parent="HBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 12
text = "1 / 7"
horizontal_alignment = 2
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
theme_override_constants/margin_top = 10
theme_override_constants/margin_bottom = 10
[node name="UnlockedAchievementsContainer" type="VBoxContainer" parent="MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/separation = 4
[node name="Label" type="Label" parent="MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label2" type="Label" parent="MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label3" type="Label" parent="MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label4" type="Label" parent="MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label5" type="Label" parent="MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"
[node name="Label6" type="Label" parent="MarginContainer/UnlockedAchievementsContainer"]
layout_mode = 2
text = "ACHIEVEMENT TEXT PLACEHOLDER"

View File

@@ -0,0 +1,21 @@
@tool
extends GridContainer
func _ready() -> void:
refresh()
func refresh() -> void:
var characters := ESCEditorHelper.get_characters()
for character in characters:
var button = ESCCharacterGridButton.new()
button.text = character
button.character_path = characters[character]
add_child(button)
func _clear() -> void:
for child in get_children():
remove_child(child)
child.queue_free()

View File

@@ -0,0 +1 @@
uid://cprmhtbtpwqtn

View File

@@ -0,0 +1,14 @@
@tool
class_name ESCCharacterGridButton
extends Button
var character_path: String
var _loaded_character = ESCPlayer
func _ready():
pressed.connect(_button_pressed)
func _button_pressed():
EditorInterface.open_scene_from_path(character_path)

View File

@@ -0,0 +1,59 @@
@tool
class_name ESCItemGridButton
extends VBoxContainer
const RESIZE_RATIO: float = 0.5
var _item_path: String
var _loaded_item: ESCItem
var _use_inventory_texture: bool = false
func _init(item_path: String, use_inventory_texture: bool):
_item_path = item_path
_use_inventory_texture = use_inventory_texture
func _ready():
_loaded_item = load(_item_path).instantiate()
var button = TextureButton.new()
var texture: Texture = _get_item_texture(_loaded_item)
#button.ignore_texture_size = true
button.stretch_mode = TextureButton.STRETCH_KEEP_CENTERED
button.texture_normal = texture
button.custom_minimum_size = Vector2i(150,150)
button.gui_input.connect(_on_button_gui_input)
add_child(button)
var label = Label.new()
label.text = _loaded_item.global_id
label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS_FORCE
label.custom_minimum_size = Vector2i(150, 0)
label.gui_input.connect(_on_label_gui_input)
label.tooltip_text = _item_path
add_child(label)
func _on_button_gui_input(event: InputEvent):
if event is InputEventMouseButton:
if event.button_index == MouseButton.MOUSE_BUTTON_LEFT and event.double_click:
EditorInterface.open_scene_from_path(_item_path)
EditorInterface.edit_node(EditorInterface.get_edited_scene_root())
func _on_label_gui_input(event: InputEvent):
if event is InputEventMouseButton:
print("D")
if event.button_index == MouseButton.MOUSE_BUTTON_LEFT and event.double_click:
DisplayServer.clipboard_set(_item_path)
escoria.logger.info(self, "%s copied." % _item_path)
func _get_item_texture(item: ESCItem):
if _use_inventory_texture:
return item._get_inventory_texture()
for c in item.get_children():
if c is TextureRect or c is Sprite2D:
return c.texture

View File

@@ -0,0 +1 @@
uid://bqll8erv6o7kd

View File

@@ -0,0 +1,13 @@
@tool
class_name ESCRoomGridButton
extends Button
var room_path: String
func _ready():
pressed.connect(_button_pressed)
func _button_pressed():
EditorInterface.open_scene_from_path(room_path)

View File

@@ -0,0 +1 @@
uid://da4n8ed4moe6y

View File

@@ -0,0 +1,22 @@
@tool
extends Control
class_name ESCRoomInspectorItem
@onready var label: Label = %Label
@onready var button_pinpoint: Button = %ButtonPinpoint
var _item: ESCItem
func _ready() -> void:
button_pinpoint.pressed.connect(_on_pinpoint_pressed)
func set_item(item: ESCItem) -> void:
_item = item
label.text = item.global_id
func _on_pinpoint_pressed():
print("PINPOINT: %s" % _item.global_id, "Owner: %s" % _item.owner)
EditorInterface.edit_node(_item)

View File

@@ -0,0 +1,34 @@
[gd_scene load_steps=2 format=3 uid="uid://uii3u2y0w3yo"]
[ext_resource type="Script" uid="uid://qk4h81i8pcsw" path="res://addons/escoria-ui-return-monkey-island/editor-tools/elements/esc_room_inspector_item.gd" id="1_lqbf8"]
[node name="Control" type="Control"]
custom_minimum_size = Vector2(0, 15)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource("1_lqbf8")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "turno_cocina"
[node name="ButtonPinpoint" type="Button" parent="HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "."

View File

@@ -0,0 +1,89 @@
@tool
class_name ESCEditorHelper
const FILE_EXTENSION_ASHES = "esc"
const DIRECTORIES_TO_EXCLUDE = ["addons"]
const BASE_PROJECT_DIR = "res://"
static func get_element(element_path: String) -> Dictionary:
var element_list: Dictionary = {}
var path = ProjectSettings.globalize_path(element_path)
if not OS.has_feature("editor"):
path = OS.get_executable_path().get_base_dir().path_join(path)
var dir = DirAccess.open(path)
if dir != null:
dir.list_dir_begin() # TODOConverter3To4 fill missing arguments https://github.com/godotengine/godot/pull/40547
var file_name = dir.get_next()
while file_name != "":
if dir.current_is_dir():
element_list.set(file_name, "%s/%s/%s.tscn" % [element_path, file_name, file_name])
file_name = dir.get_next()
element_list.sort()
else:
ESCSafeLogging.log_warn(
ESCEditorHelper, "A problem occurred while opening rooms folder %s." % str(path)
)
return element_list
static func get_rooms() -> Dictionary:
var rooms_folder = ESCProjectSettingsManager.get_setting(
ESCProjectSettingsManager.ROOM_SELECTOR_ROOM_DIR
)
if rooms_folder == "":
return {}
return get_element(rooms_folder)
static func get_characters() -> Dictionary:
var rooms_folder = "res://gymkhana/characters"
if rooms_folder == "":
return {}
return get_element(rooms_folder)
static func get_items() -> Array:
var items_path = (
ESCProjectSettingsManager
. get_setting(ESCProjectSettingsManager.INVENTORY_ITEMS_PATH)
. trim_suffix("/")
)
var files: Array = _get_files("tscn", items_path)
#var files = []
return files
static func _get_files(extension: String, path: String) -> Array:
var dir = DirAccess.open(path)
var files := []
if dir:
dir.list_dir_begin()
else:
ESCSafeLogging.log_warn(ESCEditorHelper, "Unable to open '%s'." % path)
return files
var filename: String = dir.get_next()
while not filename.is_empty():
var filename_with_path: String = _make_full_path(dir.get_current_dir(), filename)
if not dir.current_is_dir():
if filename.get_extension() == extension:
files.append(filename_with_path)
filename = dir.get_next()
return files
static func _make_full_path(directory: String, filename: String) -> String:
var separator: String = "" if directory.ends_with("/") else "/"
return directory + separator + filename

View File

@@ -0,0 +1 @@
uid://dwy5heuqtglo8

View File

@@ -0,0 +1,12 @@
@tool
class_name ESCEscoriaDock
extends Panel
@onready var tab_container: TabContainer = %TabContainer
func _ready() -> void:
tab_container.tab_changed.connect(_on_tab_changed)
func _on_tab_changed(current_tab) -> void:
print("Tab change %s" % current_tab)
return

View File

@@ -0,0 +1 @@
uid://q3bxu7fjbxrb

View File

@@ -0,0 +1,49 @@
[gd_scene load_steps=5 format=3 uid="uid://cx10t424sepxe"]
[ext_resource type="Script" uid="uid://q3bxu7fjbxrb" path="res://addons/escoria-ui-return-monkey-island/editor-tools/esc_escoria_dock.gd" id="1_ff15v"]
[ext_resource type="Script" uid="uid://7r7dgsfeiuic" path="res://addons/escoria-ui-return-monkey-island/editor-tools/rooms_grid.gd" id="2_fm76t"]
[ext_resource type="PackedScene" uid="uid://y1u61mgoeluv" path="res://addons/escoria-ui-return-monkey-island/editor-tools/esc_escoria_dock_items.tscn" id="3_fm76t"]
[ext_resource type="Script" uid="uid://cprmhtbtpwqtn" path="res://addons/escoria-ui-return-monkey-island/editor-tools/characters_grid.gd" id="4_uu37h"]
[node name="Escoria" type="Panel"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_ff15v")
[node name="TabContainer" type="TabContainer" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
current_tab = 0
[node name="Rooms" type="ScrollContainer" parent="TabContainer"]
layout_mode = 2
metadata/_tab_index = 0
[node name="RoomsGrid" type="GridContainer" parent="TabContainer/Rooms"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 10
script = ExtResource("2_fm76t")
[node name="Items" parent="TabContainer" instance=ExtResource("3_fm76t")]
visible = false
layout_mode = 2
metadata/_tab_index = 1
[node name="Characters" type="ScrollContainer" parent="TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 2
[node name="CharactersGrid" type="GridContainer" parent="TabContainer/Characters"]
layout_mode = 2
script = ExtResource("4_uu37h")

View File

@@ -0,0 +1,13 @@
@tool
extends VBoxContainer
@onready var check_inventory_texture: CheckButton = %CheckInventoryTexture
@onready var items_grid: GridContainer = %ItemsGrid
func _ready():
check_inventory_texture.toggled.connect(_on_inventory_texture_toggled)
func _on_inventory_texture_toggled(is_toggled: bool):
items_grid.use_inventory_texture = is_toggled
items_grid.refresh()

View File

@@ -0,0 +1 @@
uid://cqrwlqhfdth14

View File

@@ -0,0 +1,35 @@
[gd_scene load_steps=3 format=3 uid="uid://y1u61mgoeluv"]
[ext_resource type="Script" uid="uid://dsrwrbxtdbccb" path="res://addons/escoria-ui-return-monkey-island/editor-tools/items_tab.gd" id="1_osotr"]
[ext_resource type="Script" uid="uid://cqrwlqhfdth14" path="res://addons/escoria-ui-return-monkey-island/editor-tools/esc_escoria_dock_items.gd" id="1_ukssm"]
[node name="Items" type="VBoxContainer"]
offset_right = 1227.0
offset_bottom = 285.0
size_flags_vertical = 3
script = ExtResource("1_ukssm")
[node name="MenuBar" type="MenuBar" parent="."]
custom_minimum_size = Vector2(0, 35)
layout_mode = 2
[node name="CheckInventoryTexture" type="CheckButton" parent="MenuBar"]
unique_name_in_owner = true
layout_mode = 0
offset_right = 44.0
offset_bottom = 24.0
text = "Invetory texture"
[node name="Items" type="ScrollContainer" parent="."]
layout_mode = 2
size_flags_vertical = 3
metadata/_tab_index = 2
[node name="ItemsGrid" type="GridContainer" parent="Items"]
unique_name_in_owner = true
clip_contents = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 7
script = ExtResource("1_osotr")

View File

@@ -0,0 +1,49 @@
@tool
class_name ESCRoomInspectorDock
extends Panel
@onready var current_room_label: Label = %CurrentRoomLabelValue
@onready var room_objects_list: VBoxContainer = %RoomObjectsList
const room_item_control = preload("res://addons/escoria-ui-return-monkey-island/editor-tools/elements/esc_room_inspector_item.tscn")
func scene_changed(root_node: Node) -> void:
_clear_room_objects_list()
var room_objects = []
if not root_node is ESCRoom:
current_room_label.text = "No room selected."
return
var room_node = root_node as ESCRoom
current_room_label.text = room_node.global_id
for child in root_node.get_children():
if child is ESCItem:
var ui_item = room_item_control.instantiate()
room_objects_list.add_child(ui_item)
ui_item.set_item(child)
func scene_closed(filepath: String) -> void:
check_open_scenes()
# From: https://github.com/carenalgas/popochiu/blob/develop/addons/popochiu/editor/main_dock/popochiu_dock.gd
func check_open_scenes() -> void:
# Fixes #273: Since Godot is not triggering the EditorPlugin.scene_changed signal when opening a
# scene when no other scenes are opened, listen to the EditorSelection.selection_changed signal
await get_tree().process_frame
if EditorInterface.get_open_scenes().is_empty():
EditorInterface.get_selection().selection_changed.connect(_on_editor_selection_changed)
func _on_editor_selection_changed() -> void:
if EditorInterface.get_edited_scene_root():
EditorInterface.get_selection().selection_changed.disconnect(_on_editor_selection_changed)
scene_changed(EditorInterface.get_edited_scene_root())
func _clear_room_objects_list() -> void:
for child in room_objects_list.get_children():
room_objects_list.remove_child(child)
child.queue_free()

View File

@@ -0,0 +1 @@
uid://b2euhjc1kb6cn

View File

@@ -0,0 +1,45 @@
[gd_scene load_steps=2 format=3 uid="uid://dtb2gkj65kpug"]
[ext_resource type="Script" uid="uid://b2euhjc1kb6cn" path="res://addons/escoria-ui-return-monkey-island/editor-tools/esc_room_inspector_dock.gd" id="1_lnj8i"]
[node name="Room" type="Panel"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_lnj8i")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
[node name="CurrentRoomLabel" type="Label" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
[node name="CurrentRoomLabelValue" type="Label" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "CURRENT_ROOM"
[node name="TabContainer" type="TabContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
current_tab = 0
[node name="Items" type="ScrollContainer" parent="VBoxContainer/TabContainer"]
layout_mode = 2
size_flags_vertical = 3
metadata/_tab_index = 0
[node name="RoomObjectsList" type="VBoxContainer" parent="VBoxContainer/TabContainer/Items"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3

View File

@@ -0,0 +1,21 @@
@tool
extends GridContainer
@onready var items_grid: GridContainer = %ItemsGrid
var use_inventory_texture: bool = false
func _ready() -> void:
refresh()
func refresh() -> void:
_clear()
for item in ESCEditorHelper.get_items():
var button = ESCItemGridButton.new(item,use_inventory_texture)
items_grid.add_child(button)
func _clear() -> void:
for child in get_children():
remove_child(child)
child.queue_free()

View File

@@ -0,0 +1 @@
uid://dsrwrbxtdbccb

View File

@@ -0,0 +1,21 @@
@tool
extends GridContainer
func _ready() -> void:
refresh()
func refresh() -> void:
var rooms := ESCEditorHelper.get_rooms()
for room in rooms:
var button = ESCRoomGridButton.new()
button.text = room
button.room_path = rooms[room]
add_child(button)
func _clear() -> void:
for child in get_children():
remove_child(child)
child.queue_free()

View File

@@ -0,0 +1 @@
uid://7r7dgsfeiuic

View File

@@ -59,13 +59,14 @@ const ESC_UI_CHANGE_VERB_ACTION = "esc_change_verb"
@export var video_player: RTMIVideoPlayer
@export var language_selector: RTMILanguageSelector
@export var confetti: RTMIConfetti
@export var tools: Container
@export var achievement_summary: RTMIAchievementSummaryMenu
# Tracks the mouse's current position onscreen.
var _current_mouse_pos = Vector2.ZERO
func _init():
gymkhana.item_count_manager = ESCItemCountManager.new()
gymkhana.tooltip_manager = ESCTootltipManager.new()
gymkhana.global_observer = RTMIGlobalObserver.new()
@@ -266,7 +267,6 @@ func element_focused(element_id: String) -> void:
tooltip_node.set_target(target_obj.tooltip_name)
tooltip_node.set_target_object(target_obj)
if escoria.action_manager.has_actions(target_obj):
if target_obj is ESCItemWithTooltip:
if target_obj.is_interactive:
@@ -442,6 +442,11 @@ func unpause_game():
escoria.main.current_scene.game.show_ui()
escoria.main.current_scene.show()
escoria.set_game_paused(false)
if achievement_summary.visible:
achievement_summary.visible = false
if %highscores.visible:
%highscores.visible = false
gymkhana.music_manager.resume()
gymkhana.achievement_manager.resume_tracking_time()
@@ -565,7 +570,10 @@ func _on_event_done(return_code: int, _event_name: String):
func _on_MenuButton_pressed() -> void:
pause_game()
if escoria.current_state == escoria.GAME_STATE.PAUSED:
unpause_game()
else:
pause_game()
# Clears the tooltip content (if an ESCTooltip node exists in UI)
@@ -614,6 +622,7 @@ func _on_say_finished() -> void:
await get_tree().create_timer(0.01).timeout
update_highlights()
func _is_input_all():
return escoria.inputs_manager.input_mode == ESCInputsManager.INPUT_ALL
@@ -668,5 +677,11 @@ func update_highlights():
if room_child is ESCItemWithTooltip:
room_child.get_component("outline").update_highlight()
func launch_confetti():
confetti.launch()
func show_achievement_summary() -> void:
achievement_summary.show()
achievement_summary.refresh()

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=32 format=3 uid="uid://cabos3cse6b71"]
[gd_scene load_steps=33 format=3 uid="uid://cabos3cse6b71"]
[ext_resource type="PackedScene" uid="uid://bl50queikqfjc" path="res://addons/escoria-ui-return-monkey-island/inventory/inventory_ui.tscn" id="1"]
[ext_resource type="Script" path="res://addons/escoria-core/game/scenes/dialogs/esc_dialog_player.gd" id="2"]
@@ -25,6 +25,7 @@
[ext_resource type="Texture2D" uid="uid://y2hfekr163su" path="res://addons/escoria-ui-return-monkey-island/icons/exit_fullscreen_hover.svg" id="15_j7gr8"]
[ext_resource type="Texture2D" uid="uid://e2xk0aimdte" path="res://addons/escoria-ui-return-monkey-island/icons/music-double-note-disabled.svg" id="16"]
[ext_resource type="Texture2D" uid="uid://nsthsaybnd71" path="res://addons/escoria-ui-return-monkey-island/icons/fullscreen.svg" id="18_ixq7a"]
[ext_resource type="PackedScene" uid="uid://bcu6ik8qq0dl6" path="res://addons/escoria-ui-return-monkey-island/achievements/menu/rtmi_achievements_menu.tscn" id="18_j7gr8"]
[ext_resource type="PackedScene" uid="uid://d3kgkl2r5xe4d" path="res://addons/escoria-ui-return-monkey-island/achievements/rtmi_achievement_notification_container.tscn" id="18_ssxmx"]
[ext_resource type="PackedScene" uid="uid://c0066wpl3qky4" path="res://addons/escoria-ui-return-monkey-island/menus/language_selector/language_selector.tscn" id="19_we0hb"]
[ext_resource type="Shader" uid="uid://iehp1eakxyak" path="res://addons/escoria-ui-return-monkey-island/shaders/vignette.gdshader" id="20_parhr"]
@@ -41,7 +42,7 @@ shader_parameter/vignette_strength = 0.9
shader_parameter/dither_strength = 0.03
shader_parameter/vignette_color = Color(0, 0, 0, 1)
[node name="game" type="Node2D" node_paths=PackedStringArray("inventory_ui", "rtmi_tooltip_node", "dev_tools_node", "video_player", "language_selector", "confetti")]
[node name="game" type="Node2D" node_paths=PackedStringArray("inventory_ui", "rtmi_tooltip_node", "dev_tools_node", "video_player", "language_selector", "confetti", "achievement_summary")]
script = ExtResource("5")
inventory_ui = NodePath("game_layer/ui_layer/Inventory")
rtmi_tooltip_node = NodePath("game_layer/tooltip_layer/tooltip")
@@ -49,14 +50,15 @@ dev_tools_node = NodePath("game_layer/ui_layer/DevTools")
video_player = NodePath("menu_layer/video_player")
language_selector = NodePath("menu_layer/language_selector")
confetti = NodePath("CanvasLayer/Confetti")
achievement_summary = NodePath("menu_layer/AchievementsMenu")
main_menu = NodePath("menu_layer/main_menu")
pause_menu = NodePath("menu_layer/pause_menu")
mouse_tooltip_margin = 70.0
editor_debug_mode = 1
ui_parent_control_node = NodePath("game_layer/ui_layer/Tools")
[node name="black_and_white_shader" type="CanvasLayer" parent="."]
unique_name_in_owner = true
layer = 4
visible = false
script = ExtResource("2_o34rc")
@@ -69,6 +71,7 @@ grow_horizontal = 2
grow_vertical = 2
[node name="CanvasLayer" type="CanvasLayer" parent="."]
layer = 4
[node name="Confetti" parent="CanvasLayer" instance=ExtResource("4_ixq7a")]
@@ -85,7 +88,8 @@ color = Color(0, 0, 0, 1)
[node name="game_layer" type="CanvasLayer" parent="."]
[node name="dialog_layer" type="CanvasLayer" parent="game_layer"]
layer = 3
unique_name_in_owner = true
layer = 2
[node name="ESCDialogsPlayer" type="Control" parent="game_layer/dialog_layer"]
layout_mode = 3
@@ -94,7 +98,7 @@ theme = ExtResource("9")
script = ExtResource("2")
[node name="tooltip_layer" type="CanvasLayer" parent="game_layer"]
layer = 2
layer = 4
[node name="tooltip" parent="game_layer/tooltip_layer" instance=ExtResource("4")]
z_index = 10
@@ -106,51 +110,11 @@ offset_from_cursor_action4 = Vector2(0, -20)
debug_mode = true
[node name="ui_layer" type="CanvasLayer" parent="game_layer"]
layer = 2
[node name="DevTools" parent="game_layer/ui_layer" instance=ExtResource("7_qk4ex")]
visible = false
[node name="Tools" type="PanelContainer" parent="game_layer/ui_layer"]
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -220.0
offset_bottom = 84.0
grow_horizontal = 0
theme = ExtResource("9")
[node name="MarginContainer" type="MarginContainer" parent="game_layer/ui_layer/Tools"]
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="game_layer/ui_layer/Tools/MarginContainer"]
layout_mode = 2
alignment = 2
[node name="FullScreenButton" type="TextureButton" parent="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2"]
process_mode = 3
layout_mode = 2
texture_normal = ExtResource("18_ixq7a")
texture_hover = ExtResource("12_te176")
script = ExtResource("13_6rlck")
fullscreen_active_texture = ExtResource("14_c6byj")
fullscreen_active_hover_texture = ExtResource("15_j7gr8")
fullscreen_default_texture = ExtResource("18_ixq7a")
fullscreen_default_hover_texture = ExtResource("12_te176")
[node name="MusicButton" type="TextureButton" parent="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2"]
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
script = ExtResource("14")
music_enabled_texture = ExtResource("6")
music_enabled_hover_texture = ExtResource("13")
music_disabled_texture = ExtResource("16")
music_disabled_hover_texture = ExtResource("15")
[node name="MenuButton" type="TextureButton" parent="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2"]
layout_mode = 2
texture_normal = ExtResource("13_we0hb")
texture_hover = ExtResource("14_parhr")
[node name="Inventory" parent="game_layer/ui_layer" instance=ExtResource("1")]
anchors_preset = 7
anchor_top = 1.0
@@ -165,7 +129,7 @@ pivot_offset = Vector2(845, 116)
[node name="AchievementNotifications" parent="game_layer/ui_layer" instance=ExtResource("18_ssxmx")]
[node name="menu_layer" type="CanvasLayer" parent="."]
layer = 2
layer = 8
[node name="pause_menu" parent="menu_layer" instance=ExtResource("8")]
visible = false
@@ -183,6 +147,55 @@ visible = false
unique_name_in_owner = true
visible = false
[connection signal="button_down" from="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2/FullScreenButton" to="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2/FullScreenButton" method="_on_button_down"]
[connection signal="pressed" from="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2/MusicButton" to="." method="_on_MusicButton_pressed"]
[connection signal="pressed" from="game_layer/ui_layer/Tools/MarginContainer/HBoxContainer2/MenuButton" to="." method="_on_MenuButton_pressed"]
[node name="AchievementsMenu" parent="menu_layer" instance=ExtResource("18_j7gr8")]
visible = false
[node name="buttons_layer" type="CanvasLayer" parent="."]
layer = 10
[node name="Tools" type="PanelContainer" parent="buttons_layer"]
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -220.0
offset_bottom = 84.0
grow_horizontal = 0
theme = ExtResource("9")
[node name="MarginContainer" type="MarginContainer" parent="buttons_layer/Tools"]
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="buttons_layer/Tools/MarginContainer"]
layout_mode = 2
alignment = 2
[node name="FullScreenButton" type="TextureButton" parent="buttons_layer/Tools/MarginContainer/HBoxContainer2"]
process_mode = 3
layout_mode = 2
texture_normal = ExtResource("18_ixq7a")
texture_hover = ExtResource("12_te176")
script = ExtResource("13_6rlck")
fullscreen_active_texture = ExtResource("14_c6byj")
fullscreen_active_hover_texture = ExtResource("15_j7gr8")
fullscreen_default_texture = ExtResource("18_ixq7a")
fullscreen_default_hover_texture = ExtResource("12_te176")
[node name="MusicButton" type="TextureButton" parent="buttons_layer/Tools/MarginContainer/HBoxContainer2"]
process_mode = 3
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
script = ExtResource("14")
music_enabled_texture = ExtResource("6")
music_enabled_hover_texture = ExtResource("13")
music_disabled_texture = ExtResource("16")
music_disabled_hover_texture = ExtResource("15")
[node name="MenuButton" type="TextureButton" parent="buttons_layer/Tools/MarginContainer/HBoxContainer2"]
process_mode = 3
layout_mode = 2
texture_normal = ExtResource("13_we0hb")
texture_hover = ExtResource("14_parhr")
[connection signal="button_down" from="buttons_layer/Tools/MarginContainer/HBoxContainer2/FullScreenButton" to="buttons_layer/Tools/MarginContainer/HBoxContainer2/FullScreenButton" method="_on_button_down"]
[connection signal="pressed" from="buttons_layer/Tools/MarginContainer/HBoxContainer2/MusicButton" to="." method="_on_MusicButton_pressed"]
[connection signal="pressed" from="buttons_layer/Tools/MarginContainer/HBoxContainer2/MenuButton" to="." method="_on_MenuButton_pressed"]

View File

@@ -103,9 +103,3 @@ func warm_esc_cache() -> void:
for file in files:
# We need to use the compiler from the escoria singelton for the cache to work.
escoria.esc_compiler.load_esc_file(file)
func toogle_fullscreen():
pass
func set_fullscreen(value: bool):
pass

View File

@@ -26,12 +26,12 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="7.5520836"
inkscape:cx="21.914482"
inkscape:cx="22.046896"
inkscape:cy="41.114481"
inkscape:window-width="1680"
inkscape:window-height="941"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-height="959"
inkscape:window-x="1920"
inkscape:window-y="15"
inkscape:window-maximized="1"
inkscape:current-layer="g1" />
<rect
@@ -48,26 +48,40 @@
style="stroke-width:6.24650214;stroke-dasharray:none">
<g
id="g1">
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.7411847,39.334608 H 24.137035 l -0.05328,18.906603"
id="path1"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 58.258814,39.334609 H 39.862965 l 0.05328,18.906602"
id="path1-3"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.741185,24.665391 H 24.137034 L 24.083754,5.7587889"
id="path2"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 58.258814,24.665391 H 39.862965 l 0.05328,-18.9066019"
id="path3"
sodipodi:nodetypes="ccc" />
<g
id="g5"
transform="matrix(1.3734613,0,0,1.3734613,-11.492178,-13.01245)">
<g
id="g2"
style="stroke-width:4.66977;stroke-dasharray:none"
transform="matrix(0.72808748,0,0,0.72808748,8.7012011,8.7012006)">
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.9734296,19.171545 H 18.643188 L 18.589908,5.7572476"
id="path2-6"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 57.109402,19.171545 H 44.439643 l 0.05328,-13.4142974"
id="path1-7"
sodipodi:nodetypes="ccc" />
</g>
<g
id="g4"
style="stroke-width:4.66977;stroke-dasharray:none"
transform="matrix(0.72808748,0,0,-0.72808748,8.7012011,56.844804)">
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.9734296,19.171545 H 18.643188 L 18.589908,5.7572476"
id="path3-5"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 57.109402,19.171545 H 44.439643 l 0.05328,-13.4142974"
id="path4"
sodipodi:nodetypes="ccc" />
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -25,13 +25,13 @@
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="7.5520836"
inkscape:cx="24.827585"
inkscape:cy="29.859309"
inkscape:zoom="5.3401295"
inkscape:cx="42.040179"
inkscape:cy="14.325495"
inkscape:window-width="1680"
inkscape:window-height="941"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-height="959"
inkscape:window-x="1920"
inkscape:window-y="15"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<rect
@@ -43,28 +43,37 @@
y="0"
ry="11.032078" />
<g
id="g2"
style="stroke-width:6.2465;stroke-dasharray:none"
transform="matrix(0.72808748,0,0,0.72808748,8.7012011,8.7012006)">
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.7411851,39.334609 H 24.137034 l -0.05328,18.906602"
id="path1"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 58.258814,39.334609 H 39.862965 l 0.05328,18.906602"
id="path1-3"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.741185,24.665391 H 24.137034 L 24.083754,5.7587889"
id="path2"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 58.258814,24.665391 H 39.862965 l 0.05328,-18.9066019"
id="path3"
sodipodi:nodetypes="ccc" />
id="g5"
transform="translate(0.33388895,-0.7730023)">
<g
id="g2"
style="stroke-width:4.66977;stroke-dasharray:none"
transform="matrix(0.72808748,0,0,0.72808748,8.7012011,8.7012006)">
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.9734296,19.171545 H 18.643188 L 18.589908,5.7572476"
id="path2"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 57.109402,19.171545 H 44.439643 l 0.05328,-13.4142974"
id="path1"
sodipodi:nodetypes="ccc" />
</g>
<g
id="g4"
style="stroke-width:4.66977;stroke-dasharray:none"
transform="matrix(0.72808748,0,0,-0.72808748,8.7012011,56.844804)">
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.9734296,19.171545 H 18.643188 L 18.589908,5.7572476"
id="path3"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:4.66977;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 57.109402,19.171545 H 44.439643 l 0.05328,-13.4142974"
id="path4"
sodipodi:nodetypes="ccc" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -26,12 +26,12 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="7.5520836"
inkscape:cx="21.914482"
inkscape:cx="22.046896"
inkscape:cy="41.114481"
inkscape:window-width="1680"
inkscape:window-height="941"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-height="959"
inkscape:window-x="1920"
inkscape:window-y="15"
inkscape:window-maximized="1"
inkscape:current-layer="g3" />
<rect
@@ -47,24 +47,25 @@
transform="matrix(0.72808748,0,0,0.72808748,8.7012004,8.7012005)"
style="stroke-width:6.24650214;stroke-dasharray:none">
<g
id="g1">
id="g1"
style="stroke-width:4.66976853;stroke-dasharray:none">
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 24.145849,58.25 H 5.7499995 l 0.053284,-18.906602"
id="path1"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 39.854151,58.25 H 58.25 L 58.19672,39.343398"
id="path1-3"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 24.145849,5.75 H 5.7499995 l 0.053284,18.906602"
id="path2"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 39.854151,5.75 H 58.25 l -0.05328,18.906602"
id="path3"
sodipodi:nodetypes="ccc" />

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -29,9 +29,9 @@
inkscape:cx="24.827585"
inkscape:cy="29.859309"
inkscape:window-width="1680"
inkscape:window-height="941"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-height="959"
inkscape:window-x="1920"
inkscape:window-y="15"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<rect
@@ -44,25 +44,25 @@
ry="11.032078" />
<g
id="g2"
style="stroke-width:6.2465;stroke-dasharray:none"
style="stroke-width:4.66976853;stroke-dasharray:none"
transform="matrix(0.72808748,0,0,0.72808748,8.7012011,8.7012006)">
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 24.145849,58.25 H 5.7499995 l 0.053284,-18.906602"
id="path1"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 39.854151,58.25 H 58.25 L 58.19672,39.343398"
id="path1-3"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 24.145849,5.75 H 5.7499995 l 0.053284,18.906602"
id="path2"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:6.2465;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:4.66976853;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 39.854151,5.75 H 58.25 l -0.05328,18.906602"
id="path3"
sodipodi:nodetypes="ccc" />

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,14 +1,19 @@
# A simple main menu
extends Control
var save_enabled = ESCProjectSettingsManager.get_setting( RTMIUiSettings.SAVEGAME_ENABLED)
var save_enabled = ESCProjectSettingsManager.get_setting(RTMIUiSettings.SAVEGAME_ENABLED)
# Start the game
func _on_new_game_pressed():
escoria.new_game()
func _ready() -> void:
%Version.text = "v%s %s" % [gymkhana.version.current, "DEGUG" if OS.has_feature("debug") else ""]
if OS.get_name() == "Web":
%quit.visible = false
# Show the load slots
func _on_load_game_pressed():

View File

@@ -88,6 +88,7 @@ script = ExtResource("5_4i6cp")
[node name="quit" type="Button" parent="main/main/buttons"]
custom_minimum_size = Vector2(0, 40)
unique_name_in_owner = true
layout_mode = 2
text = "QUIT"
script = ExtResource("5_4i6cp")

View File

@@ -8,7 +8,8 @@ func _ready():
escoria.game_scene.hide_ui()
hide()
gymkhana.achievement_manager.time_updated.connect(_on_time_updated)
if OS.get_name() == "Web":
%quit.visible = false
# Continue the game
@@ -92,3 +93,7 @@ func _on_time_updated(current_time):
func _on_highscores_button_up() -> void:
escoria.game_scene.show_highscores()
func _on_achievements_pressed() -> void:
escoria.game_scene.show_achievement_summary()

View File

@@ -64,18 +64,6 @@ layout_mode = 2
texture = ExtResource("3")
stretch_mode = 3
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
[node name="CurrentTimeLabel" type="Label" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "CURRENT_PLAYING_TIME"
[node name="CurrentTime" type="Label" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "1min 20s"
[node name="menuitems" type="VBoxContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 10
@@ -87,6 +75,12 @@ size_flags_vertical = 3
text = "CONTINUE_GAME"
script = ExtResource("6_31lra")
[node name="achievements" type="Button" parent="VBoxContainer/menuitems"]
layout_mode = 2
text = "ACHIEVEMENTS"
script = ExtResource("6_31lra")
metadata/_custom_type_script = "uid://elqkwjm0r5c7"
[node name="highscores" type="Button" parent="VBoxContainer/menuitems"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
@@ -123,6 +117,7 @@ text = "OPTIONS"
script = ExtResource("6_31lra")
[node name="quit" type="Button" parent="VBoxContainer/menuitems"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
size_flags_vertical = 3
@@ -133,6 +128,7 @@ script = ExtResource("6_31lra")
[connection signal="back_button_pressed" from="load_game" to="." method="_on_load_game_back_button_pressed"]
[connection signal="back_button_pressed" from="options" to="." method="_on_options_back_button_pressed"]
[connection signal="pressed" from="VBoxContainer/menuitems/continue" to="." method="_on_continue_pressed"]
[connection signal="pressed" from="VBoxContainer/menuitems/achievements" to="." method="_on_achievements_pressed"]
[connection signal="button_up" from="VBoxContainer/menuitems/highscores" to="." method="_on_highscores_button_up"]
[connection signal="pressed" from="VBoxContainer/menuitems/new_game" to="." method="_on_new_game_pressed"]
[connection signal="pressed" from="VBoxContainer/menuitems/save_game" to="." method="_on_save_game_pressed"]

View File

@@ -1,15 +1,16 @@
extends ESCCompiler
class_name RTMICompiler
extends ESCCompiler
## Cached esc files
var _esc_cache: Dictionary
func load_esc_file(path: String, associated_global_id: String = "") -> ESCScript:
if _esc_cache.has(path):
escoria.logger.info(self, "CACHE HIT: %s" % path)
return _esc_cache.get(path)
escoria.logger.info(self, "CACHE MISS: %s" % path)
ESCSafeLogging.log_debug(self, "Loading file '%s' for parsing..." % path)
if not FileAccess.file_exists(path):
@@ -21,6 +22,7 @@ func load_esc_file(path: String, associated_global_id: String = "") -> ESCScript
return _compiler_shim(file.get_as_text(), path, associated_global_id)
func _compiler_shim(source: String, filename: String = "", associated_global_id: String = ""):
var script = super._compiler_shim(source, filename, associated_global_id)
_esc_cache[filename] = script

View File

@@ -2,6 +2,9 @@
# Plugin script to initialize Escoria simple mouse UI
extends EditorPlugin
var room_inspector_dock: ESCRoomInspectorDock
var escoria_dock: ESCEscoriaDock
var _srt_loader := SrtFormatLoader.new()
var _srt_saver := SrtFormatSaver.new()
@@ -17,6 +20,15 @@ func _enter_tree() -> void:
ResourceLoader.add_resource_format_loader(_txt_loader)
ResourceSaver.add_resource_format_saver(_txt_saver)
room_inspector_dock = preload("res://addons/escoria-ui-return-monkey-island/editor-tools/esc_room_inspector_dock.tscn").instantiate()
room_inspector_dock.ready.connect(_on_room_inspector_dock_ready)
room_inspector_dock.focus_mode = Control.FOCUS_ALL
add_control_to_dock(DOCK_SLOT_LEFT_BR, room_inspector_dock)
escoria_dock = preload("res://addons/escoria-ui-return-monkey-island/editor-tools/esc_escoria_dock.tscn").instantiate()
#escoria_dock.ready.connect(_on_dock_ready)
escoria_dock.focus_mode = Control.FOCUS_ALL
add_control_to_bottom_panel(escoria_dock, "Escoria")
func _exit_tree() -> void:
@@ -25,7 +37,14 @@ func _exit_tree() -> void:
ResourceLoader.remove_resource_format_loader(_txt_loader)
ResourceSaver.remove_resource_format_saver(_txt_saver)
# Clean-up of the plugin goes here.
# Remove the dock.
remove_control_from_docks(room_inspector_dock)
# Erase the control from the memory.
room_inspector_dock.free()
remove_control_from_bottom_panel(escoria_dock)
escoria_dock.free()
# Override function to return the plugin name.
func _get_plugin_name():
@@ -56,3 +75,18 @@ func _enable_plugin():
)
else:
get_editor_interface().set_plugin_enabled(_get_plugin_name(), false)
func _on_room_inspector_dock_ready() -> void:
# Fill the dock with Rooms, Characters, Inventory items, Dialogs and AudioCues
room_inspector_dock.grab_focus()
scene_changed.connect(room_inspector_dock.scene_changed)
scene_closed.connect(room_inspector_dock.scene_closed)
if EditorInterface.get_edited_scene_root():
room_inspector_dock.scene_changed(EditorInterface.get_edited_scene_root())
else:
room_inspector_dock.check_open_scenes()

View File

@@ -1,8 +1,13 @@
@abstract class_name BaseTextPlainFormatLoader
class_name BaseTextPlainFormatLoader
extends ResourceFormatLoader
const ResourceClass = preload("res://addons/escoria-ui-return-monkey-island/resources/text_plain_resource.gd")
@abstract func get_recognized_extensions() -> Array
const ResourceClass = preload(
"res://addons/escoria-ui-return-monkey-island/resources/text_plain_resource.gd"
)
func get_recognized_extensions() -> Array:
return []
func _get_recognized_extensions() -> PackedStringArray:

View File

@@ -1,10 +1,13 @@
@abstract class_name BaseTextPlainFormatSaver
class_name BaseTextPlainFormatSaver
extends ResourceFormatSaver
const ResourceClass = preload(
"res://addons/escoria-ui-return-monkey-island/resources/text_plain_resource.gd"
)
@abstract func get_recognized_extensions(_resource: Resource) -> Array
func get_recognized_extensions(_resource: Resource) -> Array:
return []
func _get_recognized_extensions(resource: Resource) -> PackedStringArray:
@@ -22,7 +25,7 @@ func _recognize(resource: Resource) -> bool:
func _save(resource: Resource, path: String, flags: int) -> int:
var err: int
var file = FileAccess.open(path,flags)
var file = FileAccess.open(path, flags)
file.store_string(resource.get("text"))
file.close()

View File

@@ -1,5 +1,5 @@
extends Resource
class_name RTMIUiSettings
extends Resource
const SETTINGS_ROOT = "escoria/rtmi_ui"

View File

@@ -2,7 +2,6 @@
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3hnbv"]
bg_color = Color(0, 0, 0, 1)
shadow_size = 16
[resource]
MarginContainer/constants/margin_bottom = 8

View File

@@ -1,6 +1,8 @@
class_name UIEscoriaVariable
extends Control
signal double_clicked()
enum {
STRING,
NUMBER,
@@ -45,6 +47,7 @@ func _on_name_gui_input(event: InputEvent) -> void:
_set_copied(true)
DisplayServer.clipboard_set(var_name)
escoria.logger.info(self, "%s copied." % var_name)
double_clicked.emit(var_name)
func _set_copied(value: bool):
_copied = value

View File

@@ -0,0 +1,7 @@
Copyright 2022-present Iceflower S (iceflower@gmx.de)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,61 @@
@tool
extends MarginContainer
@export var _reload_button: CheckButton
@export var _option_button: OptionButton
var _last_selection: String = ""
func _ready() -> void:
self._option_button.item_selected.connect(func(idx: int) -> void:
self._last_selection = self._option_button.get_item_metadata(idx)
self._update_button_bar()
)
self._reload_button.toggled.connect(func(toggled: bool) -> void:
EditorInterface.set_plugin_enabled("res://addons/" + self._last_selection + "/plugin.cfg", toggled)
self._reload_plugin_list()
)
EditorInterface.get_resource_filesystem().filesystem_changed.connect(self._reload_plugin_list)
self._reload_plugin_list()
func _update_button_bar() -> void:
if self._last_selection != "":
self._reload_button.set_pressed_no_signal(EditorInterface.is_plugin_enabled("res://addons/" + self._last_selection + "/plugin.cfg"))
self._option_button.icon = null
self._reload_button.disabled = self._last_selection == ""
func _reload_plugin_list() -> void:
self._option_button.clear()
for dir: String in DirAccess.get_directories_at("res://addons/"):
self._add_plugin_to_list(dir)
# subfolder
for sub_dir: String in DirAccess.get_directories_at("res://addons/" + dir):
self._add_plugin_to_list(dir + "/" + sub_dir)
if self._last_selection == "" && self._option_button.get_item_count() > 0:
self._last_selection = self._option_button.get_item_metadata(0)
self._update_button_bar()
func _add_plugin_to_list(plugin_id: String) -> void:
# ignore the current plugin
if plugin_id == "kenyoni/plugin_reloader":
return
var cfg_path: String = "res://addons/" + plugin_id + "/plugin.cfg"
if !FileAccess.file_exists(cfg_path):
return
var plugin_cfg: ConfigFile = ConfigFile.new()
plugin_cfg.load(cfg_path)
var plugin_name: String = plugin_cfg.get_value("plugin", "name", plugin_id)
self._option_button.add_item(plugin_name)
var idx: int = self._option_button.get_item_count() - 1
self._option_button.set_item_metadata(idx, plugin_id)
self._option_button.set_item_tooltip(idx, "res://addons/" + plugin_id + "/")
if EditorInterface.is_plugin_enabled(cfg_path):
self._option_button.set_item_icon(idx, self.get_theme_icon(&"TileChecked", &"EditorIcons"))
else:
self._option_button.set_item_icon(idx, self.get_theme_icon(&"TileUnchecked", &"EditorIcons"))
if plugin_id == self._last_selection:
self._option_button.select(idx)

View File

@@ -0,0 +1 @@
uid://b6eu3fxcktuu6

View File

@@ -0,0 +1,21 @@
[gd_scene load_steps=2 format=3 uid="uid://dryoyuj4vl0l5"]
[ext_resource type="Script" uid="uid://b6eu3fxcktuu6" path="res://addons/kenyoni/plugin_reloader/internal/reloader.gd" id="1_kd7gg"]
[node name="Reloader" type="MarginContainer" node_paths=PackedStringArray("_reload_button", "_option_button")]
offset_right = 76.0
offset_bottom = 24.0
script = ExtResource("1_kd7gg")
_reload_button = NodePath("HBoxContainer/reload_button")
_option_button = NodePath("HBoxContainer/OptionButton")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
theme_override_constants/separation = 0
[node name="reload_button" type="CheckButton" parent="HBoxContainer"]
layout_mode = 2
[node name="OptionButton" type="OptionButton" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3

View File

@@ -0,0 +1,19 @@
[plugin]
name="Plugin Reloader"
description="Enable or disable plugins from within the editor main screen."
author="Kenyoni Software"
version="1.1.0"
script="plugin.gd"
license="MIT"
repository="https://github.com/kenyoni-software/godot-addons"
keywords=[
"tool"
]
classifiers=[
"Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: MIT License"
]
[plugin.dependencies]
godot=">=4.2"

View File

@@ -0,0 +1,20 @@
@tool
extends EditorPlugin
const ReloaderScene: PackedScene = preload("res://addons/kenyoni/plugin_reloader/internal/reloader.tscn")
const Reloader := preload("res://addons/kenyoni/plugin_reloader/internal/reloader.gd")
var _reloader: Reloader
func _get_plugin_name() -> String:
return "Plugin Reloader"
func _enter_tree() -> void:
self._reloader = ReloaderScene.instantiate()
self.add_control_to_container(CustomControlContainer.CONTAINER_TOOLBAR, self._reloader)
# move before editor run bar
self._reloader.get_parent().move_child(self._reloader, self._reloader.get_parent().find_child("@EditorRunBar@*", true, false).get_index())
func _exit_tree() -> void:
self.remove_control_from_container(CustomControlContainer.CONTAINER_TOOLBAR, self._reloader)
self._reloader.queue_free()

View File

@@ -0,0 +1 @@
uid://bcx3j4sbnf4mw

View File

@@ -4,5 +4,5 @@ project_id="68fff7ac0029558ca82c"
database_id="68fff91900295af283bf"
[score_submit]
url="https://gymkhana.functions.app.fosil.eu"
url="https://gymkhana.fosil.eu/submit-score"
key="API_KEY_PLACEHOLDER"

View File

@@ -9,7 +9,11 @@ DEFAULT_DESTINATION_PATH="../escoria-demo-game"
DESTINATION_PATH="${1:-$DEFAULT_DESTINATION_PATH}"
REMOTE_PATCHES=(
"https://patch-diff.githubusercontent.com/raw/godot-escoria/escoria-demo-game/pull/777.patch"
#"https://patch-diff.githubusercontent.com/raw/godot-escoria/escoria-demo-game/pull/777.patch"
"https://patch-diff.githubusercontent.com/raw/godot-escoria/escoria-demo-game/pull/791.patch"
"https://patch-diff.githubusercontent.com/raw/godot-escoria/escoria-demo-game/pull/792.patch"
"https://patch-diff.githubusercontent.com/raw/godot-escoria/escoria-demo-game/pull/793.patch"
"https://patch-diff.githubusercontent.com/raw/godot-escoria/escoria-demo-game/pull/794.patch"
)
PROJECT_PATH=$PWD
@@ -44,7 +48,7 @@ echo -e "${BLUE}Applying remote patches...${NOCOLOR}"
echo -e ==========================
for REMOTE_PATCH in "${REMOTE_PATCHES[@]}"; do
echo -e "Patch: ${ORANGE}$REMOTE_PATCH${NOCOLOR}"
curl $REMOTE_PATCH | git apply -v --index
curl $REMOTE_PATCH | git apply -v --reject --index
done
echo -e
@@ -52,9 +56,14 @@ echo -e "${BLUE}Applying local patches...${NOCOLOR}"
echo -e ==========================
for FILE in $PROJECT_PATH/patches/*; do
echo -e "Patch: ${ORANGE}$FILE${NOCOLOR}"
git apply -v --index $FILE
git apply -v --reject --index $FILE
done
echo -e
echo -e "${BLUE}Rejected files...${NOCOLOR}"
echo -e ==========================
find -name "*.rej"
popd > /dev/null
echo -e "${BLUE}Done!🎉${NOCOLOR}"

View File

@@ -20,7 +20,7 @@ if [ ! -f $PROJECT_PATH/secret/api.cfg ]; then
echo "api.cfg File not found! creating one."
mkdir -p $PROJECT_PATH/secret/
cp $PROJECT_PATH/api.cfg.debug $PROJECT_PATH/secret/api.cfg
sed -i "s/API_KEY_PLACEHOLDER/$APPWRITE_API_KEY/" $PROJECT_PATH/api.cfg
sed -i "s/API_KEY_PLACEHOLDER/$APPWRITE_API_KEY/" $PROJECT_PATH/secret/api.cfg
fi
echo "Building $VERSION version"
@@ -37,27 +37,38 @@ PLATFORMS=(
"amd"
"arm"
"web"
"web-multi"
"win"
)
declare -A PLATFORM_NAMES
PLATFORM_NAMES["amd"]=$EXPORT_NAME
PLATFORM_NAMES["arm"]=$EXPORT_NAME
PLATFORM_NAMES["web"]="index"
PLATFORM_NAMES["web-multi"]="index"
PLATFORM_NAMES["win"]=$EXPORT_NAME
declare -A PLATFORM_EXTENSIONS
PLATFORM_EXTENSIONS["amd"]=".x86_64.appimage"
PLATFORM_EXTENSIONS["arm"]=".arm_64.appimage"
PLATFORM_EXTENSIONS["web"]=".html"
PLATFORM_EXTENSIONS["web-multi"]=".html"
PLATFORM_EXTENSIONS["win"]=".exe"
declare -A PLATFORM_EXPORTS
PLATFORM_EXPORTS["amd"]="Linux"
PLATFORM_EXPORTS["arm"]="LinuxARM"
PLATFORM_EXPORTS["web"]="Web"
PLATFORM_EXPORTS["web-multi"]="WebThread"
PLATFORM_EXPORTS["win"]="Windows"
declare -A PLATFORM_OVERRIDES
PLATFORM_OVERRIDES["amd"]="debug"
PLATFORM_OVERRIDES["arm"]="debug"
PLATFORM_OVERRIDES["web"]="web"
PLATFORM_OVERRIDES["web-multi"]="web"
PLATFORM_OVERRIDES["win"]="debug"
CURRENT_EXPORT_DIR=$EXPORT_DIR/release
@@ -77,8 +88,7 @@ for TYPE in "${BUILD_TYPES[@]}"; do
cp $PROJECT_PATH/override.cfg.${PLATFORM_OVERRIDES[$PLATFORM]} $PROJECT_PATH/override.cfg
echo "escoria/main/game_version=\"$VERSION\"" >> $PROJECT_PATH/override.cfg
if [ "$PLATFORM" == "web" ]; then CURRENT_EXPORT_NAME=${PLATFORM_NAMES[$PLATFORM]}; else CURRENT_EXPORT_NAME=$CURRENT_EXPORT_NAME; fi
if [[ "$PLATFORM" == *"web"* ]]; then CURRENT_EXPORT_NAME=${PLATFORM_NAMES[$PLATFORM]}; else CURRENT_EXPORT_NAME=$CURRENT_EXPORT_NAME; fi
godot --headless $STD_OUTPUT --export-$TYPE "${PLATFORM_EXPORTS[$PLATFORM]}" "$CURRENT_EXPORT_DIR/$PLATFORM/$CURRENT_EXPORT_NAME${PLATFORM_EXTENSIONS[$PLATFORM]}"
done
@@ -86,6 +96,12 @@ for TYPE in "${BUILD_TYPES[@]}"; do
tar cfz ../web-$TYPE.tar.gz .
zip ../web-$TYPE.zip *
cd $PROJECT_PATH
cd $CURRENT_EXPORT_DIR/web-multi
tar cfz ../web-multi-$TYPE.tar.gz .
zip ../web-multi-$TYPE.zip *
cd $PROJECT_PATH
done
rm $PROJECT_PATH/override.cfg

View File

@@ -0,0 +1,47 @@
# Godot Addons
![maintained](https://img.shields.io/badge/Status-maintained-brightgreen.svg)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/IceflowRE/go-multiprogressbar/blob/master/LICENSE.md)
[![documentation](https://img.shields.io/badge/Documentation-D1D100.svg)](https://kenyoni-software.github.io/godot-addons)
Download [here](https://github.com/kenyoni-software/godot-addons/releases/tag/latest).
You can find a documentation with examples and detailed information [here](https://kenyoni-software.github.io/godot-addons).
## License
[MIT License](./LICENSE.md)
---
> [!NOTE]
> **Godot 4.3. or lower**
> If you import any plugin or open a Godot project for the first time, the plugins will throw errors. To ensure correct operation, reload the project and the errors are gone.
> *Background: most plugins are using `preload`, but on first import there is nothing which can be preloaded.*
## Addons
- [AspectRatioResizeContainer](https://kenyoni-software.github.io/godot-addons/addons/aspect_ratio_resize_container)
Extension of `AspectRatioContainer` to update it's own size.
- [Custom Theme Overrides](https://kenyoni-software.github.io/godot-addons/addons/custom_theme_overrides)
Utility to provide custom theme overrides for any node.
- [Git SHA Project Setting](https://kenyoni-software.github.io/godot-addons/addons/git_sha_project_setting)
Add Git SHA as project setting.
- [Hide Private Properties](https://kenyoni-software.github.io/godot-addons/addons/hide_private_properties)
Hide private properties of instantiated child scenes.
- [Icon Explorer](https://kenyoni-software.github.io/godot-addons/addons/icon_explorer)
Browse different icons and save them.
- [Icons Patcher](https://kenyoni-software.github.io/godot-addons/addons/icons_patcher)
Patch Pictogrammers icons to white.
- [License Manager](https://kenyoni-software.github.io/godot-addons/addons/licenses)
Manage license and copyright for third party graphics, software or libraries.
- [Logging](https://kenyoni-software.github.io/godot-addons/addons/glogging)
Simple logger.
- [Plugin Reloader](https://kenyoni-software.github.io/godot-addons/addons/plugin_reloader)
Enable or disable plugins from within the editor main screen.
- [QR Code](https://kenyoni-software.github.io/godot-addons/addons/qr_code)
QRCodeRect and QR Code generation.
- [Remove Orphan UID](https://kenyoni-software.github.io/godot-addons/addons/remove_orphan_uid)
Remove orphan UIDs from the project.
- [TextureButtonColored](https://kenyoni-software.github.io/godot-addons/addons/texture_button_colored)
Extension of `TextureButton` with color options.

View File

@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources"
include_filter="*.esc, *.csv, *.ncsv, *.cfg, *.srt"
exclude_filter="*.xcf, saves/*, scripts/*,vscode-extension-ashes/*"
export_path="build/LasGymkhanikasDeUli.appimage.x86_64"
export_path="build/LasGymkhanikasDeUli.x86_64"
patches=PackedStringArray()
encryption_include_filters="*.cfg"
encryption_exclude_filters=""
@@ -139,3 +139,372 @@ texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
[preset.3]
name="WebThread"
platform="Web"
runnable=false
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="*.esc, *.csv, *.ncsv, *.cfg, *.srt"
exclude_filter="*.xcf, saves/*, scripts/*,vscode-extension-ashes/*"
export_path="build/web-multi/index.html"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.3.options]
custom_template/debug=""
custom_template/release=""
variant/extensions_support=false
variant/thread_support=true
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
html/export_icon=true
html/custom_html_shell="res://platform/web/full-size.html"
html/head_include=""
html/canvas_resize_policy=2
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=true
progressive_web_app/ensure_cross_origin_isolation_headers=true
progressive_web_app/offline_page=""
progressive_web_app/display=0
progressive_web_app/orientation=1
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color(0, 0, 0, 1)
threads/emscripten_pool_size=8
threads/godot_pool_size=4
[preset.4]
name="Windows"
platform="Windows Desktop"
runnable=true
advanced_options=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="*.esc, *.csv, *.ncsv, *.cfg, *.srt"
exclude_filter="*.xcf, saves/*, scripts/*,vscode-extension-ashes/*"
export_path=""
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.4.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=true
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon="uid://d22lbvlnub5a7"
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name="Uliwood"
application/product_name="Las Gymkhanikas de Uli"
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.5]
name="mac"
platform="macOS"
runnable=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.5.options]
export/distribution_type=1
binary_format/architecture="universal"
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
application/icon="uid://d22lbvlnub5a7"
application/icon_interpolation=4
application/bundle_identifier="org.uliwood.gymkhana"
application/signature=""
application/app_category="Games"
application/short_version=""
application/version=""
application/copyright=""
application/copyright_localized={}
application/min_macos_version_x86_64="10.12"
application/min_macos_version_arm64="11.00"
application/export_angle=0
display/high_res=true
shader_baker/enabled=true
application/additional_plist_content=""
xcode/platform_build="14C18"
xcode/sdk_version="13.1"
xcode/sdk_build="22C55"
xcode/sdk_name="macosx13.1"
xcode/xcode_version="1420"
xcode/xcode_build="14C18"
codesign/codesign=0
codesign/installer_identity=""
codesign/apple_team_id=""
codesign/identity=""
codesign/entitlements/custom_file=""
codesign/entitlements/allow_jit_code_execution=false
codesign/entitlements/allow_unsigned_executable_memory=false
codesign/entitlements/allow_dyld_environment_variables=false
codesign/entitlements/disable_library_validation=false
codesign/entitlements/audio_input=false
codesign/entitlements/camera=false
codesign/entitlements/location=false
codesign/entitlements/address_book=false
codesign/entitlements/calendars=false
codesign/entitlements/photos_library=false
codesign/entitlements/apple_events=false
codesign/entitlements/debugging=false
codesign/entitlements/app_sandbox/enabled=false
codesign/entitlements/app_sandbox/network_server=false
codesign/entitlements/app_sandbox/network_client=false
codesign/entitlements/app_sandbox/device_usb=false
codesign/entitlements/app_sandbox/device_bluetooth=false
codesign/entitlements/app_sandbox/files_downloads=0
codesign/entitlements/app_sandbox/files_pictures=0
codesign/entitlements/app_sandbox/files_music=0
codesign/entitlements/app_sandbox/files_movies=0
codesign/entitlements/app_sandbox/files_user_selected=0
codesign/entitlements/app_sandbox/helper_executables=[]
codesign/entitlements/additional=""
codesign/custom_options=PackedStringArray()
notarization/notarization=0
privacy/microphone_usage_description=""
privacy/microphone_usage_description_localized={}
privacy/camera_usage_description=""
privacy/camera_usage_description_localized={}
privacy/location_usage_description=""
privacy/location_usage_description_localized={}
privacy/address_book_usage_description=""
privacy/address_book_usage_description_localized={}
privacy/calendar_usage_description=""
privacy/calendar_usage_description_localized={}
privacy/photos_library_usage_description=""
privacy/photos_library_usage_description_localized={}
privacy/desktop_folder_usage_description=""
privacy/desktop_folder_usage_description_localized={}
privacy/documents_folder_usage_description=""
privacy/documents_folder_usage_description_localized={}
privacy/downloads_folder_usage_description=""
privacy/downloads_folder_usage_description_localized={}
privacy/network_volumes_usage_description=""
privacy/network_volumes_usage_description_localized={}
privacy/removable_volumes_usage_description=""
privacy/removable_volumes_usage_description_localized={}
privacy/tracking_enabled=false
privacy/tracking_domains=PackedStringArray()
privacy/collected_data/name/collected=false
privacy/collected_data/name/linked_to_user=false
privacy/collected_data/name/used_for_tracking=false
privacy/collected_data/name/collection_purposes=0
privacy/collected_data/email_address/collected=false
privacy/collected_data/email_address/linked_to_user=false
privacy/collected_data/email_address/used_for_tracking=false
privacy/collected_data/email_address/collection_purposes=0
privacy/collected_data/phone_number/collected=false
privacy/collected_data/phone_number/linked_to_user=false
privacy/collected_data/phone_number/used_for_tracking=false
privacy/collected_data/phone_number/collection_purposes=0
privacy/collected_data/physical_address/collected=false
privacy/collected_data/physical_address/linked_to_user=false
privacy/collected_data/physical_address/used_for_tracking=false
privacy/collected_data/physical_address/collection_purposes=0
privacy/collected_data/other_contact_info/collected=false
privacy/collected_data/other_contact_info/linked_to_user=false
privacy/collected_data/other_contact_info/used_for_tracking=false
privacy/collected_data/other_contact_info/collection_purposes=0
privacy/collected_data/health/collected=false
privacy/collected_data/health/linked_to_user=false
privacy/collected_data/health/used_for_tracking=false
privacy/collected_data/health/collection_purposes=0
privacy/collected_data/fitness/collected=false
privacy/collected_data/fitness/linked_to_user=false
privacy/collected_data/fitness/used_for_tracking=false
privacy/collected_data/fitness/collection_purposes=0
privacy/collected_data/payment_info/collected=false
privacy/collected_data/payment_info/linked_to_user=false
privacy/collected_data/payment_info/used_for_tracking=false
privacy/collected_data/payment_info/collection_purposes=0
privacy/collected_data/credit_info/collected=false
privacy/collected_data/credit_info/linked_to_user=false
privacy/collected_data/credit_info/used_for_tracking=false
privacy/collected_data/credit_info/collection_purposes=0
privacy/collected_data/other_financial_info/collected=false
privacy/collected_data/other_financial_info/linked_to_user=false
privacy/collected_data/other_financial_info/used_for_tracking=false
privacy/collected_data/other_financial_info/collection_purposes=0
privacy/collected_data/precise_location/collected=false
privacy/collected_data/precise_location/linked_to_user=false
privacy/collected_data/precise_location/used_for_tracking=false
privacy/collected_data/precise_location/collection_purposes=0
privacy/collected_data/coarse_location/collected=false
privacy/collected_data/coarse_location/linked_to_user=false
privacy/collected_data/coarse_location/used_for_tracking=false
privacy/collected_data/coarse_location/collection_purposes=0
privacy/collected_data/sensitive_info/collected=false
privacy/collected_data/sensitive_info/linked_to_user=false
privacy/collected_data/sensitive_info/used_for_tracking=false
privacy/collected_data/sensitive_info/collection_purposes=0
privacy/collected_data/contacts/collected=false
privacy/collected_data/contacts/linked_to_user=false
privacy/collected_data/contacts/used_for_tracking=false
privacy/collected_data/contacts/collection_purposes=0
privacy/collected_data/emails_or_text_messages/collected=false
privacy/collected_data/emails_or_text_messages/linked_to_user=false
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
privacy/collected_data/emails_or_text_messages/collection_purposes=0
privacy/collected_data/photos_or_videos/collected=false
privacy/collected_data/photos_or_videos/linked_to_user=false
privacy/collected_data/photos_or_videos/used_for_tracking=false
privacy/collected_data/photos_or_videos/collection_purposes=0
privacy/collected_data/audio_data/collected=false
privacy/collected_data/audio_data/linked_to_user=false
privacy/collected_data/audio_data/used_for_tracking=false
privacy/collected_data/audio_data/collection_purposes=0
privacy/collected_data/gameplay_content/collected=false
privacy/collected_data/gameplay_content/linked_to_user=false
privacy/collected_data/gameplay_content/used_for_tracking=false
privacy/collected_data/gameplay_content/collection_purposes=0
privacy/collected_data/customer_support/collected=false
privacy/collected_data/customer_support/linked_to_user=false
privacy/collected_data/customer_support/used_for_tracking=false
privacy/collected_data/customer_support/collection_purposes=0
privacy/collected_data/other_user_content/collected=false
privacy/collected_data/other_user_content/linked_to_user=false
privacy/collected_data/other_user_content/used_for_tracking=false
privacy/collected_data/other_user_content/collection_purposes=0
privacy/collected_data/browsing_history/collected=false
privacy/collected_data/browsing_history/linked_to_user=false
privacy/collected_data/browsing_history/used_for_tracking=false
privacy/collected_data/browsing_history/collection_purposes=0
privacy/collected_data/search_hhistory/collected=false
privacy/collected_data/search_hhistory/linked_to_user=false
privacy/collected_data/search_hhistory/used_for_tracking=false
privacy/collected_data/search_hhistory/collection_purposes=0
privacy/collected_data/user_id/collected=false
privacy/collected_data/user_id/linked_to_user=false
privacy/collected_data/user_id/used_for_tracking=false
privacy/collected_data/user_id/collection_purposes=0
privacy/collected_data/device_id/collected=false
privacy/collected_data/device_id/linked_to_user=false
privacy/collected_data/device_id/used_for_tracking=false
privacy/collected_data/device_id/collection_purposes=0
privacy/collected_data/purchase_history/collected=false
privacy/collected_data/purchase_history/linked_to_user=false
privacy/collected_data/purchase_history/used_for_tracking=false
privacy/collected_data/purchase_history/collection_purposes=0
privacy/collected_data/product_interaction/collected=false
privacy/collected_data/product_interaction/linked_to_user=false
privacy/collected_data/product_interaction/used_for_tracking=false
privacy/collected_data/product_interaction/collection_purposes=0
privacy/collected_data/advertising_data/collected=false
privacy/collected_data/advertising_data/linked_to_user=false
privacy/collected_data/advertising_data/used_for_tracking=false
privacy/collected_data/advertising_data/collection_purposes=0
privacy/collected_data/other_usage_data/collected=false
privacy/collected_data/other_usage_data/linked_to_user=false
privacy/collected_data/other_usage_data/used_for_tracking=false
privacy/collected_data/other_usage_data/collection_purposes=0
privacy/collected_data/crash_data/collected=false
privacy/collected_data/crash_data/linked_to_user=false
privacy/collected_data/crash_data/used_for_tracking=false
privacy/collected_data/crash_data/collection_purposes=0
privacy/collected_data/performance_data/collected=false
privacy/collected_data/performance_data/linked_to_user=false
privacy/collected_data/performance_data/used_for_tracking=false
privacy/collected_data/performance_data/collection_purposes=0
privacy/collected_data/other_diagnostic_data/collected=false
privacy/collected_data/other_diagnostic_data/linked_to_user=false
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
privacy/collected_data/other_diagnostic_data/collection_purposes=0
privacy/collected_data/environment_scanning/collected=false
privacy/collected_data/environment_scanning/linked_to_user=false
privacy/collected_data/environment_scanning/used_for_tracking=false
privacy/collected_data/environment_scanning/collection_purposes=0
privacy/collected_data/hands/collected=false
privacy/collected_data/hands/linked_to_user=false
privacy/collected_data/hands/used_for_tracking=false
privacy/collected_data/hands/collection_purposes=0
privacy/collected_data/head/collected=false
privacy/collected_data/head/linked_to_user=false
privacy/collected_data/head/used_for_tracking=false
privacy/collected_data/head/collection_purposes=0
privacy/collected_data/other_data_types/collected=false
privacy/collected_data/other_data_types/linked_to_user=false
privacy/collected_data/other_data_types/used_for_tracking=false
privacy/collected_data/other_data_types/collection_purposes=0
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

BIN
gymkhana-logo-itch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

View File

@@ -384,6 +384,7 @@
- "cocina_delante_eneko_action2_dialog_option7:Agur"
say($current_player, "Agur yogur!", "cocina_delante_eneko_action2_dialog_end")
done
#!include:
:action3 "turno_cocina_frontal"
if turno_cocina_frontal_debajo_sofa:

View File

@@ -1,8 +1,8 @@
[gd_resource type="Resource" script_class="ESCAnimationResource" load_steps=7 format=3 uid="uid://c4lhcwvjqx5ty"]
[ext_resource type="Script" uid="uid://sksvt0n8gle2" path="res://addons/escoria-core/game/core-scripts/resources/esc_animationresource.gd" id="1"]
[ext_resource type="Script" uid="uid://bxc3dll30x8tl" path="res://addons/escoria-core/game/core-scripts/resources/esc_directionangle.gd" id="2"]
[ext_resource type="Script" uid="uid://clixil1u5exq7" path="res://addons/escoria-core/game/core-scripts/resources/esc_animationname.gd" id="3"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/resources/esc_directionangle.gd" id="2"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/resources/esc_animationname.gd" id="3"]
[sub_resource type="Resource" id="1"]
script = ExtResource("2")
@@ -18,7 +18,7 @@ animation = "speak"
[resource]
script = ExtResource("1")
dir_angles = [SubResource("1")]
directions = [SubResource("2")]
idles = [SubResource("2")]
speaks = [SubResource("3")]
dir_angles = Array[ExtResource("2")]([SubResource("1")])
directions = Array[ExtResource("3")]([SubResource("2")])
idles = Array[ExtResource("3")]([SubResource("2")])
speaks = Array[ExtResource("3")]([SubResource("3")])

View File

@@ -1,8 +1,8 @@
[gd_resource type="Resource" script_class="ESCAnimationResource" load_steps=36 format=3 uid="uid://cyjo7aq0e4hbe"]
[ext_resource type="Script" uid="uid://sksvt0n8gle2" path="res://addons/escoria-core/game/core-scripts/resources/esc_animationresource.gd" id="1"]
[ext_resource type="Script" uid="uid://bxc3dll30x8tl" path="res://addons/escoria-core/game/core-scripts/resources/esc_directionangle.gd" id="2"]
[ext_resource type="Script" uid="uid://clixil1u5exq7" path="res://addons/escoria-core/game/core-scripts/resources/esc_animationname.gd" id="3"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/resources/esc_directionangle.gd" id="2"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/resources/esc_animationname.gd" id="3"]
[sub_resource type="Resource" id="1"]
script = ExtResource("2")
@@ -145,7 +145,7 @@ animation = "idle_up"
[resource]
script = ExtResource("1")
dir_angles = [SubResource("1"), SubResource("2"), SubResource("3"), SubResource("4"), SubResource("5"), SubResource("6"), SubResource("7"), SubResource("8")]
directions = [SubResource("9"), SubResource("10"), SubResource("11"), SubResource("12"), SubResource("13"), SubResource("14"), SubResource("15"), SubResource("16")]
idles = [SubResource("17"), SubResource("18"), SubResource("19"), SubResource("20"), SubResource("21"), SubResource("22"), SubResource("23"), SubResource("24")]
speaks = [SubResource("25"), SubResource("26"), SubResource("27"), SubResource("28"), SubResource("29"), SubResource("30"), SubResource("31"), SubResource("32")]
dir_angles = Array[ExtResource("2")]([SubResource("1"), SubResource("2"), SubResource("3"), SubResource("4"), SubResource("5"), SubResource("6"), SubResource("7"), SubResource("8")])
directions = Array[ExtResource("3")]([SubResource("9"), SubResource("10"), SubResource("11"), SubResource("12"), SubResource("13"), SubResource("14"), SubResource("15"), SubResource("16")])
idles = Array[ExtResource("3")]([SubResource("17"), SubResource("18"), SubResource("19"), SubResource("20"), SubResource("21"), SubResource("22"), SubResource("23"), SubResource("24")])
speaks = Array[ExtResource("3")]([SubResource("25"), SubResource("26"), SubResource("27"), SubResource("28"), SubResource("29"), SubResource("30"), SubResource("31"), SubResource("32")])

View File

@@ -1,3 +1,6 @@
:ready
global achievement_hambrientas
:action1
say($player, "El cuerno de Uli, la llamada para comer.", "cocina_cuerno_action1_say")
@@ -29,5 +32,8 @@
stop
play_video("res://gymkhana/videos/turno_cocina/cuerno_antes_de_tiempo.ogv")
accept_input("ALL")
if not achievement_hambrientas:
unlock_achievement("hambrientas")
set_global("achievement_hambrientas", true)
stop
say($player, "Si lo toco aquí no me va a oir la gente que esté en la huerta, debería buscar un sitio mejor.","cocina_cuerno_action4_say")

View File

@@ -41,8 +41,3 @@
say($player, "4 patatas medianas", "cocina_libro_de_cocina_action3_3")
say($player, "1 kilo exacto de lentejas", "cocina_libro_de_cocina_action3_4")
say($player, "Una cabeza de ajo.", "cocina_libro_de_cocina_action3_5")
inc_global("turno_cocina_libro_leido_count")
if turno_cocina_libro_leido_count == 4:
set_global("turno_cocina_hint_romero", true)
say($player, "Tambien hay un dibujo de una hierba con la palabra ROMERO.","cocina_libro_de_cocina_action3_romero")
set_global("turno_cocina_libro_leido_count", 0)

View File

@@ -2,12 +2,7 @@
say($player, "Hay muchas hierbas.", "cocina_detras_romero_action1_say")
:action2
if !turno_cocina_hint_romero:
say($player, "No sabría cual coger. ¿Y si alguna es venenosa?", "cocina_detras_romero_action2_unknown_say")
else:
say($player, "¡Esta parece romero, si lo echo a las lentejas estarán bien ricas!", "cocina_detras_romero_action2_known_say")
inventory_add($turno_cocina_romero)
set_active($turno_cocina_romero,false)
say($player, "No sabría cual coger. ¿Y si alguna es venenosa?", "cocina_detras_romero_action2_unknown_say")
:action3
say($player, "Romero, el ingrediente secreto para unas lentejas de rechupete.", "cocina_detras_romero_action3_say")

View File

@@ -1,10 +1,10 @@
[gd_scene load_steps=28 format=3 uid="uid://dowbdjo7ka0sq"]
[gd_scene load_steps=29 format=3 uid="uid://dowbdjo7ka0sq"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_room.gd" id="1"]
[ext_resource type="Script" uid="uid://c7fcpp72w3dnj" path="res://addons/escoria-core/game/core-scripts/esc_room.gd" id="1"]
[ext_resource type="PackedScene" uid="uid://cjmsexhyhi4vs" path="res://gymkhana/characters/oier/oier.tscn" id="2"]
[ext_resource type="Texture2D" uid="uid://c8ytapkbj5t4p" path="res://gymkhana/rooms/turno_cocina/cocina/assets/cocina_interior_vista_completa.jpg" id="3_ccj1t"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" id="4"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_location.gd" id="5"]
[ext_resource type="Script" uid="uid://5pbcieq7gpdo" path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" id="4"]
[ext_resource type="Script" uid="uid://beh3ds4eapldu" path="res://addons/escoria-core/game/core-scripts/esc_location.gd" id="5"]
[ext_resource type="Script" uid="uid://ceym82rf2qnxu" path="res://addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd" id="6"]
[ext_resource type="Texture2D" uid="uid://2mw8y41yha5" path="res://gymkhana/rooms/turno_cocina/cocina/assets/depth.png" id="7"]
[ext_resource type="Texture2D" uid="uid://hfsy8yh5msgu" path="res://gymkhana/rooms/turno_cocina/cocina/assets/foreground-mesa.png" id="8"]
@@ -25,6 +25,7 @@
[ext_resource type="PackedScene" uid="uid://bthshk88n0ida" path="res://gymkhana/rooms/turno_cocina/cocina/jarra.tscn" id="22"]
[ext_resource type="PackedScene" uid="uid://byfyg5p0h02br" path="res://gymkhana/rooms/turno_cocina/cocina/jarra_volcada.tscn" id="25"]
[ext_resource type="Script" uid="uid://oaq45tntm70n" path="res://gymkhana/rooms/turno_cocina/cocina/cocina_gas.gd" id="26"]
[ext_resource type="Script" uid="uid://85bledusisk1" path="res://addons/escoria-core/game/core-scripts/esc_dialog_location.gd" id="26_5b7i4"]
[sub_resource type="NavigationPolygon" id="3"]
vertices = PackedVector2Array(2398, 485, 2442, 499, 2446, 617, 2409, 597, 2283, 493, 144, 568, 3, 570, -56, 524, 111, 445, 162, 471, 229, 445, 200, 465, 252, 478, 305, 524, 273, 570, 2287, 687, 2062, 635, 2113, 565, 696, 737, 512, 591, 703, 699, 1269, 739, 1241, 699, 1502, 646, 1409, 752, 1345, 667, 1489, 627, 1347, 563, 1480, 587, 1466, 514, 1345, 505, 1382, 439, 2109, 424, 2238, 386, 1788, 325, 2018, 419, 1787, 383, 1466, 412, 1493, 479, 1305.5, 467, 1337.5, 449, 1306.5, 498)
@@ -506,6 +507,11 @@ metadata/_custom_type_script = "uid://ceym82rf2qnxu"
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="turno_cocina_bandera_palestina"]
polygon = PackedVector2Array(-49, -28, -48, -12, -48, 11, -48, 21, -25, 22, 2, 24, 32, 24, 47, 23, 50, -27, 14, -27, 2, -27, -9, -28, -28, -28, -47, -29)
[node name="ESCDialogLocation" type="Marker2D" parent="turno_cocina_bandera_palestina"]
position = Vector2(0, 123)
script = ExtResource("26_5b7i4")
metadata/_custom_type_script = "uid://85bledusisk1"
[node name="ESCLocation" type="Marker2D" parent="turno_cocina_bandera_palestina"]
position = Vector2(-136, 274)
script = ExtResource("5")

View File

@@ -2,18 +2,14 @@
global achievement_palestina
:action1
play_palestina_music()
say_to_camera($player, "Mientras un pueblo está sufriendo un genocidio, no existe neutralidad, tienes que decidir de que lado estas.", "turno_cocina_bandera_palestina_action1_say")
say_to_camera($player, "Mientras un pueblo está sufriendo un genocidio, no existe la neutralidad, tienes que decidir de que lado estas.", "turno_cocina_bandera_palestina_action1_say")
:action2
play_palestina_music()
accept_input("SKIP")
say_to_camera($player, "La ocupación de Palestina no empezó el 7 de octubre de 2023 si no con la proclamación del Estado de Israel en 1948.", "turno_cocina_bandera_palestina_action2_say_1")
say_to_camera($player, "Desde los ataques del 7 de octubre de 2023, Israel ha llevado a cabo una ofensiva militar que según Amnistía Internacional y otras organizaciones, reúne los elementos del crimen de genocidio contra la población palestina de Gaza.", "turno_cocina_bandera_palestina_action2_say_2")
walk_block($player, $turno_cocina_bandera_palestina_second, false)
say_to_camera($player, "Las acciones deliberadas asesinatos masivos, desplazamientos forzados, bloqueo del acceso a alimentos, agua y medicinas y la retórica deshumanizadora de las autoridades israelíes demuestran una intención de destruir total o parcialmente al pueblo palestino.", "turno_cocina_bandera_palestina_action2_say_3")
say_to_camera($player, "La impunidad de Israel frente a las resoluciones internacionales perpetúa la ocupación, el apartheid y el genocidio contra la población palestina.", "turno_cocina_bandera_palestina_action2_say_4")
accept_input("ALL")
say($turno_cocina_bandera_palestina, "La ocupación de Palestina no empezó el 7 de octubre de 2023 si no con la proclamación del Estado de Israel en 1948.", "turno_cocina_bandera_palestina_action2_say_1")
say($turno_cocina_bandera_palestina, "Desde los ataques del 7 de octubre de 2023, Israel ha llevado a cabo una ofensiva militar que según Amnistía Internacional y otras organizaciones, reúne los elementos del crimen de genocidio contra la población palestina de Gaza.", "turno_cocina_bandera_palestina_action2_say_2")
say($turno_cocina_bandera_palestina, "Las acciones deliberadas asesinatos masivos, desplazamientos forzados, bloqueo del acceso a alimentos, agua y medicinas y la retórica deshumanizadora de las autoridades israelíes demuestran una intención de destruir total o parcialmente al pueblo palestino.", "turno_cocina_bandera_palestina_action2_say_3")
say($turno_cocina_bandera_palestina, "La impunidad de Israel frente a las resoluciones internacionales perpetúa la ocupación, el apartheid y el genocidio contra la población palestina.", "turno_cocina_bandera_palestina_action2_say_4")
if not achievement_palestina:
unlock_achievement("palestina")
set_global("achievement_palestina", true)

View File

@@ -35,7 +35,7 @@
set_active($cocina_fregadero_der, false)
set_active($cocina_puerta_delante, false)
set_active($cocina_puerta_detras, false)
set_active($turno_cocina_cuerno, false)
set_interactive($turno_cocina_cuerno, false)
set_interactive($cocina_patata, false)
set_active($cocina_debajo_sofa, false)
set_active($turno_cocina_jarra, false)
@@ -57,8 +57,8 @@
set_active($cocina_fregadero_der, true)
set_active($cocina_puerta_delante, true)
set_active($cocina_puerta_detras, true)
set_active($turno_cocina_cuerno, true)
set_active($cocina_patata, true)
set_interactive($turno_cocina_cuerno, true)
set_interactive($cocina_patata, true)
set_active($cocina_debajo_sofa, true)
if turno_cocina_mikel_playing:

View File

@@ -1,10 +1,10 @@
[gd_scene load_steps=19 format=3 uid="uid://dwvu5kn7qr35s"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_room.gd" id="1"]
[ext_resource type="Script" uid="uid://c7fcpp72w3dnj" path="res://addons/escoria-core/game/core-scripts/esc_room.gd" id="1"]
[ext_resource type="PackedScene" uid="uid://cjmsexhyhi4vs" path="res://gymkhana/characters/oier/oier.tscn" id="2"]
[ext_resource type="Texture2D" uid="uid://b8re6n31thdb" path="res://gymkhana/rooms/turno_cocina/cocina_delante/assets/delante_cocina_full.jpg" id="3_us6ip"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" id="4"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_location.gd" id="5"]
[ext_resource type="Script" uid="uid://5pbcieq7gpdo" path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" id="4"]
[ext_resource type="Script" uid="uid://beh3ds4eapldu" path="res://addons/escoria-core/game/core-scripts/esc_location.gd" id="5"]
[ext_resource type="Script" uid="uid://ceym82rf2qnxu" path="res://addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd" id="6"]
[ext_resource type="Texture2D" uid="uid://dhj8k3ro2vayg" path="res://gymkhana/rooms/turno_cocina/cocina_delante/assets/light.png" id="6_ugqpr"]
[ext_resource type="Texture2D" uid="uid://js3u7hbljn2x" path="res://gymkhana/rooms/turno_cocina/cocina_delante/assets/depth.png" id="7"]

View File

@@ -51,6 +51,12 @@ func _on_show_credits_button_up() -> void:
. set_trans(Tween.TRANS_SINE)
. connect("finished", _on_summary_hide_finish)
)
(
create_tween()
. tween_property(%Credits, "modulate:a", 0.0, 0.8)
. from(1.0)
. set_trans(Tween.TRANS_SINE)
)
var script = escoria.esc_compiler.load_esc_file(
"res://gymkhana/rooms/turno_cocina/creditos/esc/creditos.esc", "creditos"
)

View File

@@ -1,17 +1,17 @@
[gd_scene load_steps=21 format=3 uid="uid://csb7hwb1v016e"]
[ext_resource type="Script" uid="uid://c7fcpp72w3dnj" path="res://addons/escoria-core/game/core-scripts/esc_room.gd" id="1"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_room.gd" id="1"]
[ext_resource type="PackedScene" uid="uid://cjmsexhyhi4vs" path="res://gymkhana/characters/oier/oier.tscn" id="2"]
[ext_resource type="Texture2D" uid="uid://dc7j1xq3x7gwp" path="res://gymkhana/rooms/turno_cocina/creditos/assets/background.png" id="3"]
[ext_resource type="Texture2D" uid="uid://dvofjrubnnone" path="res://gymkhana/rooms/turno_cocina/creditos/assets/background.png" id="3"]
[ext_resource type="PackedScene" uid="uid://fgwob47tewuf" path="res://gymkhana/rooms/turno_cocina/creditos/ScrollingText.tscn" id="4"]
[ext_resource type="PackedScene" uid="uid://bgiskd55j17fc" path="res://gymkhana/rooms/turno_cocina/creditos/EnekoDancing.tscn" id="5"]
[ext_resource type="Texture2D" uid="uid://budal8dqwrifr" path="res://gymkhana/logo-small.png" id="6"]
[ext_resource type="Texture2D" uid="uid://bgfi7t6khinjw" path="res://gymkhana/logo-small.png" id="6"]
[ext_resource type="Script" uid="uid://ib2j5oleakyb" path="res://gymkhana/rooms/turno_cocina/creditos/SceneHandler.gd" id="7"]
[ext_resource type="PackedScene" uid="uid://dg3q322t7b34f" path="res://gymkhana/rooms/turno_cocina/creditos/OierDancing.tscn" id="9"]
[ext_resource type="PackedScene" uid="uid://ch5d4emoxq6t4" path="res://addons/escoria-ui-return-monkey-island/achievements/summary/rtmi_achievement_summary.tscn" id="9_oudlg"]
[ext_resource type="Script" uid="uid://elqkwjm0r5c7" path="res://addons/escoria-ui-return-monkey-island/menus/rtmi_menu_button.gd" id="10_f1tcv"]
[ext_resource type="Script" uid="uid://ceym82rf2qnxu" path="res://addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd" id="11_f1tcv"]
[ext_resource type="Script" uid="uid://85bledusisk1" path="res://addons/escoria-core/game/core-scripts/esc_dialog_location.gd" id="12_ys4o4"]
[ext_resource type="Script" path="res://addons/escoria-core/game/core-scripts/esc_dialog_location.gd" id="12_ys4o4"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ys4o4"]
@@ -88,6 +88,7 @@ unique_name_in_owner = true
layout_mode = 2
[node name="Credits" type="Button" parent="Summary/CenterContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 8
theme_override_font_sizes/font_size = 10

View File

@@ -11,12 +11,12 @@
set_global("turno_cocina_credits_dancers_visible", true)
accept_input("SKIP")
if turno_cocina_perfect_score:
say($oier_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_oier")
say($eneko_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_eneko")
say($oier_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_oier")
say($eneko_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_eneko")
say($oier_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_oier")
say($eneko_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_eneko")
say($oier_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_oier_1")
say($eneko_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_eneko_1")
say($oier_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_oier_2")
say($eneko_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_eneko_2")
say($oier_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_oier_3")
say($eneko_dancing, "Perfect!", "turno_cocina_creditos_perfect_score_eneko_3")
else:
say($oier_dancing, "Enhorabuena! Guarda tu puntuación, para que todo el mundo la vea.", "turno_cocina_creditos_score_1")
say($eneko_dancing, "Si consigues todos los logros entrarás en la lista de puntuaciones perfectas.", "turno_cocina_creditos_score_2")

View File

@@ -42,8 +42,8 @@ navigation_polygon = SubResource("60")
process_mode = 1
position = Vector2(863, 175)
script = ExtResource("6")
global_id = "turno_cocina_despensa_puerta_exterior"
custom_cursor = "east"
global_id = "turno_cocina_despensa_puerta_exterior"
esc_script = "res://gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc"
combine_when_selected_action_is_in = PackedStringArray()
is_exit = true

Some files were not shown because too many files have changed in this diff Show More