Merge commit '3455715b9dd974893afb59f91002e6d7c2bdc2ca' into development

This commit is contained in:
betalars 2024-02-17 23:41:00 +01:00
commit 85d432adb6
108 changed files with 2470 additions and 1768 deletions

14
.gitattributes vendored
View File

@ -1,19 +1,16 @@
# Normalize EOL for all files that Git considers text files. # Normalize EOL for all files that Git considers text files.
* text=auto eol=lf * text=auto eol=lf
.blend filter=lfs diff=lfs merge=lfs -text *.blend filter=lfs diff=lfs merge=lfs -text
.png filter=lfs diff=lfs merge=lfs -text *.png filter=lfs diff=lfs merge=lfs -text
.jpg filter=lfs diff=lfs merge=lfs -text *.glb filter=lfs diff=lfs merge=lfs -text
.glb filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text *.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text *.mp3 filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text *.exr filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text *.ogg filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.blend1 filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.aup3 filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text *.jpg filter=lfs diff=lfs merge=lfs -text
*.blend1 filter=lfs diff=lfs merge=lfs -text
*.aup3 filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text *.jpeg filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text *.tga filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text *.ico filter=lfs diff=lfs merge=lfs -text
@ -22,7 +19,6 @@
*.aseprite filter=lfs diff=lfs merge=lfs -text *.aseprite filter=lfs diff=lfs merge=lfs -text
*.xcf filter=lfs diff=lfs merge=lfs -text *.xcf filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text *.pdf filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.flac filter=lfs diff=lfs merge=lfs -text *.flac filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text *.ttf filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text *.bin filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
src/.godot/ src/.godot/
*.blend1 *.blend1
result result
src/addons/godot-jolt

255
design/buttons.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -36,7 +36,7 @@
+ [MegaGlest](https://megaglest.org/), GPL + [MegaGlest](https://megaglest.org/), GPL
+ [Splash Screen Neo](https://inkscape.org/de/~MuhamadAliAkbar/%E2%98%85splash-screen-neon) by [Muhamad Ali Akbar](https://inkscape.org/de/~MuhamadAliAkbar/), CC-BY-SA + [Splash Screen Neo](https://inkscape.org/de/~MuhamadAliAkbar/%E2%98%85splash-screen-neon) by [Muhamad Ali Akbar](https://inkscape.org/de/~MuhamadAliAkbar/), CC-BY-SA
+ [Oh My Git](https://ohmygit.org/) by [bleeptrack](https://bleeptrack.de/) and [blinry](https://morr.cc/), Blue Oak Model License + [Oh My Git](https://ohmygit.org/) by [bleeptrack](https://bleeptrack.de/) and [blinry](https://morr.cc/), Blue Oak Model License
+ [Ghostwriter]() by kde**** + [Ghostwriter]() by kde
## Music ## Music
- [Foundations I by Azure Studios](https://azurestudios.bandcamp.com/album/foundations-i-24bit), CC-BY 3.0 - [Foundations I by Azure Studios](https://azurestudios.bandcamp.com/album/foundations-i-24bit), CC-BY 3.0

BIN
design/fairy_lights.blend (Stored with Git LFS) Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 50 KiB

BIN
design/landshark_plushie.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
design/star.blend (Stored with Git LFS)

Binary file not shown.

BIN
design/youth-construction.blend (Stored with Git LFS)

Binary file not shown.

View File

@ -0,0 +1,11 @@
@tool
extends EditorPlugin
func _enter_tree():
# Initialization of the plugin goes here.
add_custom_type("LineRenderer3D", "MeshInstance3D", preload("line_renderer.gd"), preload("line_render_icon.svg"))
func _exit_tree():
# Clean-up of the plugin goes here.
remove_custom_type("Line Renderer 3D")

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://drumkfhf8d2tn"
path="res://.godot/imported/line_render_icon.svg-9fabbd2cfeb579cc989ccd151dbe0a0b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/LineRenderer/line_render_icon.svg"
dest_files=["res://.godot/imported/line_render_icon.svg-9fabbd2cfeb579cc989ccd151dbe0a0b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,171 @@
@tool
extends MeshInstance3D
class_name LineRenderer3D
@export var points: Array[Vector3] = [Vector3(0,0,0),Vector3(0,5,0)]:
set(new_points): points = new_points
@export var start_thickness:float = 0.1:
set(new_start_thickness): start_thickness = new_start_thickness
@export var end_thickness:float = 0.1:
set(new_end_thickness): end_thickness = new_end_thickness
@export var corner_resolution:int = 5:
set(new_corner_resolution): corner_resolution = new_corner_resolution
@export var cap_resolution:int = 5:
set(new_cap_resolution): cap_resolution = new_cap_resolution
@export var draw_caps:bool = true:
set(new_draw_caps): draw_caps = new_draw_caps
@export var draw_crners:bool = true:
set(new_draw_crners): draw_crners = new_draw_crners
@export var use_global_coords:bool = true:
set(new_use_global_coords): use_global_coords = new_use_global_coords
@export var tile_texture:bool = true:
set(new_tile_texture): tile_texture = new_tile_texture
var camera : Camera3D
var cameraOrigin : Vector3
func _enter_tree():
mesh = ImmediateMesh.new()
func _ready():
pass
func _process(_delta):
if points.size() < 2:
return
camera = get_viewport().get_camera_3d()
if camera == null:
return
cameraOrigin = to_local(camera.get_global_transform().origin)
var progressStep:float = 1.0 / points.size();
var progress:float = 0;
var thickness:float = lerp(start_thickness, end_thickness, progress);
var nextThickness:float = lerp(start_thickness, end_thickness, progress + progressStep);
var surface:SurfaceTool = SurfaceTool.new()
surface.begin(Mesh.PRIMITIVE_TRIANGLES)
for i in range(points.size() - 1):
var A:Vector3 = points[i]
var B:Vector3 = points[i+1]
if use_global_coords:
A = to_local(A)
B = to_local(B)
var AB:Vector3 = B - A;
var orthogonalABStart:Vector3 = (cameraOrigin - ((A + B) / 2)).cross(AB).normalized() * thickness;
var orthogonalABEnd:Vector3 = (cameraOrigin - ((A + B) / 2)).cross(AB).normalized() * nextThickness;
var AtoABStart:Vector3 = A + orthogonalABStart
var AfromABStart:Vector3 = A - orthogonalABStart
var BtoABEnd:Vector3 = B + orthogonalABEnd
var BfromABEnd:Vector3 = B - orthogonalABEnd
if i == 0:
if draw_caps:
cap(surface, A, B, thickness, cap_resolution)
if tile_texture:
var ABLen = AB.length()
var ABFloor = floor(ABLen)
var ABFrac = ABLen - ABFloor
surface.set_uv(Vector2(ABFloor, 0))
surface.add_vertex(AtoABStart)
surface.set_uv(Vector2(-ABFrac, 0))
surface.add_vertex(BtoABEnd)
surface.set_uv(Vector2(ABFloor, 1))
surface.add_vertex(AfromABStart)
surface.set_uv(Vector2(-ABFrac, 0))
surface.add_vertex(BtoABEnd)
surface.set_uv(Vector2(-ABFrac, 1))
surface.add_vertex(BfromABEnd)
surface.set_uv(Vector2(ABFloor, 1))
surface.add_vertex(AfromABStart)
else:
surface.set_uv(Vector2(1, 0))
surface.add_vertex(AtoABStart)
surface.set_uv(Vector2(0, 0))
surface.add_vertex(BtoABEnd)
surface.set_uv(Vector2(1, 1))
surface.add_vertex(AfromABStart)
surface.set_uv(Vector2(0, 0))
surface.add_vertex(BtoABEnd)
surface.set_uv(Vector2(0, 1))
surface.add_vertex(BfromABEnd)
surface.set_uv(Vector2(1, 1))
surface.add_vertex(AfromABStart)
if i == points.size() - 2:
if draw_caps:
cap(surface, B, A, nextThickness, cap_resolution)
else:
if draw_crners:
var C = points[i+2]
if use_global_coords:
C = to_local(C)
var BC = C - B;
var orthogonalBCStart = (cameraOrigin - ((B + C) / 2)).cross(BC).normalized() * nextThickness;
var angleDot = AB.dot(orthogonalBCStart)
if angleDot > 0 and not angleDot == 1:
corner(surface, B, BtoABEnd, B + orthogonalBCStart, corner_resolution)
elif angleDot < 0 and not angleDot == -1:
corner(surface, B, B - orthogonalBCStart, BfromABEnd, corner_resolution)
progress += progressStep;
thickness = lerp(start_thickness, end_thickness, progress);
nextThickness = lerp(start_thickness, end_thickness, progress + progressStep);
surface.generate_normals()
surface.generate_tangents()
mesh = surface.commit()
func cap(surface: SurfaceTool, center:Vector3, pivot:Vector3, thickness:float, cap_resolution:int):
var orthogonal:Vector3 = (cameraOrigin - center).cross(center - pivot).normalized() * thickness;
var axis:Vector3 = (center - cameraOrigin).normalized();
var vertex_array:Array = []
for i in range(cap_resolution + 1):
vertex_array.append(Vector3(0,0,0))
vertex_array[0] = center + orthogonal;
vertex_array[cap_resolution] = center - orthogonal;
for i in range(1, cap_resolution):
vertex_array[i] = center + (orthogonal.rotated(axis, lerp(0.0, PI, float(i) / cap_resolution)));
for i in range(1, cap_resolution + 1):
surface.set_uv(Vector2(0, (i - 1) / cap_resolution))
surface.add_vertex(vertex_array[i - 1]);
surface.set_uv(Vector2(0, (i - 1) / cap_resolution))
surface.add_vertex(vertex_array[i]);
surface.set_uv(Vector2(0.5, 0.5))
surface.add_vertex(center);
func corner(surface: SurfaceTool, center:Vector3, start:Vector3, end:Vector3, cap_resolution:int):
var vertex_array:Array = []
for i in range(cap_resolution + 1):
vertex_array.append(Vector3(0,0,0))
vertex_array[0] = start;
vertex_array[cap_resolution] = end;
var axis:Vector3 = start.cross(end).normalized()
var offset:Vector3 = start - center
var angle:float = offset.angle_to(end - center)
for i in range(1, cap_resolution):
vertex_array[i] = center + offset.rotated(axis, lerp(0.0, angle, float(i) / cap_resolution));
for i in range(1, cap_resolution + 1):
surface.set_uv(Vector2(0, (i - 1) / cap_resolution))
surface.add_vertex(vertex_array[i - 1]);
surface.set_uv(Vector2(0, (i - 1) / cap_resolution))
surface.add_vertex(vertex_array[i]);
surface.set_uv(Vector2(0.5, 0.5))
surface.add_vertex(center);

View File

@ -0,0 +1,7 @@
[plugin]
name="LineRenderer"
description="A simple line renderer for Godot 4.0, useful for rendering cylindrical volume such as lasers, trails, etc. Based on the Godot 3.0 version by @dbp8890 at https://github.com/dbp8890/line-renderer ported by @LemiSt24, which is based on the helpful C# implementation by @paulohyy at https://github.com/paulohyy/linerenderer and added some additional features such as UV tiling."
author="betalars"
version="1.0"
script="line_plugin.gd"

View File

@ -0,0 +1,5 @@
[gd_scene load_steps=2 format=3 uid="uid://dt7mtqo43aomc"]
[ext_resource type="PackedScene" uid="uid://t6opo6kuctpa" path="res://logic-scenes/luna/Luna_frame-of-mind.glb" id="1_gj414"]
[node name="Luna_frame-of-mind" instance=ExtResource("1_gj414")]

View File

@ -0,0 +1,53 @@
shader_type sky;
uniform float star_size: hint_range(50.0, 500.0) = 120.0;
uniform sampler2D star_colors: hint_default_white;
uniform sampler2D sky_gradient: hint_default_black, repeat_disable;
uniform sampler2D nebula_gradient: hint_default_black, repeat_disable;
uniform float nebula_offset;
uniform sampler2D universe_background: hint_default_black;
// https://github.com/Norrox/GodotShaders/blob/master/Shaders/Voronoi-Worley/Voronoi.shader
vec3 RNGV3(vec3 p) {
vec3 a = fract(vec3(p.x, p.y, p.z) * vec3(111.11,333.33,444.44));
a += dot(a, a+33.51);
return fract(vec3(a.x*a.y, a.y*a.z, a.z*a.x)); //outputs a random vec2 between 0 and 1
}
vec4 voronoy(vec3 loc, float scale){
loc = loc*scale;
vec4 output = vec4(0., 0., 0., 10.);
for(float y=-1.; y<=1.; y++){
for(float x=-1.; x<=1.; x++){
for(float z=-1.; z<=1.; z++){
vec3 offs = vec3(x,y,z);
vec3 n = RNGV3(floor(loc)+offs)*2.0-1.0;
vec3 p = offs+sin(n) * .5;
float d = length((fract(loc)-0.5)-p);
if(d<output.q){
vec3 rng = RNGV3(floor(loc)+offs);
output = vec4(rng.x, rng.y, rng.z, d);
}
}
}
}
return output;
}
void sky() {
vec4 star_noise = voronoy(EYEDIR, star_size);
vec3 stars = pow(max((0.25-star_noise.q)*4.0, 0), 0.3) * texture(star_colors, vec2(star_noise.x)).xyz * pow(star_noise.z, 2.2);
stars *= float(star_noise.y*4.0 < pow(texture(universe_background, SKY_COORDS).z, 2.0));
stars *= (0.7 + sin(TIME*(star_noise.z*1.5+0.2)) * 0.5);
vec2 moving_noise = (texture(universe_background, SKY_COORDS + TIME * vec2(0.001, .0)).xy - 0.5) * 0.1;
COLOR = pow(texture(sky_gradient, pow(moving_noise + EYEDIR.yy, vec2(0.8))).xyz, vec3(2.2));
vec4 nebula = texture(nebula_gradient, //selecting the correct color
pow(vec2(texture(universe_background, SKY_COORDS).z), vec2(0.8+nebula_offset)) * nebula_offset //setting the base gradient
* 1.5 * texture(universe_background, -SKY_COORDS + TIME * vec2(0.001, 0) + moving_noise).xy // adding distortion
);
//COLOR += pow(texture(nebula_gradient, vec2(texture(universe_background, SKY_COORDS).z + nebula_offset * texture(universe_background, -SKY_COORDS + TIME * vec2(0.0005, 0) + moving_noise).z + 0.1)).xyz, vec3(2.0));
COLOR = (COLOR * (1.0-nebula.q) + nebula.xyz + stars * SKY_COORDS.y)*float(SKY_COORDS.y<0.5);
//COLOR = texture(universe_background, SKY_COORDS).zzz;
}

BIN
src/base-environments/intro_scene/textures/sky_textures.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfwa5dq3flk4b"
path="res://.godot/imported/sky_textures.png-1bc387632f79299cfe768a08f95b36df.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base-environments/intro_scene/textures/sky_textures.png"
dest_files=["res://.godot/imported/sky_textures.png-1bc387632f79299cfe768a08f95b36df.ctex"]
[params]
compress/mode=3
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=1
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal=""
process/fix_alpha_border=false
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

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dabnlcnuticww"
path="res://.godot/imported/sky_textures_2.png-a1913291aa98549785b8c12dd6aa67b9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base-environments/intro_scene/textures/sky_textures_2.png"
dest_files=["res://.godot/imported/sky_textures_2.png-a1913291aa98549785b8c12dd6aa67b9.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=1
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=false
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

View File

@ -5,13 +5,14 @@ extends Area3D
@onready var ui = $UiWrapper/UiSprite/SubViewport.get_child(0) @onready var ui = $UiWrapper/UiSprite/SubViewport.get_child(0)
var revealed: bool = false: var revealed: bool = false:
set(on_stage): set(reveal):
revealed = on_stage revealed = reveal
if on_stage: if reveal:
wrapper.show() wrapper.show()
ui.show() ui.show()
else: else:
ui.hide() ui.hide()
await get_tree().create_timer(1).timeout
wrapper.hide() wrapper.hide()
var has_mouse: bool = false var has_mouse: bool = false
@ -21,9 +22,10 @@ func _ready():
connect("mouse_entered", Callable(self, "_on_mouse_entered")) connect("mouse_entered", Callable(self, "_on_mouse_entered"))
func _on_mouse_entered(): func _on_mouse_entered():
input_ray_pickable = false if not State.focus_locked:
ui.collapsed = false input_ray_pickable = false
has_mouse = true ui.collapsed = false
has_mouse = true
func _on_mouse_exited(): func _on_mouse_exited():
print("mouse_exited") print("mouse_exited")
@ -33,6 +35,9 @@ func _on_mouse_exited():
func reveal(): func reveal():
revealed = true revealed = true
await get_tree().create_timer(5).timeout
if not has_mouse:
revealed = false
func collapse(): func collapse():
_on_mouse_exited() _on_mouse_exited()

View File

@ -0,0 +1,82 @@
[gd_scene load_steps=9 format=3 uid="uid://cg70r0102t8nl"]
[ext_resource type="Texture2D" uid="uid://i75aktvgsdwg" path="res://base-environments/youth_room/import/textures/wires_normal.png" id="1_p3lcj"]
[ext_resource type="Texture2D" uid="uid://chisldkpt6bf5" path="res://base-environments/youth_room/import/textures/wires_albedo.png" id="1_xsr58"]
[ext_resource type="Script" path="res://addons/LineRenderer/line_renderer.gd" id="2_javfj"]
[ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"]
[sub_resource type="GDScript" id="GDScript_2caij"]
script/source = "@tool
extends Node3D
@export var light_array: Array[Vector3]:
set(points):
light_array = points
if is_inside_tree():
rebuild()
@onready var wires:LineRenderer3D = $wires
@onready var diodes:MultiMeshInstance3D = $diodes
@export var seed:int = 42
var rng = RandomNumberGenerator.new()
@export var size:float = 0.1:
set(new_size):
size = new_size
rebuild()
if is_inside_tree():
wires.end_thickness = size*0.1
wires.start_thickness = size*0.1
# Called when the node enters the scene tree for the first time.
func _ready():
rebuild()
func rebuild():
rng.seed = seed
rng.state = 0
for child in wires.get_children(): child.free()
wires.points = light_array
diodes.multimesh.instance_count = light_array.size()
var meshBuffer:PackedFloat32Array
for point in light_array:
rng
var base:Basis = Basis(Vector3(rng.randf_range(-1, 1), rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized(), rng.randf_range(0, PI*2))
base = base.scaled(Vector3(size, size, size))
meshBuffer.append_array([base.x.x, base.x.y, base.x.z, point.x, base.y.x, base.y.y, base.y.z, point.y, base.z.x, base.z.y, base.z.z, point.z])
diodes.multimesh.buffer = meshBuffer
"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5ca5e"]
transparency = 2
alpha_scissor_threshold = 0.5
alpha_antialiasing_mode = 0
cull_mode = 2
albedo_color = Color(0.368627, 0.368627, 0.368627, 1)
albedo_texture = ExtResource("1_xsr58")
normal_enabled = true
normal_texture = ExtResource("1_p3lcj")
[sub_resource type="ImmediateMesh" id="ImmediateMesh_b56ch"]
[sub_resource type="MultiMesh" id="MultiMesh_ic3h7"]
transform_format = 1
instance_count = 30
mesh = ExtResource("4_qh8yy")
buffer = PackedFloat32Array(0.0998169, 0.00482103, -0.00365424, -0.545, -0.00428558, 0.0989875, 0.0135316, 0.915, 0.0042696, -0.0133502, 0.0990128, 1.035, 0.0700075, -0.0358849, 0.0617351, -0.47, 0.0525334, 0.0844406, -0.0104897, 0.855, -0.0483653, 0.0397751, 0.0779663, 0.905, 0.0042587, 0.0920312, -0.0388859, -0.44, -0.00571533, 0.0390819, 0.0918692, 0.871, 0.0997457, -0.00168997, 0.00692427, 0.78, 0.0219999, -0.0870806, -0.0439656, -0.385, 0.0800974, 0.041851, -0.0428124, 0.91, 0.0556813, -0.0257966, 0.0789565, 0.69, 0.0923335, 0.0288341, -0.0253597, -0.38, -0.0359662, 0.088075, -0.0308096, 0.995, 0.0134518, 0.0375685, 0.0916933, 0.595, 0.0410372, 0.0236122, 0.0880819, -0.39, -0.0818364, -0.0330796, 0.0469951, 0.925, 0.0402337, -0.0913685, 0.00574842, 0.465, 0.0963897, 0.0249758, -0.00923199, -0.364, -0.025153, 0.0967818, -0.000788714, 0.86, 0.0087379, 0.00308236, 0.0995698, 0.211, 0.0905162, -0.0353528, 0.0236008, -0.295, 0.00980512, 0.0713907, 0.0693341, 0.82, -0.0413604, -0.0604445, 0.0680866, 0.06, 0.0999699, -0.000440024, 0.00241425, -0.255, 0.00037743, 0.0999657, 0.0025912, 0.805, -0.00242483, -0.00258131, 0.0999373, -0.15, 0.0666952, -0.0744692, 0.00246829, -0.175, 0.0669796, 0.0613729, 0.0417982, 0.83, -0.0326417, -0.0262242, 0.090812, -0.355, 0.00827521, 0.0528018, -0.0845191, -0.135, 0.0951837, -0.0293119, -0.00899272, 0.955, -0.0295225, -0.0797043, -0.0526844, -0.515, 0.0983988, -0.0102168, 0.0146044, -0.025, 0.00642553, 0.0967642, 0.0244007, 0.78, -0.0166249, -0.0230716, 0.0958714, -0.615, -0.0341773, -0.0716575, -0.0608039, 0.115, 0.0144934, 0.059907, -0.078747, 0.63, 0.0928539, -0.0357262, -0.010089, -0.695, -0.0232891, -0.0711249, 0.066324, 0.245, 0.0795472, -0.0531651, -0.0290812, 0.555, 0.0559451, 0.0459861, 0.0689595, -0.745, -0.0599926, -0.0254553, -0.075848, 0.37, -0.0708402, 0.0609612, 0.0355725, 0.595, 0.0371828, 0.0750717, -0.0546048, -0.805, 0.0107775, 0.0912119, 0.0395505, 0.455, 0.0273445, -0.0409675, 0.0870284, 0.745, 0.0955831, 0.00143545, -0.0293567, -0.84, 0.0745873, 0.00700857, -0.0662391, 0.505, -0.0366242, 0.0873785, -0.0319947, 0.89, 0.0556363, 0.0481236, 0.0677401, -0.87, -0.0524777, -0.0408163, -0.0747002, 0.445, -0.0771795, -0.0142038, 0.0619805, 1.175, -0.0359084, 0.0901791, -0.024048, -0.87, 0.0652616, -0.0746751, 0.0128275, 0.26, -0.071962, -0.0663868, -0.0203536, 1.28, 0.0237149, 0.00405218, -0.0970628, -0.815, 0.0477617, -0.0860534, 0.0177096, 0.125, -0.0450234, -0.00666441, 0.089042, 1.35, -0.0754435, -0.0505014, -0.0419272, -0.8, 0.0526553, -0.07791, -0.0340215, -0.037, -0.0570784, -0.00274075, -0.0820643, 1.479, 0.0630038, 0.0626301, -0.0459129, -0.834, 0.0726285, 0.053708, 0.0429017, -0.2, -0.0349996, 0.0826095, -0.0441667, 1.601, -0.0591619, 0.0170622, 0.0787956, -0.851, 0.0581542, 0.0297762, -0.0757065, -0.359, -0.0464154, 0.0885717, -0.000817926, 1.769, 0.0668109, 0.0356151, 0.0653289, -0.85, 0.0875991, -0.0425381, 0.0227357, -0.5, 0.0336438, 0.0876653, 0.0343932, 1.949, -0.0345616, -0.022479, 0.0911054, -0.85, 0.0946831, -0.0299322, -0.0117972, -0.594, 0.0199689, 0.0259233, 0.0944946, 2.126, -0.0252261, -0.0918261, 0.0305222, -0.85, 0.0626413, -0.0766232, 0.0143161, -0.634, 0.0779479, 0.0616799, -0.0109416, 2.238, -0.000446323, 0.0180131, 0.0983633, -0.85, 0.0510754, -0.0397606, 0.076226, -0.634, -0.0155809, 0.0829139, 0.0536891, 2.035, -0.084549, -0.0392986, 0.0361536, -0.85, -0.055891, -0.072196, -0.0407913, -0.614, -0.0700671, 0.0148083, 0.0697948, 1.875, -0.0443486, 0.0675903, -0.0588622, -0.85, -0.0545317, 0.0517385, -0.0659501, -0.65, 0.0389976, 0.0853039, 0.0346761, 1.655, 0.0741989, -0.00680947, -0.0666945, -0.85, 0.0858331, 0.0430527, -0.0279131, -0.65, 0.0302511, -0.0864024, -0.040243, 1.475, -0.0414433, 0.0260978, -0.0871858, -0.87)
[node name="fairylights" type="Node3D"]
script = SubResource("GDScript_2caij")
light_array = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)])
[node name="wires" type="MeshInstance3D" parent="."]
material_override = SubResource("StandardMaterial3D_5ca5e")
mesh = SubResource("ImmediateMesh_b56ch")
script = ExtResource("2_javfj")
points = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)])
start_thickness = 0.01
end_thickness = 0.01
use_global_coords = false
tile_texture = false
[node name="diodes" type="MultiMeshInstance3D" parent="."]
multimesh = SubResource("MultiMesh_ic3h7")

BIN
src/base-environments/youth_room/import/fairy_light.glb (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,57 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cat2o0tdxahiq"
path="res://.godot/imported/fairy_light.glb-23acffacc6593c5a8045d4a2c6c8f3f3.scn"
[deps]
source_file="res://base-environments/youth_room/import/fairy_light.glb"
dest_files=["res://.godot/imported/fairy_light.glb-23acffacc6593c5a8045d4a2c6c8f3f3.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
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
import_script/path=""
_subresources={
"materials": {
"emit": {
"use_external/enabled": true,
"use_external/path": "res://base-environments/youth_room/shaders/fairylight.material"
},
"halo": {
"use_external/enabled": true,
"use_external/path": "res://base-environments/youth_room/shaders/fairylight_halo.material"
}
},
"meshes": {
"fairy_light_diode": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://base-environments/youth_room/shaders/fairy_light_diode.res"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1

View File

@ -2,7 +2,6 @@
[resource] [resource]
resource_name = "door" resource_name = "door"
cull_mode = 2
vertex_color_use_as_albedo = true vertex_color_use_as_albedo = true
albedo_color = Color(0.882082, 0.839278, 0.809231, 1) albedo_color = Color(0.882082, 0.839278, 0.809231, 1)
roughness = 0.5 roughness = 0.5

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ddo88j25qqiv4"
path.s3tc="res://.godot/imported/Paper003_1K_NormalGL.jpg-71e996bfc9d14be9a6a613688bcccb94.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://base-environments/youth_room/import/textures/Paper003_1K_NormalGL.jpg"
dest_files=["res://.godot/imported/Paper003_1K_NormalGL.jpg-71e996bfc9d14be9a6a613688bcccb94.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
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=0

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ckv2c2qr4ysb1"
path.s3tc="res://.godot/imported/pattern_237_diffuse.png-cd54f670c84bf8a07079e7eb24ba5d8a.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://base-environments/youth_room/import/textures/pattern_237_diffuse.png"
dest_files=["res://.godot/imported/pattern_237_diffuse.png-cd54f670c84bf8a07079e7eb24ba5d8a.s3tc.ctex"]
[params]
compress/mode=2
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=0

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyapx84i7dykm"
path.s3tc="res://.godot/imported/pattern_237_normal.png-c0b0c145cf7bd8c292de288fe33fa9eb.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://base-environments/youth_room/import/textures/pattern_237_normal.png"
dest_files=["res://.godot/imported/pattern_237_normal.png-c0b0c145cf7bd8c292de288fe33fa9eb.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://base-environments/youth_room/import/textures/pattern_237_normal.png"
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

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chisldkpt6bf5"
path.s3tc="res://.godot/imported/wires_albedo.png-e2ca1c0cfbd554203dfd9c0e487f3b1c.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://base-environments/youth_room/import/textures/wires_albedo.png"
dest_files=["res://.godot/imported/wires_albedo.png-e2ca1c0cfbd554203dfd9c0e487f3b1c.s3tc.ctex"]
[params]
compress/mode=2
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=0

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://i75aktvgsdwg"
path.s3tc="res://.godot/imported/wires_normal.png-a1ed398b6f0bdd3bf06fa8d9f72a947e.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://base-environments/youth_room/import/textures/wires_normal.png"
dest_files=["res://.godot/imported/wires_normal.png-a1ed398b6f0bdd3bf06fa8d9f72a947e.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://base-environments/youth_room/import/textures/wires_normal.png"
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

Binary file not shown.

View File

@ -167,6 +167,38 @@ _subresources={
"use_external/enabled": true, "use_external/enabled": true,
"use_external/path": "res://base-environments/youth_room/import/materials/wooden_crate_01.tres" "use_external/path": "res://base-environments/youth_room/import/materials/wooden_crate_01.tres"
} }
},
"meshes": {
"youth_room_drawing_001": {
"generate/lightmap_uv": 0,
"generate/lods": 2,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
},
"youth_room_drawing_002": {
"generate/lightmap_uv": 0,
"generate/lods": 2,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
},
"youth_room_room": {
"generate/lightmap_uv": 0,
"generate/lods": 2,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
}
} }
} }
gltf/naming_version=0 gltf/naming_version=0

View File

@ -20,6 +20,7 @@ var current_mode: int = Modes.FREEZE:
current_mode = _update_scene(new_mode) current_mode = _update_scene(new_mode)
func start(): func start():
$logic/PlayerController.process_mode = Node.PROCESS_MODE_INHERIT
emit_signal("ini_room") emit_signal("ini_room")
current_mode = Modes.WALKING current_mode = Modes.WALKING
@ -45,3 +46,4 @@ func _ready():
if get_parent() == get_tree().root: if get_parent() == get_tree().root:
get_ready() get_ready()
start() start()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=117 format=3 uid="uid://b3b0gyvklqn50"] [gd_scene load_steps=127 format=3 uid="uid://b3b0gyvklqn50"]
[ext_resource type="Script" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"] [ext_resource type="Script" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"]
[ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="1_jf3oi"] [ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="1_jf3oi"]
@ -33,8 +33,11 @@
[ext_resource type="PackedScene" uid="uid://bpjympn3ps3wo" path="res://logic-scenes/luna/luna_imported.tscn" id="27_pb1jl"] [ext_resource type="PackedScene" uid="uid://bpjympn3ps3wo" path="res://logic-scenes/luna/luna_imported.tscn" id="27_pb1jl"]
[ext_resource type="Material" uid="uid://ct7uc5i5yp5qf" path="res://base-environments/youth_room/import/materials/wall.tres" id="28_oiweb"] [ext_resource type="Material" uid="uid://ct7uc5i5yp5qf" path="res://base-environments/youth_room/import/materials/wall.tres" id="28_oiweb"]
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="32_2vgep"] [ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="32_2vgep"]
[ext_resource type="Shader" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="32_k5rvd"]
[ext_resource type="Material" uid="uid://bmu72cnsr8c5e" path="res://base-environments/youth_room/shaders/window.material" id="32_pwbgf"] [ext_resource type="Material" uid="uid://bmu72cnsr8c5e" path="res://base-environments/youth_room/shaders/window.material" id="32_pwbgf"]
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="32_w6oa5"] [ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="32_w6oa5"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="33_mvrs2"]
[ext_resource type="PackedScene" uid="uid://cg70r0102t8nl" path="res://base-environments/youth_room/fairylights.tscn" id="39_q6rov"]
[sub_resource type="BoxShape3D" id="BoxShape3D_j3mqx"] [sub_resource type="BoxShape3D" id="BoxShape3D_j3mqx"]
size = Vector3(0.711297, 2.53136, 1.74815) size = Vector3(0.711297, 2.53136, 1.74815)
@ -1567,8 +1570,7 @@ func start_soundtrack():
func play_scene(id: int, repeat = false): func play_scene(id: int, repeat = false):
get_tree().call_group(\"interactables\", \"collapse\") get_tree().call_group(\"interactables\", \"collapse\")
State.pass_stage_to(self) State.pass_stage_to(self, false, true)
State.lock_focus = true
is_repeating = repeat is_repeating = repeat
Input.mouse_mode = Input.MOUSE_MODE_HIDDEN Input.mouse_mode = Input.MOUSE_MODE_HIDDEN
match id: match id:
@ -1584,26 +1586,21 @@ func play_scene(id: int, repeat = false):
func _on_ini_room(): func _on_ini_room():
pass pass
func on_childhood_done(): func on_childhood_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_CHILDHOOD, is_repeating) get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_CHILDHOOD, is_repeating)
$childhood.hide() $childhood.hide()
State.lock_focus = is_repeating
func on_voice_training_done(): func on_voice_training_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_VOICE_TRAINING, is_repeating) get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_VOICE_TRAINING, is_repeating)
$\"Voice Training\".hide() $\"Voice Training\".hide()
State.lock_focus = is_repeating
func on_jui_jutsu_done(): func on_jui_jutsu_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_JUI_JUTSU, is_repeating) get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_JUI_JUTSU, is_repeating)
$jui_jutsu.hide() $jui_jutsu.hide()
State.lock_focus = is_repeating
func on_draeven_done(): func on_draeven_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_DRAEVEN, is_repeating) get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_DRAEVEN, is_repeating)
$draeven.hide() $draeven.hide()
State.lock_focus = is_repeating
queue(\"intro\") queue(\"intro\")
func scene_finished(_id): func scene_finished(_id):
@ -1969,15 +1966,46 @@ func _process(delta):
[sub_resource type="ViewportTexture" id="ViewportTexture_hwb6d"] [sub_resource type="ViewportTexture" id="ViewportTexture_hwb6d"]
viewport_path = NodePath("MeshInstance3D/SubViewport") viewport_path = NodePath("MeshInstance3D/SubViewport")
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_et8yw"] [sub_resource type="Gradient" id="Gradient_d5lk6"]
interpolation_mode = 2
offsets = PackedFloat32Array(0, 0.175337, 0.414258, 0.593449, 0.700565, 0.770713, 0.798493, 0.809793, 0.954802)
colors = PackedColorArray(0, 0, 0, 0, 0.003, 0.0047, 0.02, 0.584314, 0.02385, 0.009, 0.09, 0, 0.06228, 0.0312, 0.12, 1, 0.22, 0.055, 0.1815, 0, 0.816757, 0.155467, 0.208686, 0.819608, 0.0136439, 0.0237636, 0.0955315, 1, 0.0120242, 0.0120251, 0.0360567, 0.356863, 0.00319355, 0.00476964, 0.0186391, 0.313726)
[sub_resource type="Sky" id="Sky_188qv"] [sub_resource type="GradientTexture1D" id="GradientTexture1D_apxml"]
sky_material = SubResource("ProceduralSkyMaterial_et8yw") gradient = SubResource("Gradient_d5lk6")
use_hdr = true
[sub_resource type="Gradient" id="Gradient_liqu7"]
interpolation_mode = 2
interpolation_color_space = 1
offsets = PackedFloat32Array(0, 0.137476, 0.46516, 0.851224)
colors = PackedColorArray(0.127188, 0.325303, 0.352533, 1, 0.0512, 0.18112, 0.32, 1, 0.0406, 0.0530699, 0.29, 1, 0.106137, 0.0034, 0.17, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_vetqo"]
gradient = SubResource("Gradient_liqu7")
use_hdr = true
[sub_resource type="Gradient" id="Gradient_87cdb"]
colors = PackedColorArray(0.85, 0.46325, 0.0765, 1, 0.825717, 0.47559, 0.983214, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_8fou6"]
gradient = SubResource("Gradient_87cdb")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_s2c5b"]
shader = ExtResource("32_k5rvd")
shader_parameter/star_size = 120.0
shader_parameter/nebula_offset = 0.5
shader_parameter/star_colors = SubResource("GradientTexture1D_8fou6")
shader_parameter/sky_gradient = SubResource("GradientTexture1D_vetqo")
shader_parameter/nebula_gradient = SubResource("GradientTexture1D_apxml")
shader_parameter/universe_background = ExtResource("33_mvrs2")
[sub_resource type="Sky" id="Sky_85fpg"]
sky_material = SubResource("ShaderMaterial_s2c5b")
[sub_resource type="Environment" id="Environment_pllnm"] [sub_resource type="Environment" id="Environment_pllnm"]
background_mode = 2 background_mode = 2
background_energy_multiplier = 0.2 sky = SubResource("Sky_85fpg")
sky = SubResource("Sky_188qv")
sky_rotation = Vector3(0, 0.352557, 0) sky_rotation = Vector3(0, 0.352557, 0)
ambient_light_source = 3 ambient_light_source = 3
ambient_light_color = Color(1, 1, 1, 1) ambient_light_color = Color(1, 1, 1, 1)
@ -2093,12 +2121,28 @@ func _process(delta):
self.global_transform = camera.global_transform self.global_transform = camera.global_transform
" "
[sub_resource type="GDScript" id="GDScript_icgq0"]
script/source = "extends Control
func show():
visible = true
var vis_tween = create_tween()
vis_tween.tween_property(self, \"modulate\", Color(1, 1, 1, 1), 0.1)
func hide():
var vis_tween = create_tween()
vis_tween.tween_property(self, \"modulate\", Color(1, 1, 1, 0), 0.1)
await vis_tween.finished
visible = false
"
[node name="youth room" type="Node3D"] [node name="youth room" type="Node3D"]
script = ExtResource("1_aitp0") script = ExtResource("1_aitp0")
[node name="logic" type="Node3D" parent="."] [node name="logic" type="Node3D" parent="."]
[node name="PlayerController" parent="logic" groups=["camera_owner"] instance=ExtResource("3_foj4y")] [node name="PlayerController" parent="logic" groups=["camera_owner"] instance=ExtResource("3_foj4y")]
process_mode = 4
transform = Transform3D(0.686123, 0, 0.727485, 0, 1, 0, -0.727485, 0, 0.686123, 0.63, 0, 0.925) transform = Transform3D(0.686123, 0, 0.727485, 0, 1, 0, -0.727485, 0, 0.686123, 0.63, 0, 0.925)
[node name="colission" type="Node3D" parent="logic"] [node name="colission" type="Node3D" parent="logic"]
@ -2384,6 +2428,7 @@ autoplay = "idle"
[node name="Camera3D" type="Camera3D" parent="logic/ScenePlayer/childhood/PanelContainer/StartFrame/TextureRect/SubViewport/Node3D"] [node name="Camera3D" type="Camera3D" parent="logic/ScenePlayer/childhood/PanelContainer/StartFrame/TextureRect/SubViewport/Node3D"]
transform = Transform3D(1, -4.88994e-09, 1.82221e-11, 4.88232e-09, 0.998636, 0.052214, -2.7352e-10, -0.052214, 0.998636, 0.0198479, 0.0554118, 0.529937) transform = Transform3D(1, -4.88994e-09, 1.82221e-11, 4.88232e-09, 0.998636, 0.052214, -2.7352e-10, -0.052214, 0.998636, 0.0198479, 0.0554118, 0.529937)
current = true
fov = 33.0 fov = 33.0
[node name="SpotLight3D" type="SpotLight3D" parent="logic/ScenePlayer/childhood/PanelContainer/StartFrame/TextureRect/SubViewport/Node3D"] [node name="SpotLight3D" type="SpotLight3D" parent="logic/ScenePlayer/childhood/PanelContainer/StartFrame/TextureRect/SubViewport/Node3D"]
@ -2726,7 +2771,7 @@ layout_mode = 2
size_flags_horizontal = 4 size_flags_horizontal = 4
size_flags_vertical = 4 size_flags_vertical = 4
mouse_filter = 0 mouse_filter = 0
scroll_vertical = 150 scroll_vertical = 30
horizontal_scroll_mode = 0 horizontal_scroll_mode = 0
vertical_scroll_mode = 3 vertical_scroll_mode = 3
@ -2841,7 +2886,6 @@ texture = SubResource("ViewportTexture_3mgqk")
[node name="SubViewport" type="SubViewport" parent="logic/Mask-interaction/UiWrapper/UiSprite"] [node name="SubViewport" type="SubViewport" parent="logic/Mask-interaction/UiWrapper/UiSprite"]
transparent_bg = true transparent_bg = true
size = Vector2i(300, 350)
render_target_update_mode = 4 render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Mask-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] [node name="Collectable_ui" parent="logic/Mask-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
@ -2879,7 +2923,7 @@ texture = SubResource("ViewportTexture_7hana")
[node name="SubViewport" type="SubViewport" parent="logic/clothes_interaction/UiWrapper/UiSprite"] [node name="SubViewport" type="SubViewport" parent="logic/clothes_interaction/UiWrapper/UiSprite"]
transparent_bg = true transparent_bg = true
size = Vector2i(300, 350) size = Vector2i(400, 350)
render_target_update_mode = 4 render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/clothes_interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] [node name="Collectable_ui" parent="logic/clothes_interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
@ -2918,7 +2962,7 @@ texture = SubResource("ViewportTexture_nn6wl")
[node name="SubViewport" type="SubViewport" parent="logic/Comic-interaction/UiWrapper/UiSprite"] [node name="SubViewport" type="SubViewport" parent="logic/Comic-interaction/UiWrapper/UiSprite"]
transparent_bg = true transparent_bg = true
size = Vector2i(300, 350) size = Vector2i(400, 350)
render_target_update_mode = 4 render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Comic-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] [node name="Collectable_ui" parent="logic/Comic-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
@ -2957,13 +3001,14 @@ texture = SubResource("ViewportTexture_8rywf")
[node name="SubViewport" type="SubViewport" parent="logic/Draeven-interaction/UiWrapper/UiSprite"] [node name="SubViewport" type="SubViewport" parent="logic/Draeven-interaction/UiWrapper/UiSprite"]
transparent_bg = true transparent_bg = true
size = Vector2i(300, 350) size = Vector2i(400, 350)
render_target_update_mode = 4 render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Draeven-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] [node name="Collectable_ui" parent="logic/Draeven-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false visible = false
scene = 3 scene = 3
is_story = true is_story = true
collected = true
item_name = "Starlight" item_name = "Starlight"
content_notes = "Alienation" content_notes = "Alienation"
@ -2997,7 +3042,7 @@ texture = SubResource("ViewportTexture_hdmps")
[node name="SubViewport" type="SubViewport" parent="logic/Mind Board/UiWrapper/UiSprite"] [node name="SubViewport" type="SubViewport" parent="logic/Mind Board/UiWrapper/UiSprite"]
transparent_bg = true transparent_bg = true
size = Vector2i(300, 350) size = Vector2i(400, 350)
render_target_update_mode = 4 render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Mind Board/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] [node name="Collectable_ui" parent="logic/Mind Board/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
@ -3068,15 +3113,17 @@ light_energy = 0.5
omni_range = 0.147682 omni_range = 0.147682
[node name="OmniLight3D2" type="OmniLight3D" parent="visuals/lights"] [node name="OmniLight3D2" type="OmniLight3D" parent="visuals/lights"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.57389, 0.689055, -0.718959) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.77406, 0.63822, -0.383553)
light_color = Color(0.894118, 0.87451, 0.686275, 1) light_color = Color(0.894118, 0.87451, 0.686275, 1)
light_size = 0.1 light_size = 0.2
light_specular = 0.1
shadow_enabled = true shadow_enabled = true
omni_range = 2.17653 omni_range = 2.77016
omni_attenuation = 0.450626 omni_attenuation = 0.450626
[node name="OmniLight3D3" type="OmniLight3D" parent="visuals/lights"] [node name="OmniLight3D3" type="OmniLight3D" parent="visuals/lights"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.71696, 0.649284, 0.541634) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.71696, 0.532118, 0.541634)
visible = false
light_color = Color(0.929412, 0.866667, 0.639216, 1) light_color = Color(0.929412, 0.866667, 0.639216, 1)
light_energy = 0.3 light_energy = 0.3
light_size = 0.1 light_size = 0.1
@ -3085,10 +3132,12 @@ omni_range = 2.17653
omni_attenuation = 0.450626 omni_attenuation = 0.450626
[node name="OmniLight3D4" type="OmniLight3D" parent="visuals/lights"] [node name="OmniLight3D4" type="OmniLight3D" parent="visuals/lights"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.55029, 1.48654, -0.513123) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.47143, 1.6968, -0.554695)
layers = 32769
light_color = Color(0.894118, 0.87451, 0.686275, 1) light_color = Color(0.894118, 0.87451, 0.686275, 1)
light_energy = 0.1 light_energy = 0.1
light_size = 0.05 light_size = 0.3
light_specular = 0.0
shadow_enabled = true shadow_enabled = true
omni_range = 2.17653 omni_range = 2.17653
omni_attenuation = 1.41421 omni_attenuation = 1.41421
@ -3103,10 +3152,11 @@ script = SubResource("GDScript_5ot1o")
[node name="lighting aids" type="Node3D" parent="visuals"] [node name="lighting aids" type="Node3D" parent="visuals"]
[node name="window_probe" type="ReflectionProbe" parent="visuals/lighting aids"] [node name="window_probe" type="ReflectionProbe" parent="visuals/lighting aids"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.01338, 0.972332, 2.73763) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.01338, 0.972332, 2.93068)
max_distance = 7.0 max_distance = 7.0
size = Vector3(1.55939, 2.08125, 0.431185) size = Vector3(1.55939, 2.08125, 0.817277)
origin_offset = Vector3(0, 0.46875, 0.117676) origin_offset = Vector3(0.0200195, 0.707031, 0.205592)
box_projection = true
enable_shadows = true enable_shadows = true
cull_mask = 1 cull_mask = 1
mesh_lod_threshold = 0.0 mesh_lod_threshold = 0.0
@ -3128,10 +3178,9 @@ box_projection = true
enable_shadows = true enable_shadows = true
[node name="upper_bunkbed_probe" type="ReflectionProbe" parent="visuals/lighting aids"] [node name="upper_bunkbed_probe" type="ReflectionProbe" parent="visuals/lighting aids"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.89428, 1.75054, -0.0384804) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.14632, 1.55788, -0.232231)
max_distance = 5.0 max_distance = 5.0
size = Vector3(2.39921, 1.61006, 2.62172) size = Vector3(1.81269, 1.61006, 2.62172)
origin_offset = Vector3(-0.456543, -0.353516, -0.0356445)
box_projection = true box_projection = true
interior = true interior = true
enable_shadows = true enable_shadows = true
@ -3195,6 +3244,7 @@ size = Vector2i(1920, 1080)
[node name="Camera3D" type="Camera3D" parent="WorldEnvironment/window_glass/SubViewport"] [node name="Camera3D" type="Camera3D" parent="WorldEnvironment/window_glass/SubViewport"]
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0.906618, 1.33684, 2.65628) transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0.906618, 1.33684, 2.65628)
current = true
script = SubResource("GDScript_rfgs6") script = SubResource("GDScript_rfgs6")
[node name="outside" parent="WorldEnvironment/window_glass/SubViewport" instance=ExtResource("32_2vgep")] [node name="outside" parent="WorldEnvironment/window_glass/SubViewport" instance=ExtResource("32_2vgep")]
@ -3209,9 +3259,9 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 1 mouse_filter = 1
script = SubResource("GDScript_icgq0")
[node name="Mouse" type="CenterContainer" parent="SceneUI"] [node name="Mouse" type="CenterContainer" parent="SceneUI"]
visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -3220,7 +3270,6 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="SceneUI/Mouse"] [node name="TextureRect" type="TextureRect" parent="SceneUI/Mouse"]
visible = false
layout_mode = 2 layout_mode = 2
texture = ExtResource("13_lqj71") texture = ExtResource("13_lqj71")
@ -3239,6 +3288,10 @@ light_specular = 0.0
omni_range = 0.457129 omni_range = 0.457129
omni_attenuation = 0.659754 omni_attenuation = 0.659754
[node name="fairylights" parent="." instance=ExtResource("39_q6rov")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.89212, 5.96046e-08, -0.143107)
light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.855, 0.905), Vector3(-0.44, 0.871, 0.78), Vector3(-0.385, 0.91, 0.69), Vector3(-0.38, 0.995, 0.595), Vector3(-0.39, 0.925, 0.465), Vector3(-0.364, 0.86, 0.211), Vector3(-0.295, 0.82, 0.06), Vector3(-0.255, 0.805, -0.15), Vector3(-0.175, 0.83, -0.355), Vector3(-0.135, 0.955, -0.515), Vector3(-0.025, 0.78, -0.615), Vector3(0.115, 0.63, -0.695), Vector3(0.245, 0.555, -0.745), Vector3(0.37, 0.595, -0.805), Vector3(0.455, 0.745, -0.84), Vector3(0.505, 0.89, -0.87), Vector3(0.445, 1.175, -0.87), Vector3(0.26, 1.28, -0.815), Vector3(0.125, 1.35, -0.8), Vector3(-0.037, 1.479, -0.834), Vector3(-0.2, 1.601, -0.851), Vector3(-0.359, 1.769, -0.85), Vector3(-0.5, 1.949, -0.85), Vector3(-0.594, 2.126, -0.85), Vector3(-0.634, 2.238, -0.85), Vector3(-0.634, 2.035, -0.85), Vector3(-0.614, 1.875, -0.85), Vector3(-0.65, 1.655, -0.85), Vector3(-0.65, 1.475, -0.87)])
[connection signal="ini_room" from="." to="logic/PlayerController" method="_on_ini_room"] [connection signal="ini_room" from="." to="logic/PlayerController" method="_on_ini_room"]
[connection signal="ini_room" from="." to="logic/ScenePlayer" method="_on_ini_room"] [connection signal="ini_room" from="." to="logic/ScenePlayer" method="_on_ini_room"]
[connection signal="ini_room" from="." to="visuals/lights/light_animation" method="_on_ini_room"] [connection signal="ini_room" from="." to="visuals/lights/light_animation" method="_on_ini_room"]

View File

@ -16,13 +16,13 @@ bus/2/name = &"sfx"
bus/2/solo = false bus/2/solo = false
bus/2/mute = false bus/2/mute = false
bus/2/bypass_fx = false bus/2/bypass_fx = false
bus/2/volume_db = 0.0 bus/2/volume_db = -9.63278
bus/2/send = &"New Bus 3" bus/2/send = &"New Bus 3"
bus/3/name = &"music" bus/3/name = &"music"
bus/3/solo = false bus/3/solo = false
bus/3/mute = false bus/3/mute = false
bus/3/bypass_fx = false bus/3/bypass_fx = false
bus/3/volume_db = -0.00384331 bus/3/volume_db = -9.63278
bus/3/send = &"New Bus 3" bus/3/send = &"New Bus 3"
bus/4/name = &"outside-rain" bus/4/name = &"outside-rain"
bus/4/solo = false bus/4/solo = false

View File

@ -17,19 +17,20 @@ func _unhandled_input(event):
viewport.push_input(event) viewport.push_input(event)
func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int): func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int):
# Position of the event in Sprite3D local coordinates. if not State.focus_locked:
var texture_3d_position = sprite.get_global_transform().affine_inverse() * pos # Position of the event in Sprite3D local coordinates.
#if !is_zero_approx(texture_3d_position.z): var texture_3d_position = sprite.get_global_transform().affine_inverse() * pos
# # Discard event because event didn't happen on the side of the Sprite3D. #if !is_zero_approx(texture_3d_position.z):
# return # # Discard event because event didn't happen on the side of the Sprite3D.
# Position of the event relative to the texture. # return
var texture_position: Vector2 = Vector2(texture_3d_position.x, -texture_3d_position.y) / sprite.pixel_size - sprite.get_item_rect().position # Position of the event relative to the texture.
# Send mouse event. var texture_position: Vector2 = Vector2(texture_3d_position.x, -texture_3d_position.y) / sprite.pixel_size - sprite.get_item_rect().position
var e: InputEvent = event.duplicate() # Send mouse event.
if e is InputEventMouse: var e: InputEvent = event.duplicate()
e.set_position(texture_position) if e is InputEventMouse:
e.set_global_position(texture_position) e.set_position(texture_position)
viewport.push_input(e) e.set_global_position(texture_position)
viewport.push_input(e)
func _on_button_pressed(): func _on_button_pressed():
print("Button pressed") print("Button pressed")

View File

@ -0,0 +1,55 @@
[gd_scene load_steps=12 format=3 uid="uid://d0qqluenght6a"]
[ext_resource type="Shader" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="1_8nej7"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="2_qoi7m"]
[sub_resource type="Gradient" id="Gradient_d5lk6"]
interpolation_mode = 2
offsets = PackedFloat32Array(0, 0.175337, 0.414258, 0.593449, 0.700565, 0.770713, 0.798493, 0.809793, 0.954802)
colors = PackedColorArray(0, 0, 0, 0, 0.003, 0.0047, 0.02, 0.584314, 0.02385, 0.009, 0.09, 0, 0.06228, 0.0312, 0.12, 1, 0.22, 0.055, 0.1815, 0, 0.816757, 0.155467, 0.208686, 0.819608, 0.0136439, 0.0237636, 0.0955315, 1, 0.0120242, 0.0120251, 0.0360567, 0.356863, 0.00319355, 0.00476964, 0.0186391, 0.313726)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_apxml"]
gradient = SubResource("Gradient_d5lk6")
use_hdr = true
[sub_resource type="Gradient" id="Gradient_liqu7"]
interpolation_mode = 2
interpolation_color_space = 1
offsets = PackedFloat32Array(0, 0.137476, 0.46516, 0.851224)
colors = PackedColorArray(0.127188, 0.325303, 0.352533, 1, 0.0512, 0.18112, 0.32, 1, 0.0406, 0.0530699, 0.29, 1, 0.106137, 0.0034, 0.17, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_vetqo"]
gradient = SubResource("Gradient_liqu7")
use_hdr = true
[sub_resource type="Gradient" id="Gradient_87cdb"]
colors = PackedColorArray(0.85, 0.46325, 0.0765, 1, 0.825717, 0.47559, 0.983214, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_8fou6"]
gradient = SubResource("Gradient_87cdb")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_s2c5b"]
shader = ExtResource("1_8nej7")
shader_parameter/star_size = 120.0
shader_parameter/nebula_offset = 0.5
shader_parameter/star_colors = SubResource("GradientTexture1D_8fou6")
shader_parameter/sky_gradient = SubResource("GradientTexture1D_vetqo")
shader_parameter/nebula_gradient = SubResource("GradientTexture1D_apxml")
shader_parameter/universe_background = ExtResource("2_qoi7m")
[sub_resource type="Sky" id="Sky_6q4bd"]
sky_material = SubResource("ShaderMaterial_s2c5b")
[sub_resource type="Environment" id="Environment_bebqi"]
background_mode = 2
sky = SubResource("Sky_6q4bd")
reflected_light_source = 2
tonemap_mode = 3
[node name="Node3D" type="Node3D"]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_bebqi")
[node name="Camera3D" type="Camera3D" parent="WorldEnvironment"]
transform = Transform3D(0.864275, 0.310381, 0.395844, 0, 0.786935, -0.617036, -0.50302, 0.533288, 0.680128, 0, 0, 2.95787)

View File

@ -1,81 +1,73 @@
[gd_scene load_steps=6 format=3 uid="uid://bigr0lnen1xdh"] [gd_scene load_steps=5 format=3 uid="uid://bigr0lnen1xdh"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_3yn7w"] [sub_resource type="GDScript" id="GDScript_5hy5u"]
sky_top_color = Color(0, 0, 1, 1) script/source = "extends Node3D
sky_horizon_color = Color(0.858824, 0.541176, 0.4, 1)
sky_curve = 0.54075
[sub_resource type="Sky" id="Sky_lumfb"]
sky_material = SubResource("ProceduralSkyMaterial_3yn7w")
[sub_resource type="Environment" id="Environment_f0flp"]
background_mode = 2
background_energy_multiplier = 0.2
sky = SubResource("Sky_lumfb")
sky_rotation = Vector3(0, 0.352557, 0)
ambient_light_source = 3
ambient_light_color = Color(1, 1, 1, 1)
reflected_light_source = 1
tonemap_mode = 2
ssr_enabled = true
ssr_max_steps = 512
ssr_depth_tolerance = 0.01
ssao_enabled = true
ssao_radius = 1.24
ssao_intensity = 3.09
ssao_power = 1.91184
ssao_detail = 3.0
ssil_intensity = 0.72
ssil_normal_rejection = 0.56
sdfgi_enabled = true
sdfgi_use_occlusion = true
glow_enabled = true
glow_levels/2 = 0.3
glow_levels/7 = 2.0
glow_intensity = 0.4
glow_strength = 0.7
glow_bloom = 0.13
glow_blend_mode = 1
glow_hdr_threshold = 0.46
fog_enabled = true
fog_light_color = Color(0.141176, 0.133333, 0.301961, 1)
fog_sky_affect = 0.0
fog_height = 1.0
fog_height_density = 0.1
adjustment_enabled = true
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_2qx32"]
auto_exposure_enabled = true
auto_exposure_scale = 0.2
dof_blur_far_enabled = true
dof_blur_far_distance = 0.4
dof_blur_far_transition = 0.2
dof_blur_near_distance = 0.79
dof_blur_amount = 0.0
auto_exposure_min_sensitivity = 100.0
[sub_resource type="GDScript" id="GDScript_uqlwy"]
script/source = "extends WorldEnvironment
# Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
focus_env() await get_tree().create_timer(1).timeout
$AnimationPlayer.advance(10)
func focus_env():
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0, 1) # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
func focus_object(): pass
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0.6, 1)
func _on_animation_player_animation_finished(anim_name):
print(\"yay\")
" "
[node name="Node3D" type="Node3D"] [sub_resource type="Animation" id="Animation_kdstq"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Camera3D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.058, 0.77)]
}
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [sub_resource type="Animation" id="Animation_wjx7h"]
environment = SubResource("Environment_f0flp") resource_name = "test"
camera_attributes = SubResource("CameraAttributesPractical_2qx32") length = 5.0
script = SubResource("GDScript_uqlwy") tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Camera3D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, -0.058, 0.77), Vector3(0, -0.058, 10.97)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_l6qbr"]
_data = {
"RESET": SubResource("Animation_kdstq"),
"test": SubResource("Animation_wjx7h")
}
[node name="Node3D" type="Node3D"]
script = SubResource("GDScript_5hy5u")
[node name="Camera3D" type="Camera3D" parent="."] [node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.987688, -0.156434, 0, 0.156434, 0.987688, 0, -0.058, 0.77) transform = Transform3D(1, 0, 0, 0, 0.987688, -0.156434, 0, 0.156434, 0.987688, 0, -0.058, 0.77)
fov = 18.0 fov = 18.0
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_l6qbr")
}
autoplay = "test"
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"]

View File

@ -82,7 +82,6 @@ text = "Welcome to the frame of mind alpha"
[node name="Label2" type="Label" parent="childhood/PanelContainer/VBoxContainer"] [node name="Label2" type="Label" parent="childhood/PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3
text = "Thank you for participating in our public alpha. The goal is to see if the core of text = "Thank you for participating in our public alpha. The goal is to see if the core of
our game works, if the mechanics are interesting and, if the game makes sense. our game works, if the mechanics are interesting and, if the game makes sense.
@ -94,6 +93,7 @@ The game also does not support save games yet.
Frame of Mind uses a Creative Commons Non Commercial Share Alike 4.0 license. You can use the game and it's assets freely, as long as you also contribute back to the creative Commons Community. Feel free to reach out if you need a commercial License. Frame of Mind uses a Creative Commons Non Commercial Share Alike 4.0 license. You can use the game and it's assets freely, as long as you also contribute back to the creative Commons Community. Feel free to reach out if you need a commercial License.
Twokinds is created by Thomas J. Fischbach, who granted us permission to use it in a Creative Commons Project." Twokinds is created by Thomas J. Fischbach, who granted us permission to use it in a Creative Commons Project."
autowrap_mode = 3 autowrap_mode = 3
justification_flags = 131
visible_characters_behavior = 1 visible_characters_behavior = 1
[node name="Start" type="Button" parent="childhood/PanelContainer/VBoxContainer"] [node name="Start" type="Button" parent="childhood/PanelContainer/VBoxContainer"]
@ -106,7 +106,7 @@ text = "I understand, please start the alpha"
[node name="Label3" type="Label" parent="childhood/PanelContainer/VBoxContainer"] [node name="Label3" type="Label" parent="childhood/PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
text = "the following links will take you to gilab.com" text = "The following links will take you to gilab.com"
horizontal_alignment = 1 horizontal_alignment = 1
autowrap_mode = 3 autowrap_mode = 3
visible_characters_behavior = 1 visible_characters_behavior = 1

BIN
src/import/fonts/AtkinsonHyperlegible-Italic.ttf (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,33 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bgno8yoimx87x"
path="res://.godot/imported/AtkinsonHyperlegible-Italic.ttf-2a9077906a1b44d4c09220b52c0f17c1.fontdata"
[deps]
source_file="res://import/fonts/AtkinsonHyperlegible-Italic.ttf"
dest_files=["res://.godot/imported/AtkinsonHyperlegible-Italic.ttf-2a9077906a1b44d4c09220b52c0f17c1.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
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={}

View File

@ -0,0 +1,33 @@
# ATKINSON HYPERLEGIBLE FONT LICENSE
Copyright © 2020, [Braille Institute of America, Inc.](https://www.brailleinstitute.org/freefont), with Reserved Typeface Name Atkinson Hyperlegible Font.
## GENERAL
Copyright Holder allows the Font to be used, studied, modified and redistributed freely as long as it is not sold by itself. The Font, including any derivative works, may be bundled, embedded, redistributed and/or sold with any software or other work provided that the Reserved Typeface Name is not used on, in or by any derivative work. The Font and derivatives, however, cannot be released under any other type of license. The requirement for the Font to remain under this license does not apply to any document created using the Font or any of its derivatives.
## DEFINITIONS
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
- “Copyright Holder” refers to Braille Institute of America, Inc.
- “Font” refers to the Atkinson Hyperlegible Font developed by Copyright Holder.
- "Font Software" refers to the set of files released by Copyright Holder under this license. This may include source files, build scripts and documentation.
- "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.
- "Original Version" refers to the collection of the Font Software components as distributed by Copyright Holder.
- "Reserved Typeface Name" refers to the name Atkinson Hyperlegible Font.
## 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 Version or Modified Version, may be sold by itself.
2) The Original Version or Modified Version of the Font Software may be bundled, redistributed and/or sold with any other 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 Typeface Name unless explicit written permission is granted by Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name of Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version or any related software or other product, except:
a) to acknowledge the contribution(s) of Copyright Holder and the Author(s); or
b) with the prior written permission of Copyright Holder.
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.
## TERMINATION
This license shall immediately terminate and become 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 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 OF OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
src/import/fonts/KleeOne-Regular.ttf (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,33 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://7pqvirsfm0ww"
path="res://.godot/imported/KleeOne-Regular.ttf-0d44174017b86145ff94efd9ef4e269a.fontdata"
[deps]
source_file="res://import/fonts/KleeOne-Regular.ttf"
dest_files=["res://.godot/imported/KleeOne-Regular.ttf-0d44174017b86145ff94efd9ef4e269a.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
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={}

BIN
src/import/fonts/KleeOne-SemiBold.ttf (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,33 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://c5ql8u7tpd10j"
path="res://.godot/imported/KleeOne-SemiBold.ttf-1873d47938425f822ef864cb42a251b5.fontdata"
[deps]
source_file="res://import/fonts/KleeOne-SemiBold.ttf"
dest_files=["res://.godot/imported/KleeOne-SemiBold.ttf-1873d47938425f822ef864cb42a251b5.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
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={}

File diff suppressed because one or more lines are too long

BIN
src/import/interface-elements/Button.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://btqqsrqk1b05u"
path="res://.godot/imported/Button.png-208f2c1875e22d62a34c4879c05066f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/Button.png"
dest_files=["res://.godot/imported/Button.png-208f2c1875e22d62a34c4879c05066f6.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

BIN
src/import/interface-elements/Button_disabled.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkwo2p5okykat"
path="res://.godot/imported/Button_disabled.png-e48cab6ea2497153fb9bd98728c08d96.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/Button_disabled.png"
dest_files=["res://.godot/imported/Button_disabled.png-e48cab6ea2497153fb9bd98728c08d96.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

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cnersypn2kka3"
path="res://.godot/imported/Button_hover.png-e82cbdc7ff8035451a8b10ed779e5d66.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/Button_hover.png"
dest_files=["res://.godot/imported/Button_hover.png-e82cbdc7ff8035451a8b10ed779e5d66.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

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cawhmh2xyi103"
path="res://.godot/imported/Button_pressed.png-5037c9128edfddaaca8ba1edf2297897.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/Button_pressed.png"
dest_files=["res://.godot/imported/Button_pressed.png-5037c9128edfddaaca8ba1edf2297897.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

BIN
src/import/interface-elements/button.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://74js84yg7kd5"
path="res://.godot/imported/button.png-76d81c4176f741c9af5971d2c6d467ad.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/button.png"
dest_files=["res://.godot/imported/button.png-76d81c4176f741c9af5971d2c6d467ad.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

BIN
src/import/interface-elements/button_hover.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://505e3hum4dfw"
path="res://.godot/imported/button_hover.png-8919e05a5e0b5e1bd66b6ae1cae4788f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/button_hover.png"
dest_files=["res://.godot/imported/button_hover.png-8919e05a5e0b5e1bd66b6ae1cae4788f.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

BIN
src/import/interface-elements/button_pressed.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c0nqmm73g28ms"
path="res://.godot/imported/button_pressed.png-a34fc55b3d286a73b6d6e8979809a0f7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/button_pressed.png"
dest_files=["res://.godot/imported/button_pressed.png-a34fc55b3d286a73b6d6e8979809a0f7.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

BIN
src/import/interface-elements/radio.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://di0twyrjabn7s"
path="res://.godot/imported/radio.png-932fcd2ba21c50f4376509538493348b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/radio.png"
dest_files=["res://.godot/imported/radio.png-932fcd2ba21c50f4376509538493348b.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

BIN
src/import/interface-elements/radio_checked.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mekp10cy0iow"
path="res://.godot/imported/radio_checked.png-f8b19a24d3c1174bccb1dd8708637b72.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://import/interface-elements/radio_checked.png"
dest_files=["res://.godot/imported/radio_checked.png-f8b19a24d3c1174bccb1dd8708637b72.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

View File

@ -11,23 +11,22 @@ enum {NAVIGATE, ASSIGN, DRAG}
var focus_stickies:bool = true: var focus_stickies:bool = true:
set(stickies): set(stickies):
if stickies and sticky_note_container.get_child_count() == 0: return if stickies and sticky_note_container.get_child_count() == 0: return
if not current_context == ASSIGN and not focus_stickies == stickies:
focus_stickies = stickies
if not current_context == ASSIGN:
if stickies: if stickies:
current_sticky_note_id = current_sticky_note_id current_sticky_note_id = current_sticky_note_id
else: else:
current_dropzone_id = current_dropzone_id current_dropzone_id = current_dropzone_id
focus_stickies = stickies
var has_stage = false: var has_stage = false:
set(focus): set(focus):
if focus: if focus:
has_stage = true has_stage = true
self.mouse_filter = Control.MOUSE_FILTER_PASS
get_tree().call_group("interactables", "collapse") get_tree().call_group("interactables", "collapse")
else: else:
has_stage = false has_stage = false
self.mouse_filter = Control.MOUSE_FILTER_IGNORE
if is_node_ready(): if is_node_ready():
if focus: if focus:
process_mode = Node.PROCESS_MODE_INHERIT process_mode = Node.PROCESS_MODE_INHERIT
@ -45,13 +44,13 @@ var base_sticky_note_panel: Panel
set(context): set(context):
if current_context == ASSIGN and !context == ASSIGN: if current_context == ASSIGN and !context == ASSIGN:
sticky_note_container.get_child(current_sticky_note_id).clear_if_empty() sticky_note_container.get_child(current_sticky_note_id).clear_if_empty()
match context: #match context:
NAVIGATE: # NAVIGATE:
_return_sticky_notes_to_panels() # _return_sticky_notes_to_panels()
DRAG: # DRAG:
pass # pass
ASSIGN: # ASSIGN:
pass # pass
current_context = context current_context = context
@onready var instructions = $instructions_panel/HBoxContainer/cards_remaining @onready var instructions = $instructions_panel/HBoxContainer/cards_remaining
@ -82,7 +81,9 @@ var mementos_collected: int = 0:
elif new_id < 0: current_dropzone_id = dropzone.get_child_count() - 1 elif new_id < 0: current_dropzone_id = dropzone.get_child_count() - 1
else: current_dropzone_id = new_id else: current_dropzone_id = new_id
if current_context == ASSIGN: if current_context == ASSIGN:
while not dropzone.get_child(current_dropzone_id) is Card: current_dropzone_id = (current_dropzone_id + 1) % dropzone.get_child_count()
dropzone.get_child(current_dropzone_id).preview_sticky_note(currently_active_node) dropzone.get_child(current_dropzone_id).preview_sticky_note(currently_active_node)
elif not focus_stickies: elif not focus_stickies:
currently_active_node = dropzone.get_child(current_dropzone_id) currently_active_node = dropzone.get_child(current_dropzone_id)
@ -112,6 +113,7 @@ func _ready():
if get_parent() == get_tree().root: if get_parent() == get_tree().root:
populate_board(["c_void", 'c_joy', "p_wet", "p_thomas"]) populate_board(["c_void", 'c_joy', "p_wet", "p_thomas"])
populate_board(["c_fighting", 'c_hit', "p_girly", "p_vent"]) populate_board(["c_fighting", 'c_hit', "p_girly", "p_vent"])
mementos_collected = 2
has_stage = has_stage has_stage = has_stage
@ -169,6 +171,7 @@ func handle_mouse_button(to_handle: Area2D, input: InputEvent):
if to_handle is StickyNote: if to_handle is StickyNote:
if not to_handle.on_board: if not to_handle.on_board:
to_handle.reparent(dropzone) to_handle.reparent(dropzone)
to_handle.on_board = true
to_handle.owner = self to_handle.owner = self
current_context = DRAG current_context = DRAG
@ -184,7 +187,10 @@ func handle_mouse_button(to_handle: Area2D, input: InputEvent):
if area.has_sticky_note_attached(): if area.has_sticky_note_attached():
to_handle = area.exchange_sticky_note_with(to_handle) to_handle = area.exchange_sticky_note_with(to_handle)
to_handle.reparent(dropzone) to_handle.reparent(dropzone)
to_handle.on_board = true
sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note = to_handle sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note = to_handle
to_handle.attached_to = sticky_note_container.get_child(current_sticky_note_id)
to_handle.reset_drag()
current_context = NAVIGATE current_context = NAVIGATE
return return
else: else:
@ -192,6 +198,7 @@ func handle_mouse_button(to_handle: Area2D, input: InputEvent):
if not sticky_note_container.get_child_count() == 0: if not sticky_note_container.get_child_count() == 0:
sticky_note_container.get_child(current_sticky_note_id).clear_if_empty() sticky_note_container.get_child(current_sticky_note_id).clear_if_empty()
current_context = NAVIGATE current_context = NAVIGATE
if is_board_complete(): emit_signal("board_completed")
return return
else: else:
_return_sticky_notes_to_panels() _return_sticky_notes_to_panels()
@ -230,6 +237,7 @@ func is_board_lore() -> bool:
# Mark area that was hovered over as currently selected # Mark area that was hovered over as currently selected
func handle_hover(to_handle: Area2D): func handle_hover(to_handle: Area2D):
if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): return
currently_active_node = to_handle currently_active_node = to_handle
if is_in_dropzone(to_handle) or to_handle is Card: if is_in_dropzone(to_handle) or to_handle is Card:
@ -247,6 +255,8 @@ func insert_area(parent: Control, node: Area2D):
if not node in parent.get_children(): if not node in parent.get_children():
node.reparent(parent) node.reparent(parent)
if node is StickyNote:
node.on_board = true
node.owner = self node.owner = self
if children.size() > 0: if children.size() > 0:
@ -303,6 +313,7 @@ func _input(event):
card.attach_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note) card.attach_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note)
current_context = NAVIGATE current_context = NAVIGATE
focus_stickies = false focus_stickies = false
if is_board_complete(): emit_signal("board_completed")
else: else:
if !focus_stickies and card.has_sticky_note_attached(): if !focus_stickies and card.has_sticky_note_attached():
currently_active_node = card.remove_sticky_note() currently_active_node = card.remove_sticky_note()

View File

@ -11,12 +11,23 @@ var noise: Noise = FastNoiseLite.new()
var wiggle_tween var wiggle_tween
var scale_tween var scale_tween
var transfor_arr: Array[Transform2D] = [
Transform2D(0.9, Vector2(-125, -83)),
Transform2D(-0.3, Vector2(-126, -75)),
Transform2D(-0.3, Vector2(-126, -74)),
Transform2D(-0.3, Vector2(-126, -73)),
Transform2D(0.5, Vector2(-126, -77))
]
@export var text: String = "" : @export var text: String = "" :
set(value): set(value):
text = value text = value
if get_children() != [] or Engine.is_editor_hint(): if get_children() != [] or Engine.is_editor_hint():
$Label.text = value $Label.text = value
var curr_frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation)
$BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation)
$Label.rotation = deg_to_rad(transfor_arr[curr_frame].get_rotation())
$Label.position = transfor_arr[curr_frame].origin
if !Engine.is_editor_hint(): if !Engine.is_editor_hint():
wiggle_pos = float(text.hash() % 100) wiggle_pos = float(text.hash() % 100)
_handle_wiggle(0) _handle_wiggle(0)
@ -82,6 +93,9 @@ func _ready():
$BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation)
$Label.text = self.text $Label.text = self.text
$Label.theme = State.current_main_theme
State.theme_changed.connect(func change_theme(new_theme): $Label.theme = new_theme)
wiggle_pos = float(text.hash() % 100) wiggle_pos = float(text.hash() % 100)
if not Engine.is_editor_hint(): if not Engine.is_editor_hint():
_handle_wiggle(0) _handle_wiggle(0)
@ -128,7 +142,7 @@ func _on_mouse_entered():
if not Input.is_action_pressed("mouse_left"): if not Input.is_action_pressed("mouse_left"):
# Do nothing if mouse hovers over sticky_note # Do nothing if mouse hovers over sticky_note
if has_sticky_note_attached(): if has_sticky_note_attached():
if sticky_note_anchor.get_child(-1).highlighted: if get_child(-1).highlighted:
return return
highlighted = true highlighted = true
if "handle_hover" in owner: if "handle_hover" in owner:
@ -155,7 +169,7 @@ func _move_card():
position += (get_viewport().get_mouse_position() - position) - mouse_offset position += (get_viewport().get_mouse_position() - position) - mouse_offset
func has_sticky_note_attached() -> bool: func has_sticky_note_attached() -> bool:
return get_child(-1) is Card return get_child(-1) is StickyNote
func preview_sticky_note(sticky_note: StickyNote): func preview_sticky_note(sticky_note: StickyNote):
sticky_note.reparent(self.get_parent()) sticky_note.reparent(self.get_parent())

View File

@ -1,8 +1,7 @@
[gd_scene load_steps=11 format=3 uid="uid://dy5rd437h5hsw"] [gd_scene load_steps=10 format=3 uid="uid://dy5rd437h5hsw"]
[ext_resource type="Script" path="res://logic-scenes/board/card.gd" id="1_emip0"] [ext_resource type="Script" path="res://logic-scenes/board/card.gd" id="1_emip0"]
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_ioijn"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_ioijn"]
[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="3_rktsa"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"]
radius = 110.0 radius = 110.0
@ -72,13 +71,13 @@ anchor_left = 0.5
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 0.5 anchor_right = 0.5
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = -127.0 offset_left = -126.0
offset_top = -82.5 offset_top = -77.0
offset_right = 127.0 offset_right = 128.0
offset_bottom = 82.5 offset_bottom = 88.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme = ExtResource("3_rktsa") rotation = 0.00872665
theme_type_variation = &"card_text" theme_type_variation = &"card_text"
autowrap_mode = 3 autowrap_mode = 3

View File

@ -28,7 +28,7 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
size_flags_horizontal = 6 size_flags_horizontal = 6
size_flags_vertical = 6 size_flags_vertical = 6
mouse_filter = 1 mouse_filter = 2
script = ExtResource("3_8v4c4") script = ExtResource("3_8v4c4")
[node name="HBoxContainer" type="HBoxContainer" parent="."] [node name="HBoxContainer" type="HBoxContainer" parent="."]

View File

@ -64,6 +64,8 @@ func _ready() -> void:
$Content/Label.text = self.text $Content/Label.text = self.text
$Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation) $Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation)
$Content/Label.theme = State.current_main_theme
State.theme_changed.connect(func change_theme(new_theme): $Content/Label.theme = new_theme)
func replace_with(sticky_note: StickyNote): func replace_with(sticky_note: StickyNote):
self.text = sticky_note.text self.text = sticky_note.text
@ -130,3 +132,6 @@ func tween_transform_to(target: Transform2D):
func reset_drag(): func reset_drag():
if attached_to != null: if attached_to != null:
attached_to.reclaim_sticky_note() attached_to.reclaim_sticky_note()
func _enter_tree():
print("enter_tree")

View File

@ -1,8 +1,7 @@
[gd_scene load_steps=18 format=3 uid="uid://vkcdj8c3ytbq"] [gd_scene load_steps=17 format=3 uid="uid://vkcdj8c3ytbq"]
[ext_resource type="Script" path="res://logic-scenes/board/sticky-note.gd" id="1_yvh5n"] [ext_resource type="Script" path="res://logic-scenes/board/sticky-note.gd" id="1_yvh5n"]
[ext_resource type="Texture2D" uid="uid://c8ckkjmdegyis" path="res://logic-scenes/board/card-textures/postitsheet.png" id="2_j17jn"] [ext_resource type="Texture2D" uid="uid://c8ckkjmdegyis" path="res://logic-scenes/board/card-textures/postitsheet.png" id="2_j17jn"]
[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="3_hu2as"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ml4q7"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ml4q7"]
radius = 48.0 radius = 48.0
@ -130,7 +129,6 @@ offset_right = 239.0
offset_bottom = 47.0 offset_bottom = 47.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme = ExtResource("3_hu2as")
theme_type_variation = &"card_text" theme_type_variation = &"card_text"
vertical_alignment = 1 vertical_alignment = 1
autowrap_mode = 3 autowrap_mode = 3

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" path="res://logic-scenes/board/card.gd" id="1_6ceun"] [ext_resource type="Script" path="res://logic-scenes/board/card.gd" id="1_6ceun"]
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_buevv"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_buevv"]
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="3_8wu8j"] [ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="3_8wu8j"]
[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="3_mi4ah"] [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/easy-handwriting.theme" id="3_mi4ah"]
[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="4_jam8u"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="4_jam8u"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"]

View File

@ -19,9 +19,9 @@ var has_stage = false:
if focus: if focus:
process_mode = Node.PROCESS_MODE_INHERIT process_mode = Node.PROCESS_MODE_INHERIT
self.show() self.show()
self.mouse_filter = Control.MOUSE_FILTER_IGNORE self.mouse_filter = Control.MOUSE_FILTER_PASS
else: else:
self.mouse_filter = Control.MOUSE_FILTER_STOP self.mouse_filter = Control.MOUSE_FILTER_IGNORE
self.hide() self.hide()
process_mode = Node.PROCESS_MODE_DISABLED process_mode = Node.PROCESS_MODE_DISABLED
has_stage = focus has_stage = focus
@ -38,7 +38,7 @@ var selection_state = INI:
elif state == DONE: elif state == DONE:
reset() reset()
var anim_players:Array = [] var anim_players:Array[AnimationPlayer] = []
var curr_selection_id: int = -1: var curr_selection_id: int = -1:
set(new_id): set(new_id):
if selection_state == CARDS or selection_state == POSTS: if selection_state == CARDS or selection_state == POSTS:
@ -107,13 +107,25 @@ func _input(event):
fill_card_slots(3) fill_card_slots(3)
selection_state = CARDS selection_state = CARDS
if has_stage and not _input_locked: if has_stage:
if event.is_action_pressed("ui_up") or event.is_action_pressed("ui_left") or event.is_action_pressed("ui_focus_next"): if !_input_locked:
curr_selection_id -= 1 if event.is_action_pressed("ui_up") or event.is_action_pressed("ui_left") or event.is_action_pressed("ui_focus_next"):
elif event.is_action_pressed("ui_down") or event.is_action_pressed("ui_right") or event.is_action_pressed("ui_focus_prev"): curr_selection_id -= 1
curr_selection_id += 1 elif event.is_action_pressed("ui_down") or event.is_action_pressed("ui_right") or event.is_action_pressed("ui_focus_prev"):
if event.is_action_pressed("ui_accept"): curr_selection_id += 1
pick(curr_selection_id) if event.is_action_pressed("ui_accept"):
pick(curr_selection_id)
elif event.is_action_pressed("skip"):
##fixme: using skip causes a lot of invalid state
return
if selection_state == CARDS_SELECTED:
transition()
show_posts()
elif selection_state == POSTS_SELECTED:
transition()
elif selection_state == TRANSITION:
show_posts()
func pick(id: int): func pick(id: int):
print("PICK") print("PICK")
@ -150,9 +162,9 @@ func pick(id: int):
print("Winning ID ", id) print("Winning ID ", id)
elif options[0].text == "": elif options[0].text == "":
winning_id = 0
else:
winning_id = 1 winning_id = 1
else:
winning_id = 0
output.append(options.pop_at(winning_id)) output.append(options.pop_at(winning_id))
anim_players.pop_at(winning_id).play("shuffle") anim_players.pop_at(winning_id).play("shuffle")
@ -161,7 +173,9 @@ func pick(id: int):
anim.play("unshuffle") anim.play("unshuffle")
await yield_to await yield_to
transition()
func transition():
if selection_state == CARDS_SELECTED: if selection_state == CARDS_SELECTED:
selection_state = TRANSITION selection_state = TRANSITION
options = [] options = []
@ -175,7 +189,7 @@ func pick(id: int):
fill_post_slots() fill_post_slots()
await anim_players[0].animation_finished await anim_players[0].animation_finished
selection_state = POSTS show_posts()
elif selection_state == POSTS_SELECTED: elif selection_state == POSTS_SELECTED:
var out_str:Array[String] = [] var out_str:Array[String] = []
for card in output: for card in output:
@ -185,6 +199,12 @@ func pick(id: int):
selection_state = DONE selection_state = DONE
State.leave_stage(self) State.leave_stage(self)
func show_posts():
selection_state = POSTS
for player:AnimationPlayer in anim_players:
player.play("reset")
func handle_hover(new_highlight): func handle_hover(new_highlight):
if not _input_locked: if not _input_locked:
curr_selection_id = options.find(new_highlight) curr_selection_id = options.find(new_highlight)
@ -199,7 +219,7 @@ func scene_finished(id: int, repeat):
if not repeat: if not repeat:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
fill_card_slots(id) fill_card_slots(id)
State.transition_stage_to(self) State.transition_stage_to(self, true)
selection_state = CARDS selection_state = CARDS
func play_scene(_id, _repeat): func play_scene(_id, _repeat):

View File

@ -1493,6 +1493,7 @@ anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 0
script = ExtResource("1_pjntm") script = ExtResource("1_pjntm")
[node name="Control" type="Control" parent="."] [node name="Control" type="Control" parent="."]

View File

@ -104,10 +104,9 @@ func _show_buttons():
func hide(): func hide():
if visible: if visible:
_hide_buttons()
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "modulate", Color(0, 0, 0), 0.4) tween.tween_property(self, "modulate", Color(0, 0, 0), 0.4)
_hide_buttons() if not collapsed: _hide_buttons()
await tween.finished await tween.finished
visible = false visible = false
if has_stage: State.leave_stage(self) if has_stage: State.leave_stage(self)

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=9 format=3 uid="uid://d3pb25xuef2t2"] [gd_scene load_steps=9 format=3 uid="uid://d3pb25xuef2t2"]
[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="1_2apkb"] [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/easy-handwriting.theme" id="1_2apkb"]
[ext_resource type="Script" path="res://logic-scenes/collectable/collectable_ui.gd" id="1_tgjc2"] [ext_resource type="Script" path="res://logic-scenes/collectable/collectable_ui.gd" id="1_tgjc2"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="3_63j61"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="3_63j61"]
@ -27,12 +27,14 @@ func show():
if visible == false and not State.reduce_motion: if visible == false and not State.reduce_motion:
var tmp = text var tmp = text
var tween:Tween = create_tween() var tween:Tween = create_tween()
tween.tween_property(self, \"custom_minimum_size\", get_minimum_size(), 0.2) if is_instance_valid(tween):
text = \"\" tween.tween_property(self, \"custom_minimum_size\", get_minimum_size(), 0.2)
update_minimum_size() text = \"\"
visible = true update_minimum_size()
await tween.finished visible = true
text = tmp await tween.finished
text = tmp
else: else:
visible = true visible = true
@ -102,6 +104,7 @@ script = ExtResource("1_tgjc2")
scene = null scene = null
[node name="Panel" type="PanelContainer" parent="."] [node name="Panel" type="PanelContainer" parent="."]
clip_children = 2
layout_mode = 2 layout_mode = 2
[node name="Content" type="VBoxContainer" parent="Panel"] [node name="Content" type="VBoxContainer" parent="Panel"]
@ -126,6 +129,7 @@ horizontal_scroll_mode = 0
vertical_scroll_mode = 3 vertical_scroll_mode = 3
[node name="VBoxContainer" type="VBoxContainer" parent="Panel/Content/Buttons"] [node name="VBoxContainer" type="VBoxContainer" parent="Panel/Content/Buttons"]
custom_minimum_size = Vector2(350, 0)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
@ -156,18 +160,27 @@ layout_mode = 2
text = "put back" text = "put back"
script = SubResource("GDScript_g0qhf") script = SubResource("GDScript_g0qhf")
[node name="StartFrame" type="TextureRect" parent="Panel"] [node name="Control" type="Control" parent="Panel"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 0
[node name="StartFrame" type="TextureRect" parent="Panel/Control"]
layout_mode = 2
offset_left = -330.0
offset_top = -8.0
offset_right = 7.0
offset_bottom = 284.0
mouse_filter = 2 mouse_filter = 2
texture = ExtResource("3_63j61") texture = ExtResource("3_63j61")
expand_mode = 2 expand_mode = 2
stretch_mode = 4 stretch_mode = 4
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "invisible"
libraries = { libraries = {
"": SubResource("AnimationLibrary_jad23") "": SubResource("AnimationLibrary_jad23")
} }
autoplay = "invisible"
[connection signal="focus_entered" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_yoink_focus"] [connection signal="focus_entered" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_yoink_focus"]
[connection signal="pressed" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_on_pick_button_pressed"] [connection signal="pressed" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_on_pick_button_pressed"]

View File

@ -7,3 +7,7 @@ extends Panel
else: else:
has_stage = false has_stage = false
State.drop_own_focus(self) State.drop_own_focus(self)
func _ready():
theme = State.current_main_theme
State.theme_changed.connect(func change_theme(new_theme): theme = new_theme)

View File

@ -1,9 +1,9 @@
extends RigidBody3D extends RigidBody3D
var has_stage: bool = false: var has_stage: bool = false:
set(focused): set(on_stage):
if has_stage != focused: if has_stage != on_stage:
if focused: if on_stage:
has_stage = true has_stage = true
if is_inside_tree(): if is_inside_tree():
camera.make_current() camera.make_current()
@ -11,7 +11,7 @@ var has_stage: bool = false:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
var jitter_tween: Tween = create_tween() var jitter_tween: Tween = create_tween()
jitter_tween.tween_property(self, "jitter_strength", 1, 1) jitter_tween.tween_property(self, "jitter_strength", 1, 1)
if has_entered: emit_signal("ui_entered") if has_entered: emit_signal("ui_exited")
elif has_stage: elif has_stage:
camera.current = true camera.current = true
jitter_strength = 1 jitter_strength = 1
@ -58,6 +58,16 @@ var on_crouch_cooldown:bool = false
@onready var camera:Camera3D = $Yaw/Pitch/Mount/Camera3D @onready var camera:Camera3D = $Yaw/Pitch/Mount/Camera3D
@onready var focus_ray: RayCast3D = $Yaw/Pitch/Mount/Camera3D/RayCast3D @onready var focus_ray: RayCast3D = $Yaw/Pitch/Mount/Camera3D/RayCast3D
var zoomed:
set(zoom):
if zoomed != zoom:
if zoom:
var zoom_tween = create_tween()
zoom_tween.tween_property(camera, "fov", camera.fov*0.5, 0.5)
else:
var zoom_tween = create_tween()
zoom_tween.tween_property(camera, "fov", camera.fov*2, 0.5)
zoomed = zoom
signal ui_entered signal ui_entered
var has_entered:bool = false var has_entered:bool = false
signal ui_exited signal ui_exited
@ -72,23 +82,29 @@ func _on_ini_room():
func _process(_delta): func _process(_delta):
if focus_ray.get_collider() != null: if focus_ray.get_collider() != null and not has_entered:
emit_signal("ui_entered") emit_signal("ui_entered")
has_entered = true has_entered = true
focus_ray.get_collider().reveal() focus_ray.get_collider().reveal()
if has_entered and has_stage: if has_stage:
if focus_ray.get_collider() == null: if has_entered:
emit_signal("ui_exited") if focus_ray.get_collider() == null:
has_entered = false emit_signal("ui_exited")
if Input.is_action_just_pressed("ui_accept"): has_entered = false
State.pass_stage_to(focus_ray.get_collider()) if Input.is_action_just_pressed("ui_accept"):
State.pass_stage_to(focus_ray.get_collider())
else:
if Input.is_action_just_pressed("zoom_in_controller"):
zoomed = true
elif Input.is_action_just_released("zoom_in_controller"):
zoomed = false
func _physics_process(delta:float): func _physics_process(delta:float):
if has_stage: if has_stage:
_handle_movement(delta) _handle_movement(delta)
_handle_rotation(delta) _handle_rotation(delta)
if jitter_strength > 0: _handle_jitter(delta) if jitter_strength > 0 and not State.reduce_motion: _handle_jitter(delta)
func _handle_movement(delta:float): func _handle_movement(delta:float):
var input:Vector2 = Vector2(Input.get_action_strength("player_right") - Input.get_action_strength("player_left"), var input:Vector2 = Vector2(Input.get_action_strength("player_right") - Input.get_action_strength("player_left"),
@ -138,7 +154,7 @@ func _handle_jitter(delta):
noise.get_noise_1d(loc_noise_spot.z) noise.get_noise_1d(loc_noise_spot.z)
) * location_jitter * jitter_strength ) * location_jitter * jitter_strength
mount.rotation = Vector3( if not State.reduce_motion: mount.rotation = Vector3(
noise.get_noise_1d(rot_noise_spot.x), noise.get_noise_1d(rot_noise_spot.x),
noise.get_noise_1d(rot_noise_spot.y), noise.get_noise_1d(rot_noise_spot.y),
noise.get_noise_1d(rot_noise_spot.z) noise.get_noise_1d(rot_noise_spot.z)
@ -155,7 +171,12 @@ func _input(event:InputEvent):
_handle_mouse_input(event) _handle_mouse_input(event)
get_viewport().set_input_as_handled() get_viewport().set_input_as_handled()
if event is InputEventMouseButton and event.pressed: if event is InputEventMouseButton and event.pressed:
State.free_focus() if Input.is_action_just_pressed("zoom_in_mouse"):
zoomed = true
elif Input.is_action_just_pressed("zoom_out_mouse"):
zoomed = false
else:
State.free_focus()
get_tree().call_group("interactables", "reveal") get_tree().call_group("interactables", "reveal")
#if event.is_action_pressed("ui_accept"): #if event.is_action_pressed("ui_accept"):
# State.pass_stage_to(focus_ray.get_collider()) # State.pass_stage_to(focus_ray.get_collider())

BIN
src/logic-scenes/startup/button.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://tk1pmkkdlqt4"
path="res://.godot/imported/button.png-cf3e6ad74faff02c58cd66a11208a29e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/startup/button.png"
dest_files=["res://.godot/imported/button.png-cf3e6ad74faff02c58cd66a11208a29e.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

BIN
src/logic-scenes/startup/button_disabled.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blutibrfidlxu"
path="res://.godot/imported/button_disabled.png-922791abd250dbdef92effaf4a291de5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/startup/button_disabled.png"
dest_files=["res://.godot/imported/button_disabled.png-922791abd250dbdef92effaf4a291de5.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

BIN
src/logic-scenes/startup/button_hover.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p2q0o6fuiags"
path="res://.godot/imported/button_hover.png-ac4ee99f3a0cb2db921526b95ca05a34.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/startup/button_hover.png"
dest_files=["res://.godot/imported/button_hover.png-ac4ee99f3a0cb2db921526b95ca05a34.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

BIN
src/logic-scenes/startup/button_pressed.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c7g31dkdlxlra"
path="res://.godot/imported/button_pressed.png-d34e5d86349de8b5b4041e91e3cdcb65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/startup/button_pressed.png"
dest_files=["res://.godot/imported/button_pressed.png-d34e5d86349de8b5b4041e91e3cdcb65.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

BIN
src/logic-scenes/startup/start_frame.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://y6yghnywp3ek"
path="res://.godot/imported/start_frame.png-e3da868bb60eabb343abc46b5c0d68c9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/startup/start_frame.png"
dest_files=["res://.godot/imported/start_frame.png-e3da868bb60eabb343abc46b5c0d68c9.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

View File

@ -1,34 +1,42 @@
[gd_scene load_steps=10 format=3 uid="uid://gldtxysavetf"] [gd_scene load_steps=11 format=3 uid="uid://gldtxysavetf"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"]
[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="1_b01tw"] [ext_resource type="Theme" uid="uid://dla4kae5kbwdh" path="res://logic-scenes/themes/system.theme" id="1_ot7jp"]
[ext_resource type="Script" path="res://logic-scenes/startup/volume_sliders.gd" id="3_q2gbh"] [ext_resource type="Script" path="res://logic-scenes/startup/volume_sliders.gd" id="3_q2gbh"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"]
[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="5_7c77g"]
[sub_resource type="GDScript" id="GDScript_a78qq"] [sub_resource type="GDScript" id="GDScript_a78qq"]
script/source = "extends Panel script/source = "extends Panel
@onready var show_navigation_buttons = $\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin/show nav ui\" @onready var show_navigation_buttons = $\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin/show nav ui\"
func _ready():
theme = State.current_main_theme
State.theme_changed.connect(func change_theme(new_theme): theme = new_theme)
func starting(): func starting():
$\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next\".grab_focus() $\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next\".grab_focus()
func _on_reduce_motion_toggled(toggled_on):
State.reduce_motion = toggled_on
# toggle for disable rendering # toggle for disable rendering
func _on_disable_rendering_toggled(button_pressed): func _on_disable_rendering_toggled(toggled_on):
State.disable_rendering = button_pressed State.disable_rendering = toggled_on
# toggle for simplified controls # toggle for simplified controls
func _on_simplified_controls_toggled(button_pressed): func _on_simplified_controls_toggled(toggled_on):
State.simplified_navigation = button_pressed # this is how you reach the global state State.simplified_navigation = toggled_on # this is how you reach the global state
show_navigation_buttons.disabled = not button_pressed # if simpl. controls was toggled - disabled = false show_navigation_buttons.disabled = not toggled_on # if simpl. controls was toggled - disabled = false
# toggle for show nav buttons # toggle for show nav buttons
func _on_show_nav_ui_toggled(button_pressed): func _on_show_nav_ui_toggled(toggled_on):
State.show_navigation_buttons = button_pressed State.show_navigation_buttons = toggled_on
# toggle streaming notes # toggle streaming notes
func _on_streaming_notes_toggled(button_pressed): func _on_streaming_notes_toggled(toggled_on):
State.streaming_content_notes = button_pressed State.streaming_content_notes = toggled_on
# select font # select font
@ -36,23 +44,22 @@ func _on_streaming_notes_toggled(button_pressed):
func _on_font_style_selected(index): func _on_font_style_selected(index):
match index: match index:
0: 0:
print_debug(\"messy handwriting selected\")
#self.theme.set_font(\"NanumBrushScript.ttf\")
return return
1: 1:
State.current_main_theme = preload(\"res://logic-scenes/themes/easy-handwriting.theme\")
print_debug(\"easy handwriting selected\") print_debug(\"easy handwriting selected\")
#owner.theme.set_font(\"NanumPenScript.ttf\") #owner.theme.set_font(\"NanumPenScript.ttf\")
return return
2: 2:
print_debug(\"legible serif selected\") State.current_main_theme = preload(\"res://logic-scenes/themes/serif.theme\")
#owner.theme.set_font(\"Eczar-VariableFont_wght.ttf\") #owner.theme.set_font(\"Eczar-VariableFont_wght.ttf\")
return return
3: 3:
print_debug(\"hyperlegible sans selected\") State.current_main_theme = preload(\"res://logic-scenes/themes/hyperlegible.theme\")
#owner.theme.set_font(\"AtkinsonHyperlegible.ttf\") #owner.theme.set_font(\"AtkinsonHyperlegible.ttf\")
return return
4: 4:
print_debug(\"system front selected\") State.current_main_theme = preload(\"res://logic-scenes/themes/system.theme\")
#owner.theme.set_font(SystemFont.fallbacks[0]) #owner.theme.set_font(SystemFont.fallbacks[0])
return return
@ -82,11 +89,11 @@ func _on_mute_sfx_toggled(button_pressed):
func _on_music_volume_changed(value): func _on_music_volume_changed(value):
AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"music\"), linear_to_db(value)) AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"music\"), linear_to_db(value/2))
func _on_sfx_volume_changed(value): func _on_sfx_volume_changed(value):
AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"sfx\"), linear_to_db(value)) AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"sfx\"), linear_to_db(value/2))
func _on_text_volume_changed(value): func _on_text_volume_changed(value):
@ -119,6 +126,9 @@ func hide():
self_tween.tween_property(self, \"modulate\", Color(1, 1, 1, 0), .5) self_tween.tween_property(self, \"modulate\", Color(1, 1, 1, 0), .5)
await self_tween.finished await self_tween.finished
self.visible = false self.visible = false
" "
[sub_resource type="GDScript" id="GDScript_ia432"] [sub_resource type="GDScript" id="GDScript_ia432"]
@ -207,7 +217,7 @@ anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme = ExtResource("1_b01tw") theme = ExtResource("1_ot7jp")
script = SubResource("GDScript_a78qq") script = SubResource("GDScript_a78qq")
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]
@ -267,21 +277,25 @@ text = "physical Accessibility"
[node name="Label4" type="Label" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"] [node name="Label4" type="Label" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"]
layout_mode = 2 layout_mode = 2
text = "sorry none of these work yet :c" text = "Greyed-out items do not work yet."
[node name="Container2" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"] [node name="Container2" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"]
layout_mode = 2 layout_mode = 2
[node name="reduce motion" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2"]
layout_mode = 2
text = "reduce motion"
[node name="Screenreader" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2"] [node name="Screenreader" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2"]
layout_mode = 2 layout_mode = 2
disabled = true disabled = true
text = "activate Screenreader" text = "use Screenreader"
script = SubResource("GDScript_v567h") script = SubResource("GDScript_v567h")
[node name="margin2" type="MarginContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2"] [node name="margin2" type="MarginContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2"]
layout_mode = 2 layout_mode = 2
[node name="show nav buttons" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin2"] [node name="disable rendering" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin2"]
layout_mode = 2 layout_mode = 2
disabled = true disabled = true
text = "disable rendering" text = "disable rendering"
@ -311,17 +325,17 @@ text = "Font-Style:"
custom_minimum_size = Vector2(30, 60) custom_minimum_size = Vector2(30, 60)
layout_mode = 2 layout_mode = 2
[node name="ItemList" type="OptionButton" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer"] [node name="font settings" type="OptionButton" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 4 size_flags_vertical = 4
disabled = true
item_count = 5 item_count = 5
selected = 1 selected = 1
popup/item_0/text = "messy handwriting" popup/item_0/text = "messy handwriting"
popup/item_0/id = 0 popup/item_0/id = 0
popup/item_0/disabled = true
popup/item_1/text = "easy handwriting" popup/item_1/text = "easy handwriting"
popup/item_1/id = 1 popup/item_1/id = 1
popup/item_2/text = "legible serif" popup/item_2/text = "serif"
popup/item_2/id = 2 popup/item_2/id = 2
popup/item_3/text = "hyperlegible sans" popup/item_3/text = "hyperlegible sans"
popup/item_3/id = 3 popup/item_3/id = 3
@ -360,6 +374,10 @@ layout_mode = 2
[node name="HSlider" type="HSlider" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer"] [node name="HSlider" type="HSlider" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer"]
custom_minimum_size = Vector2(0, 60) custom_minimum_size = Vector2(0, 60)
layout_mode = 2 layout_mode = 2
min_value = 0.5
max_value = 3.0
step = 0.0
value = 1.0
editable = false editable = false
[node name="navbuttons" type="VSplitContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"] [node name="navbuttons" type="VSplitContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"]
@ -607,7 +625,7 @@ text = "allow me to skip scenes"
[node name="provide_summary" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Content Notes/ScrollContainer/Content Notes/VBoxContainer5/VBoxContainer"] [node name="provide_summary" type="CheckBox" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Content Notes/ScrollContainer/Content Notes/VBoxContainer5/VBoxContainer"]
layout_mode = 2 layout_mode = 2
disabled = true disabled = true
text = "Provide me with an optional neutral summary when skipping a scene." text = "When skipping a scene, give me a neutral summary."
[node name="navbuttons" type="VSplitContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Content Notes"] [node name="navbuttons" type="VSplitContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Content Notes"]
layout_mode = 2 layout_mode = 2
@ -694,11 +712,16 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
text = "I stream this game, please show content notes." text = "I stream this game, please show content notes."
[node name="card" parent="." instance=ExtResource("5_7c77g")]
position = Vector2(1491, 598)
text = "I never put in much effort for Homework"
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/reduce motion" to="." method="_on_reduce_motion_toggled"]
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/Screenreader" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="_on_screenreader_toggled"] [connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/Screenreader" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="_on_screenreader_toggled"]
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin2/show nav buttons" to="." method="_on_disable_rendering_toggled"] [connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin2/disable rendering" to="." method="_on_disable_rendering_toggled"]
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/simplified controls" to="." method="_on_simplified_controls_toggled"] [connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/simplified controls" to="." method="_on_simplified_controls_toggled"]
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin/show nav ui" to="." method="_on_show_nav_ui_toggled"] [connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin/show nav ui" to="." method="_on_show_nav_ui_toggled"]
[connection signal="item_selected" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer/ItemList" to="." method="_on_font_style_selected"] [connection signal="item_selected" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer/font settings" to="." method="_on_font_style_selected"]
[connection signal="item_selected" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer/ItemList2" to="." method="_on_subtitle_option_selected"] [connection signal="item_selected" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/GridContainer/ItemList2" to="." method="_on_subtitle_option_selected"]
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="next"] [connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="next"]
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/previous" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="previous"] [connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/previous" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="previous"]

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