Compare commits

..

21 Commits
blockz ... main

Author SHA1 Message Date
0c039b996e Update project name 2024-08-20 19:43:06 +03:00
8d1148e9b8 Add LilitaOne as the label font 2024-08-20 19:41:38 +03:00
12bb5cdd84 Add outlines to labels 2024-08-20 19:39:32 +03:00
81bd77e1fc Tweak prompts 2024-08-20 19:36:51 +03:00
5c66ac4867 Tweak the downstairs 2024-08-20 19:34:20 +03:00
5681d3f65d Make Plane more sensical 2024-08-20 19:32:12 +03:00
fd65fd5ec1 Add dynamic shadows and ssao to improve table looks 2024-08-20 19:17:48 +03:00
2671f01a72 Remove grappling hook remains 2024-08-20 19:07:32 +03:00
7b915c4fb9 Add icon, boot splash 2024-08-20 19:01:11 +03:00
1d18668bf8 Various menu related fixes 2024-08-20 18:49:54 +03:00
411a8fd1eb Add trees to the stairs map 2024-08-20 18:49:54 +03:00
754c120c26 Empty hud texts by default 2024-08-20 18:44:07 +03:00
0045fc69c3 Make dragging more sensitive 2024-08-20 18:43:07 +03:00
c60eaa562b Merge branch 'main' of git.teascade.net:NeonTea/gmtk24 2024-08-20 18:35:07 +03:00
fc15cad1b0 Add MainMenu 2024-08-20 18:34:08 +03:00
4a165756eb Fix table/stairs issues 2024-08-20 18:16:18 +03:00
e5215356f3 Add scene switcher for controlled scene switches 2024-08-20 18:03:33 +03:00
207629e014 Add graphics settings 2024-08-20 18:03:33 +03:00
814a7c3c3c Add tabs for settings, make orbit speed separately configurable 2024-08-20 18:03:33 +03:00
a40f4afbbb Make demo pieces and blueprint smaller 2024-08-20 18:03:33 +03:00
b43867b29d Try to make smalle fixes 2024-08-20 18:02:19 +03:00
46 changed files with 4443 additions and 1002 deletions

BIN
font/LilitaOne-Regular.ttf Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://246jxnbu62q3"
path="res://.godot/imported/LilitaOne-Regular.ttf-7e2161443d37c26d9a127c9b42e001ae.fontdata"
[deps]
source_file="res://font/LilitaOne-Regular.ttf"
dest_files=["res://.godot/imported/LilitaOne-Regular.ttf-7e2161443d37c26d9a127c9b42e001ae.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=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

94
font/OFL.txt Normal file
View File

@ -0,0 +1,94 @@
Copyright (c) 2011 Juan Montoreano (juan@remolacha.biz),
with Reserved Font Name Lilita
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -6,3 +6,4 @@
albedo_texture = ExtResource("1_adacw")
metallic_specular = 0.0
texture_filter = 2
disable_receive_shadows = true

View File

@ -6,3 +6,4 @@
albedo_texture = ExtResource("1_u5p53")
metallic_specular = 0.0
texture_filter = 2
disable_receive_shadows = true

View File

@ -14,3 +14,4 @@ normal_texture = ExtResource("3_d1hb3")
ao_enabled = true
ao_texture = ExtResource("2_lytc3")
texture_filter = 2
disable_receive_shadows = true

View File

@ -6,3 +6,4 @@
albedo_texture = ExtResource("1_hsryr")
metallic_specular = 0.0
texture_filter = 2
disable_receive_shadows = true

View File

@ -14,3 +14,4 @@ normal_texture = ExtResource("4_db6g0")
ao_enabled = true
ao_texture = ExtResource("2_3732n")
texture_filter = 5
disable_receive_shadows = true

BIN
materials/stairs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dv6fmvhxa0yyr"
path="res://.godot/imported/stairs.png-8852e0dd27c2e0c5b61937bcfdf2d9df.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://materials/stairs.png"
dest_files=["res://.godot/imported/stairs.png-8852e0dd27c2e0c5b61937bcfdf2d9df.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=true
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

View File

@ -1,7 +1,7 @@
[gd_resource type="StandardMaterial3D" load_steps=5 format=3 uid="uid://cobb5bm4y7nk7"]
[ext_resource type="Texture2D" uid="uid://tlaksepmx4fm" path="res://materials/steel/steel_albedo.jpg" id="1_y0jhp"]
[ext_resource type="Texture2D" uid="uid://tx3pf0iblqgo" path="res://materials/steel/steel_metallic.jpg" id="3_hddmm"]
[ext_resource type="Texture2D" uid="uid://tx3pf0iblqgo" path="res://materials/steel_fence/steel_fence_metallic.jpg" id="3_hddmm"]
[ext_resource type="Texture2D" uid="uid://b76hh5upcpvrm" path="res://materials/steel_fence/steel_fence_normal.jpg" id="4_v1udo"]
[ext_resource type="Texture2D" uid="uid://bdqwdrblis6aw" path="res://materials/steel_fence/steel_fence_roughness.jpg" id="5_1ofxx"]
@ -13,3 +13,4 @@ roughness_texture = ExtResource("5_1ofxx")
normal_enabled = true
normal_texture = ExtResource("4_v1udo")
texture_filter = 2
disable_receive_shadows = true

View File

@ -1,7 +1,7 @@
[gd_resource type="StandardMaterial3D" load_steps=5 format=3 uid="uid://dgf570wtqn17j"]
[ext_resource type="Texture2D" uid="uid://b4reodnhta7sr" path="res://materials/steel_fence/steel_fence_albedo.png" id="1_lupfc"]
[ext_resource type="Texture2D" uid="uid://tx3pf0iblqgo" path="res://materials/steel/steel_metallic.jpg" id="3_rree2"]
[ext_resource type="Texture2D" uid="uid://tx3pf0iblqgo" path="res://materials/steel_fence/steel_fence_metallic.jpg" id="3_rree2"]
[ext_resource type="Texture2D" uid="uid://b76hh5upcpvrm" path="res://materials/steel_fence/steel_fence_normal.jpg" id="4_6o2u3"]
[ext_resource type="Texture2D" uid="uid://bdqwdrblis6aw" path="res://materials/steel_fence/steel_fence_roughness.jpg" id="5_7avjb"]
@ -14,3 +14,4 @@ roughness_texture = ExtResource("5_7avjb")
normal_enabled = true
normal_texture = ExtResource("4_6o2u3")
texture_filter = 5
disable_receive_shadows = true

View File

@ -14,3 +14,4 @@ normal_texture = ExtResource("4_r7yms")
ao_enabled = true
ao_texture = ExtResource("2_byjax")
texture_filter = 5
disable_receive_shadows = true

View File

@ -14,3 +14,4 @@ normal_texture = ExtResource("4_p2ds3")
ao_enabled = true
ao_texture = ExtResource("2_nln00")
texture_filter = 5
disable_receive_shadows = true

BIN
materials/tower.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d2p5wswquw0la"
path="res://.godot/imported/tower.png-af8481b47367d8ad6b6790723593a987.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://materials/tower.png"
dest_files=["res://.godot/imported/tower.png-af8481b47367d8ad6b6790723593a987.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=true
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

View File

@ -7,3 +7,4 @@ albedo_texture = ExtResource("1_4040b")
metallic_specular = 0.36
roughness = 0.63
texture_filter = 2
disable_receive_shadows = true

View File

@ -14,3 +14,4 @@ normal_texture = ExtResource("4_pmu04")
ao_enabled = true
ao_texture = ExtResource("2_x5ntf")
texture_filter = 5
disable_receive_shadows = true

BIN
misc/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

34
misc/cover.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfc4cc586c38e"
path="res://.godot/imported/cover.png-d93e27766f34d9ead04c7355b82975c1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://misc/cover.png"
dest_files=["res://.godot/imported/cover.png-d93e27766f34d9ead04c7355b82975c1.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=true
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

7
misc/global_theme.tres Normal file
View File

@ -0,0 +1,7 @@
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://dpn05x2ipj8ah"]
[ext_resource type="FontFile" uid="uid://246jxnbu62q3" path="res://font/LilitaOne-Regular.ttf" id="1_7cjyy"]
[resource]
Label/constants/outline_size = 2
Label/fonts/font = ExtResource("1_7cjyy")

BIN
misc/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

34
misc/icon.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mylp6a08fsjq"
path="res://.godot/imported/icon.png-9c21e69c4eccbea186fe74b71b99d6cb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://misc/icon.png"
dest_files=["res://.godot/imported/icon.png-9c21e69c4eccbea186fe74b71b99d6cb.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=true
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.

View File

@ -1,51 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://8nth3l65bb7r"
path="res://.godot/imported/grappling_hook.blend-2e604f48b288f3a507a2e743fac7348f.scn"
[deps]
source_file="res://models/grappling_hook.blend"
dest_files=["res://.godot/imported/grappling_hook.blend-2e604f48b288f3a507a2e743fac7348f.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

View File

@ -10,10 +10,11 @@ config_version=5
[application]
config/name="gmtk24"
run/main_scene="res://scenes/demo/demo.tscn"
config/name="Miniature Maker"
run/main_scene="res://scenes/entrypoint_scene.tscn"
config/features=PackedStringArray("4.3", "C#", "Forward Plus")
config/icon="res://misc/icon.svg"
boot_splash/image="res://misc/cover.png"
config/icon="res://misc/icon.png"
[autoload]
@ -21,10 +22,7 @@ UserSettings="*res://scripts/UserSettings.cs"
[display]
window/size/viewport_width=1920
window/size/viewport_height=1080
window/stretch/mode="canvas_items"
window/stretch/scale=2.0
[dotnet]
@ -38,6 +36,10 @@ enabled=PackedStringArray("res://addons/func_godot/plugin.cfg")
import/blender/enabled=false
[gui]
theme/custom="res://misc/global_theme.tres"
[importer_defaults]
texture={

View File

@ -17,7 +17,7 @@ viewport_path = NodePath("BlueprintRenderingViewport")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_inyay"]
noise_type = 3
frequency = 0.0785
frequency = 0.009
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_fhswu"]
color_ramp = SubResource("Gradient_w67xe")
@ -27,7 +27,7 @@ noise = SubResource("FastNoiseLite_inyay")
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("9_v0ymc")
shader_parameter/FloatParameter = 0.002
shader_parameter/FloatParameter = 0.01
shader_parameter/ColorParameter2 = Color(0.176471, 0, 0.964706, 0)
shader_parameter/ColorParameter = Color(1, 1, 1, 1)
shader_parameter/Texture2DParameter = SubResource("ViewportTexture_cqsgk")
@ -82,11 +82,11 @@ Table = NodePath("../table")
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 2.83695, 0, -4.36558)
Hud = NodePath("../HUD")
TrenchbroomMap = NodePath("../DemoMap")
RelativeScale = 0.01
RelativeScale = 0.004
[node name="BlueprintDrawing" type="CSGBox3D" parent="table"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.0030241, 1.1074, -0.000483751)
size = Vector3(0.9, 0.001, 0.9)
size = Vector3(0.36, 0.001, 0.36)
material = SubResource("ShaderMaterial_u26td")
[node name="HUD" parent="." node_paths=PackedStringArray("Player") instance=ExtResource("7_g7tfv")]
@ -97,7 +97,6 @@ Table = NodePath("../table")
[node name="BlueprintRenderingViewport" type="SubViewport" parent="."]
msaa_3d = 3
render_target_update_mode = 1
[node name="BlueprintOrthoCam" type="Camera3D" parent="BlueprintRenderingViewport"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -1, 0)

View File

@ -0,0 +1,29 @@
[gd_scene load_steps=5 format=3 uid="uid://c5ksyousvxx7x"]
[ext_resource type="PackedScene" uid="uid://dv81sy34l8ice" path="res://scenes/stairs/stairs.tscn" id="1_00r22"]
[ext_resource type="Script" path="res://scripts/SceneSwitcher.cs" id="1_ps0jf"]
[ext_resource type="PackedScene" uid="uid://bqtfwxneu1eqw" path="res://scenes/main_menu.tscn" id="2_mxfpj"]
[ext_resource type="PackedScene" uid="uid://8po7ftboqq4k" path="res://scenes/demo/demo.tscn" id="2_rf0rf"]
[node name="EntrypointScene" type="Node" node_paths=PackedStringArray("LoadingScreen")]
process_mode = 3
script = ExtResource("1_ps0jf")
AddedLoadingScreenSeconds = 0.3
LoadingScreen = NodePath("LoadingScreen")
MainMenu = ExtResource("2_mxfpj")
DemoScene = ExtResource("2_rf0rf")
StairsScene = ExtResource("1_00r22")
[node name="LoadingScreen" type="CenterContainer" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 4.0
offset_right = 4.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="LoadingScreen"]
layout_mode = 2
theme_override_font_sizes/font_size = 36
text = "Loading..."

View File

@ -1,31 +0,0 @@
[gd_scene load_steps=4 format=3 uid="uid://7povmsfyrjf4"]
[ext_resource type="PackedScene" uid="uid://8nth3l65bb7r" path="res://models/grappling_hook.blend" id="1_nljl0"]
[sub_resource type="CSharpScript" id="CSharpScript_4q8vt"]
script/source = "using Godot;
namespace Gmtk24 {
public partial class GrapplingHook : RigidBody3D {
public void OnCollisionEntered(Node node) {
Freeze = true;
}
}
}
"
[sub_resource type="BoxShape3D" id="BoxShape3D_rp2xw"]
size = Vector3(0.872498, 0.875122, 0.902222)
[node name="GrapplingHook" type="RigidBody3D"]
contact_monitor = true
max_contacts_reported = 1
script = SubResource("CSharpScript_4q8vt")
[node name="grappling_hook" parent="." instance=ExtResource("1_nljl0")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 0, 0, 1, 0.00187739, -0.0024816, -0.348884)
shape = SubResource("BoxShape3D_rp2xw")
[connection signal="body_entered" from="." to="." method="OnCollisionEntered"]

View File

@ -15,6 +15,8 @@ sky_material = SubResource("ProceduralSkyMaterial_2n8bf")
background_mode = 2
sky = SubResource("Sky_jvem5")
tonemap_mode = 2
ssao_enabled = true
ssao_radius = 0.05
[node name="HazyEnv" type="Node3D"]
@ -22,6 +24,7 @@ tonemap_mode = 2
transform = Transform3D(0.914416, 0.167281, -0.368593, 0.265225, 0.44028, 0.857793, 0.305777, -0.88214, 0.358232, 0, 2, 0)
light_angular_distance = 0.5
light_bake_mode = 1
shadow_enabled = true
[node name="Env" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_exkg8")

View File

@ -64,11 +64,11 @@ anchor_bottom = 1.0
offset_top = -134.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
[node name="HoverText" type="Label" parent="CenterContainer2"]
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "[Hover Text]"
horizontal_alignment = 1
[node name="TableRecallPrompt" type="Label" parent="."]
@ -78,4 +78,3 @@ offset_top = 22.0
offset_right = 314.0
offset_bottom = 67.0
theme_override_font_sizes/font_size = 24
text = "[Table Recall Text]"

View File

@ -8,7 +8,7 @@ bg_color = Color(0.2, 0.2, 0.2, 0.921569)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q40bd"]
bg_color = Color(0.25, 0.25, 0.25, 0.909804)
[node name="PauseMenu" type="Control" node_paths=PackedStringArray("InitialFocusTarget", "VolumeSlider", "CameraSensitivityX", "CameraSensitivityY", "CameraInvertX", "CameraInvertY")]
[node name="PauseMenu" type="Control" node_paths=PackedStringArray("InitialFocusTarget", "VolumeSlider", "CameraSensitivityX", "CameraSensitivityY", "CameraInvertX", "CameraInvertY", "TableOrbitSpeedX", "TableOrbitSpeedY", "TableOrbitInvertX", "TableOrbitInvertY", "MsaaOptions", "RenderScaleOptions", "UpscalingOptions", "WindowModeOptions")]
process_mode = 3
layout_mode = 3
anchors_preset = 15
@ -18,11 +18,19 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_p5jo3")
InitialFocusTarget = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/ContinueButton")
VolumeSlider = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options/VolumeSlider")
CameraSensitivityX = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options/CameraXSlider")
CameraSensitivityY = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options/CameraYSlider")
CameraInvertX = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options/CameraXInvCheck")
CameraInvertY = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options/CameraYInvCheck")
VolumeSlider = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/General settings/Grid/VolumeSlider")
CameraSensitivityX = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid/CameraXSlider")
CameraSensitivityY = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid/CameraYSlider")
CameraInvertX = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid/CameraXInvCheck")
CameraInvertY = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid/CameraYInvCheck")
TableOrbitSpeedX = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid/RotateSpeedSlider")
TableOrbitSpeedY = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid/TiltSpeedSlider")
TableOrbitInvertX = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid/InvertRotateCheck")
TableOrbitInvertY = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid/InvertTiltCheck")
MsaaOptions = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid/MsaaOptions")
RenderScaleOptions = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid/RenderScaleOptions")
UpscalingOptions = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid/UpscaleOptions")
WindowModeOptions = NodePath("CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid/FullscreenOptions")
[node name="CenterContainer" type="CenterContainer" parent="."]
process_mode = 2
@ -61,17 +69,31 @@ layout_mode = 2
focus_neighbor_top = NodePath("../QuitButton")
text = "Continue"
[node name="Options" type="GridContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons"]
[node name="TabContainer" type="TabContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons"]
custom_minimum_size = Vector2(340, 200)
layout_mode = 2
theme_override_font_sizes/font_size = 11
current_tab = 0
[node name="General settings" type="MarginContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer"]
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
metadata/_tab_index = 0
[node name="Grid" type="GridContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/General settings"]
layout_mode = 2
theme_override_constants/h_separation = 14
theme_override_constants/v_separation = 9
columns = 2
[node name="VolumeLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="VolumeLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/General settings/Grid"]
layout_mode = 2
text = "Volume"
[node name="VolumeSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="VolumeSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/General settings/Grid"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
size_flags_horizontal = 3
@ -79,46 +101,202 @@ size_flags_vertical = 1
max_value = 1.0
step = 0.05
[node name="CameraXLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="Camera" type="MarginContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer"]
visible = false
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
metadata/_tab_index = 1
[node name="Grid" type="GridContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera"]
layout_mode = 2
theme_override_constants/h_separation = 14
theme_override_constants/v_separation = 9
columns = 2
[node name="CameraXLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
text = "Camera yaw speed"
[node name="CameraXSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraXSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
max_value = 10.0
step = 0.25
[node name="CameraXInvLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraXInvLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
text = "Camera invert yaw"
[node name="CameraXInvCheck" type="CheckButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraXInvCheck" type="CheckButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
size_flags_horizontal = 3
action_mode = 0
[node name="CameraYLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraYLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
text = "Camera pitch speed"
[node name="CameraYSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraYSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
max_value = 10.0
step = 0.25
[node name="CameraYInvLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraYInvLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
text = "Camera invert pitch"
[node name="CameraYInvCheck" type="CheckButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/Options"]
[node name="CameraYInvCheck" type="CheckButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Camera/Grid"]
layout_mode = 2
size_flags_horizontal = 3
action_mode = 0
[node name="Building" type="MarginContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer"]
visible = false
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
metadata/_tab_index = 2
[node name="Grid" type="GridContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building"]
layout_mode = 2
theme_override_constants/h_separation = 14
theme_override_constants/v_separation = 9
columns = 2
[node name="RotateSpeedLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
text = "Rotation speed"
[node name="RotateSpeedSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
max_value = 6.0
step = 0.25
[node name="InvertRotateLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
text = "Invert rotation"
[node name="InvertRotateCheck" type="CheckButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
size_flags_horizontal = 3
action_mode = 0
[node name="TiltSpeedLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
text = "Tilt speed"
[node name="TiltSpeedSlider" type="HSlider" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
max_value = 6.0
step = 0.25
[node name="InvertTiltLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
text = "Invert tilt"
[node name="InvertTiltCheck" type="CheckButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Building/Grid"]
layout_mode = 2
size_flags_horizontal = 3
action_mode = 0
[node name="Graphics" type="MarginContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer"]
visible = false
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
metadata/_tab_index = 3
[node name="Grid" type="GridContainer" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics"]
layout_mode = 2
theme_override_constants/h_separation = 14
theme_override_constants/v_separation = 9
columns = 2
[node name="FullscreenLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
text = "Display mode"
[node name="FullscreenOptions" type="OptionButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
selected = 0
item_count = 3
popup/item_0/text = "Windowed"
popup/item_1/text = "Fullscreen"
popup/item_1/id = 1
popup/item_2/text = "Exclusive fullscreen"
popup/item_2/id = 2
[node name="MsaaLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
text = "MSAA"
[node name="MsaaOptions" type="OptionButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
selected = 2
item_count = 4
popup/item_0/text = "Disabled"
popup/item_1/text = "2 samples"
popup/item_1/id = 1
popup/item_2/text = "4 samples"
popup/item_2/id = 2
popup/item_3/text = "8 samples"
popup/item_3/id = 3
[node name="RenderScaleLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
text = "Render scale
"
[node name="RenderScaleOptions" type="OptionButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
selected = 3
item_count = 6
popup/item_0/text = "25%"
popup/item_0/id = 25
popup/item_1/text = "50%"
popup/item_1/id = 50
popup/item_2/text = "75%"
popup/item_2/id = 75
popup/item_3/text = "100%"
popup/item_3/id = 100
popup/item_4/text = "150%"
popup/item_4/id = 150
popup/item_5/text = "200%"
popup/item_5/id = 200
[node name="UpscaleLabel" type="Label" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
text = "Upscaling"
[node name="UpscaleOptions" type="OptionButton" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons/TabContainer/Graphics/Grid"]
layout_mode = 2
disabled = true
selected = 0
item_count = 3
popup/item_0/text = "Linear"
popup/item_1/text = "FSR 1.0"
popup/item_1/id = 1
popup/item_2/text = "FSR 2.2"
popup/item_2/id = 2
[node name="QuitButton" type="Button" parent="CenterContainer/HBoxContainer/OptionsAndButtonsContainer/MarginContainer/Options and buttons"]
layout_mode = 2
focus_neighbor_bottom = NodePath("../ContinueButton")
text = "Quit"
text = "Back to main menu"
[node name="CreditsContainer" type="PanelContainer" parent="CenterContainer/HBoxContainer"]
custom_minimum_size = Vector2(300, 0)

108
scenes/main_menu.tscn Normal file
View File

@ -0,0 +1,108 @@
[gd_scene load_steps=4 format=3 uid="uid://bqtfwxneu1eqw"]
[ext_resource type="Script" path="res://scripts/MainMenu.cs" id="1_8obly"]
[ext_resource type="Texture2D" uid="uid://d2p5wswquw0la" path="res://materials/tower.png" id="1_h16yv"]
[ext_resource type="Texture2D" uid="uid://dv6fmvhxa0yyr" path="res://materials/stairs.png" id="2_6auxm"]
[node name="MainMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_8obly")
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="GameNameLabel" type="Label" parent="Panel"]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_top = 100.0
offset_bottom = 188.0
grow_horizontal = 2
theme_override_font_sizes/font_size = 64
text = "Miniature Maker"
horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -602.0
offset_top = -300.0
offset_right = 602.0
offset_bottom = 300.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="BoxContainer2" type="BoxContainer" parent="Panel/HBoxContainer"]
custom_minimum_size = Vector2(300, 300)
layout_mode = 2
alignment = 1
vertical = true
metadata/_edit_lock_ = true
[node name="TextureRect" type="TextureRect" parent="Panel/HBoxContainer/BoxContainer2"]
layout_mode = 2
texture = ExtResource("1_h16yv")
expand_mode = 5
stretch_mode = 5
metadata/_edit_lock_ = true
[node name="TowerButton" type="Button" parent="Panel/HBoxContainer/BoxContainer2"]
layout_mode = 2
theme_override_font_sizes/font_size = 32
text = "Tower"
metadata/_edit_lock_ = true
[node name="BoxContainer" type="BoxContainer" parent="Panel/HBoxContainer"]
custom_minimum_size = Vector2(300, 300)
layout_mode = 2
alignment = 1
vertical = true
metadata/_edit_lock_ = true
[node name="TextureRect" type="TextureRect" parent="Panel/HBoxContainer/BoxContainer"]
layout_mode = 2
texture = ExtResource("2_6auxm")
expand_mode = 5
stretch_mode = 5
metadata/_edit_lock_ = true
[node name="StairsButton" type="Button" parent="Panel/HBoxContainer/BoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 32
text = "Stairs"
metadata/_edit_lock_ = true
[node name="QuitButton" type="Button" parent="Panel"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -100.0
offset_top = -180.0
offset_right = 100.0
offset_bottom = -127.0
grow_horizontal = 2
grow_vertical = 0
theme_override_font_sizes/font_size = 32
text = "Quit"
[connection signal="pressed" from="Panel/HBoxContainer/BoxContainer2/TowerButton" to="." method="Tower"]
[connection signal="pressed" from="Panel/HBoxContainer/BoxContainer/StairsButton" to="." method="Stairs"]
[connection signal="pressed" from="Panel/QuitButton" to="." method="Quit"]

Binary file not shown.

View File

@ -23,4 +23,4 @@ compress/channel_pack=1
mipmaps/generate=false
mipmaps/limit=-1
slices/horizontal=1
slices/vertical=1
slices/vertical=2

Binary file not shown.

View File

@ -44,12 +44,13 @@ light_data = ExtResource("2_36ysp")
[node name="HazyEnv" parent="." instance=ExtResource("3_gdvn0")]
[node name="Player" parent="." instance=ExtResource("8_6btor")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58.6119, 24, 3.65156)
[node name="Player" parent="." node_paths=PackedStringArray("Table") instance=ExtResource("8_6btor")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -205.512, -4.76837e-07, 45.9007)
MaxVolumeWindHeight = 60.0
Table = NodePath("../table")
[node name="table" parent="." node_paths=PackedStringArray("Hud", "TrenchbroomMap") instance=ExtResource("10_hcwch")]
transform = Transform3D(-0.0123217, 0, 0.999924, 0, 1, 0, -0.999924, 0, -0.0123217, -58.2601, 24.0011, 0)
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -205.16, -0.00674486, 42.2491)
Hud = NodePath("../HUD")
TrenchbroomMap = NodePath("../StairsMap")
RelativeScale = 0.002
@ -64,7 +65,8 @@ material = SubResource("ShaderMaterial_ltak5")
[node name="HUD" parent="." node_paths=PackedStringArray("Player") instance=ExtResource("8_i25qr")]
Player = NodePath("../Player")
[node name="PauseMenu" parent="." instance=ExtResource("9_cfhxe")]
[node name="PauseMenu" parent="." node_paths=PackedStringArray("Table") instance=ExtResource("9_cfhxe")]
Table = NodePath("../table")
[node name="SubViewport" type="SubViewport" parent="."]
msaa_3d = 3

File diff suppressed because one or more lines are too long

View File

@ -47,6 +47,8 @@ namespace Gmtk24 {
HoverText.Text = $"{FormButtonNames("interact")}: {interactible.InteractName}";
} else {
Hovered?.SetHovered(false);
Hovered = null;
HoverText.Text = "";
}
} else {
@ -66,9 +68,9 @@ namespace Gmtk24 {
if (!Player.Table.Orbit.IsEnabled) {
var names = FormButtonNames("toggle_table");
if (Player.Table.IsEnabled)
CornerPrompt.Text = $"{names}: {"Recall Table"}";
CornerPrompt.Text = $"{names}: {"Dismiss Table"}";
else
CornerPrompt.Text = $"{names}: {"Spawn Table"}";
CornerPrompt.Text = $"{names}: {"Summon Table"}";
} else {
if (Player.Table.Orbit.HeldBlock == null) {
var zoom_out = FormButtonNames("zoom_orbit_out");

19
scripts/MainMenu.cs Normal file
View File

@ -0,0 +1,19 @@
using Gmtk24;
using Godot;
using System;
namespace Gmtk24 {
public partial class MainMenu : Control {
public void Tower() {
SceneSwitcher.Singleton.SwitchToScene(SceneSwitcher.Scene.Demo);
}
public void Stairs() {
SceneSwitcher.Singleton.SwitchToScene(SceneSwitcher.Scene.Stairs);
}
public void Quit() {
GetTree().Quit();
}
}
}

View File

@ -30,7 +30,7 @@ namespace Gmtk24 {
[Export]
public float RotateAmt = (float)(Math.PI / 12);
[Export]
public float DragDistanceTreshold = 500f;
public float DragDistanceTreshold = 150f;
[ExportCategory("Debug")]
[Export]
@ -104,7 +104,7 @@ namespace Gmtk24 {
Input.MouseMode = Input.MouseModeEnum.Visible;
if (Input.IsActionPressed("drag_orbit") && @event is InputEventMouseMotion mouseMotion) {
var cameraSensitivity = UserSettings.Singleton.GetCameraSpeedMultipliers();
var cameraSensitivity = UserSettings.Singleton.GetOrbitSpeedMultipliers();
var mouseMultiplier = 0.0003f;
CurrentYaw -= mouseMotion.ScreenRelative.X * mouseMultiplier * cameraSensitivity.X;
CurrentPitch -= mouseMotion.ScreenRelative.Y * mouseMultiplier * cameraSensitivity.Y;

View File

@ -4,9 +4,10 @@ namespace Gmtk24 {
public partial class PauseMenu : Control {
[Export]
public Control InitialFocusTarget;
[ExportCategory("Setting controls")]
[ExportCategory("Setting controls (general)")]
[Export]
public Range VolumeSlider;
[ExportCategory("Setting controls (camera)")]
[Export]
public Range CameraSensitivityX;
[Export]
@ -15,6 +16,24 @@ namespace Gmtk24 {
public BaseButton CameraInvertX;
[Export]
public BaseButton CameraInvertY;
[ExportCategory("Setting controls (building)")]
[Export]
public Range TableOrbitSpeedX;
[Export]
public Range TableOrbitSpeedY;
[Export]
public BaseButton TableOrbitInvertX;
[Export]
public BaseButton TableOrbitInvertY;
[ExportCategory("Setting controls (graphics)")]
[Export]
public OptionButton MsaaOptions;
[Export]
public OptionButton RenderScaleOptions;
[Export]
public OptionButton UpscalingOptions;
[Export]
public OptionButton WindowModeOptions;
[Export]
public Table Table;
@ -24,6 +43,7 @@ namespace Gmtk24 {
public override void _Ready() {
VolumeSlider.Value = UserSettings.Singleton.Volume;
VolumeSlider.ValueChanged += (value) => UserSettings.Singleton.SetVolume((float)value);
CameraSensitivityX.Value = UserSettings.Singleton.CameraSensitivityX;
CameraSensitivityX.ValueChanged += (value) => UserSettings.Singleton.CameraSensitivityX = (float)value;
CameraSensitivityY.Value = UserSettings.Singleton.CameraSensitivityY;
@ -33,7 +53,67 @@ namespace Gmtk24 {
CameraInvertY.ButtonPressed = UserSettings.Singleton.CameraInvertY;
CameraInvertY.Toggled += (on) => UserSettings.Singleton.CameraInvertY = on;
Open();
TableOrbitSpeedX.Value = UserSettings.Singleton.TableOrbitSpeedX;
TableOrbitSpeedX.ValueChanged += (value) => UserSettings.Singleton.TableOrbitSpeedX = (float)value;
TableOrbitSpeedY.Value = UserSettings.Singleton.TableOrbitSpeedY;
TableOrbitSpeedY.ValueChanged += (value) => UserSettings.Singleton.TableOrbitSpeedY = (float)value;
TableOrbitInvertX.ButtonPressed = UserSettings.Singleton.TableOrbitInvertX;
TableOrbitInvertX.Toggled += (on) => UserSettings.Singleton.TableOrbitInvertX = on;
TableOrbitInvertY.ButtonPressed = UserSettings.Singleton.TableOrbitInvertY;
TableOrbitInvertY.Toggled += (on) => UserSettings.Singleton.TableOrbitInvertY = on;
Viewport vp = GetViewport();
MsaaOptions.Selected = (int)vp.Msaa3D;
MsaaOptions.ItemSelected += (index) => {
vp.Msaa3D = (Viewport.Msaa)index;
GD.Print("Set MSAA to: ", vp.Msaa3D);
};
RenderScaleOptions.Selected = -1;
for (int i = 0; i < RenderScaleOptions.ItemCount; i++) {
if ((int)(vp.Scaling3DScale * 100) == RenderScaleOptions.GetItemId(i)) {
RenderScaleOptions.Selected = i;
break;
}
}
RenderScaleOptions.ItemSelected += (index) => {
vp.Scaling3DScale = RenderScaleOptions.GetItemId((int)index) / 100f;
UpscalingOptions.Disabled = vp.Scaling3DScale > 1;
GD.Print("Set scale to: ", vp.Scaling3DScale);
};
UpscalingOptions.Selected = (int)vp.Scaling3DMode;
UpscalingOptions.ItemSelected += (index) => {
vp.Scaling3DMode = (Viewport.Scaling3DModeEnum)index;
GD.Print("Set scaling mode to: ", vp.Scaling3DMode);
};
DisplayServer.WindowMode mode = DisplayServer.WindowGetMode();
WindowModeOptions.Selected = 0;
if (mode == DisplayServer.WindowMode.Fullscreen) {
WindowModeOptions.Selected = 1;
} else if (mode == DisplayServer.WindowMode.ExclusiveFullscreen) {
WindowModeOptions.Selected = 2;
}
WindowModeOptions.ItemSelected += (index) => {
DisplayServer.WindowMode currentMode = DisplayServer.WindowGetMode();
DisplayServer.WindowMode windowedMode = DisplayServer.WindowMode.Windowed;
if (currentMode != DisplayServer.WindowMode.Fullscreen
&& currentMode != DisplayServer.WindowMode.ExclusiveFullscreen) {
// Not fullscreen: set the windowed mode to the current one to preserve maximizing status
windowedMode = currentMode;
}
if (index == 0) {
DisplayServer.WindowSetMode(windowedMode);
} else if (index == 1) {
DisplayServer.WindowSetMode(DisplayServer.WindowMode.Fullscreen);
} else if (index == 2) {
DisplayServer.WindowSetMode(DisplayServer.WindowMode.ExclusiveFullscreen);
}
};
Close();
}
public override void _Input(InputEvent @event) {
@ -64,7 +144,7 @@ namespace Gmtk24 {
}
public void Quit() {
GetTree().Quit();
SceneSwitcher.Singleton.SwitchToScene(SceneSwitcher.Scene.MainMenu);
}
}
}

112
scripts/SceneSwitcher.cs Normal file
View File

@ -0,0 +1,112 @@
using System.Threading;
using Godot;
namespace Gmtk24 {
public partial class SceneSwitcher : Node {
public enum Scene {
MainMenu,
Demo,
Stairs,
}
/// <summary>This is the entrypoint of the godot project, and never gets
/// unloaded. Set when the entrypoint scene is loaded.</summary>
public static SceneSwitcher Singleton { get; private set; }
[Export]
public float AddedLoadingScreenSeconds = 0.5f;
[Export]
public Control LoadingScreen;
[Export]
public PackedScene MainMenu;
[Export]
public PackedScene DemoScene;
[Export]
public PackedScene StairsScene;
private PackedScene NextScene = null;
private Node InstantiatedScene = null;
private bool SceneLoaded = false;
/// <summary>The instantiation is deferred a bit to let the loading
/// screen actually render in case the loading takes more than a few
/// milliseconds.</summary>
private float SceneLoadCooldown = 0;
public override void _Ready() {
Singleton = this;
SwitchToScene(Scene.MainMenu);
}
public override void _UnhandledInput(InputEvent @event) {
if (@event is InputEventKey keyEv && keyEv.Pressed && keyEv.CtrlPressed) {
if (keyEv.Keycode == Key.F1) {
SwitchToScene(Scene.Demo);
GetViewport().SetInputAsHandled();
}
if (keyEv.Keycode == Key.F2) {
SwitchToScene(Scene.Stairs);
GetViewport().SetInputAsHandled();
}
}
}
public override void _Process(double delta) {
if (!SceneLoaded) {
SceneLoadCooldown -= (float)delta;
if (SceneLoadCooldown <= 0 && NextScene != null) {
LoadNextScene();
NextScene = null;
SceneLoaded = true;
LoadingScreen.Visible = false;
}
}
}
public void SwitchToScene(Scene newScene) {
PackedScene sceneToInstantiate = null;
switch (newScene) {
case Scene.MainMenu:
sceneToInstantiate = MainMenu;
break;
case Scene.Demo:
sceneToInstantiate = DemoScene;
break;
case Scene.Stairs:
sceneToInstantiate = StairsScene;
break;
}
if (sceneToInstantiate == null) {
GD.PrintErr("Tried to switch scenes to Scene." + newScene + " but it hasn't been set up in the entrypoint scene!");
return;
}
NextScene = sceneToInstantiate;
if (IsInstanceValid(InstantiatedScene)) {
RemoveChild(InstantiatedScene);
InstantiatedScene.QueueFree();
}
LoadingScreen.Visible = true;
SceneLoadCooldown = AddedLoadingScreenSeconds;
SceneLoaded = false;
}
private void LoadNextScene() {
if (NextScene == null) {
GD.PrintErr("LoadNextScene called but NextScene is null!");
return;
}
InstantiatedScene = NextScene.Instantiate();
if (InstantiatedScene.ProcessMode == ProcessModeEnum.Inherit) {
InstantiatedScene.ProcessMode = ProcessModeEnum.Pausable;
}
AddChild(InstantiatedScene);
MoveChild(InstantiatedScene, 0);
GetTree().Paused = false;
}
}
}

View File

@ -82,6 +82,7 @@ namespace Gmtk24 {
}
public void Interact(InputEvent _) {
if (IsEnabled)
Orbit.SetEnabled(true);
}
@ -158,7 +159,7 @@ namespace Gmtk24 {
private void OnBlockDrag(BuildingBlock _) {
var offset = GhostBlock.OffsetFrom(GhostBlockNormal);
EnablePlane(GhostBlock.Position - offset, new Quaternion(Vector3.Up, GhostBlockNormal));
EnablePlane(GhostBlock.Position - offset, new Quaternion(Vector3.Up, 0));
}
private void EnablePlane(Vector3 pos, Quaternion rot) {
@ -185,7 +186,6 @@ namespace Gmtk24 {
Visible = true;
ProcessMode = ProcessModeEnum.Pausable;
Position = position;
lookAt.Y = 0;
LookAt(lookAt);
Rotate(Vector3.Up, (float)Math.PI / 2);
}

View File

@ -7,11 +7,17 @@ namespace Gmtk24 {
public static UserSettings Singleton { get; private set; }
public float Volume { get; private set; }
public float CameraSensitivityX = 2f;
public float CameraSensitivityY = 2f;
public bool CameraInvertX = false;
public bool CameraInvertY = false;
public float TableOrbitSpeedX = 1f;
public float TableOrbitSpeedY = 1f;
public bool TableOrbitInvertX = false;
public bool TableOrbitInvertY = false;
public override void _Ready() {
SetVolume(0.2f);
Singleton = this;
@ -23,6 +29,12 @@ namespace Gmtk24 {
return new Vector2(x, y);
}
public Vector2 GetOrbitSpeedMultipliers() {
var x = TableOrbitSpeedX * (TableOrbitInvertX ? -1 : 1);
var y = TableOrbitSpeedY * (TableOrbitInvertY ? -1 : 1);
return new Vector2(x, y);
}
public void SetVolume(float volume) {
AudioServer.SetBusVolumeDb(0, volume == 0 ? -80 : Mathf.LinearToDb(volume));
Volume = volume;

File diff suppressed because it is too large Load Diff