From 9b2e79dbd2ad365fbff19577c7039a791bbd3a79 Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 8 Jun 2026 11:29:06 -0700 Subject: [PATCH] Add placeholder image for locked images, disable locked images in UI --- Zennysoft.Game.Ma/src/gallery/LockedImage.png | Bin 0 -> 9666 bytes .../src/gallery/LockedImage.png.import | 35 ++++++++++++++++++ .../src/ui/gallery/GalleryMenu.cs | 13 +++++-- .../src/ui/gallery/GalleryMenu.tscn | 23 ++++++------ 4 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 Zennysoft.Game.Ma/src/gallery/LockedImage.png create mode 100644 Zennysoft.Game.Ma/src/gallery/LockedImage.png.import diff --git a/Zennysoft.Game.Ma/src/gallery/LockedImage.png b/Zennysoft.Game.Ma/src/gallery/LockedImage.png new file mode 100644 index 0000000000000000000000000000000000000000..fff4335a13aa702e734e9c55737d95d202216b2b GIT binary patch literal 9666 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 literal 0 HcmV?d00001 diff --git a/Zennysoft.Game.Ma/src/gallery/LockedImage.png.import b/Zennysoft.Game.Ma/src/gallery/LockedImage.png.import new file mode 100644 index 00000000..ad19f396 --- /dev/null +++ b/Zennysoft.Game.Ma/src/gallery/LockedImage.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgvdcx107mbqg" +path.bptc="res://.godot/imported/LockedImage.png-320430e0641c9513ebcd2bd1ecdc8829.bptc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://src/gallery/LockedImage.png" +dest_files=["res://.godot/imported/LockedImage.png-320430e0641c9513ebcd2bd1ecdc8829.bptc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=true +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=0 diff --git a/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.cs b/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.cs index 3e45d83d..0527ea97 100644 --- a/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.cs +++ b/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.cs @@ -147,13 +147,15 @@ public partial class GalleryMenu : Control if (!GalleryImages[image]) { + ItemLabels[imageIndex].Disabled = true; imageIndex++; continue; } - var r = ResourceLoader.Load(_textures + "/" + image); + var r = ResourceLoader.Load(_textures + "/" + image); ItemLabels[imageIndex].Text = image.TrimSuffix(".png").TrimSuffix(".jpg"); - ItemThumbnails[imageIndex++].Texture = (CompressedTexture2D)r; + ItemLabels[imageIndex].Disabled = false; + ItemThumbnails[imageIndex++].Texture = r; } NextButton.Disabled = _pageIndex == Filepaths.Count - 1; @@ -187,10 +189,13 @@ public partial class GalleryMenu : Control public void ClearImages() { + var lockedImage = ResourceLoader.Load(@"res://src/gallery/LockedImage.png"); foreach (var image in ItemThumbnails) - image.Texture = new PlaceholderTexture2D(); + { + image.Texture = lockedImage; + } foreach (var label in ItemLabels) - label.Text = "???"; + label.Text = " ??? "; } public override void _Input(InputEvent @event) diff --git a/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.tscn b/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.tscn index d7b4b390..741e69d0 100644 --- a/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.tscn +++ b/Zennysoft.Game.Ma/src/ui/gallery/GalleryMenu.tscn @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://cl0fi7kgimquk" path="res://src/ui/gallery/GalleryMenu.cs" id="1_lvvvw"] [ext_resource type="Texture2D" uid="uid://s3mtv6c2emph" path="res://src/ui/gallery/Gallery.png" id="2_lvvvw"] +[ext_resource type="Texture2D" uid="uid://bgvdcx107mbqg" path="res://src/gallery/LockedImage.png" id="3_1v60v"] [ext_resource type="FontFile" uid="uid://tfskthaq7tmi" path="res://src/ui/fonts/georgia.ttf" id="3_5ba6g"] [ext_resource type="StyleBox" uid="uid://bxuy4tnftibfq" path="res://src/options/SelectedOptionsBox.tres" id="4_1v60v"] [ext_resource type="Texture2D" uid="uid://b7nxeq5qft3xa" path="res://src/ui/gallery/Line 1.png" id="4_s04nx"] @@ -9,8 +10,6 @@ [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_5wknn"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_5wknn"] - [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5ba6g"] bg_color = Color(0, 0, 0, 0.933333) @@ -89,7 +88,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -129,7 +128,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -169,7 +168,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -209,7 +208,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -249,7 +248,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -293,7 +292,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -333,7 +332,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -373,7 +372,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -413,7 +412,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5 @@ -453,7 +452,7 @@ layout_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(270, 190) layout_mode = 2 -texture = SubResource("PlaceholderTexture2D_5wknn") +texture = ExtResource("3_1v60v") expand_mode = 2 stretch_mode = 5