gd: added menu template

This commit is contained in:
2025-06-10 18:46:20 +02:00
parent f9a6c42b14
commit c554e24b01
421 changed files with 12371 additions and 2 deletions

View File

@ -0,0 +1,11 @@
[gd_scene load_steps=3 format=3 uid="uid://c63l6okbko3xp"]
[ext_resource type="PackedScene" uid="uid://cd0jbh4metflb" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn" id="1_8i8ik"]
[ext_resource type="Script" uid="uid://1j5xbugtakig" path="res://menus/scenes/loading_screen/loading_screen.gd" id="2_3hi1w"]
[node name="LevelLoadingScreen" instance=ExtResource("1_8i8ik")]
script = ExtResource("2_3hi1w")
_in_progress = "Loading Level..."
_in_progress_waiting = "Still Loading Level..."
_in_progress_still_waiting = "Still Loading Level... (%d seconds)"
_complete = "Loading Level Complete!"

View File

@ -0,0 +1 @@
extends LoadingScreen

View File

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

View File

@ -0,0 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://dshcs2ioahnvg"]
[ext_resource type="PackedScene" uid="uid://cd0jbh4metflb" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn" id="1_rqt5e"]
[ext_resource type="Script" uid="uid://1j5xbugtakig" path="res://menus/scenes/loading_screen/loading_screen.gd" id="2_t84qw"]
[node name="LoadingScreen" instance=ExtResource("1_rqt5e")]
script = ExtResource("2_t84qw")

View File

@ -0,0 +1,91 @@
extends LoadingScreen
@export_dir var _spatial_shader_material_dir : String
@export_file("*.tscn") var _cache_shaders_scene : String
@export var _mesh : Mesh
@export_group("Advanced")
@export var _matching_extensions : Array[String] = [".tres", ".material", ".res"]
@export var _ignore_subfolders : Array[String] = [".", ".."]
@export var _shader_delay_timer : float = 0.1
var _loading_shader_cache : bool = false
var _caching_progress : float = 0.0 :
set(value):
if value <= _caching_progress:
return
_caching_progress = value
update_total_loading_progress()
_reset_loading_stage()
func can_load_shader_cache() -> bool:
return not _spatial_shader_material_dir.is_empty() and \
not _cache_shaders_scene.is_empty() and \
SceneLoader.is_loading_scene(_cache_shaders_scene)
func update_total_loading_progress() -> void:
var partial_total := _scene_loading_progress
if can_load_shader_cache():
partial_total += _caching_progress
partial_total /= 2
_total_loading_progress = partial_total
func _set_scene_loading_complete() -> void:
super._set_scene_loading_complete()
if can_load_shader_cache() and not _loading_shader_cache:
_loading_shader_cache = true
_show_all_draw_passes_once()
if can_load_shader_cache() and _caching_progress < 1.0:
return
SceneLoader._background_loading = false
SceneLoader.set_process(true)
func _show_all_draw_passes_once() -> void:
var all_materials := _traverse_folders(_spatial_shader_material_dir)
var total_material_count := all_materials.size()
var cached_material_count := 0
for material_path in all_materials:
_load_material(material_path)
cached_material_count += 1
_caching_progress = float(cached_material_count) / total_material_count
if _shader_delay_timer > 0:
await(get_tree().create_timer(_shader_delay_timer).timeout)
func _traverse_folders(dir_path:String) -> PackedStringArray:
var material_list:PackedStringArray = []
if not dir_path.ends_with("/"):
dir_path += "/"
var dir := DirAccess.open(dir_path)
if not dir:
push_error("failed to access the path ", dir_path)
return []
if dir.list_dir_begin() != OK:
push_error("failed to access the path ", dir_path)
return []
var file_name := dir.get_next()
while file_name != "":
if not dir.current_is_dir():
var matches : bool = false
for extension in _matching_extensions:
if file_name.ends_with(extension):
matches = true
break
if matches:
material_list.append(dir_path + file_name)
else:
var subfolder_name := file_name
if not subfolder_name in _ignore_subfolders:
material_list.append_array(_traverse_folders(dir_path + subfolder_name))
file_name = dir.get_next()
return material_list
func _load_material(path:String) -> void:
var material_shower := MeshInstance3D.new()
material_shower.mesh = _mesh
var material := ResourceLoader.load(path) as Material
material_shower.set_surface_override_material(0, material)
%SpatialShaderTypeCaches.add_child(material_shower)
func _ready() -> void:
SceneLoader._background_loading = true

View File

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

View File

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=3 uid="uid://b8sfwmevux8s1"]
[ext_resource type="PackedScene" uid="uid://cd0jbh4metflb" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn" id="1_b2x1j"]
[ext_resource type="Script" uid="uid://cit747gi4v6jd" path="res://menus/scenes/loading_screen/loading_screen_with_shader_caching.gd" id="2_n73ts"]
[sub_resource type="QuadMesh" id="QuadMesh_klnwy"]
[node name="LoadingScreen" instance=ExtResource("1_b2x1j")]
script = ExtResource("2_n73ts")
_spatial_shader_material_dir = ""
_cache_shaders_scene = "res://menus/scenes/game_scene/game_ui.tscn"
_mesh = SubResource("QuadMesh_klnwy")
_matching_extensions = Array[String]([".tres", ".material", ".res"])
_ignore_subfolders = Array[String]([".", ".."])
_shader_delay_timer = 0.1
[node name="SpatialShaderTypeCaches" type="Node3D" parent="." index="2"]
unique_name_in_owner = true
[node name="Camera3D" type="Camera3D" parent="SpatialShaderTypeCaches" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.408)
current = true