Compare commits
6 commits
Author | SHA1 | Date | |
---|---|---|---|
8ac9e679e5 | |||
cc5e8eb66c | |||
a4fbfeaddb | |||
e551af28cd | |||
e7c98195c5 | |||
aefd361bc9 |
25 changed files with 752 additions and 19 deletions
4
assets/config/bg2.tres
Normal file
4
assets/config/bg2.tres
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[gd_resource type="StyleBoxFlat" format=3 uid="uid://bkwb4tqap7x7i"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
bg_color = Color(0.188235, 0.188235, 0.188235, 1)
|
8
assets/config/tiny.tres
Normal file
8
assets/config/tiny.tres
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[gd_resource type="LabelSettings" load_steps=2 format=3 uid="uid://xh3q8p65gbti"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://ce5fs0ro7kp8r" path="res://assets/fonts/Lexend.ttf" id="1_r577y"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
font = ExtResource("1_r577y")
|
||||||
|
font_size = 14
|
||||||
|
font_color = Color(1, 1, 1, 0.501961)
|
13
events/latest_events.xml
Normal file
13
events/latest_events.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<events>
|
||||||
|
<event id="week_3" date="2024-12-08">
|
||||||
|
<tagline>FunkPanion Update Week 3</tagline>
|
||||||
|
<title>Matkap Sprites</title>
|
||||||
|
<thumb>mk_preview.png</thumb>
|
||||||
|
<desc>I made these cool-ass sprites of my sona Matkap.
|
||||||
|
I thought it'd be nice to have him in here, but I didn't want to make him the default because that'd be pretty jarring.
|
||||||
|
Imagine opening an FNF thingy and then not immediately seeing an FNF character.
|
||||||
|
So instead I made this panel. Check back here for more goodies, in case I make any.
|
||||||
|
WARNING: Applying will override some of your config and save.</desc>
|
||||||
|
</event>
|
||||||
|
</events>
|
BIN
events/week_3/matkap.png
Normal file
BIN
events/week_3/matkap.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 341 KiB |
3
events/week_3/matkap.png.import
Normal file
3
events/week_3/matkap.png.import
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="keep"
|
33
events/week_3/matkap.xml
Normal file
33
events/week_3/matkap.xml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TextureAtlas imagePath="C:/Users/Theo Range/Downloads/fnfanims/matkap.png">
|
||||||
|
<SubTexture name="MAT_IDLE0000" x="0" y="0" width="462" height="575" frameX="-9" frameY="0" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_IDLE0001" x="462" y="0" width="462" height="574" frameX="-9" frameY="-1" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_IDLE0002" x="924" y="0" width="466" height="573" frameX="-9" frameY="-2" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_IDLE0003" x="1390" y="0" width="463" height="574" frameX="-9" frameY="-1" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_IDLE0004" x="1390" y="0" width="463" height="574" frameX="-9" frameY="-1" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_IDLE0005" x="1390" y="0" width="463" height="574" frameX="-9" frameY="-1" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_LEFT0000" x="0" y="575" width="411" height="538" frameX="-54" frameY="-35" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_LEFT0001" x="411" y="574" width="413" height="541" frameX="-57" frameY="-32" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_LEFT0002" x="824" y="575" width="413" height="540" frameX="-59" frameY="-33" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_LEFT0003" x="1237" y="575" width="413" height="540" frameX="-59" frameY="-33" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_LEFT0004" x="1237" y="575" width="413" height="540" frameX="-59" frameY="-33" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_LEFT0005" x="1237" y="575" width="413" height="540" frameX="-59" frameY="-33" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_DOWN0000" x="0" y="1115" width="380" height="481" frameX="-43" frameY="-94" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_DOWN0001" x="380" y="1115" width="380" height="489" frameX="-43" frameY="-86" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_DOWN0002" x="760" y="1115" width="380" height="487" frameX="-43" frameY="-88" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_DOWN0003" x="1140" y="1115" width="380" height="487" frameX="-43" frameY="-88" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_DOWN0004" x="1140" y="1115" width="380" height="487" frameX="-43" frameY="-88" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_DOWN0005" x="1140" y="1115" width="380" height="487" frameX="-43" frameY="-88" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_UP0000" x="0" y="1604" width="425" height="574" frameX="0" frameY="-2" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_UP0001" x="425" y="1604" width="422" height="569" frameX="0" frameY="-10" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_UP0002" x="847" y="1604" width="422" height="574" frameX="0" frameY="-8" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_UP0003" x="1269" y="1604" width="422" height="574" frameX="0" frameY="-8" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_UP0004" x="1269" y="1604" width="422" height="574" frameX="0" frameY="-8" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_UP0005" x="1269" y="1604" width="422" height="574" frameX="0" frameY="-8" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_RIGHT0000" x="0" y="2178" width="384" height="515" frameX="-150" frameY="-60" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_RIGHT0001" x="384" y="2178" width="384" height="516" frameX="-148" frameY="-59" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_RIGHT0002" x="768" y="2178" width="383" height="518" frameX="-146" frameY="-57" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_RIGHT0003" x="1151" y="2178" width="383" height="518" frameX="-146" frameY="-57" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_RIGHT0004" x="1151" y="2178" width="383" height="518" frameX="-146" frameY="-57" frameWidth="534" frameHeight="582" />
|
||||||
|
<SubTexture name="MAT_RIGHT0005" x="1151" y="2178" width="383" height="518" frameX="-146" frameY="-57" frameWidth="534" frameHeight="582" />
|
||||||
|
</TextureAtlas>
|
BIN
events/week_3/mk_preview.png
Normal file
BIN
events/week_3/mk_preview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
34
events/week_3/mk_preview.png.import
Normal file
34
events/week_3/mk_preview.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bsk0t7any1rqg"
|
||||||
|
path="res://.godot/imported/mk_preview.png-b7001c2795528e49e48dd4a8d33d4284.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://events/week_3/mk_preview.png"
|
||||||
|
dest_files=["res://.godot/imported/mk_preview.png-b7001c2795528e49e48dd4a8d33d4284.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
|
35
events/week_3/redeem.gd
Normal file
35
events/week_3/redeem.gd
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# extends AmongUs
|
||||||
|
|
||||||
|
var config_change = {
|
||||||
|
spritesheet_data = "user://uploads/matkap.xml",
|
||||||
|
spritesheet_image = "user://uploads/matkap.png",
|
||||||
|
spritesheet_anims = {
|
||||||
|
"MAT_IDLE" = {
|
||||||
|
alias = null,
|
||||||
|
type = Config.SpritesheetAnimType.IDLE
|
||||||
|
},
|
||||||
|
"MAT_LEFT" = {
|
||||||
|
alias = "left",
|
||||||
|
type = Config.SpritesheetAnimType.DEFAULT
|
||||||
|
},
|
||||||
|
"MAT_DOWN" = {
|
||||||
|
alias = "down",
|
||||||
|
type = Config.SpritesheetAnimType.DEFAULT
|
||||||
|
},
|
||||||
|
"MAT_UP" = {
|
||||||
|
alias = "up",
|
||||||
|
type = Config.SpritesheetAnimType.DEFAULT
|
||||||
|
},
|
||||||
|
"MAT_RIGHT" = {
|
||||||
|
alias = "right",
|
||||||
|
type = Config.SpritesheetAnimType.DEFAULT
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
if not DirAccess.dir_exists_absolute("user://uploads/"):
|
||||||
|
DirAccess.make_dir_absolute("user://uploads/")
|
||||||
|
|
||||||
|
GlobalEvents.copy_fa("res://events/week_3/matkap.png", "user://uploads/matkap.png")
|
||||||
|
GlobalEvents.copy_fa("res://events/week_3/matkap.xml", "user://uploads/matkap.xml")
|
|
@ -7,7 +7,7 @@ advanced_options=false
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter="*.xml, *.png"
|
include_filter="*.xml, *.png, events/*"
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="../export/FunkPanion/FunkPanion-win.zip"
|
export_path="../export/FunkPanion/FunkPanion-win.zip"
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
|
@ -108,3 +108,256 @@ rm -rf \"{temp_dir}\""
|
||||||
dotnet/include_scripts_content=false
|
dotnet/include_scripts_content=false
|
||||||
dotnet/include_debug_symbols=false
|
dotnet/include_debug_symbols=false
|
||||||
dotnet/embed_build_outputs=false
|
dotnet/embed_build_outputs=false
|
||||||
|
|
||||||
|
[preset.2]
|
||||||
|
|
||||||
|
name="macOS"
|
||||||
|
platform="macOS"
|
||||||
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="../export/FunkPanion/FunkPanion-mac.zip"
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
|
[preset.2.options]
|
||||||
|
|
||||||
|
export/distribution_type=1
|
||||||
|
binary_format/architecture="universal"
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_wrapper=1
|
||||||
|
application/icon=""
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/bundle_identifier="link.abtmtr.fp"
|
||||||
|
application/signature=""
|
||||||
|
application/app_category="Utilities"
|
||||||
|
application/short_version=""
|
||||||
|
application/version=""
|
||||||
|
application/copyright="MeowcaTheoRange 2024"
|
||||||
|
application/copyright_localized={}
|
||||||
|
application/min_macos_version="10.12"
|
||||||
|
application/export_angle=2
|
||||||
|
display/high_res=true
|
||||||
|
application/additional_plist_content=""
|
||||||
|
xcode/platform_build="14C18"
|
||||||
|
xcode/sdk_version="13.1"
|
||||||
|
xcode/sdk_build="22C55"
|
||||||
|
xcode/sdk_name="macosx13.1"
|
||||||
|
xcode/xcode_version="1420"
|
||||||
|
xcode/xcode_build="14C18"
|
||||||
|
codesign/codesign=1
|
||||||
|
codesign/installer_identity=""
|
||||||
|
codesign/apple_team_id=""
|
||||||
|
codesign/identity=""
|
||||||
|
codesign/entitlements/custom_file=""
|
||||||
|
codesign/entitlements/allow_jit_code_execution=false
|
||||||
|
codesign/entitlements/allow_unsigned_executable_memory=false
|
||||||
|
codesign/entitlements/allow_dyld_environment_variables=false
|
||||||
|
codesign/entitlements/disable_library_validation=true
|
||||||
|
codesign/entitlements/audio_input=false
|
||||||
|
codesign/entitlements/camera=false
|
||||||
|
codesign/entitlements/location=false
|
||||||
|
codesign/entitlements/address_book=false
|
||||||
|
codesign/entitlements/calendars=false
|
||||||
|
codesign/entitlements/photos_library=false
|
||||||
|
codesign/entitlements/apple_events=false
|
||||||
|
codesign/entitlements/debugging=false
|
||||||
|
codesign/entitlements/app_sandbox/enabled=false
|
||||||
|
codesign/entitlements/app_sandbox/network_server=false
|
||||||
|
codesign/entitlements/app_sandbox/network_client=false
|
||||||
|
codesign/entitlements/app_sandbox/device_usb=false
|
||||||
|
codesign/entitlements/app_sandbox/device_bluetooth=false
|
||||||
|
codesign/entitlements/app_sandbox/files_downloads=0
|
||||||
|
codesign/entitlements/app_sandbox/files_pictures=0
|
||||||
|
codesign/entitlements/app_sandbox/files_music=0
|
||||||
|
codesign/entitlements/app_sandbox/files_movies=0
|
||||||
|
codesign/entitlements/app_sandbox/files_user_selected=0
|
||||||
|
codesign/entitlements/app_sandbox/helper_executables=[]
|
||||||
|
codesign/custom_options=PackedStringArray()
|
||||||
|
notarization/notarization=0
|
||||||
|
privacy/microphone_usage_description=""
|
||||||
|
privacy/microphone_usage_description_localized={}
|
||||||
|
privacy/camera_usage_description=""
|
||||||
|
privacy/camera_usage_description_localized={}
|
||||||
|
privacy/location_usage_description=""
|
||||||
|
privacy/location_usage_description_localized={}
|
||||||
|
privacy/address_book_usage_description=""
|
||||||
|
privacy/address_book_usage_description_localized={}
|
||||||
|
privacy/calendar_usage_description=""
|
||||||
|
privacy/calendar_usage_description_localized={}
|
||||||
|
privacy/photos_library_usage_description=""
|
||||||
|
privacy/photos_library_usage_description_localized={}
|
||||||
|
privacy/desktop_folder_usage_description=""
|
||||||
|
privacy/desktop_folder_usage_description_localized={}
|
||||||
|
privacy/documents_folder_usage_description=""
|
||||||
|
privacy/documents_folder_usage_description_localized={}
|
||||||
|
privacy/downloads_folder_usage_description=""
|
||||||
|
privacy/downloads_folder_usage_description_localized={}
|
||||||
|
privacy/network_volumes_usage_description=""
|
||||||
|
privacy/network_volumes_usage_description_localized={}
|
||||||
|
privacy/removable_volumes_usage_description=""
|
||||||
|
privacy/removable_volumes_usage_description_localized={}
|
||||||
|
privacy/tracking_enabled=false
|
||||||
|
privacy/tracking_domains=PackedStringArray()
|
||||||
|
privacy/collected_data/name/collected=false
|
||||||
|
privacy/collected_data/name/linked_to_user=false
|
||||||
|
privacy/collected_data/name/used_for_tracking=false
|
||||||
|
privacy/collected_data/name/collection_purposes=0
|
||||||
|
privacy/collected_data/email_address/collected=false
|
||||||
|
privacy/collected_data/email_address/linked_to_user=false
|
||||||
|
privacy/collected_data/email_address/used_for_tracking=false
|
||||||
|
privacy/collected_data/email_address/collection_purposes=0
|
||||||
|
privacy/collected_data/phone_number/collected=false
|
||||||
|
privacy/collected_data/phone_number/linked_to_user=false
|
||||||
|
privacy/collected_data/phone_number/used_for_tracking=false
|
||||||
|
privacy/collected_data/phone_number/collection_purposes=0
|
||||||
|
privacy/collected_data/physical_address/collected=false
|
||||||
|
privacy/collected_data/physical_address/linked_to_user=false
|
||||||
|
privacy/collected_data/physical_address/used_for_tracking=false
|
||||||
|
privacy/collected_data/physical_address/collection_purposes=0
|
||||||
|
privacy/collected_data/other_contact_info/collected=false
|
||||||
|
privacy/collected_data/other_contact_info/linked_to_user=false
|
||||||
|
privacy/collected_data/other_contact_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_contact_info/collection_purposes=0
|
||||||
|
privacy/collected_data/health/collected=false
|
||||||
|
privacy/collected_data/health/linked_to_user=false
|
||||||
|
privacy/collected_data/health/used_for_tracking=false
|
||||||
|
privacy/collected_data/health/collection_purposes=0
|
||||||
|
privacy/collected_data/fitness/collected=false
|
||||||
|
privacy/collected_data/fitness/linked_to_user=false
|
||||||
|
privacy/collected_data/fitness/used_for_tracking=false
|
||||||
|
privacy/collected_data/fitness/collection_purposes=0
|
||||||
|
privacy/collected_data/payment_info/collected=false
|
||||||
|
privacy/collected_data/payment_info/linked_to_user=false
|
||||||
|
privacy/collected_data/payment_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/payment_info/collection_purposes=0
|
||||||
|
privacy/collected_data/credit_info/collected=false
|
||||||
|
privacy/collected_data/credit_info/linked_to_user=false
|
||||||
|
privacy/collected_data/credit_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/credit_info/collection_purposes=0
|
||||||
|
privacy/collected_data/other_financial_info/collected=false
|
||||||
|
privacy/collected_data/other_financial_info/linked_to_user=false
|
||||||
|
privacy/collected_data/other_financial_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_financial_info/collection_purposes=0
|
||||||
|
privacy/collected_data/precise_location/collected=false
|
||||||
|
privacy/collected_data/precise_location/linked_to_user=false
|
||||||
|
privacy/collected_data/precise_location/used_for_tracking=false
|
||||||
|
privacy/collected_data/precise_location/collection_purposes=0
|
||||||
|
privacy/collected_data/coarse_location/collected=false
|
||||||
|
privacy/collected_data/coarse_location/linked_to_user=false
|
||||||
|
privacy/collected_data/coarse_location/used_for_tracking=false
|
||||||
|
privacy/collected_data/coarse_location/collection_purposes=0
|
||||||
|
privacy/collected_data/sensitive_info/collected=false
|
||||||
|
privacy/collected_data/sensitive_info/linked_to_user=false
|
||||||
|
privacy/collected_data/sensitive_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/sensitive_info/collection_purposes=0
|
||||||
|
privacy/collected_data/contacts/collected=false
|
||||||
|
privacy/collected_data/contacts/linked_to_user=false
|
||||||
|
privacy/collected_data/contacts/used_for_tracking=false
|
||||||
|
privacy/collected_data/contacts/collection_purposes=0
|
||||||
|
privacy/collected_data/emails_or_text_messages/collected=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/linked_to_user=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/collection_purposes=0
|
||||||
|
privacy/collected_data/photos_or_videos/collected=false
|
||||||
|
privacy/collected_data/photos_or_videos/linked_to_user=false
|
||||||
|
privacy/collected_data/photos_or_videos/used_for_tracking=false
|
||||||
|
privacy/collected_data/photos_or_videos/collection_purposes=0
|
||||||
|
privacy/collected_data/audio_data/collected=false
|
||||||
|
privacy/collected_data/audio_data/linked_to_user=false
|
||||||
|
privacy/collected_data/audio_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/audio_data/collection_purposes=0
|
||||||
|
privacy/collected_data/gameplay_content/collected=false
|
||||||
|
privacy/collected_data/gameplay_content/linked_to_user=false
|
||||||
|
privacy/collected_data/gameplay_content/used_for_tracking=false
|
||||||
|
privacy/collected_data/gameplay_content/collection_purposes=0
|
||||||
|
privacy/collected_data/customer_support/collected=false
|
||||||
|
privacy/collected_data/customer_support/linked_to_user=false
|
||||||
|
privacy/collected_data/customer_support/used_for_tracking=false
|
||||||
|
privacy/collected_data/customer_support/collection_purposes=0
|
||||||
|
privacy/collected_data/other_user_content/collected=false
|
||||||
|
privacy/collected_data/other_user_content/linked_to_user=false
|
||||||
|
privacy/collected_data/other_user_content/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_user_content/collection_purposes=0
|
||||||
|
privacy/collected_data/browsing_history/collected=false
|
||||||
|
privacy/collected_data/browsing_history/linked_to_user=false
|
||||||
|
privacy/collected_data/browsing_history/used_for_tracking=false
|
||||||
|
privacy/collected_data/browsing_history/collection_purposes=0
|
||||||
|
privacy/collected_data/search_hhistory/collected=false
|
||||||
|
privacy/collected_data/search_hhistory/linked_to_user=false
|
||||||
|
privacy/collected_data/search_hhistory/used_for_tracking=false
|
||||||
|
privacy/collected_data/search_hhistory/collection_purposes=0
|
||||||
|
privacy/collected_data/user_id/collected=false
|
||||||
|
privacy/collected_data/user_id/linked_to_user=false
|
||||||
|
privacy/collected_data/user_id/used_for_tracking=false
|
||||||
|
privacy/collected_data/user_id/collection_purposes=0
|
||||||
|
privacy/collected_data/device_id/collected=false
|
||||||
|
privacy/collected_data/device_id/linked_to_user=false
|
||||||
|
privacy/collected_data/device_id/used_for_tracking=false
|
||||||
|
privacy/collected_data/device_id/collection_purposes=0
|
||||||
|
privacy/collected_data/purchase_history/collected=false
|
||||||
|
privacy/collected_data/purchase_history/linked_to_user=false
|
||||||
|
privacy/collected_data/purchase_history/used_for_tracking=false
|
||||||
|
privacy/collected_data/purchase_history/collection_purposes=0
|
||||||
|
privacy/collected_data/product_interaction/collected=false
|
||||||
|
privacy/collected_data/product_interaction/linked_to_user=false
|
||||||
|
privacy/collected_data/product_interaction/used_for_tracking=false
|
||||||
|
privacy/collected_data/product_interaction/collection_purposes=0
|
||||||
|
privacy/collected_data/advertising_data/collected=false
|
||||||
|
privacy/collected_data/advertising_data/linked_to_user=false
|
||||||
|
privacy/collected_data/advertising_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/advertising_data/collection_purposes=0
|
||||||
|
privacy/collected_data/other_usage_data/collected=false
|
||||||
|
privacy/collected_data/other_usage_data/linked_to_user=false
|
||||||
|
privacy/collected_data/other_usage_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_usage_data/collection_purposes=0
|
||||||
|
privacy/collected_data/crash_data/collected=false
|
||||||
|
privacy/collected_data/crash_data/linked_to_user=false
|
||||||
|
privacy/collected_data/crash_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/crash_data/collection_purposes=0
|
||||||
|
privacy/collected_data/performance_data/collected=false
|
||||||
|
privacy/collected_data/performance_data/linked_to_user=false
|
||||||
|
privacy/collected_data/performance_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/performance_data/collection_purposes=0
|
||||||
|
privacy/collected_data/other_diagnostic_data/collected=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/linked_to_user=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/collection_purposes=0
|
||||||
|
privacy/collected_data/environment_scanning/collected=false
|
||||||
|
privacy/collected_data/environment_scanning/linked_to_user=false
|
||||||
|
privacy/collected_data/environment_scanning/used_for_tracking=false
|
||||||
|
privacy/collected_data/environment_scanning/collection_purposes=0
|
||||||
|
privacy/collected_data/hands/collected=false
|
||||||
|
privacy/collected_data/hands/linked_to_user=false
|
||||||
|
privacy/collected_data/hands/used_for_tracking=false
|
||||||
|
privacy/collected_data/hands/collection_purposes=0
|
||||||
|
privacy/collected_data/head/collected=false
|
||||||
|
privacy/collected_data/head/linked_to_user=false
|
||||||
|
privacy/collected_data/head/used_for_tracking=false
|
||||||
|
privacy/collected_data/head/collection_purposes=0
|
||||||
|
privacy/collected_data/other_data_types/collected=false
|
||||||
|
privacy/collected_data/other_data_types/linked_to_user=false
|
||||||
|
privacy/collected_data/other_data_types/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_data_types/collection_purposes=0
|
||||||
|
ssh_remote_deploy/enabled=false
|
||||||
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
ssh_remote_deploy/port="22"
|
||||||
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
|
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||||
|
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
|
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
|
||||||
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
|
dotnet/include_scripts_content=false
|
||||||
|
dotnet/include_debug_symbols=false
|
||||||
|
dotnet/embed_build_outputs=false
|
||||||
|
|
|
@ -30,6 +30,7 @@ boot_splash/minimum_display_time=2000
|
||||||
|
|
||||||
GlobalInput="*res://plugins/GlobalInput/GlobalInputGDScript.tscn"
|
GlobalInput="*res://plugins/GlobalInput/GlobalInputGDScript.tscn"
|
||||||
GlobalConfig="*res://scenes/global_config.tscn"
|
GlobalConfig="*res://scenes/global_config.tscn"
|
||||||
|
GlobalEvents="*res://scenes/global_events.tscn"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
|
@ -104,4 +105,5 @@ mod_snap_coarse={
|
||||||
|
|
||||||
renderer/rendering_method="gl_compatibility"
|
renderer/rendering_method="gl_compatibility"
|
||||||
renderer/rendering_method.mobile="gl_compatibility"
|
renderer/rendering_method.mobile="gl_compatibility"
|
||||||
|
textures/vram_compression/import_etc2_astc=true
|
||||||
environment/defaults/default_clear_color=Color(0.188235, 0.188235, 0.188235, 1)
|
environment/defaults/default_clear_color=Color(0.188235, 0.188235, 0.188235, 1)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=14 format=3 uid="uid://b0m4v3w4sqrfs"]
|
[gd_scene load_steps=15 format=3 uid="uid://b0m4v3w4sqrfs"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/config/config_window.gd" id="1_3y2tp"]
|
[ext_resource type="Script" path="res://scripts/config/config_window.gd" id="1_3y2tp"]
|
||||||
[ext_resource type="StyleBox" uid="uid://bdkv45xc5lotp" path="res://assets/config/bg.tres" id="1_kscu5"]
|
[ext_resource type="StyleBox" uid="uid://bdkv45xc5lotp" path="res://assets/config/bg.tres" id="1_kscu5"]
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
[ext_resource type="FontFile" uid="uid://4e3o2ds5xy7p" path="res://assets/fonts/MatSymOut.ttf" id="2_pm82g"]
|
[ext_resource type="FontFile" uid="uid://4e3o2ds5xy7p" path="res://assets/fonts/MatSymOut.ttf" id="2_pm82g"]
|
||||||
[ext_resource type="LabelSettings" uid="uid://c2s3eclr25ots" path="res://assets/config/body.tres" id="3_gn7vd"]
|
[ext_resource type="LabelSettings" uid="uid://c2s3eclr25ots" path="res://assets/config/body.tres" id="3_gn7vd"]
|
||||||
[ext_resource type="FontFile" uid="uid://c6ck52v6qotm" path="res://assets/fonts/B_Lexend.ttf" id="3_qguou"]
|
[ext_resource type="FontFile" uid="uid://c6ck52v6qotm" path="res://assets/fonts/B_Lexend.ttf" id="3_qguou"]
|
||||||
|
[ext_resource type="Script" path="res://scripts/config/config_events.gd" id="6_kxysx"]
|
||||||
[ext_resource type="Script" path="res://scripts/config/config_presets.gd" id="6_th0jy"]
|
[ext_resource type="Script" path="res://scripts/config/config_presets.gd" id="6_th0jy"]
|
||||||
[ext_resource type="FontVariation" uid="uid://d1apfvux6r82v" path="res://assets/config/button_icon.tres" id="8_qusr6"]
|
[ext_resource type="FontVariation" uid="uid://d1apfvux6r82v" path="res://assets/config/button_icon.tres" id="8_qusr6"]
|
||||||
[ext_resource type="Script" path="res://scripts/config/open_file_dialog.gd" id="9_1o6y4"]
|
[ext_resource type="Script" path="res://scripts/config/open_file_dialog.gd" id="9_1o6y4"]
|
||||||
|
@ -70,6 +71,15 @@ size_flags_horizontal = 3
|
||||||
text = "Config"
|
text = "Config"
|
||||||
label_settings = SubResource("LabelSettings_gk6wd")
|
label_settings = SubResource("LabelSettings_gk6wd")
|
||||||
|
|
||||||
|
[node name="Encounters" type="Button" parent="MarginContainer/Form/Header"]
|
||||||
|
custom_minimum_size = Vector2(40, 40)
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Open the Events & Goodies menu."
|
||||||
|
theme_override_fonts/font = ExtResource("2_pm82g")
|
||||||
|
theme_override_font_sizes/font_size = 24
|
||||||
|
text = "featured_seasonal_and_gifts"
|
||||||
|
script = ExtResource("6_kxysx")
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="MarginContainer/Form/Header"]
|
[node name="Button" type="Button" parent="MarginContainer/Form/Header"]
|
||||||
custom_minimum_size = Vector2(40, 40)
|
custom_minimum_size = Vector2(40, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
@ -523,7 +533,6 @@ layout_mode = 2
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 1
|
size_flags_vertical = 1
|
||||||
tooltip_text = "How big the sprite is compared to its default size."
|
|
||||||
mouse_filter = 0
|
mouse_filter = 0
|
||||||
text = "Flip Sprite"
|
text = "Flip Sprite"
|
||||||
label_settings = ExtResource("3_gn7vd")
|
label_settings = ExtResource("3_gn7vd")
|
||||||
|
@ -534,6 +543,25 @@ layout_mode = 2
|
||||||
size_flags_horizontal = 8
|
size_flags_horizontal = 8
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
|
|
||||||
|
[node name="sprite_hold" type="HBoxContainer" parent="MarginContainer/Form/Sprites/Controls/VBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(0, 32)
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/Form/Sprites/Controls/VBoxContainer/sprite_hold"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 1
|
||||||
|
tooltip_text = "If you hold an animation, it will loop on every beat."
|
||||||
|
mouse_filter = 0
|
||||||
|
text = "Loop Holds"
|
||||||
|
label_settings = ExtResource("3_gn7vd")
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="input" type="CheckButton" parent="MarginContainer/Form/Sprites/Controls/VBoxContainer/sprite_hold"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 8
|
||||||
|
size_flags_vertical = 4
|
||||||
|
|
||||||
[node name="spritesheet_default_opacity" type="HBoxContainer" parent="MarginContainer/Form/Sprites/Controls/VBoxContainer"]
|
[node name="spritesheet_default_opacity" type="HBoxContainer" parent="MarginContainer/Form/Sprites/Controls/VBoxContainer"]
|
||||||
custom_minimum_size = Vector2(0, 32)
|
custom_minimum_size = Vector2(0, 32)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
@ -600,3 +628,4 @@ select_mode = 1
|
||||||
|
|
||||||
[connection signal="pressed" from="MarginContainer/Form/Header/BackButton" to="." method="_on_back_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/Form/Header/BackButton" to="." method="_on_back_button_pressed"]
|
||||||
[connection signal="pressed" from="MarginContainer/Form/Header/BackButton" to="MarginContainer/Form" method="_on_back_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/Form/Header/BackButton" to="MarginContainer/Form" method="_on_back_button_pressed"]
|
||||||
|
[connection signal="change_config" from="MarginContainer/Form/Header/Encounters" to="MarginContainer/Form" method="_on_encounters_change_config"]
|
||||||
|
|
61
scenes/config_events.tscn
Normal file
61
scenes/config_events.tscn
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
[gd_scene load_steps=5 format=3 uid="uid://dnr0jdrxiiifr"]
|
||||||
|
|
||||||
|
[ext_resource type="StyleBox" uid="uid://bdkv45xc5lotp" path="res://assets/config/bg.tres" id="1_4psbb"]
|
||||||
|
[ext_resource type="Script" path="res://scripts/config/config_window_events.gd" id="2_jnwha"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://4e3o2ds5xy7p" path="res://assets/fonts/MatSymOut.ttf" id="3_qmpng"]
|
||||||
|
[ext_resource type="LabelSettings" uid="uid://2iu8q0tylumo" path="res://assets/config/header_bold.tres" id="4_k4g4o"]
|
||||||
|
|
||||||
|
[node name="ScrollContainer" type="ScrollContainer"]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_styles/panel = ExtResource("1_4psbb")
|
||||||
|
horizontal_scroll_mode = 0
|
||||||
|
vertical_scroll_mode = 0
|
||||||
|
script = ExtResource("2_jnwha")
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/margin_left = 8
|
||||||
|
theme_override_constants/margin_top = 8
|
||||||
|
theme_override_constants/margin_right = 8
|
||||||
|
theme_override_constants/margin_bottom = 8
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Header" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="CloseButton" type="Button" parent="MarginContainer/VBoxContainer/Header"]
|
||||||
|
custom_minimum_size = Vector2(40, 40)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
theme_override_fonts/font = ExtResource("3_qmpng")
|
||||||
|
theme_override_font_sizes/font_size = 24
|
||||||
|
text = "close"
|
||||||
|
flat = true
|
||||||
|
|
||||||
|
[node name="Header" type="Label" parent="MarginContainer/VBoxContainer/Header"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Events & Goodies"
|
||||||
|
label_settings = ExtResource("4_k4g4o")
|
||||||
|
|
||||||
|
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[connection signal="pressed" from="MarginContainer/VBoxContainer/Header/CloseButton" to="." method="_on_close_button_pressed"]
|
6
scenes/global_events.tscn
Normal file
6
scenes/global_events.tscn
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://dxdsmwmjqrrl8"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://scripts/GlobalEvents.gd" id="1_toif7"]
|
||||||
|
|
||||||
|
[node name="Events" type="Node"]
|
||||||
|
script = ExtResource("1_toif7")
|
28
scenes/thingy_event.gd
Normal file
28
scenes/thingy_event.gd
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
extends PanelContainer
|
||||||
|
|
||||||
|
signal change_config(config:Dictionary)
|
||||||
|
|
||||||
|
@onready var title = $"MarginContainer/VBoxContainer/Header/Title"
|
||||||
|
@onready var date = $"MarginContainer/VBoxContainer/Header/VBoxContainer/Date"
|
||||||
|
@onready var tagline = $"MarginContainer/VBoxContainer/Header/VBoxContainer/Tagline"
|
||||||
|
@onready var thumb = $"MarginContainer/VBoxContainer/HBoxContainer/TextureRect"
|
||||||
|
@onready var desc = $"MarginContainer/VBoxContainer/HBoxContainer/Label"
|
||||||
|
|
||||||
|
@onready var yes = $"MarginContainer/VBoxContainer/HBoxContainer2/Yes"
|
||||||
|
|
||||||
|
var event:Dictionary
|
||||||
|
|
||||||
|
func do_things():
|
||||||
|
set_event()
|
||||||
|
yes.pressed.connect(func():
|
||||||
|
var script = load("res://events/" + event.id + "/redeem.gd").new()
|
||||||
|
if script.config_change != null:
|
||||||
|
change_config.emit(script.config_change)
|
||||||
|
)
|
||||||
|
|
||||||
|
func set_event():
|
||||||
|
title.text = event.title
|
||||||
|
date.text = event.date
|
||||||
|
tagline.text = event.tagline
|
||||||
|
thumb.texture = load("res://events/" + event.id + "/" + event.thumb)
|
||||||
|
desc.text = event.desc
|
100
scenes/thingy_event.tscn
Normal file
100
scenes/thingy_event.tscn
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
[gd_scene load_steps=7 format=3 uid="uid://qnji76gh8bjy"]
|
||||||
|
|
||||||
|
[ext_resource type="StyleBox" uid="uid://bkwb4tqap7x7i" path="res://assets/config/bg2.tres" id="1_uaet0"]
|
||||||
|
[ext_resource type="Script" path="res://scenes/thingy_event.gd" id="2_x0j35"]
|
||||||
|
[ext_resource type="LabelSettings" uid="uid://2iu8q0tylumo" path="res://assets/config/header_bold.tres" id="2_xndpd"]
|
||||||
|
[ext_resource type="LabelSettings" uid="uid://c2s3eclr25ots" path="res://assets/config/body.tres" id="3_40siy"]
|
||||||
|
[ext_resource type="LabelSettings" uid="uid://xh3q8p65gbti" path="res://assets/config/tiny.tres" id="4_e5d37"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bsk0t7any1rqg" path="res://events/week_3/mk_preview.png" id="5_b74tb"]
|
||||||
|
|
||||||
|
[node name="ThingyEvent" type="PanelContainer"]
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -211.5
|
||||||
|
offset_top = -37.0
|
||||||
|
offset_right = 211.5
|
||||||
|
offset_bottom = 37.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 4
|
||||||
|
theme_override_styles/panel = ExtResource("1_uaet0")
|
||||||
|
script = ExtResource("2_x0j35")
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_left = 16
|
||||||
|
theme_override_constants/margin_top = 16
|
||||||
|
theme_override_constants/margin_right = 16
|
||||||
|
theme_override_constants/margin_bottom = 16
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 16
|
||||||
|
|
||||||
|
[node name="Header" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 16
|
||||||
|
|
||||||
|
[node name="Title" type="Label" parent="MarginContainer/VBoxContainer/Header"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 1
|
||||||
|
text = "Loading"
|
||||||
|
label_settings = ExtResource("2_xndpd")
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/Header"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 0
|
||||||
|
theme_override_constants/separation = 0
|
||||||
|
alignment = 2
|
||||||
|
|
||||||
|
[node name="Date" type="Label" parent="MarginContainer/VBoxContainer/Header/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 1
|
||||||
|
text = "Soon..."
|
||||||
|
label_settings = ExtResource("3_40siy")
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="Tagline" type="Label" parent="MarginContainer/VBoxContainer/Header/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 1
|
||||||
|
text = "I can hardly wait!"
|
||||||
|
label_settings = ExtResource("4_e5d37")
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/separation = 16
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(300, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 0
|
||||||
|
text = "Loading..."
|
||||||
|
label_settings = ExtResource("3_40siy")
|
||||||
|
autowrap_mode = 3
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(128, 128)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 0
|
||||||
|
texture = ExtResource("5_b74tb")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 4
|
||||||
|
|
||||||
|
[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 8
|
||||||
|
alignment = 2
|
||||||
|
|
||||||
|
[node name="Yes" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Apply"
|
|
@ -75,6 +75,7 @@ var spritesheet_anims = {
|
||||||
var spritesheet_anchor = SpritesheetAnchor.BOTTOM
|
var spritesheet_anchor = SpritesheetAnchor.BOTTOM
|
||||||
var sprite_scale = 1.0
|
var sprite_scale = 1.0
|
||||||
var sprite_flip = false
|
var sprite_flip = false
|
||||||
|
var sprite_hold = false
|
||||||
var spritesheet_default_opacity = 1.0
|
var spritesheet_default_opacity = 1.0
|
||||||
|
|
||||||
# Keybinds
|
# Keybinds
|
||||||
|
@ -137,6 +138,7 @@ func clone_config(config) -> void:
|
||||||
self.spritesheet_anchor = config.spritesheet_anchor
|
self.spritesheet_anchor = config.spritesheet_anchor
|
||||||
self.sprite_scale = config.sprite_scale
|
self.sprite_scale = config.sprite_scale
|
||||||
self.sprite_flip = config.sprite_flip
|
self.sprite_flip = config.sprite_flip
|
||||||
|
self.sprite_hold = config.sprite_hold
|
||||||
self.spritesheet_default_opacity = config.spritesheet_default_opacity
|
self.spritesheet_default_opacity = config.spritesheet_default_opacity
|
||||||
self.bpm_is_global = config.bpm_is_global
|
self.bpm_is_global = config.bpm_is_global
|
||||||
self.bpm_needs_enable = config.bpm_needs_enable
|
self.bpm_needs_enable = config.bpm_needs_enable
|
||||||
|
@ -170,6 +172,7 @@ func format_config() -> Dictionary:
|
||||||
dict.spritesheet_anims = self.spritesheet_anims.duplicate(true)
|
dict.spritesheet_anims = self.spritesheet_anims.duplicate(true)
|
||||||
dict.sprite_scale = self.sprite_scale
|
dict.sprite_scale = self.sprite_scale
|
||||||
dict.sprite_flip = self.sprite_flip
|
dict.sprite_flip = self.sprite_flip
|
||||||
|
dict.sprite_hold = self.sprite_hold
|
||||||
dict.spritesheet_anchor = self.spritesheet_anchor
|
dict.spritesheet_anchor = self.spritesheet_anchor
|
||||||
dict.spritesheet_default_opacity = self.spritesheet_default_opacity
|
dict.spritesheet_default_opacity = self.spritesheet_default_opacity
|
||||||
dict.bpm_is_global = self.bpm_is_global
|
dict.bpm_is_global = self.bpm_is_global
|
||||||
|
|
15
scripts/GlobalEvents.gd
Normal file
15
scripts/GlobalEvents.gd
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
func copy_fa(from: String, to: String) -> void:
|
||||||
|
var file_from = FileAccess.get_file_as_bytes(from)
|
||||||
|
var file_to = FileAccess.open(to, FileAccess.WRITE)
|
||||||
|
file_to.store_buffer(file_from)
|
||||||
|
file_to.close()
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
print("Hello!")
|
||||||
|
|
||||||
|
func _notification(what):
|
||||||
|
if what == NOTIFICATION_WM_CLOSE_REQUEST:
|
||||||
|
print("Goodbye!")
|
||||||
|
get_tree().quit()
|
|
@ -43,6 +43,9 @@ func _process(delta: float) -> void:
|
||||||
var beat_percentage = Tempo.beat_at_time(time - current_animation.tstamp, bpm)
|
var beat_percentage = Tempo.beat_at_time(time - current_animation.tstamp, bpm)
|
||||||
|
|
||||||
if beat_percentage >= 1 and current_animation.active:
|
if beat_percentage >= 1 and current_animation.active:
|
||||||
|
if GlobalConfig.sprite_hold and current_animation.keydown:
|
||||||
|
current_animation.tstamp = time
|
||||||
|
beat_percentage = 0
|
||||||
if current_animation.type == Config.SpritesheetAnimType.IDLE:
|
if current_animation.type == Config.SpritesheetAnimType.IDLE:
|
||||||
current_animation.tstamp = time
|
current_animation.tstamp = time
|
||||||
beat_percentage = 0
|
beat_percentage = 0
|
||||||
|
|
27
scripts/config/config_events.gd
Normal file
27
scripts/config/config_events.gd
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
extends Button
|
||||||
|
|
||||||
|
signal change_config(config:Dictionary)
|
||||||
|
|
||||||
|
var config_events = preload("res://scenes/config_events.tscn")
|
||||||
|
|
||||||
|
@onready var root = get_tree().root
|
||||||
|
@onready var form = $"../.."
|
||||||
|
|
||||||
|
func _pressed() -> void:
|
||||||
|
var preset_window = Popup.new()
|
||||||
|
var cfev = config_events.instantiate()
|
||||||
|
preset_window.add_child(cfev)
|
||||||
|
root.add_child(preset_window)
|
||||||
|
preset_window.popup_centered_ratio()
|
||||||
|
|
||||||
|
var close = func():
|
||||||
|
preset_window.hide()
|
||||||
|
root.remove_child(preset_window)
|
||||||
|
preset_window.queue_free()
|
||||||
|
cfev.queue_free()
|
||||||
|
|
||||||
|
cfev.close.connect(close)
|
||||||
|
cfev.change_config.connect(func(config):
|
||||||
|
close.call()
|
||||||
|
change_config.emit(config)
|
||||||
|
)
|
58
scripts/config/config_window_events.gd
Normal file
58
scripts/config/config_window_events.gd
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
extends ScrollContainer
|
||||||
|
|
||||||
|
signal change_config(config:Dictionary)
|
||||||
|
signal close
|
||||||
|
|
||||||
|
var thingy_event = preload("res://scenes/thingy_event.tscn")
|
||||||
|
|
||||||
|
var events_parser:XMLParser = XMLParser.new()
|
||||||
|
var events = []
|
||||||
|
|
||||||
|
@onready var vbc = $"MarginContainer/VBoxContainer/ScrollContainer/VBoxContainer"
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready() -> void:
|
||||||
|
parse()
|
||||||
|
mount()
|
||||||
|
|
||||||
|
func parse():
|
||||||
|
var last_node_name = ""
|
||||||
|
events = []
|
||||||
|
events_parser.open("res://events/latest_events.xml")
|
||||||
|
|
||||||
|
while events_parser.read() != ERR_FILE_EOF:
|
||||||
|
var current = events.back()
|
||||||
|
var nt = events_parser.get_node_type()
|
||||||
|
if nt == XMLParser.NODE_TEXT:
|
||||||
|
if last_node_name == "": continue
|
||||||
|
current[last_node_name] = events_parser.get_node_data()
|
||||||
|
elif nt == XMLParser.NODE_ELEMENT:
|
||||||
|
var node_name = events_parser.get_node_name()
|
||||||
|
if node_name == "events":
|
||||||
|
continue
|
||||||
|
elif node_name == "event":
|
||||||
|
events.append({
|
||||||
|
id = events_parser.get_named_attribute_value_safe("id"),
|
||||||
|
date = events_parser.get_named_attribute_value_safe("date"),
|
||||||
|
tagline = "",
|
||||||
|
title = "",
|
||||||
|
thumb = "",
|
||||||
|
desc = ""
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
last_node_name = node_name
|
||||||
|
else:
|
||||||
|
last_node_name = ""
|
||||||
|
|
||||||
|
func mount():
|
||||||
|
print(events)
|
||||||
|
for event in events:
|
||||||
|
var te = thingy_event.instantiate()
|
||||||
|
vbc.add_child(te)
|
||||||
|
te.event = event
|
||||||
|
te.do_things()
|
||||||
|
te.change_config.connect(change_config.emit)
|
||||||
|
vbc.move_child(te, 0)
|
||||||
|
|
||||||
|
func _on_close_button_pressed() -> void:
|
||||||
|
close.emit()
|
|
@ -1,5 +1,7 @@
|
||||||
extends VBoxContainer
|
extends VBoxContainer
|
||||||
|
|
||||||
|
@onready var encounters = $"Header/Encounters"
|
||||||
|
|
||||||
@onready var osd_dwell_time = $"OSD and UI/Controls/VBoxContainer/osd_dwell_time"
|
@onready var osd_dwell_time = $"OSD and UI/Controls/VBoxContainer/osd_dwell_time"
|
||||||
@onready var osd_fade_time = $"OSD and UI/Controls/VBoxContainer/osd_fade_time"
|
@onready var osd_fade_time = $"OSD and UI/Controls/VBoxContainer/osd_fade_time"
|
||||||
@onready var osd_opacity = $"OSD and UI/Controls/VBoxContainer/osd_opacity"
|
@onready var osd_opacity = $"OSD and UI/Controls/VBoxContainer/osd_opacity"
|
||||||
|
@ -15,6 +17,7 @@ extends VBoxContainer
|
||||||
@onready var spritesheet_anchor = $"Sprites/Controls/VBoxContainer/spritesheet_anchor"
|
@onready var spritesheet_anchor = $"Sprites/Controls/VBoxContainer/spritesheet_anchor"
|
||||||
@onready var sprite_scale = $"Sprites/Controls/VBoxContainer/sprite_scale"
|
@onready var sprite_scale = $"Sprites/Controls/VBoxContainer/sprite_scale"
|
||||||
@onready var sprite_flip = $"Sprites/Controls/VBoxContainer/sprite_flip"
|
@onready var sprite_flip = $"Sprites/Controls/VBoxContainer/sprite_flip"
|
||||||
|
@onready var sprite_hold = $"Sprites/Controls/VBoxContainer/sprite_hold"
|
||||||
@onready var spritesheet_default_opacity = $"Sprites/Controls/VBoxContainer/spritesheet_default_opacity"
|
@onready var spritesheet_default_opacity = $"Sprites/Controls/VBoxContainer/spritesheet_default_opacity"
|
||||||
|
|
||||||
@onready var anims = $"Binds/Controls/VBoxContainer"
|
@onready var anims = $"Binds/Controls/VBoxContainer"
|
||||||
|
@ -48,14 +51,20 @@ func _ready() -> void:
|
||||||
link_optionbutton_to_property(spritesheet_anchor, "spritesheet_anchor", Config.SpritesheetAnchor)
|
link_optionbutton_to_property(spritesheet_anchor, "spritesheet_anchor", Config.SpritesheetAnchor)
|
||||||
link_range_to_property(sprite_scale, "sprite_scale")
|
link_range_to_property(sprite_scale, "sprite_scale")
|
||||||
link_toggleable_to_property(sprite_flip, "sprite_flip")
|
link_toggleable_to_property(sprite_flip, "sprite_flip")
|
||||||
|
link_toggleable_to_property(sprite_hold, "sprite_hold")
|
||||||
link_value_to_slider(spritesheet_default_opacity)
|
link_value_to_slider(spritesheet_default_opacity)
|
||||||
link_range_to_property(spritesheet_default_opacity, "spritesheet_default_opacity")
|
link_range_to_property(spritesheet_default_opacity, "spritesheet_default_opacity")
|
||||||
fuckwith_anims()
|
fuckwith_anims()
|
||||||
fuckwith_spritesheet_anims()
|
fuckwith_spritesheet_anims()
|
||||||
|
|
||||||
|
func _on_encounters_change_config(config: Dictionary) -> void:
|
||||||
|
for key in config:
|
||||||
|
GlobalConfig[key] = config[key]
|
||||||
|
GlobalConfig.save_to_file()
|
||||||
|
get_tree().reload_current_scene()
|
||||||
|
|
||||||
func _on_back_button_pressed() -> void:
|
func _on_back_button_pressed() -> void:
|
||||||
GlobalConfig.clone_config(temp_config)
|
GlobalConfig.clone_config(temp_config)
|
||||||
|
|
||||||
GlobalConfig.save_to_file()
|
GlobalConfig.save_to_file()
|
||||||
|
|
||||||
var unlock_func = null
|
var unlock_func = null
|
||||||
|
|
|
@ -37,7 +37,8 @@ func _ready() -> void:
|
||||||
if not DirAccess.dir_exists_absolute("user://uploads/"):
|
if not DirAccess.dir_exists_absolute("user://uploads/"):
|
||||||
DirAccess.make_dir_absolute("user://uploads/")
|
DirAccess.make_dir_absolute("user://uploads/")
|
||||||
var new_path = "user://uploads/".path_join(path.text.get_file())
|
var new_path = "user://uploads/".path_join(path.text.get_file())
|
||||||
DirAccess.copy_absolute(path.text, new_path)
|
var dir = DirAccess.open(path.text.get_base_dir())
|
||||||
|
dir.copy(path.text.get_file(), new_path)
|
||||||
path.text = new_path
|
path.text = new_path
|
||||||
file_changed.emit(new_path)
|
file_changed.emit(new_path)
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,7 +8,7 @@ func _index_pressed(idx: int):
|
||||||
elif idx == 1:
|
elif idx == 1:
|
||||||
get_tree().change_scene_to_file("res://scenes/xml_editor.tscn")
|
get_tree().change_scene_to_file("res://scenes/xml_editor.tscn")
|
||||||
elif idx == 2:
|
elif idx == 2:
|
||||||
get_tree().quit()
|
get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
|
@ -36,11 +36,13 @@ var selected_frame:int = 0
|
||||||
var image_path = GlobalConfig.spritesheet_image
|
var image_path = GlobalConfig.spritesheet_image
|
||||||
var data_path = GlobalConfig.spritesheet_data
|
var data_path = GlobalConfig.spritesheet_data
|
||||||
|
|
||||||
|
var fuck_you_godot_signals = 0
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var frame:ReferenceRect = region_viewport.get_node("ReferenceRect")
|
var frame:ReferenceRect = region_viewport.get_node("ReferenceRect")
|
||||||
region_viewport.size_changed.connect(func():
|
region_viewport.size_changed.connect(func():
|
||||||
frame.position = (region_viewport.size / 2) - Vector2i(frame.size / 2)
|
frame.position = ((region_viewport.size / 2) - Vector2i(frame.size / 2)) - Vector2i.ONE
|
||||||
)
|
)
|
||||||
|
|
||||||
link_range_to_callable(frame_count, func(val: int):
|
link_range_to_callable(frame_count, func(val: int):
|
||||||
|
@ -59,17 +61,19 @@ func _ready() -> void:
|
||||||
if ts_dont_change_internal: return
|
if ts_dont_change_internal: return
|
||||||
set_property_on_current_frame("pos", get_vector(region_pos))
|
set_property_on_current_frame("pos", get_vector(region_pos))
|
||||||
set_region_view()
|
set_region_view()
|
||||||
|
set_frames_tree()
|
||||||
)
|
)
|
||||||
link_pos_to_callable_e(region_size, func(_val: int):
|
link_pos_to_callable_e(region_size, func(_val: int):
|
||||||
if ts_dont_change_internal: return
|
if ts_dont_change_internal: return
|
||||||
set_property_on_current_frame("size", get_vector(region_size))
|
set_property_on_current_frame("size", get_vector(region_size))
|
||||||
set_region_view()
|
set_region_view()
|
||||||
update_current_frame_child()
|
set_frames_tree()
|
||||||
)
|
)
|
||||||
link_pos_to_callable_e(sprite_offset, func(_val: int):
|
link_pos_to_callable_e(sprite_offset, func(_val: int):
|
||||||
if ts_dont_change_internal: return
|
if ts_dont_change_internal: return
|
||||||
set_property_on_current_frame("frame_pos", get_vector(sprite_offset))
|
set_property_on_current_frame("frame_pos", get_vector(sprite_offset))
|
||||||
set_region_view()
|
set_region_view()
|
||||||
|
set_frames_tree()
|
||||||
)
|
)
|
||||||
|
|
||||||
var rs_autocrop:Button = region_size.get_node("autocrop")
|
var rs_autocrop:Button = region_size.get_node("autocrop")
|
||||||
|
@ -208,8 +212,8 @@ func link_range_to_callable(obj:BoxContainer, callable:Callable, value) -> void:
|
||||||
func set_vector(obj:BoxContainer, vector:Vector2) -> void:
|
func set_vector(obj:BoxContainer, vector:Vector2) -> void:
|
||||||
var x:Range = obj.get_node("value_w")
|
var x:Range = obj.get_node("value_w")
|
||||||
var y:Range = obj.get_node("value_h")
|
var y:Range = obj.get_node("value_h")
|
||||||
x.value = vector.x
|
x.set_value_no_signal(vector.x)
|
||||||
y.value = vector.y
|
y.set_value_no_signal(vector.y)
|
||||||
|
|
||||||
func get_vector(obj:BoxContainer) -> Vector2:
|
func get_vector(obj:BoxContainer) -> Vector2:
|
||||||
var x:Range = obj.get_node("value_w")
|
var x:Range = obj.get_node("value_w")
|
||||||
|
@ -317,14 +321,14 @@ func fuck_with_frames_tree() -> void:
|
||||||
var placeholder
|
var placeholder
|
||||||
if next_frame != null and not duplicate:
|
if next_frame != null and not duplicate:
|
||||||
placeholder = next_frame.duplicate(false)
|
placeholder = next_frame.duplicate(false)
|
||||||
cur_anim.frames[item_index + 1] = frame
|
cur_anim.frames[item_index + 1] = frame.duplicate(false)
|
||||||
if next_frame != null and not duplicate:
|
if next_frame != null and not duplicate:
|
||||||
cur_anim.frames[item_index] = placeholder
|
cur_anim.frames[item_index] = placeholder
|
||||||
if id == 1:
|
if id == 1:
|
||||||
if item_index - 1 < 0: return
|
if item_index - 1 < 0: return
|
||||||
var prev_frame = cur_anim.frames[item_index - 1]
|
var prev_frame = cur_anim.frames[item_index - 1]
|
||||||
var placeholder = prev_frame.duplicate(false)
|
var placeholder = prev_frame.duplicate(false)
|
||||||
cur_anim.frames[item_index - 1] = frame
|
cur_anim.frames[item_index - 1] = frame.duplicate(false)
|
||||||
cur_anim.frames[item_index] = placeholder
|
cur_anim.frames[item_index] = placeholder
|
||||||
set_frames_tree()
|
set_frames_tree()
|
||||||
)
|
)
|
||||||
|
@ -452,7 +456,7 @@ func set_region_view() -> void:
|
||||||
rg_oskin_prev_char.texture.region = Rect2(0,0,1,1)
|
rg_oskin_prev_char.texture.region = Rect2(0,0,1,1)
|
||||||
else:
|
else:
|
||||||
var prev_frame = cur_anim.frames[selected_frame - 1]
|
var prev_frame = cur_anim.frames[selected_frame - 1]
|
||||||
rg_oskin_prev_char.position = prev_frame.frame_pos
|
rg_oskin_prev_char.position = prev_frame.frame_pos + Vector2i.ONE
|
||||||
rg_oskin_prev_char.texture.region = Rect2(prev_frame.pos, prev_frame.size)
|
rg_oskin_prev_char.texture.region = Rect2(prev_frame.pos, prev_frame.size)
|
||||||
|
|
||||||
if selected_frame + 1 >= cur_anim.frames.size() or cur_anim.frames[selected_frame + 1] == null:
|
if selected_frame + 1 >= cur_anim.frames.size() or cur_anim.frames[selected_frame + 1] == null:
|
||||||
|
@ -460,16 +464,16 @@ func set_region_view() -> void:
|
||||||
rg_oskin_next_char.texture.region = Rect2(0,0,1,1)
|
rg_oskin_next_char.texture.region = Rect2(0,0,1,1)
|
||||||
else:
|
else:
|
||||||
var next_frame = cur_anim.frames[selected_frame + 1]
|
var next_frame = cur_anim.frames[selected_frame + 1]
|
||||||
rg_oskin_next_char.position = next_frame.frame_pos
|
rg_oskin_next_char.position = next_frame.frame_pos + Vector2i.ONE
|
||||||
rg_oskin_next_char.texture.region = Rect2(next_frame.pos, next_frame.size)
|
rg_oskin_next_char.texture.region = Rect2(next_frame.pos, next_frame.size)
|
||||||
|
|
||||||
character.position = cur_frame.frame_pos
|
character.position = Vector2i(cur_frame.frame_pos) + Vector2i.ONE
|
||||||
character_frame.position = cur_frame.frame_pos
|
character_frame.position = cur_frame.frame_pos
|
||||||
character_frame.size = cur_frame.size
|
character_frame.size = Vector2i(cur_frame.size) + Vector2i(2,2)
|
||||||
atlas.region = Rect2(cur_frame.pos, cur_frame.size)
|
atlas.region = Rect2(cur_frame.pos, cur_frame.size)
|
||||||
|
|
||||||
frame.size = spritesheet_size
|
frame.size = spritesheet_size + Vector2i(2,2)
|
||||||
frame.position = (region_viewport.size / 2) - Vector2i(frame.size / 2)
|
frame.position = ((region_viewport.size / 2) - Vector2i(frame.size / 2)) - Vector2i.ONE
|
||||||
|
|
||||||
var ts_dont_change_internal = false
|
var ts_dont_change_internal = false
|
||||||
func set_three_stooges() -> void:
|
func set_three_stooges() -> void:
|
||||||
|
@ -478,9 +482,13 @@ func set_three_stooges() -> void:
|
||||||
|
|
||||||
ts_dont_change_internal = true
|
ts_dont_change_internal = true
|
||||||
|
|
||||||
|
region_pos.release_focus()
|
||||||
|
region_size.release_focus()
|
||||||
|
sprite_offset.release_focus()
|
||||||
|
|
||||||
set_vector(region_pos, atlas.region.position)
|
set_vector(region_pos, atlas.region.position)
|
||||||
set_vector(region_size, atlas.region.size)
|
set_vector(region_size, atlas.region.size)
|
||||||
set_vector(sprite_offset, character.position)
|
set_vector(sprite_offset, character.position - Vector2.ONE)
|
||||||
|
|
||||||
ts_dont_change_internal = false
|
ts_dont_change_internal = false
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue