Compare commits

..

105 Commits

Author SHA1 Message Date
jonathan 49fa5d08de Added fun button 2025-08-14 20:21:13 +02:00
jonathan 1ee9dea9f6 Fixes in project 2025-08-14 06:30:38 +02:00
jonathan d5fa2f88be Created LanguageTool Plugin 2025-08-14 06:30:17 +02:00
jonathan 8676bbb2f6 Fix spelling 2025-08-13 17:13:33 +02:00
jonathan 6e998810b6 Completed first demo quest line 2025-08-13 03:23:45 +02:00
jonathan c96be7467e Added Quest field 2025-08-11 19:15:12 +02:00
Jonathan 6aa7530502 Added speed hack for vesna 2025-08-06 21:25:28 +02:00
Jonathan d7ac1c6c22 Fixed retrigger yeli dialog 2025-08-06 20:04:24 +02:00
Jonathan 0170a53b5a Added more quest stuff including dialogic quest condition 2025-08-06 18:20:38 +02:00
cblech abc33fd06c Added first quests 2025-08-06 18:19:52 +02:00
cblech 2fbeb93018 Dialogic quest addition and plugin fix 2025-08-06 18:19:08 +02:00
Jonathan 9253a78a06 Merge pull request 'feature/showcase_bugfixing_kathi' (#14) from feature/showcase_bugfixing_kathi into develop
Reviewed-on: #14
2025-08-06 18:16:53 +02:00
kziolkowski 0008b16d48 Adjusted moving values and animations to make vesna not slide any more 2025-08-02 15:32:13 +02:00
kziolkowski 8e0dced918 Vesna can walk diagonally now 2025-08-02 15:08:38 +02:00
kziolkowski 2e21fb7e98 Made sure splash screen features logo 2025-08-02 13:55:11 +02:00
kziolkowski b69191e7f7 fixed pickup layering 2025-08-02 13:46:01 +02:00
kziolkowski 8f75b5b644 Added secondary outline mat and assigned it to inventory items 2025-08-02 13:38:07 +02:00
kziolkowski 6275bea52c MAde Vesna and Yeli disappear on dialogic start 2025-07-31 23:30:12 +02:00
kziolkowski 279cac22ee Fixed dialogic settings 2025-07-31 23:25:43 +02:00
kziolkowski e88ba2e1ef Updated interaction area setups to avoid nullrefs 2025-07-31 23:08:10 +02:00
kziolkowski f01143e887 cleaned up dialogue structure and removed vesna2 from dialogues 2025-07-31 22:09:37 +02:00
kziolkowski 18711776bb Fixed output error ERROR: Script class can only be set together with base class name 2025-07-31 21:45:22 +02:00
kziolkowski 0f246825fc Added Wellbehaviour and fixed door interaction to offer outlines 2025-07-31 20:36:17 +02:00
kziolkowski 19e30dd0b8 Removed disclaimer reference from bootstrap 2025-07-31 20:35:49 +02:00
kziolkowski 730c4999d7 Extracted FightAttack Enum in the hopes of fixing errors 2025-07-31 20:35:24 +02:00
kziolkowski cfe604d3b7 set duck body scale to 1,1 2025-07-31 18:55:06 +02:00
kziolkowski ad16b86171 wip exchanging interaction label with outline 2025-07-27 13:17:34 +02:00
kziolkowski 5ee295256b Fixed Yeli Layering issue in indoor scene 2025-07-26 17:05:17 +02:00
kziolkowski ab23d41496 Fixed ysorting on ducks and trash 2025-07-26 16:51:05 +02:00
Jonathan ae0944fe00 Merge pull request 'feature/showcase_kathi' (#12) from feature/showcase_kathi into develop
Reviewed-on: #12
2025-07-23 12:37:47 +02:00
kziolkowski 486cfb5546 WIP trying to fix the last plant stage bug on repeated farming rounds 2025-07-17 22:10:08 +02:00
kziolkowski b92eb909ad Removed no longer needed print statements 2025-07-17 20:47:34 +02:00
kziolkowski d2c7302ab2 Fixed farming (the way it was before) 2025-07-17 20:44:28 +02:00
kziolkowski 5affc48dc5 Added scene transitions between fighting scene, credits, and start 2025-07-11 04:12:42 +02:00
kziolkowski cdb6b83124 Merge remote-tracking branch 'origin/feature/fight_system' into feature/showcase_kathi 2025-07-11 03:55:56 +02:00
kziolkowski a4f9511892 WIP fixing farming mechanic again 2025-07-11 03:55:36 +02:00
cblech cc7e8c5c4b Added Credits 2025-07-11 03:49:09 +02:00
kziolkowski 7a3e96d679 Merge remote-tracking branch 'origin/feature/fight_system' into feature/showcase_kathi 2025-07-11 03:13:08 +02:00
kziolkowski e38c391e1c Reworked flow to make it playable somehow 2025-07-11 03:12:29 +02:00
cblech c0e002f783 made you win waiting time shorter 2025-07-11 03:01:49 +02:00
cblech e8850ca7c5 Added chuga dialog to fight scene 2025-07-11 03:00:47 +02:00
kziolkowski eaedf8c396 WIP Beetroot 2025-07-11 03:00:43 +02:00
kziolkowski ffa20bbdf8 Added trash to first outdoor scene 2025-07-11 00:56:51 +02:00
kziolkowski b77b6e3a52 Added second outdoor scene after tutorial 2025-07-11 00:17:31 +02:00
cblech 69cb63ad89 merge auto fixes 2025-07-11 00:15:28 +02:00
cblech 11790434f5 Merge remote-tracking branch 'origin/feature/showcase_kathi' into feature/fight_system 2025-07-11 00:11:33 +02:00
kziolkowski c7d56301fc Added counter script to count ducks (and other things) 2025-07-10 23:58:33 +02:00
cblech 8bd2b09232 Added healing 2025-07-10 23:32:16 +02:00
kziolkowski 480d149ede SceneTransition Rework completed 2025-07-10 23:23:20 +02:00
cblech c6fc400994 Added second fight with mavkha 2025-07-10 19:30:57 +02:00
kziolkowski 16251db248 WIP new SceneTransition system 2025-07-10 19:07:46 +02:00
cblech 4752002caf Added action per round 2025-07-10 18:29:18 +02:00
cblech 0e028a2cb9 Renamed signal 2025-07-10 16:12:47 +02:00
cblech 01a281c2aa Fixed camera bounds 2025-07-10 16:04:12 +02:00
cblech 2a46d363e9 Changed music to forrest 2025-07-10 15:43:36 +02:00
cblech 92c3f5e054 Target only alive enemies 2025-07-10 15:25:11 +02:00
cblech 6727339e9a Added audio to fight 2025-07-10 04:39:33 +02:00
cblech e3d67722de Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/fight_system 2025-07-10 03:47:40 +02:00
cblech b6fd6292e3 Basic fighting system 2025-07-10 03:38:48 +02:00
kziolkowski e8c24e18be Added indoor bedroom scene 2025-07-10 01:25:52 +02:00
kziolkowski 199d0873c8 Set up beetroot quest and added cat to indoor scene. 2025-07-10 01:19:00 +02:00
kziolkowski e84ef716f6 Merge remote-tracking branch 'origin/feature_sanel-dialogic' into feature/showcase_kathi
# Conflicts:
#	project.godot
2025-07-09 23:53:40 +02:00
kziolkowski 135ba0d198 Reworked Domovoi kitchen animation and added AnimationStarter script 2025-07-09 23:50:43 +02:00
kziolkowski 202f8809aa Fixed plant layering issue 2025-07-09 23:03:56 +02:00
kziolkowski 28bb81c0b0 Added fence gates and fixed dialogic toggle for inventory 2025-07-09 22:58:36 +02:00
kziolkowski b9c5de6dc3 Made labels visible on ducks 2025-07-09 22:49:07 +02:00
kziolkowski 8c18688a69 MVP duck setup 2025-07-09 22:40:03 +02:00
kziolkowski 2429958741 Added Disclaimer scene 2025-07-09 21:40:02 +02:00
kziolkowski 6b5a8ee126 WIP duck behaviour 2025-07-09 20:52:43 +02:00
kziolkowski 8d40529349 Changed StartScreen layout and added Quit button 2025-07-09 20:52:33 +02:00
kziolkowski 9e97cc3b80 WIP duck pushing behaviour 2025-07-08 23:53:50 +02:00
kziolkowski ebc3ee9cf9 Implemented basic duck running away from vesna mechanic 2025-07-08 22:23:28 +02:00
kziolkowski a1bbe44105 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/showcase_kathi 2025-07-08 21:33:59 +02:00
kziolkowski 3ce10c8ba9 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/showcase_kathi 2025-07-08 21:33:37 +02:00
kziolkowski 7e6163ed68 updated project.godot 2025-07-07 21:16:36 +02:00
kziolkowski 55d6222698 Added Camera to Indoor Common Room scene and renamend scene asset 2025-07-07 16:37:10 +02:00
kziolkowski d7ad2ba072 reverted / recreated inventory changes 2025-07-07 16:14:07 +02:00
kziolkowski 9c50a63dc3 Merge branch 'develop' into feature/showcase_kathi 2025-07-07 15:34:53 +02:00
kziolkowski ec653aa847 readded camera ref to farming behaviour 2025-07-07 01:17:41 +02:00
kziolkowski 9acea54f28 Added duck sprite 2025-07-07 00:46:57 +02:00
kziolkowski 2f5296e05a Diversified field shapes 2025-07-06 23:48:01 +02:00
kziolkowski e8a58655ad Added grass textures and field borders 2025-07-06 23:28:02 +02:00
kziolkowski aa3789566c Duplicated sunflower field parallaxe layer to ensure seamlessness on big screens 2025-07-06 22:00:39 +02:00
kziolkowski 9c7ae20c18 Reworked Camera controls outside scene 2025-07-06 21:56:15 +02:00
Nao 9f04c8819f SFX for Mavkas (Voices but more "ghostly") Added 2025-07-06 20:20:03 +02:00
Nao 6cd7be196b SFX Wolf + Mavka Voices (when hit in battle) Added 2025-07-06 20:11:50 +02:00
kziolkowski ab2cf3f497 wateringcanstate uid? 2025-07-06 12:26:07 +02:00
kziolkowski bf096aa716 visual improvements on farm scene 2025-07-06 12:25:44 +02:00
Nao 6de8368414 Farm Atmos Added 2025-07-05 23:23:39 +02:00
Nao d20085a67c SFX Water Attack Added (Vesna + Slimes) 2025-07-05 23:17:58 +02:00
Nao 648ae8395b SFX added for Root Attack, Mavka + Vesna 2025-07-05 23:01:43 +02:00
Nao b68eb0953e SFX Duck Flügelflattern "Wings" + Schlappentornado Added 2025-07-05 21:51:19 +02:00
Nao 7eb18caaaf Added SFX for Healing magic 2025-07-02 21:24:21 +02:00
Nao e65e82f421 Added SFX Duck & Combat, moved Cat SFX to folder "animals" 2025-07-02 21:23:36 +02:00
Nao 691e613a5c Added SFX for Combat 2025-06-28 17:04:20 +02:00
Nao 250f0d07ca SFX Slime Hit Variations (Pitch) Added 2025-06-17 15:43:33 +02:00
Nao f481f5bea7 SFX Added: UI (Dialog + Confirmation), Slime Hit 2025-06-17 15:39:02 +02:00
Nao b8cb60aec9 Placeholder for Quest Fail added 2025-06-02 16:06:52 +02:00
Nao 55a3e56791 New SFX for Door added 2025-06-02 15:56:36 +02:00
Nao 4261789f13 SFX Quest Complete Placeholder added (need more time) 2025-05-18 20:34:00 +02:00
Nao ce18c89c09 Farm Atmos Nighttime added 2025-05-18 19:21:51 +02:00
Nao 7643cccebf New SFX and Forest Atmos Nighttime added 2025-05-18 19:04:02 +02:00
Nao 7e4d733d7c SFX for kitchen added (cutlery, plates, etc) and a few renamed 2025-05-18 17:52:59 +02:00
Nao 1dcd900737 SFX Snoring Added 2025-05-18 15:33:02 +02:00
Nao 74c3540c96 SFX Door Open and Close added 2025-05-18 15:10:08 +02:00
510 changed files with 18070 additions and 971 deletions
+8 -1
View File
@@ -1,5 +1,12 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAudioStreamPlayer2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F848324b1c23114c3f5e8bbb5a42c4ade394c59a7a7a133a66b76581ca571_003FAudioStreamPlayer2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4298b0f293f987511fc1b7956ee691fd778f8378_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F48fad7e7f3c9e292b3fdbddf9d363f0d1752aa_003FBabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3c92637ae2e83da0a63791071c41eae291d594156062866d8621b7ed7245c_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd111abf504bf42b5968a609b168fd093b2e200_003Fbb_003F1c116fcd_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterBody2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fbba0bbd7a98ee58286e9484fbe86e01afff6232283f6efd3556eb7116453_003FCharacterBody2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADictionary_00602_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003Fhome_003Fjonathan_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fd4_003Fbd338aeb_003FDictionary_00602_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
+22
View File
@@ -0,0 +1,22 @@
@tool
extends EditorPlugin
func _enter_tree() -> void:
if !ProjectSettings.has_setting("babushka/hacks/speed_hack"):
ProjectSettings.set_setting("babushka/hacks/speed_hack",-1)
var property_info = {
"name": "babushka/hacks/speed_hack",
"type": TYPE_FLOAT,
"hint": PROPERTY_HINT_RANGE,
"hint_string": "-1,20,0.5"
}
ProjectSettings.add_property_info(property_info)
ProjectSettings.set_initial_value("babushka/hacks/speed_hack",-1)
func _exit_tree() -> void:
# Clean-up of the plugin goes here.
pass
@@ -0,0 +1 @@
uid://buwfplh0xji8q
+7
View File
@@ -0,0 +1,7 @@
[plugin]
name="BabushkaHelpers"
description=""
author="Cozy Raven"
version=""
script="babushkahelpers.gd"
+2
View File
@@ -95,6 +95,8 @@ func _make_visible(visible:bool) -> void:
func _save_external_data() -> void:
if _editor_view_and_manager_exist():
editor_view.editors_manager.save_current_resource()
DialogicResourceUtil.update_directory('.tres')
func _get_unsaved_status(for_scene:String) -> String:
@@ -0,0 +1,55 @@
@tool
extends DialogicEvent
class_name DialogicQuestActivateEvent
# Define properties of the event here
var quest_resource: String
func _execute() -> void:
var resource = ResourceLoader.load(quest_resource)
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.AVAILABLE)
QuestManager.SetFollowQuest(resource)
finish() # called to continue with the next event
#region INITIALIZE
################################################################################
# Set fixed settings of this event
func _init() -> void:
event_name = "Activate Quest"
event_category = "Quest"
#endregion
#region SAVING/LOADING
################################################################################
func get_shortcode() -> String:
return "quest_activate"
func get_shortcode_parameters() -> Dictionary:
return {
#param_name : property_info
"quest_resource" : {"property": "quest_resource", "default": ""},
}
# You can alternatively overwrite these 3 functions: to_text(), from_text(), is_valid_event()
#endregion
#region EDITOR REPRESENTATION
################################################################################
func build_event_editor() -> void:
add_header_label("Activate Quest")
add_header_edit(
"quest_resource",
ValueType.DYNAMIC_OPTIONS,
{
"mode":2,
"suggestions_func":QuestEventUtils.quest_resource_suggestrions
})
#endregion
@@ -0,0 +1 @@
uid://br3a7napsjmg3
@@ -0,0 +1,55 @@
@tool
extends DialogicEvent
class_name DialogicQuestCompleteEvent
# Define properties of the event here
var quest_resource: String
func _execute() -> void:
var resource = ResourceLoader.load(quest_resource)
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.DONE)
QuestManager.SetFollowQuest(null)
finish() # called to continue with the next event
#region INITIALIZE
################################################################################
# Set fixed settings of this event
func _init() -> void:
event_name = "Complete Quest"
event_category = "Quest"
#endregion
#region SAVING/LOADING
################################################################################
func get_shortcode() -> String:
return "quest_complete"
func get_shortcode_parameters() -> Dictionary:
return {
#param_name : property_info
"quest_resource" : {"property": "quest_resource", "default": ""},
}
# You can alternatively overwrite these 3 functions: to_text(), from_text(), is_valid_event()
#endregion
#region EDITOR REPRESENTATION
################################################################################
func build_event_editor() -> void:
add_header_label("Complete Quest")
add_header_edit(
"quest_resource",
ValueType.DYNAMIC_OPTIONS,
{
"mode":2,
"suggestions_func":QuestEventUtils.quest_resource_suggestrions
})
#endregion
@@ -0,0 +1 @@
uid://c8mtjwpe7c0h
@@ -0,0 +1,163 @@
@tool
extends DialogicEvent
class_name DialogicQuestConditionEvent
## Event that allows branching a timeline based on a condition.
#enum ConditionTypes {IF, ELIF, ELSE}
### Settings
## condition type (see [ConditionTypes]). Defaults to if.
#var condition_type := ConditionTypes.IF
## The condition as a string. Will be executed as an Expression.
#var condition := ""
var quest_resource: String
var compare_status: QuestEventUtils.QuestStatusOrActive
################################################################################
## EXECUTE
################################################################################
func _execute() -> void:
var resource = ResourceLoader.load(quest_resource)
var result: bool
if compare_status == QuestEventUtils.QuestStatusOrActive.ACTIVE:
result = QuestManager.GetFollowQuest() == resource
elif compare_status == QuestEventUtils.QuestStatusOrActive.NOT_ACTIVE:
result = QuestManager.GetFollowQuest() != resource
else:
result = QuestManager.GetQuestStatus(resource).status == compare_status
if not result:
var idx: int = dialogic.current_event_idx
var ignore := 1
while true:
idx += 1
if not dialogic.current_timeline.get_event(idx) or ignore == 0:
break
elif dialogic.current_timeline.get_event(idx).can_contain_events:
ignore += 1
elif dialogic.current_timeline.get_event(idx) is DialogicEndBranchEvent:
ignore -= 1
dialogic.current_event_idx = idx-1
finish()
## only called if the previous event was an end-branch event
## return true if this event should be executed if the previous event was an end-branch event
func should_execute_this_branch() -> bool:
return true
################################################################################
## INITIALIZE
################################################################################
func _init() -> void:
event_name = "Quest Condition"
set_default_color('Color3')
event_category = "Quest"
event_sorting_index = 1
can_contain_events = true
# return a control node that should show on the END BRANCH node
func get_end_branch_control() -> Control:
return load(get_script().resource_path.get_base_dir().path_join('ui_quest_condition_end.tscn')).instantiate()
################################################################################
## SAVING/LOADING
################################################################################
func to_text() -> String:
return 'ifquest ' + quest_resource + ', ' + str(compare_status) + ':'
func from_text(string:String) -> void:
#if string.strip_edges().begins_with('if'):
# condition = string.strip_edges().trim_prefix('if ').trim_suffix(':').strip_edges()
# condition_type = ConditionTypes.IF
var strings:Array[String]
strings.assign(string.strip_edges().trim_prefix('ifquest ').trim_suffix(':').strip_edges().split(','))
quest_resource = strings[0].strip_edges()
var compare_string: String = strings[1].strip_edges()
if compare_string.is_valid_int():
compare_status = compare_string.to_int()
else:
compare_status = QuestEventUtils.QuestStatusOrActive.get(compare_string)
func is_valid_event(string:String) -> bool:
if string.strip_edges().begins_with('ifquest '):
return true
return false
################################################################################
## EDITOR REPRESENTATION
################################################################################
func build_event_editor() -> void:
add_header_label("IF")
add_header_edit(
"quest_resource",
ValueType.DYNAMIC_OPTIONS,
{
"mode":2,
"suggestions_func":QuestEventUtils.quest_resource_suggestrions
})
add_header_label("IS")
add_header_edit("compare_status",ValueType.FIXED_OPTIONS,{
'options': [
{
'label': 'HIDDEN',
'value': QuestEventUtils.QuestStatusOrActive.HIDDEN,
},
{
'label': 'AVAILABLE',
'value': QuestEventUtils.QuestStatusOrActive.AVAILABLE,
},
{
'label': 'DONE',
'value': QuestEventUtils.QuestStatusOrActive.DONE,
},
{
'label': 'CANCLED',
'value': QuestEventUtils.QuestStatusOrActive.CANCLED,
},
{
'label': 'ACTIVE',
'value': QuestEventUtils.QuestStatusOrActive.ACTIVE,
},
{
'label': 'NOT_ACTIVE',
'value': QuestEventUtils.QuestStatusOrActive.NOT_ACTIVE,
}
]})
func _get_icon() -> Resource:
return load("res://addons/dialogic/Modules/Condition/icon.svg")
####################### CODE COMPLETION ########################################
################################################################################
func _get_code_completion(CodeCompletionHelper:Node, TextNode:TextEdit, line:String, _word:String, symbol:String) -> void:
pass
func _get_start_code_completion(_CodeCompletionHelper:Node, TextNode:TextEdit) -> void:
TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'ifquest', 'ifquest ', TextNode.syntax_highlighter.code_flow_color)
#################### SYNTAX HIGHLIGHTING #######################################
################################################################################
func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary:
var word := line.get_slice(' ', 0)
dict[line.find(word)] = {"color":Highlighter.code_flow_color}
dict[line.find(word)+len(word)] = {"color":Highlighter.normal_color}
dict = Highlighter.color_condition(dict, line)
return dict
@@ -0,0 +1 @@
uid://b2ggc2f5kh61j
@@ -0,0 +1,43 @@
@tool
class_name QuestEventUtils
enum QuestStatus{
HIDDEN = 0,
AVAILABLE = 1,
DONE = 2,
CANCLED = 3
}
enum QuestStatusOrActive{
HIDDEN = 0,
AVAILABLE = 1,
DONE = 2,
CANCLED = 3,
ACTIVE = 4,
NOT_ACTIVE = 5
}
static func quest_resource_suggestrions(search_text:String) -> Dictionary:
var ret_val = {}
var quest_paths = get_all_file_paths("res://resources/quests")
for path in quest_paths:
var res = ResourceLoader.load(path)
ret_val[res.id]= {"value":path, "tooltip":res.title + "\n\n" + res.description}
return ret_val
static func get_all_file_paths(path: String) -> Array[String]:
var file_paths: Array[String] = []
var dir = DirAccess.open(path)
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != "":
var file_path = path + "/" + file_name
if dir.current_is_dir():
file_paths += get_all_file_paths(file_path)
else:
file_paths.append(file_path)
file_name = dir.get_next()
return file_paths
@@ -0,0 +1 @@
uid://d1x2343wpkdku
+9
View File
@@ -0,0 +1,9 @@
@tool
extends DialogicIndexer
func _get_events() -> Array:
return [
this_folder.path_join('event_quest_activate.gd'),
this_folder.path_join('event_quest_complete.gd'),
this_folder.path_join('event_quest_condition.gd')
]
@@ -0,0 +1 @@
uid://wup1fvm05rqv
@@ -0,0 +1,51 @@
@tool
extends HBoxContainer
var parent_resource: DialogicEvent = null
func _ready() -> void:
$AddElif.button_up.connect(add_elif)
$AddElse.button_up.connect(add_else)
func refresh() -> void:
if parent_resource is DialogicQuestConditionEvent:
# hide add elif and add else button on ELSE event
$AddElif.visible = false# parent_resource.condition_type != DialogicConditionEvent.ConditionTypes.ELSE
$AddElse.visible = true# parent_resource.condition_type != DialogicConditionEvent.ConditionTypes.ELSE
$Label.text = "End of If Quest" #"End of "+["IF", "ELIF", "ELSE"][parent_resource.condition_type]+" ("+parent_resource.condition+")"
# hide add add else button if followed by ELIF or ELSE event
var timeline_editor := find_parent('VisualEditor')
if timeline_editor:
var next_event: DialogicEvent = null
if timeline_editor.get_block_below(get_parent()):
next_event = timeline_editor.get_block_below(get_parent()).resource
if next_event is DialogicConditionEvent:
if next_event.condition_type != DialogicConditionEvent.ConditionTypes.IF:
$AddElse.hide()
#if parent_resource.condition_type == DialogicConditionEvent.ConditionTypes.ELSE:
# $Label.text = "End of ELSE"
else:
hide()
func add_elif() -> void:
var timeline := find_parent('VisualEditor')
if timeline:
var resource := DialogicConditionEvent.new()
resource.condition_type = DialogicConditionEvent.ConditionTypes.ELIF
timeline.add_event_undoable(resource, get_parent().get_index()+1)
timeline.indent_events()
timeline.something_changed()
func add_else() -> void:
var timeline := find_parent('VisualEditor')
if timeline:
var resource := DialogicConditionEvent.new()
resource.condition_type = DialogicConditionEvent.ConditionTypes.ELSE
timeline.add_event_undoable(resource, get_parent().get_index()+1)
timeline.indent_events()
timeline.something_changed()
@@ -0,0 +1 @@
uid://dlrnhnnonum4o
@@ -0,0 +1,20 @@
[gd_scene load_steps=2 format=3 uid="uid://dnrpcgjkyoiau"]
[ext_resource type="Script" uid="uid://dlrnhnnonum4o" path="res://addons/dialogic_additions/Quest/ui_condition_end.gd" id="1_f3miq"]
[node name="Condition_End" type="HBoxContainer"]
offset_right = 90.0
offset_bottom = 23.0
script = ExtResource("1_f3miq")
[node name="Label" type="Label" parent="."]
layout_mode = 2
text = "End of condition X"
[node name="AddElif" type="Button" parent="."]
layout_mode = 2
text = "Add Elif"
[node name="AddElse" type="Button" parent="."]
layout_mode = 2
text = "Add Else"
@@ -0,0 +1,510 @@
{
"swagger": "2.0",
"info": {
"title": "LanguageTool API",
"description": "Check texts for style and grammar issues with <a href='https://languagetool.org'>LanguageTool</a>. Please consider the following default limitations:<ul><li>your daily request limit depending on <a href='https://languagetool.org/editor/settings/access-tokens'>your plan</a> <li>maximum number of requests per minute: 20 (free) / 80 (Premium) <li>maximum number of characters per minute: 75,000 (free) / 300,000 (Premium) <li>maximum number of characters per request: 20,000 (free) / 60,000 (Premium) <li>for the free version, also consider the <a href='https://dev.languagetool.org/public-http-api'>limitations documented here</a> <li><b>Note:</b> any parameters or outputs not part of this documentation are internal and must not be relied on</ul> Need more generous limits? Just <a href='https://languagetool.org/proofreading-api'>contact us</a>.",
"version": "1.1.2"
},
"host": "api.languagetoolplus.com",
"schemes": [
"https"
],
"basePath": "/v2",
"produces": [
"application/json"
],
"paths": {
"/check": {
"post": {
"summary": "Check a text",
"description": "The main feature - check a text with LanguageTool for possible style and grammar issues.",
"parameters": [
{
"name": "text",
"in": "formData",
"type": "string",
"description": "The text to be checked. This or 'data' is required.",
"required": false
},
{
"name": "data",
"in": "formData",
"type": "string",
"description": "The text to be checked, given as a JSON document that specifies what's text and what's markup. This or 'text' is required. Markup will be ignored when looking for errors. Example text: <pre>A &lt;b>test&lt;/b></pre>JSON for the example text: <pre>{\"annotation\":[\n {\"text\": \"A \"},\n {\"markup\": \"&lt;b>\"},\n {\"text\": \"test\"},\n {\"markup\": \"&lt;/b>\"}\n]}</pre> <p>If you have markup that should be interpreted as whitespace, like <tt>&lt;p&gt;</tt> in HTML, you can have it interpreted like this: <pre>{\"markup\": \"&lt;p&gt;\", \"interpretAs\": \"\\n\\n\"}</pre><p>The 'data' feature is not limited to HTML or XML, it can be used for any kind of markup. Entities will need to be expanded in this input.",
"required": false
},
{
"name": "language",
"in": "formData",
"type": "string",
"description": "A language code like `en-US`, `de-DE`, `fr`, or `auto` to guess the language automatically (see `preferredVariants` below). For languages with variants (English, German, Portuguese) spell checking will only be activated when you specify the variant, e.g. `en-GB` instead of just `en`.",
"required": true
},
{
"name": "username",
"in": "formData",
"type": "string",
"description": "Set to get Premium API access: Your username/email as used to log in at languagetool.org."
},
{
"name": "apiKey",
"in": "formData",
"type": "string",
"format": "password",
"description": "Set to get Premium API access: <a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>your API key</a>"
},
{
"name": "dicts",
"in": "formData",
"type": "string",
"description": "Comma-separated list of dictionaries to include words from; uses special default dictionary if this is unset"
},
{
"name": "motherTongue",
"in": "formData",
"type": "string",
"description": "A language code of the user's native language, enabling false friends checks for some language pairs."
},
{
"name": "preferredVariants",
"in": "formData",
"type": "string",
"description": "Comma-separated list of preferred language variants. The language detector used with `language=auto` can detect e.g. English, but it cannot decide whether British English or American English is used. Thus this parameter can be used to specify the preferred variants like `en-GB` and `de-AT`. Only available with `language=auto`. You should set variants for at least German and English, as otherwise the spell checking will not work for those, as no spelling dictionary can be selected for just `en` or `de`."
},
{
"name": "enabledRules",
"in": "formData",
"type": "string",
"description": "IDs of rules to be enabled, comma-separated. Note that 'level' still applies, so the rule won't run unless 'level' is set to a level that activates the rule."
},
{
"name": "disabledRules",
"in": "formData",
"type": "string",
"description": "IDs of rules to be disabled, comma-separated"
},
{
"name": "enabledCategories",
"in": "formData",
"type": "string",
"description": "IDs of categories to be enabled, comma-separated"
},
{
"name": "disabledCategories",
"in": "formData",
"type": "string",
"description": "IDs of categories to be disabled, comma-separated"
},
{
"name": "enabledOnly",
"in": "formData",
"type": "boolean",
"default": false,
"description": "If true, only the rules and categories whose IDs are specified with `enabledRules` or `enabledCategories` are enabled."
},
{
"name": "level",
"in": "formData",
"type": "string",
"enum": ["default", "picky"],
"description": "If set to `picky`, additional rules will be activated, i.e. rules that you might only find useful when checking formal text."
}
],
"responses": {
"200": {
"description": "the result of checking the text",
"schema": {
"properties": {
"software": {
"type": "object",
"required": [
"name",
"version",
"buildDate",
"apiVersion"
],
"properties": {
"name": {
"type": "string",
"description": "Usually 'LanguageTool'."
},
"version": {
"type": "string",
"description": "A version string like '3.3' or '3.4-SNAPSHOT'."
},
"buildDate": {
"type": "string",
"description": "Date when the software was built, e.g. '2016-05-25'."
},
"apiVersion": {
"type": "integer",
"description": "Version of this API response. We don't expect to make incompatible changes, so this can also be increased for newly added fields."
},
"status": {
"type": "string",
"description": "An optional warning, e.g. when the API format is not stable."
},
"premium": {
"type": "boolean",
"description": "true if you're using a Premium account with all the premium text checks (since LanguageTool 4.2)"
}
}
},
"language": {
"type": "object",
"description": "The language used for checking the text.",
"required": [
"name",
"code",
"detectedLanguage"
],
"properties": {
"name": {
"type": "string",
"description": "Language name like 'French' or 'English (US)'."
},
"code": {
"type": "string",
"description": "ISO 639-1 code like 'en', 'en-US', or 'ca-ES-valencia'"
},
"detectedLanguage": {
"type": "object",
"description": "The automatically detected text language (might be different from the language actually used for checking).",
"required": [
"name",
"code"
],
"properties": {
"name": {
"type": "string",
"description": "Language name like 'French' or 'English (US)'."
},
"code": {
"type": "string",
"description": "ISO 639-1 code like 'en', 'en-US', or 'ca-ES-valencia'."
}
}
}
}
},
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"message",
"offset",
"length",
"replacements",
"context",
"sentence"
],
"properties": {
"message": {
"type": "string",
"description": "Message about the error displayed to the user."
},
"shortMessage": {
"type": "string",
"description": "An optional shorter version of 'message'."
},
"offset": {
"type": "integer",
"description": "The 0-based character offset of the error in the text."
},
"length": {
"type": "integer",
"description": "The length of the error in characters."
},
"replacements": {
"type": "array",
"description": "Replacements that might correct the error. The array can be empty, in this case there is no suggested replacement.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "the replacement string"
}
}
}
},
"context": {
"type": "object",
"required": [
"text",
"offset",
"length"
],
"properties": {
"text": {
"type": "string",
"description": "Context of the error, i.e. the error and some text to the left and to the left."
},
"offset": {
"type": "integer",
"description": "The 0-based character offset of the error in the context text."
},
"length": {
"type": "integer",
"description": "The length of the error in characters in the context."
}
}
},
"sentence": {
"type": "string",
"description": "The sentence the error occurred in (since LanguageTool 4.0 or later)"
},
"rule": {
"type": "object",
"required": [
"id",
"description",
"category"
],
"properties": {
"id": {
"type": "string",
"description": "An rule's identifier that's unique for this language."
},
"subId": {
"type": "string",
"description": "An optional sub identifier of the rule, used when several rules are grouped."
},
"description": {
"type": "string"
},
"urls": {
"type": "array",
"description": "An optional array of URLs with a more detailed description of the error.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "the URL"
}
}
}
},
"issueType": {
"type": "string",
"description": "The <a href=\"http://www.w3.org/International/multilingualweb/lt/drafts/its20/its20.html#lqissue-typevalues\">Localization Quality Issue Type</a>. This is not defined for all languages, in which case it will always be 'Uncategorized'."
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A category's identifier that's unique for this language."
},
"name": {
"type": "string",
"description": "A short description of the category."
}
}
}
}
}
}
}
}
}
}
}
}
}
},
"/languages": {
"get": {
"summary": "Get a list of supported languages.",
"responses": {
"200": {
"description": "An array of language objects.",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"code",
"longCode"
],
"properties": {
"name": {
"type": "string",
"description": "a language name like 'French' or 'English (Australia)'"
},
"code": {
"type": "string",
"description": "a language code like 'en'"
},
"longCode": {
"type": "string",
"description": "a language code like 'en-US' or 'ca-ES-valencia'"
}
}
}
}
}
}
}
},
"/words": {
"get": {
"summary": "List words in dictionaries",
"description": "List words in the user's personal dictionaries.",
"parameters": [
{
"name": "offset",
"in": "query",
"type": "integer",
"description": "Offset of where to start in the list of words. Defaults to 0."
},
{
"name": "limit",
"in": "query",
"type": "integer",
"description": "Maximum number of words to return. Defaults to 10."
},
{
"name": "username",
"in": "query",
"type": "string",
"description": "Your username as used to log in at languagetool.org.",
"required": true
},
{
"name": "apiKey",
"in": "query",
"type": "string",
"format": "password",
"description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>",
"required": true
},
{
"name": "dicts",
"in": "query",
"type": "string",
"description": "Comma-separated list of dictionaries to include words from; uses special default dictionary if this is unset"
}
],
"responses": {
"200": {
"description": "the user's words from the given user dictionaries",
"schema": {
"properties": {
"words": {
"type": "array",
"description": "array of words",
"items": {
"type": "string"
}
}
}
}
}
}
}
},
"/words/add": {
"post": {
"summary": "Add word to a dictionary",
"description": "Add a word to one of the user's personal dictionaries. Please note that this feature is considered to be used for personal dictionaries which must not contain more than 500 words. If this is an issue for you, please contact us.",
"parameters": [
{
"name": "word",
"in": "formData",
"type": "string",
"description": "The word to be added. Must not be a phrase, i.e. cannot contain white space. The word is added to a global dictionary that applies to all languages.",
"required": true
},
{
"name": "username",
"in": "formData",
"type": "string",
"description": "Your username as used to log in at languagetool.org.",
"required": true
},
{
"name": "apiKey",
"in": "formData",
"type": "string",
"format": "password",
"description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>",
"required": true
},
{
"name": "dict",
"in": "formData",
"type": "string",
"description": "Name of the dictionary to add the word to; non-existent dictionaries are created after calling this; if unset, adds to special default dictionary"
}
],
"responses": {
"200": {
"description": "the result of adding the word",
"schema": {
"properties": {
"added": {
"type": "boolean",
"description": "true if the word has been added. false means the word hasn't been added because it had been added before."
}
}
}
}
}
}
},
"/words/delete": {
"post": {
"summary": "Remove word from a dictionary",
"description": "Remove a word from one of the user's personal dictionaries.",
"parameters": [
{
"name": "word",
"in": "formData",
"type": "string",
"description": "The word to be removed.",
"required": true
},
{
"name": "username",
"in": "formData",
"type": "string",
"description": "Your username as used to log in at languagetool.org.",
"required": true
},
{
"name": "apiKey",
"in": "formData",
"type": "string",
"format": "password",
"description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>",
"required": true
},
{
"name": "dict",
"in": "formData",
"type": "string",
"description": "Name of the dictionary to remove the word from; if the dictionary is empty upon calling this, it is deleted; if unset, removes from special default dictionary"
}
],
"responses": {
"200": {
"description": "the result of removing the word",
"schema": {
"properties": {
"deleted": {
"type": "boolean",
"description": "true if the word has been removed. false means the word hasn't been removed because it was not in the dictionary."
}
}
}
}
}
}
}
}
}
+18
View File
@@ -0,0 +1,18 @@
@tool
extends EditorPlugin
var plugin: LanguagetToolPlugin
func _enter_tree() -> void:
plugin = LanguagetToolPlugin.new()
add_child(plugin)
EditorInterface.get_inspector().edited_object_changed.connect(_inspector_edited_object_changed)
func _inspector_edited_object_changed():
plugin.check_new_inspector();
func _exit_tree() -> void:
pass
+1
View File
@@ -0,0 +1 @@
uid://fm32qkudo8sp
+7
View File
@@ -0,0 +1,7 @@
[plugin]
name="LanguageTool"
description="Check texts for style and grammar issues with LanguageTool. "
author="Jonathan @ Cozy Raven Interactive"
version=""
script="languagetool.gd"
@@ -0,0 +1,110 @@
[gd_scene load_steps=3 format=3 uid="uid://dxalawvo2ji7p"]
[ext_resource type="Script" uid="uid://dkyiuvuc2w2xc" path="res://addons/languagetool/scripts/language_tool_correction_overlay_references.gd" id="1_rh5c2"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hdqxg"]
bg_color = Color(0.145098, 0.145098, 0.145098, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.0784314, 0.0784314, 0.0784314, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[node name="CorrectionOverlay" type="VBoxContainer"]
offset_right = 408.0
offset_bottom = 181.0
size_flags_horizontal = 0
size_flags_vertical = 0
script = ExtResource("1_rh5c2")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 15
theme_override_constants/margin_right = 15
theme_override_constants/margin_bottom = 15
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_hdqxg")
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="CategoryLabel" type="Label" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 11
text = "Rechtschreibung"
autowrap_mode = 3
[node name="CloseButton" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 11
text = "X"
[node name="Spacer" type="Control" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 4)
layout_mode = 2
[node name="DescriptionLabel" type="Label" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/paragraph_spacing = 0
text = "Ensure spelling is correct"
autowrap_mode = 3
[node name="Spacer2" type="Control" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 2)
layout_mode = 2
[node name="Replacements" type="HFlowContainer" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Button" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button2" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button3" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button4" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Hello world!!!"
[node name="Button5" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button6" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button7" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
@@ -0,0 +1,41 @@
@tool
extends Node
class_name LanguageToolCorrectionOverlay
const CORRECTION_OVERLAY = preload("res://addons/languagetool/scenes/correction_overlay.tscn")
var instantiatedOverlay: LanguageToolCorrectionOverlayReferences
func _enter_tree() -> void:
instantiatedOverlay = CORRECTION_OVERLAY.instantiate()
add_child(instantiatedOverlay)
hideOverlay()
func _ready():
instantiatedOverlay.close_button.pressed.connect(hideOverlay)
func _exit_tree() -> void:
pass
func hideOverlay():
instantiatedOverlay.hide()
func showOverlay(position:Vector2, width: float, _match:LanguageToolApiWrapper.LanguageToolCheckResponse.Match, replacement_clicked : Callable):
#print(instantiatedOverlay.test)
instantiatedOverlay.show()
instantiatedOverlay.global_position = position
instantiatedOverlay.size = Vector2(0,0)
instantiatedOverlay.custom_minimum_size = Vector2(width, 0)
instantiatedOverlay.category_label.text = _match.rule.category.name
instantiatedOverlay.description_label.text = _match.message
for c in instantiatedOverlay.replacements.get_children():
c.free()
for r in _match.replacements:
var replacementButton = Button.new()
replacementButton.text = r
replacementButton.size_flags_horizontal = Control.SIZE_EXPAND_FILL
replacementButton.pressed.connect(func():replacement_clicked.call(r))
instantiatedOverlay.replacements.add_child(replacementButton)
@@ -0,0 +1 @@
uid://ct2t8rr000prq
@@ -0,0 +1,9 @@
@tool
extends VBoxContainer
class_name LanguageToolCorrectionOverlayReferences
@onready var category_label: Label = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CategoryLabel
@onready var description_label: Label = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/DescriptionLabel
@onready var replacements: HFlowContainer = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements
@onready var close_button: Button = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CloseButton
@@ -0,0 +1 @@
uid://dkyiuvuc2w2xc
@@ -0,0 +1,32 @@
extends SyntaxHighlighter
class_name LanguageToolErrorSyntaxHighlighter
var check:LanguageToolApiWrapper.LanguageToolCheckResponse
func _init(check:LanguageToolApiWrapper.LanguageToolCheckResponse):
self.check = check
func _get_line_syntax_highlighting(line: int) -> Dictionary:
var normalColor = EditorInterface.get_base_control().get_theme_color("font_color", "Editor")
var errorColor = EditorInterface.get_base_control().get_theme_color("error_color", "Editor")
var warningColor = EditorInterface.get_base_control().get_theme_color("warning_color", "Editor")
var successColor = EditorInterface.get_base_control().get_theme_color("success_color", "Editor")
var retval = {}
for m:LanguageToolApiWrapper.LanguageToolCheckResponse.Match in check.matches:
var row_column = LanguageToolUtils.offset_to_row_column(m.offset,get_text_edit().text)
if row_column[0] != line:
continue
match m.rule.category.id:
"GRAMMAR":
retval[row_column[1]] = {"color":warningColor}
"TYPOS":
retval[row_column[1]] = {"color":errorColor}
_:
retval[row_column[1]] = {"color":successColor}
retval[row_column[1]+m.length] = {"color":normalColor}
return retval
@@ -0,0 +1 @@
uid://csxcr0bsetagc
@@ -0,0 +1,112 @@
extends Node
class_name LanguagetToolPlugin
var api: LanguageToolApiWrapper
var overlay: LanguageToolCorrectionOverlay
var checkDict: Dictionary[String,LanguageToolApiWrapper.LanguageToolCheckResponse] = {}
func _enter_tree() -> void:
api = LanguageToolApiWrapper.new()
add_child(api)
overlay = LanguageToolCorrectionOverlay.new()
add_child(overlay)
func _exit_tree() -> void:
pass
func check_new_inspector():
overlay.hideOverlay()
var textEdits: Array[TextEdit] = _find_multiline_text_edits()
for te: TextEdit in textEdits:
te.text_changed.connect(func():_on_text_changed(te))
te.focus_exited.connect(func():_on_focus_lost(te))
te.caret_changed.connect(func():_on_caret_changed(te))
_check_text(te)
_mark_errors_in_text(te)
func _on_text_changed(textEdit: TextEdit):
_mark_errors_in_text(textEdit)
overlay.hideOverlay()
func _on_focus_lost(textEdit: TextEdit):
_check_text(textEdit)
_mark_errors_in_text(textEdit)
func _on_caret_changed(textEdit: TextEdit):
if(!checkDict.has(textEdit.text)):
return
var check: LanguageToolApiWrapper.LanguageToolCheckResponse = checkDict[textEdit.text]
# find match at caret
var caret_offset:int = LanguageToolUtils.row_column_to_offset(textEdit.get_caret_line(), textEdit.get_caret_column(),textEdit.text)
var _match:LanguageToolApiWrapper.LanguageToolCheckResponse.Match = null
for m in check.matches:
if m.offset <= caret_offset and m.offset + m.length >= caret_offset:
_match = m
break
if _match != null:
var edit_global_rect = textEdit.get_global_rect()
overlay.showOverlay(
edit_global_rect.position + Vector2(0,edit_global_rect.size.y),
edit_global_rect.size.x,
_match,
func(newText):_apply_text_change(textEdit,newText,_match))
else:
overlay.hideOverlay()
pass
func _check_text(textEdit: TextEdit):
if textEdit.text == "":
return
if checkDict.has(textEdit.text):
return
var response = api.check(textEdit.text)
checkDict[textEdit.text] = response
func _mark_errors_in_text(textEdit: TextEdit):
if(!checkDict.has(textEdit.text)):
textEdit.syntax_highlighter=null
return
var check: LanguageToolApiWrapper.LanguageToolCheckResponse = checkDict[textEdit.text]
textEdit.syntax_highlighter = LanguageToolErrorSyntaxHighlighter.new(check)
func _apply_text_change(textEdit:TextEdit, newText: String, _match:LanguageToolApiWrapper.LanguageToolCheckResponse.Match):
var oldText = textEdit.text
var removedOldWord = oldText.erase(_match.offset,_match.length)
var newWordInserted = removedOldWord.insert(_match.offset,newText)
textEdit.text = newWordInserted
textEdit.text_changed.emit()
overlay.hideOverlay()
_check_text(textEdit)
_mark_errors_in_text(textEdit)
func _find_multiline_text_edits()->Array[TextEdit]:
var multilinteTexts:Array[Node] = _find_recursive(
EditorInterface.get_inspector().get_child(0).get_child(2),
"EditorPropertyMultilineText");
var textEditors:Array[TextEdit]
textEditors.assign( multilinteTexts.map(func(c):return c.get_child(0).get_child(0) as TextEdit))
return textEditors
func _find_recursive(node: Node, type: Variant) -> Array[Node]:
if type is String:
if node.get_class() == type:
return [node]
elif is_instance_of(node, type):
return [node]
var retval: Array[Node] = []
for child in node.get_children():
retval.append_array(_find_recursive(child, type))
return retval
@@ -0,0 +1 @@
uid://bi8yv26eglkso
@@ -0,0 +1,32 @@
@tool
extends Object
class_name LanguageToolUtils
static func offset_to_row_column(offset:int, text:String)->Vector2i:
var row:int = 0
var column:int = 0
if offset > text.length():
return Vector2i(-1,-1)
for i in offset:
if text[i] == "\n":
row+=1
column = 0
else:
column+=1
return Vector2i(row, column)
static func row_column_to_offset(row:int, column:int, text:String) -> int:
var current_row:int = 0
var current_column:int = 0
for i in text.length():
if current_row == row and current_column == column:
return i
if text[i] == "\n":
current_row += 1
current_column = 0
else:
current_column += 1
return -1
@@ -0,0 +1 @@
uid://q01v4f8pfgfe
@@ -0,0 +1,211 @@
@tool
class_name LanguageToolApiWrapper
extends Node
const BASE_URL := "https://api.languagetoolplus.com/v2"
func _make_request(endpoint: String, method: HTTPClient.Method = HTTPClient.METHOD_GET, data: Dictionary = {}, headers: Dictionary = {}):
var url = BASE_URL + endpoint
var scheme_split = url.split("://")
var scheme = scheme_split[0]
var rest = scheme_split[1]
var host_and_path = rest.split("/", false, 1)
var host = host_and_path[0]
var path = "/" + host_and_path[1] if host_and_path.size() > 1 else "/"
var port = 443 if scheme == "https" else 80
var client = HTTPClient.new()
var tlsOptions: TLSOptions = (TLSOptions.client() if scheme == "https" else null)
var err = client.connect_to_host(host, port, tlsOptions)
if err != OK:
push_error("Failed to connect to host: " + str(err))
return null
while client.get_status() in [HTTPClient.STATUS_CONNECTING, HTTPClient.STATUS_RESOLVING]:
client.poll()
OS.delay_msec(10)
var header_array = []
for k in headers.keys():
header_array.append(str(k) + ": " + str(headers[k]))
var body = ""
if method == HTTPClient.METHOD_POST:
body = ""
if data.size() > 0:
body = client.query_string_from_dict(data)
header_array.append("Content-Type: application/x-www-form-urlencoded")
header_array.append("Content-Length: " + str(body.length()))
client.request(HTTPClient.METHOD_POST, path, header_array, body)
else:
if data.size() > 0:
path += "?" + client.query_string_from_dict(data)
client.request(HTTPClient.METHOD_GET, path, header_array)
while client.get_status() == HTTPClient.STATUS_REQUESTING:
client.poll()
OS.delay_msec(10)
var response = ""
while client.get_status() == HTTPClient.STATUS_BODY or client.has_response():
client.poll()
var chunk = client.read_response_body_chunk()
if chunk.size() == 0:
break
response += chunk.get_string_from_utf8()
OS.delay_msec(10)
var resp_code = client.get_response_code()
if resp_code != 200:
push_error("HTTP error: " + str(resp_code) + "\\n" + response)
return null
var json = JSON.new()
var json_err = json.parse(response)
if json_err != OK:
push_error("JSON parse error: " + str(json_err) + "\\n" + response)
return null
return json.get_data()
func check(text: String, language: String = "auto", opts: Dictionary = {}) -> LanguageToolCheckResponse:
var data = {
"text": text,
"language": language
}
for k in opts.keys():
data[k] = opts[k]
print("Checking text: "+text)
return LanguageToolCheckResponse.new(_make_request("/check", HTTPClient.METHOD_POST, data))
func get_languages():
return _make_request("/languages", HTTPClient.METHOD_GET)
func list_words(username: String, apiKey: String, offset: int = 0, limit: int = 10, dicts: String = ""):
var data = {
"username": username,
"apiKey": apiKey,
"offset": offset,
"limit": limit
}
if dicts != "":
data["dicts"] = dicts
return _make_request("/words", HTTPClient.METHOD_GET, data)
func add_word(word: String, username: String, apiKey: String, dict: String = ""):
var data = {
"word": word,
"username": username,
"apiKey": apiKey
}
if dict != "":
data["dict"] = dict
return _make_request("/words/add", HTTPClient.METHOD_POST, data)
func delete_word(word: String, username: String, apiKey: String, dict: String = ""):
var data = {
"word": word,
"username": username,
"apiKey": apiKey
}
if dict != "":
data["dict"] = dict
return _make_request("/words/delete", HTTPClient.METHOD_POST, data)
static func percent_encode(text: String) -> String:
return text.uri_encode()
class LanguageToolCheckResponse:
# Software info
var software_name: String
var software_version: String
var software_build_date: String
var software_api_version: int
var software_status: String = ""
var software_premium: bool = false
# Language info
var language_name: String
var language_code: String
var detected_language_name: String
var detected_language_code: String
# Match structure
class Match:
var message: String
var short_message: String = ""
var offset: int
var length: int
var replacements: Array[String] = []
var context_text: String
var context_offset: int
var context_length: int
var sentence: String
class Rule:
var id: String
var sub_id: String = ""
var description: String
var urls: Array[String] = []
var issue_type: String = ""
class Category:
var id: String
var name: String
var category: Category
var rule: Rule
var matches: Array[Match] = []
func _init(response: Variant) -> void:
# Parse software
var sw = response.software if response.has("software") else {}
software_name = sw.name if sw.has("name") else ""
software_version = sw.version if sw.has("version") else ""
software_build_date = sw.buildDate if sw.has("buildDate") else ""
software_api_version = sw.apiVersion if sw.has("apiVersion") else 0
software_status = sw.status if sw.has("status") else ""
software_premium = sw.premium if sw.has("premium") else false
# Parse language
var lang = response.language if response.has("language") else {}
language_name = lang.name if lang.has("name") else ""
language_code = lang.code if lang.has("code") else ""
var det_lang = lang.detectedLanguage if lang.has("detectedLanguage") else {}
detected_language_name = det_lang.name if det_lang.has("name") else ""
detected_language_code = det_lang.code if det_lang.has("code") else ""
# Parse matches
matches = []
var matches_arr = response.matches if response.has("matches") else []
for m in matches_arr:
var _match = Match.new()
_match.message = m.message if m.has("message") else ""
_match.short_message = m.shortMessage if m.has("shortMessage") else ""
_match.offset = m.offset if m.has("offset") else 0
_match.length = m.length if m.has("length") else 0
#_match.replacements = []
var replacements_arr = m.replacements if m.has("replacements") else []
for r in replacements_arr:
_match.replacements.append(r.value if r.has("value") else "")
var ctx = m.context if m.has("context") else {}
_match.context_text = ctx.text if ctx.has("text") else ""
_match.context_offset = ctx.offset if ctx.has("offset") else 0
_match.context_length = ctx.length if ctx.has("length") else 0
_match.sentence = m.sentence if m.has("sentence") else ""
var rule_dict = m.rule if m.has("rule") else {}
var rule = Match.Rule.new()
rule.id = rule_dict.id if rule_dict.has("id") else ""
rule.sub_id = rule_dict.subId if rule_dict.has("subId") else ""
rule.description = rule_dict.description if rule_dict.has("description") else ""
#rule.urls = []
var urls_arr = rule_dict.urls if rule_dict.has("urls") else []
for u in urls_arr:
rule.urls.append(u.value if u.has("value") else "")
rule.issue_type = rule_dict.issueType if rule_dict.has("issueType") else ""
var cat = rule_dict.category if rule_dict.has("category") else {}
var category = Match.Rule.Category.new()
category.id = cat.id if cat.has("id") else ""
category.name = cat.name if cat.has("name") else ""
rule.category = category
_match.rule = rule
matches.append(_match)
@@ -0,0 +1 @@
uid://bkyd022t8ugkw
+8
View File
@@ -0,0 +1,8 @@
@tool
extends EditorScript
func _run():
var api = LanguageToolApiWrapper.new()
EditorInterface.get_base_control().add_child(api)
var result = api.check("Hello this is a santence how are you")
print(result.matches[0])
@@ -0,0 +1 @@
uid://77jt5suj0wdj
@@ -0,0 +1,47 @@
@tool
extends EditorScript
var testButton: Button
func _run():
#var selected: Node = EditorInterface.get_inspector().get_child(0).get_child(2)
#_print_info(selected)
#print((EditorInterface.get_inspector().get_child(0).get_child(2).get_child(-1) as Button).text)
#print((selected as LineEdit).text)
#(selected as LineEdit).insert_text_at_caret("hello")
#(selected as LineEdit).text_changed.emit((selected as LineEdit).text)
#print(selected.get_class())
#print(is_instance_of(selected, EditorPropertyText))
#print(_find_recursive(selected,"EditorPropertyMultilineText")[0].get_child(0).get_child(0).get_class())
#print(_find_recursive(selected,"EditorPropertyText")[0].get_child(0).get_child(0).get_class())
testButton = Button.new()
testButton.text = "Remove this button"
#testButton.global_position = Vector2(1904.0, 305.0)
testButton.pressed.connect(
func():
testButton.get_parent().remove_child(testButton)
testButton.queue_free()
)
EditorInterface.get_base_control().add_child(testButton)
pass
func _print_info(node: Control):
print("Name: "+node.name)
print("Children:")
for child in node.get_children():
print(" - "+child.name)
func _find_recursive(node: Node, type: Variant) -> Array[Node]:
if type is String:
if node.get_class() == type:
return [node]
elif is_instance_of(node, type):
return [node]
var retval: Array[Node] = []
for child in node.get_children():
retval.append_array(_find_recursive(child, type))
return retval
@@ -0,0 +1 @@
uid://t6f7snttaggn
Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hvchk6t0xe7j"
path="res://.godot/imported/Ente.png-21ead71377d82aa0401b2345b9713a4b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animals/Ente.png"
dest_files=["res://.godot/imported/Ente.png-21ead71377d82aa0401b2345b9713a4b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4q12jiligcl7"
path="res://.godot/imported/katze.png-0faf4775b24cd38949e4c4160b5ed047.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animals/katze.png"
dest_files=["res://.godot/imported/katze.png-0faf4775b24cd38949e4c4160b5ed047.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bexymddkb6l0o"
path="res://.godot/imported/mavkha.png-ab393dd20d4b3f3a305dd600f518b5fe.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/Mavka/mavkha.png"
dest_files=["res://.godot/imported/mavkha.png-ab393dd20d4b3f3a305dd600f518b5fe.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 476 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bgba1uv0muxat"
path="res://.godot/imported/chugeist_tmp.png-ff2e3a6be0ff4b186834b14d159443da.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/chugeist_tmp.png"
dest_files=["res://.godot/imported/chugeist_tmp.png-ff2e3a6be0ff4b186834b14d159443da.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ccy6bwunhfvrf"
path="res://.godot/imported/Babushka_house_frontDoor.png-345830acb7ae8cbbb97011f89455fd91.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/farm/Babushka_house_frontDoor.png"
dest_files=["res://.godot/imported/Babushka_house_frontDoor.png-345830acb7ae8cbbb97011f89455fd91.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5ade1s2ijunu"
path="res://.godot/imported/beetroot_icon.png-aef760d681bd7ef4c12802c6da8d93f5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/farm/farming/farmobjekte/beetroot/beetroot_icon.png"
dest_files=["res://.godot/imported/beetroot_icon.png-aef760d681bd7ef4c12802c6da8d93f5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://xtci0n8tquc0"
path="res://.godot/imported/beetroot_00.png-0c2234fc9109ef4b2bb1c7f568ee2fc7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/farm/farming/farmobjekte/beetroot_00.png"
dest_files=["res://.godot/imported/beetroot_00.png-0c2234fc9109ef4b2bb1c7f568ee2fc7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blb3agipyxnal"
path="res://.godot/imported/fence_door.png-19eb021073131bf04d1c242c32b3c026.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/farm/farming/farmobjekte/zaun/fence_door.png"
dest_files=["res://.godot/imported/fence_door.png-19eb021073131bf04d1c242c32b3c026.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bgmdn7uo215q2"
path="res://.godot/imported/RuslanDisplay-Regular.ttf-b21277db87f732a1d4e67ed29c642ff3.fontdata"
[deps]
source_file="res://art/fonts/RuslanDisplay-Regular.ttf"
dest_files=["res://.godot/imported/RuslanDisplay-Regular.ttf-b21277db87f732a1d4e67ed29c642ff3.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}
Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cugtxcfuds31r"
path="res://.godot/imported/Babushka_bg_01.png-0c232a7f5bf4d34c794d027da500ca6b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/indoor/Babushka_bg_01.png"
dest_files=["res://.godot/imported/Babushka_bg_01.png-0c232a7f5bf4d34c794d027da500ca6b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
+102
View File
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 5687 1551" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-2967,0)">
<g id="Cozy-Raven-Logo-breit" serif:id="Cozy Raven Logo breit" transform="matrix(2.29248,0,0,0.625226,2967.64,0)">
<rect x="0" y="0" width="2480.32" height="2480.32" style="fill:none;"/>
<g transform="matrix(0.436208,0,0,1.59942,166.053,-1670.67)">
<g transform="matrix(0.206025,0,0,0.289757,-1186.1,-352.084)">
<g id="rabe" transform="matrix(11.4916,0,0,8.17082,3293.63,-8360.45)">
<g transform="matrix(0.44279,0,0,0.44279,-2784.62,911.446)">
<path d="M9093.2,2236.52L9115.98,2240.43C9167.2,2253.76 9168.8,2284.95 9189.66,2329.1C9138.91,2343.37 9117.71,2368.99 9109.42,2396.97C9107.81,2402.4 9106.69,2407.91 9105.93,2413.44C9104.99,2417.49 9104.54,2421.39 9104.58,2425.14C9104.48,2429.06 9104.51,2443.26 9104.58,2462.99C9104.58,2511.29 9104.59,2574.25 9104.6,2636.4C9103.54,2634.38 9102.52,2632.31 9101.55,2630.19C9099.08,2624.78 9096.93,2619.01 9095.19,2612.78C9091.98,2600.57 9090.17,2586.65 9090.2,2573.24C9090.38,2508.74 9096.85,2433.25 8986.93,2406.91C8989.55,2405.7 8992.14,2404.43 8994.7,2403.13C9011.35,2394.63 9026.82,2384.15 9040.81,2372C9055.93,2358.87 9069.32,2343.78 9080.57,2327.14C9085.77,2319.44 9090.52,2311.41 9094.78,2303.08C9093.73,2300.03 9092.69,2296.57 9091.67,2292.52C9087.98,2277.85 9087.23,2256.61 9087.4,2239.07C9089.31,2238.28 9091.25,2237.43 9093.2,2236.52Z" style="fill:rgb(242,135,183);"/>
</g>
<g id="Tasse">
<g transform="matrix(0.44279,0,0,0.44279,-1189.24,911.446)">
<path d="M5586.66,2329.1C5613.12,2321.66 5647.62,2317.3 5692.51,2317.3C5819.54,2317.3 5874.08,2340.4 5893.03,2392.34C5897.93,2405.8 5900.45,2421.19 5901.22,2438.61L5901.25,2475.31C6048.49,2529.94 5987.72,2703.16 5901.44,2733.12L5901.48,2793.24C5901.52,2845.18 5862.12,2888.66 5810.44,2893.73C5735.82,2901.17 5659.53,2899.87 5581.53,2889.53C5568.38,2887.82 5556.18,2883.38 5545.48,2876.82C5552.57,2868.87 5558.27,2860.45 5562.81,2851.86C5586.85,2806.44 5578.83,2756.42 5576.47,2748.78C5560.49,2697.11 5522.49,2676.14 5501.59,2636.4C5501.58,2574.25 5501.57,2511.29 5501.57,2462.99L5501.57,2433.06C5501.65,2426.56 5502.03,2419.99 5502.93,2413.44C5503.69,2407.91 5504.81,2402.4 5506.41,2396.97C5514.7,2368.99 5535.91,2343.37 5586.66,2329.1ZM5692.88,2437.58C5622.87,2439.34 5553.73,2427.99 5545.97,2392.92C5538.69,2360.07 5581.36,2345.57 5628.34,2339.39L5705.61,2335.1C5721.88,2335.16 5733.77,2335.7 5737.28,2335.86C5740.73,2336.15 5860.41,2329.11 5846.43,2400.22C5842.92,2418.11 5774.35,2434.11 5703.54,2437.21C5706.38,2492.15 5706.65,2510.71 5702.06,2581.99C5726.51,2578.57 5750.55,2577.23 5762.55,2582.38C5776.99,2588.58 5776.71,2737.16 5775.69,2739.33C5775.22,2740.31 5645.24,2755.2 5636.28,2738.1C5623.36,2713.44 5628.31,2650.92 5629.36,2596.55C5634.69,2595.22 5662.12,2588.36 5691.39,2583.61C5691.33,2583.23 5691.32,2582.84 5691.34,2582.44C5695.97,2510.77 5695.71,2492.49 5692.88,2437.62C5692.88,2437.61 5692.88,2437.59 5692.88,2437.58ZM5901.3,2546.46L5901.39,2659.7C5910.03,2651.39 5917.71,2642.46 5922,2632.7C5947.15,2575.5 5919.22,2554.13 5901.3,2546.46Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(0.489303,0,0,0.489303,-1454.2,806.259)">
<path d="M5693.21,2420.84C5629.85,2422.43 5567.29,2412.16 5560.26,2380.42C5553.68,2350.69 5592.29,2337.57 5634.8,2331.99L5704.73,2328.1C5719.46,2328.15 5730.22,2328.64 5733.39,2328.79C5736.51,2329.05 5844.82,2322.68 5832.17,2387.03C5828.98,2403.22 5766.94,2417.69 5702.86,2420.51C5702.85,2420.46 5702.85,2420.42 5702.85,2420.38C5702.71,2417.72 5700.44,2415.67 5697.78,2415.81C5695.13,2415.94 5693.09,2418.19 5693.21,2420.84Z" style="fill:rgb(41,39,83);"/>
</g>
</g>
<g transform="matrix(0.44279,0,0,0.44279,-1189.24,911.446)">
<path d="M5545.48,2876.82C5534.85,2888.72 5521.08,2899.53 5503.3,2908.2C5360.7,2977.71 5254.29,2939.17 5207.49,2928.16C5089.61,2970.2 4942.84,2958.57 4877.96,2883.54C4743.74,2728.31 4893.53,2543.12 4902.3,2526.15C4972.1,2391.04 4822.28,2286.46 5030.99,2142.75C5024.02,2151.03 5017.67,2162.31 5022.02,2173.08C5028.66,2189.52 5045.73,2184.78 5060.02,2179.45C5063.64,2178.1 5067.08,2176.71 5070.12,2175.62C5066.04,2181.56 5062.37,2186.89 5059.3,2191.75C5046.79,2211.55 5044.04,2223.78 5062.64,2239.08C5081.51,2346.37 5175.26,2428 5287.92,2428C5313.26,2428 5337.63,2423.87 5360.41,2416.25C5368.46,2413.56 5376.3,2410.44 5383.92,2406.91C5493.84,2433.25 5487.37,2508.74 5487.2,2573.24C5487.15,2588.41 5488.99,2601.37 5492.18,2612.78C5494.59,2621.93 5497.79,2630.12 5501.59,2636.4C5522.49,2676.14 5560.49,2697.11 5576.47,2748.78C5578.83,2756.42 5586.85,2806.44 5562.81,2851.86C5558.27,2860.45 5552.57,2868.87 5545.48,2876.82Z" style="fill:rgb(247,183,211);"/>
</g>
<g transform="matrix(0.44279,0,0,0.44279,-1189.24,911.446)">
<path d="M5501.59,2636.4C5497.79,2630.12 5494.59,2621.93 5492.18,2612.78C5493.93,2619.01 5496.07,2624.78 5498.55,2630.19C5499.51,2632.31 5500.53,2634.38 5501.59,2636.4Z" style="fill:rgb(247,183,211);"/>
</g>
<g id="Kopf">
<g transform="matrix(0.44279,0,0,0.44279,-2784.62,911.446)">
<path d="M8634,2142.75C8639.51,2136.21 8645.4,2131.55 8646.73,2130.51L8648.09,2128.55C8660.73,2114.49 8677.4,2100.8 8690.01,2089.88C8696.11,2084.6 8701.27,2079.96 8704.55,2076.25C8702.07,2076.59 8699.75,2076.84 8697.58,2077.02C8668.48,2079.43 8666.21,2068.32 8663.7,2063.84C8662.94,2062.49 8660.74,2050.62 8695.41,2034.55C8719.86,2023.23 8742.36,2016.15 8759.96,2011.72C8780.33,2006.6 8794.16,2005.03 8796.91,2004.52L8796.95,2003.86C8791.7,2000.81 8792.22,2000.17 8786.72,1997.9C8786.3,1997.73 8785.45,1997.38 8784.32,1996.84C8778.66,1994.17 8765.84,1986.84 8763.93,1973.78C8761.04,1954.09 8829.52,1951.68 8852.1,1954.24C8875.33,1956.87 8874.69,1960.25 8902.35,1962.91C8863.96,1922.8 8881.86,1915.36 8885.88,1915.41C8908.45,1915.73 8950.69,1953.98 8958.87,1959.54C8962.77,1962.19 8963.58,1960.59 9000.24,1980.31C9014.56,1988.02 9040.2,1995.42 9071.78,2057.28C9039.59,2060.12 8999.68,2078.14 8951.13,2124.98C8920.24,2154.79 8935.43,2160.47 8937.01,2203.49C8985,2231.95 9028.37,2263.39 9087.4,2239.07C9087.23,2256.61 9087.98,2277.85 9091.67,2292.52C9092.69,2296.57 9093.73,2300.03 9094.78,2303.08C9090.52,2311.41 9085.77,2319.44 9080.57,2327.14C9069.32,2343.78 9055.93,2358.87 9040.81,2372C9026.82,2384.15 9011.35,2394.63 8994.7,2403.13C8992.14,2404.43 8989.55,2405.7 8986.93,2406.91C8979.31,2410.44 8971.46,2413.56 8963.42,2416.25C8940.64,2423.87 8916.26,2428 8890.93,2428C8778.27,2428 8684.52,2346.37 8665.64,2239.08C8647.05,2223.78 8649.8,2211.55 8662.3,2191.75C8665.38,2186.89 8669.05,2181.56 8673.13,2175.62C8670.09,2176.71 8666.65,2178.1 8663.03,2179.45C8648.74,2184.78 8631.66,2189.52 8625.02,2173.08C8620.67,2162.31 8627.02,2151.03 8634,2142.75ZM8810.9,2143.97C8813.04,2149.66 8809.97,2157.32 8804.34,2159.62C8779.35,2169.86 8765.58,2085.96 8826.5,2071.15C8913.02,2050.11 8909.28,2172.06 8878.18,2145.57C8868.9,2137.66 8882.59,2095.39 8849.06,2093.16C8815.2,2090.91 8800.55,2116.5 8810.9,2143.97ZM8851.47,2202C8850.75,2201.13 8844.88,2195.36 8837.84,2194.64C8829.2,2193.76 8823.67,2198.88 8823.2,2199.12C8821.91,2197.88 8815.31,2191.23 8810.74,2189.4C8806.16,2187.57 8797.65,2187.93 8795.76,2188.14C8791.75,2183.81 8788.72,2181.5 8785.51,2179.95C8781.01,2177.77 8775.69,2177.22 8763.45,2176.61C8755.84,2176.23 8749.36,2182.1 8748.98,2189.71C8748.59,2197.32 8754.47,2203.8 8762.07,2204.18C8767.3,2204.45 8772.28,2204.81 8773.49,2204.9C8774.02,2205.41 8777.98,2211.27 8783.93,2213.69C8789.62,2216 8798.38,2215.66 8800.35,2215.43C8803.84,2218.87 8811.62,2227.47 8819.92,2227.62C8824.8,2227.7 8828.12,2227.36 8834.21,2224.48C8834.48,2224.8 8840.76,2233.51 8850.3,2233.41C8859.4,2233.32 8865.18,2228.58 8871.14,2221.37C8876,2215.5 8876.48,2207.22 8871.08,2201.85C8865.67,2196.48 8856.92,2196.51 8851.55,2201.91L8851.47,2202Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(-0.764042,-0.00207054,-0.00207054,0.764042,1545.62,1586.69)">
<path d="M536.732,393.815C537.15,393.314 540.56,389.977 544.641,389.572C549.649,389.074 552.846,392.051 553.117,392.189C553.867,391.472 557.704,387.629 560.358,386.576C563.012,385.524 567.942,385.745 569.041,385.874C571.371,383.369 573.131,382.034 574.994,381.14C577.605,379.887 580.684,379.575 587.781,379.24C592.191,379.031 595.941,382.443 596.149,386.853C596.358,391.264 592.946,395.014 588.536,395.222C585.505,395.365 582.621,395.568 581.916,395.619C581.61,395.915 579.304,399.304 575.853,400.696C572.553,402.028 567.478,401.813 566.333,401.679C564.311,403.667 559.787,408.641 554.975,408.712C552.149,408.754 550.222,408.552 546.698,406.874C546.543,407.057 542.886,412.095 537.361,412.022C532.088,411.953 528.743,409.197 525.301,405.01C522.497,401.599 522.229,396.799 525.37,393.696C528.511,390.593 533.581,390.624 536.683,393.766L536.732,393.815Z" style="fill:rgb(242,135,183);"/>
</g>
<g transform="matrix(0.801288,0.0280515,-0.0280515,0.801288,291.021,326.878)">
<path d="M1096.18,1875.91C1097.48,1879.01 1095.93,1883.3 1092.87,1884.68C1079.27,1890.81 1070.05,1844.77 1103.39,1835.42C1150.74,1822.14 1151.02,1889.52 1133.35,1875.5C1128.07,1871.31 1134.81,1847.72 1116.26,1847.14C1097.53,1846.55 1089.94,1860.95 1096.18,1875.91Z" style="fill:rgb(247,183,211);"/>
</g>
<g transform="matrix(0.632697,0,0,0.594867,-2235.6,594.043)">
<g transform="matrix(0.845639,0,0,0.899416,890.266,150.218)">
<path d="M5441.99,2268.76C5390.67,2271.13 5379.45,2270.73 5337.65,2239.18C5373.06,2221.12 5381.6,2218.77 5417.32,2185.65C5418.86,2184.22 5420.44,2182.74 5422.08,2181.2C5435.24,2168.84 5469.33,2167.8 5491.89,2168.6C5458.33,2189.75 5456.66,2203.69 5433.66,2219.17C5453.07,2237.82 5454.18,2243.09 5463.35,2267.79C5455.51,2268.12 5448.43,2268.46 5441.99,2268.76Z" style="fill:rgb(255,137,0);"/>
</g>
<g transform="matrix(0.845639,0,0,0.899416,890.266,150.218)">
<path d="M5441.76,2279.26C5392.91,2299.39 5357.01,2273.37 5317.3,2249.81C5315.99,2214.21 5303.42,2209.51 5328.98,2184.84C5369.16,2146.07 5402.2,2131.16 5428.83,2128.81C5473.76,2124.85 5500.48,2156.63 5512.57,2169.96C5510.28,2169.74 5502.32,2168.97 5491.89,2168.6C5469.33,2167.8 5435.24,2168.84 5422.08,2181.2C5420.44,2182.74 5418.86,2184.22 5417.32,2185.65C5381.6,2218.77 5373.06,2221.12 5337.65,2239.18C5379.45,2270.73 5390.67,2271.13 5441.99,2268.76C5448.43,2268.46 5455.51,2268.12 5463.35,2267.79C5457.58,2271.52 5451.99,2274.62 5446.56,2277.15C5444.95,2277.91 5443.34,2278.61 5441.76,2279.26Z" style="fill:rgb(255,205,0);"/>
</g>
</g>
</g>
<g id="Etikett">
<g transform="matrix(0.44279,0,0,0.44279,-1189.24,911.446)">
<path d="M5702.06,2581.99C5726.51,2578.57 5750.55,2577.23 5762.55,2582.38C5776.99,2588.58 5776.71,2737.16 5775.69,2739.33C5775.22,2740.31 5645.24,2755.2 5636.28,2738.1C5623.36,2713.44 5628.31,2650.92 5629.36,2596.55C5634.69,2595.22 5662.12,2588.36 5691.39,2583.61C5691.77,2586.02 5693.78,2587.94 5696.32,2588.11C5699.26,2588.3 5701.8,2586.06 5701.98,2583.13C5702.01,2582.75 5702.03,2582.37 5702.06,2581.99ZM5652.42,2670.94C5641.83,2660.2 5641.95,2642.88 5652.69,2632.29C5663.43,2621.7 5680.75,2621.81 5691.34,2632.55L5697.65,2638.94L5705.75,2627.84C5714.64,2615.65 5731.76,2612.98 5743.94,2621.87C5756.13,2630.77 5758.8,2647.88 5749.91,2660.07L5707.91,2717.61C5706.91,2718.98 5705.35,2719.85 5703.65,2719.97C5701.96,2720.1 5700.29,2719.47 5699.09,2718.26L5652.42,2670.94Z" style="fill:rgb(255,205,0);"/>
</g>
<g transform="matrix(1,0,0,1.11432,0,-234.945)">
<path d="M1331.5,1997.38C1331.45,1996.22 1332.45,1995.23 1333.74,1995.17C1335.04,1995.11 1336.15,1996.01 1336.22,1997.17C1336.22,1997.19 1336.22,1997.21 1336.23,1997.23C1335.17,1997.27 1334.11,1997.31 1333.05,1997.34C1332.53,1997.35 1332.02,1997.37 1331.5,1997.38Z" style="fill:rgb(255,205,0);"/>
</g>
<g transform="matrix(1,0,0,1.11432,0,-234.945)">
<path d="M1330.85,2055.41C1331.62,2055.29 1332.4,2055.18 1333.18,2055.08C1333.98,2054.97 1334.77,2054.86 1335.57,2054.76C1335.56,2054.91 1335.55,2055.06 1335.54,2055.21C1335.45,2056.38 1334.33,2057.27 1333.03,2057.19C1331.9,2057.13 1331.02,2056.36 1330.85,2055.41Z" style="fill:rgb(255,205,0);"/>
</g>
<g transform="matrix(1,0,0,1.11432,0,-234.945)">
<path d="M1336.23,1997.23C1337.48,2019.06 1337.6,2026.44 1335.57,2054.76C1334.77,2054.86 1333.98,2054.97 1333.18,2055.08C1332.4,2055.18 1331.62,2055.29 1330.85,2055.41C1330.82,2055.25 1330.81,2055.1 1330.82,2054.94C1332.87,2026.46 1332.76,2019.2 1331.51,1997.39C1331.5,1997.39 1331.5,1997.38 1331.5,1997.38C1332.02,1997.37 1332.53,1997.35 1333.05,1997.34C1334.11,1997.31 1335.17,1997.27 1336.23,1997.23Z" style="fill:rgb(255,205,0);"/>
</g>
<g transform="matrix(0.44279,0,0,0.44279,-1189.72,902.025)">
<path d="M5653.49,2692.22C5642.89,2681.48 5643.01,2664.16 5653.75,2653.56C5664.49,2642.97 5681.82,2643.09 5692.41,2653.83L5698.71,2660.22L5706.82,2649.11C5715.71,2636.93 5732.82,2634.26 5745.01,2643.15C5757.19,2652.04 5759.86,2669.16 5750.97,2681.34L5708.98,2738.88C5707.97,2740.26 5706.41,2741.12 5704.72,2741.25C5703.02,2741.38 5701.35,2740.75 5700.16,2739.54L5653.49,2692.22Z" style="fill:rgb(64,41,123);"/>
</g>
</g>
</g>
<g transform="matrix(1.62827,0,0,1.15775,11647.7,4084.19)">
<path d="M4321.82,2650.17C4335.16,2589.55 4341.48,2548.68 4303.97,2512.3C4237.93,2448.23 3913.01,2168.16 3887.94,1890.96C3874.93,1747.08 3935.52,1570.85 4121.8,1440.01C4173.9,1403.4 4397.02,1274.75 4432.21,1231.5C4504.25,1142.98 4538.6,1064.83 4542.29,1048.12C4550.57,1010.66 4560.73,991.471 4569.86,988.633C4583.78,984.306 4596.96,995.036 4599.38,1002.89C4658.05,1194.08 4629.33,1500.27 4413.17,1606.53C4362.44,1631.47 4311.24,1655.48 4260.39,1680.18C4215.16,1702.15 4095.32,1765.74 4111.32,1894.08C4119.02,1955.8 4203.45,2048.47 4213.96,2060.01C4344.52,2203.31 4556.28,2384.6 4573.53,2484.21C4575.72,2496.87 4588.84,2572.62 4556.75,2643.85C4536.49,2688.84 4528.96,2683.49 4430.93,2778.62C4413.09,2795.93 4374.13,2841.24 4369.34,2846.81C4333.24,2888.8 4336.16,2896.86 4320.63,2894.32C4318.14,2893.92 4302.54,2891.37 4299.77,2870.7C4290.31,2800.04 4318.01,2667.48 4321.82,2650.17Z" style="fill:rgb(247,183,211);"/>
</g>
</g>
<g transform="matrix(0.614148,0,0,0.863747,-8279.46,-6589.16)">
<g transform="matrix(1.62827,0,0,1.18976,-34044.1,-276.538)">
<path d="M29148.3,8369.47C29311.3,8302.85 29383.5,8371.68 29414.3,8300.09C29486.9,8131.31 28924.8,8113.93 28925,8731.37C28925.1,9192.96 29452.3,9066.77 29321.6,8911.81C29263,8842.28 29111.2,8943.43 29065.4,8822.3C28982.5,8603.03 29092.4,8392.3 29148.3,8369.47Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.12835,-34037.5,287.009)">
<path d="M29700.5,8256.51C29734.3,8261.78 29949.3,8490.54 29838.7,8755.6C29823.3,8792.52 29586.9,9415.61 29354.9,8716.56C29330.1,8641.78 29388.2,8207.8 29700.5,8256.51ZM29622.2,8391.95C29317.7,8551.37 29551,8941.4 29616.7,8904.4C29836.1,8780.72 29720.3,8340.62 29622.2,8391.95Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.15775,-34021.3,-14.4309)">
<path d="M30237.4,8200.58C30126.9,8165.78 30029.7,8240.31 29857.9,8224.64C29843.2,8223.31 29754,8269 29848,8342.53C29942.4,8416.5 30205.2,8287.39 30115.1,8450.36C29912.9,8815.91 29654.4,9057.23 30069.1,9081.25C30305.2,9094.92 30441.8,8879.44 30371.9,8840.54C30317,8809.93 29993.7,9077.88 30016.1,8804.54C30022.2,8730.54 30470.4,8273.91 30237.4,8200.58Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.19425,-34005,-317.682)">
<path d="M30500.3,8306.84C30329.7,8264.78 30217.8,8613.62 30340.6,8650.96C30520,8705.51 30485.3,8752.93 30499.4,8938.28C30510.9,9089.91 30682.8,9082.11 30666,8972.85C30641.6,8814.77 30581.4,8757.53 30736.4,8718.88C30897.2,8678.81 30936.3,8187.72 30760.8,8345.76C30688.7,8410.72 30805.5,8581.82 30661.9,8626.45C30510.2,8673.61 30428.3,8545.86 30439.1,8505.03C30468.6,8393.92 30588.2,8328.52 30500.3,8306.84Z" style="fill:rgb(64,41,123);"/>
</g>
</g>
<g transform="matrix(0.614148,0,0,0.863747,-8003.93,-6589.16)">
<g transform="matrix(1.62827,0,0,1.20505,-34005,-468.246)">
<path d="M32086.6,8251.22C32157.8,8254.15 32477.7,8423.34 32280.7,8697.07C32247,8743.96 32313.8,8834.76 32330.4,8903.65C32354.5,9003.74 32384.1,9089.96 32325.4,9097.5C32169,9117.58 32257.3,8827.15 32127.1,8833.91C32057.1,8837.53 32080.9,9097.12 31971.3,9101.97C31856.1,9107.08 31968.4,8812.56 31967.2,8756.93C31962,8516.36 31759.6,8237.78 32086.6,8251.22ZM32098.8,8395C31958.7,8318.67 32040.2,8691.92 32114.1,8694.85C32179.8,8697.45 32325,8518.34 32098.8,8395Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.0591,-34070.1,878.801)">
<path d="M32631.1,8843.75C32508.8,8868.32 32692.6,9085.46 32564.6,9073.59C32244.9,9043.94 32616.9,7718.13 32868.6,8665.88C32888,8738.99 32922.5,9077.09 32869.7,9083.6C32729.5,9100.93 32802,8809.45 32631.1,8843.75ZM32582.6,8738.08C32654.9,8710.18 32716.1,8743.72 32740.1,8718.69C32798.7,8657.31 32714.5,8520.97 32664.8,8526.23C32585.3,8534.64 32511.9,8765.32 32582.6,8738.08Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.36008,-34102.7,-1827.28)">
<path d="M33026.4,8550.27C32977.4,8383.16 32834,8271.69 32784.7,8347.52C32758.6,8387.61 32912.6,8395.92 33035.2,8989.39C33052.3,9072.25 33179.2,9126.91 33200.4,8922.24C33252.8,8415.98 33387.5,8298.73 33235.3,8316.62C33093.4,8333.31 33160.2,8765.88 33109.9,8768.02C33065.9,8769.89 33048.9,8627.05 33026.4,8550.27Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.24265,-34119,-832.44)">
<path d="M33701.5,8300.06C33391.9,8265.58 33401.3,8422.23 33373.1,8623.8C33356.5,8742.87 33256.3,8991.83 33298.2,9070.23C33341.4,9151.04 33781.3,9124.86 33623.2,8985.18C33579.4,8946.47 33327.3,9081.2 33431.3,8823.7C33480.3,8702.31 33588,8786 33600.1,8674.91C33606.2,8618.56 33393.1,8653.76 33501.4,8464.6C33556.1,8368.97 33625.6,8426.08 33720.2,8422.39C33800.5,8419.26 33863.7,8318.14 33701.5,8300.06Z" style="fill:rgb(64,41,123);"/>
</g>
<g transform="matrix(1.62827,0,0,1.15775,-34143.4,-37.5607)">
<path d="M33814.7,8430.06C33689.4,8510.35 33713.9,9051.12 33763.9,9081.07C33935,9183.4 33789.8,8606.13 33866,8692.8C33945.8,8783.43 34007.9,9254.38 34115.9,9016.18C34175.2,8885.4 34174.7,8324.05 34076.5,8296.13C33919.4,8251.45 34100.8,8803.81 34033.2,8737.82C33896.5,8604.46 33878.8,8389.04 33814.7,8430.06Z" style="fill:rgb(64,41,123);"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blbplxfx41f8t"
path="res://.godot/imported/Cozy Raven Logo breit.svg-f5cfe115294b9e3edf05578239074286.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/logos/Cozy Raven Logo breit.svg"
dest_files=["res://.godot/imported/Cozy Raven Logo breit.svg-f5cfe115294b9e3edf05578239074286.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwbv2i8ntq15d"
path="res://.godot/imported/FS_Logo_2zeilig_rot.png-d7f9780942dbf9fad2bbeca2da59457f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/logos/FS_Logo_2zeilig_rot.png"
dest_files=["res://.godot/imported/FS_Logo_2zeilig_rot.png-d7f9780942dbf9fad2bbeca2da59457f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgmu3qlovdr22"
path="res://.godot/imported/field_outline_1.png-6d3fddc82592de77807ed60581b515c5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/masks/field_outline_1.png"
dest_files=["res://.godot/imported/field_outline_1.png-6d3fddc82592de77807ed60581b515c5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://eg5ej0mtuac"
path="res://.godot/imported/field_outline_2.png-e3ddb80217ba93d880ff746f003587ee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/masks/field_outline_2.png"
dest_files=["res://.godot/imported/field_outline_2.png-e3ddb80217ba93d880ff746f003587ee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://djpigvoyadvjs"
path="res://.godot/imported/field_outline_3.png-1ae7ea2c620df01f38d55e21a86cbf92.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/masks/field_outline_3.png"
dest_files=["res://.godot/imported/field_outline_3.png-1ae7ea2c620df01f38d55e21a86cbf92.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
@@ -0,0 +1,9 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://bv3m12duf0dj6"]
[ext_resource type="Shader" uid="uid://dsa3lv2as7q3b" path="res://shader/outline.gdshader" id="1_fxlom"]
[resource]
shader = ExtResource("1_fxlom")
shader_parameter/allow_out_of_bounds = true
shader_parameter/outline_thickness = 8.0
shader_parameter/outline_color = Color(0.88, 0.54208, 0.4576, 1)
@@ -0,0 +1,9 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://blch5kdhkbj75"]
[ext_resource type="Shader" uid="uid://dsa3lv2as7q3b" path="res://shader/outline.gdshader" id="1_ovtva"]
[resource]
shader = ExtResource("1_ovtva")
shader_parameter/allow_out_of_bounds = true
shader_parameter/outline_thickness = 8.0
shader_parameter/outline_color = Color(0.88, 0.79684, 0.3256, 1)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 MiB

After

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgavbfci8x178"
path="res://.godot/imported/grass-1.png-ca7b452843206b712388940e3c3d5532.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/nature/grass/grass-1.png"
dest_files=["res://.godot/imported/grass-1.png-ca7b452843206b712388940e3c3d5532.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://h2b5aufaaw7w"
path="res://.godot/imported/grass-2.png-6f43a52066099666b3212aa92bb38a9f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/nature/grass/grass-2.png"
dest_files=["res://.godot/imported/grass-2.png-6f43a52066099666b3212aa92bb38a9f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ct7ea8ikor5rf"
path="res://.godot/imported/grass-3.png-694a7f12b6e32536c4f27363ec79c45a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/nature/grass/grass-3.png"
dest_files=["res://.godot/imported/grass-3.png-694a7f12b6e32536c4f27363ec79c45a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://badnnid7dgnpk"
path="res://.godot/imported/grass-4.png-e2855f1a80a4bb56abcc9b4ab623b57b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/nature/grass/grass-4.png"
dest_files=["res://.godot/imported/grass-4.png-e2855f1a80a4bb56abcc9b4ab623b57b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b644ofy7fml5w"
path="res://.godot/imported/grass-5.png-415eca44a6277d6c20c8cb81e371080f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/nature/grass/grass-5.png"
dest_files=["res://.godot/imported/grass-5.png-415eca44a6277d6c20c8cb81e371080f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d3dwl6ph0pu1d"
path="res://.godot/imported/grass-6.png-78792f43caad598457a381c5989c9eb5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/nature/grass/grass-6.png"
dest_files=["res://.godot/imported/grass-6.png-78792f43caad598457a381c5989c9eb5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn56p0ytuo060"
path="res://.godot/imported/AttackButton.png-ab1949863046f66b014201d64778c962.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/ui/UI/AttackButton.png"
dest_files=["res://.godot/imported/AttackButton.png-ab1949863046f66b014201d64778c962.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://crak7ton4lab0"
path="res://.godot/imported/EmptyFightButton.png-941012f14ef5a6d6a385ea2e7599c6bb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/ui/UI/EmptyFightButton.png"
dest_files=["res://.godot/imported/EmptyFightButton.png-941012f14ef5a6d6a385ea2e7599c6bb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bcs0e1bpu8wm1"
path="res://.godot/imported/MagicButton.png-f688abbb37e617bc75b48afd1bffb745.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/ui/UI/MagicButton.png"
dest_files=["res://.godot/imported/MagicButton.png-f688abbb37e617bc75b48afd1bffb745.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfrhmcyhs2i53"
path="res://.godot/imported/WhiteWashBackground.png-3d018823c98cf319bfb04b1f68d9db23.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/ui/UI/WhiteWashBackground.png"
dest_files=["res://.godot/imported/WhiteWashBackground.png-3d018823c98cf319bfb04b1f68d9db23.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qlfwuakhe57t"
path="res://.godot/imported/attack_select_wheel.png-437439dea02962dbfc00f0c03b7b3deb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/ui/UI/attack_select_wheel.png"
dest_files=["res://.godot/imported/attack_select_wheel.png-437439dea02962dbfc00f0c03b7b3deb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://fuavnxdlkvl8"
path="res://.godot/imported/Farm_Atmos_01.wav-20c6c4add43e27385e7f86d343fe1b56.sample"
[deps]
source_file="res://audio/Atmos/Farm_Atmos_01.wav"
dest_files=["res://.godot/imported/Farm_Atmos_01.wav-20c6c4add43e27385e7f86d343fe1b56.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
Binary file not shown.

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