ThE GREAT SHATTERINGgit status! control.tscn is DEAD! LoNG LIVE CONTROL.TSCNgit statusgit status! MWAHAHAHAHAHAHAHA

This commit is contained in:
Haze Weathers 2023-04-08 00:33:55 -04:00
parent 6c22279e41
commit c1a9ab7cdc
17 changed files with 253 additions and 270 deletions

29
autoloads/console.gd Normal file
View file

@ -0,0 +1,29 @@
extends CanvasLayer
export var opacity: float = 0.5
var lines: int = 0
onready var label: Label = $Label
func _ready() -> void:
label.visible = false
label.modulate.a = opacity
$Label/Panel.modulate.a = opacity
func _physics_process(delta: float) -> void:
if Input.is_action_just_pressed("debug_show"):
label.visible = not label.visible
func print(text) -> void:
lines += 1
if lines > 1:
label.text += "\n"
if lines > 10:
var n = label.text.find("\n")
var t = label.text
t.erase(0, n+1)
lines -= 1
label.text = t + str(text)
else:
label.text += str(text)

17
autoloads/console.tscn Normal file
View file

@ -0,0 +1,17 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://autoloads/console.gd" type="Script" id=1]
[node name="Console" type="CanvasLayer"]
layer = 128
script = ExtResource( 1 )
[node name="Label" type="Label" parent="."]
anchor_right = 1.0
margin_bottom = 14.0
size_flags_vertical = 2
[node name="Panel" type="Panel" parent="Label"]
show_behind_parent = true
anchor_right = 1.0
anchor_bottom = 1.0

View file

@ -4,11 +4,9 @@ extends CanvasLayer
#Const
const ENTRY_SEQUENCE = ["4", "1", "5"]
#Export
export var max_lines: int = 10
export var opacity: float = 0.5
#Onready
onready var console = $Console
onready var code_label = get_parent().get_node("Main/Control/ViewportContainer/Viewport/CheatLayer/CheatLabel")
onready var code_label = $CheatLabel
##Runtime
var lines: int = 0
var time: float = 0.0
@ -27,33 +25,26 @@ var code = ""
func _ready():
#Auto do debug when playtesting
if not OS.is_debug_build():
console.visible = false
debug = false
else:
console.visible = false
debug = true
$Console/Panel.modulate.a = opacity
console.modulate.a = opacity
func _physics_process(delta):
#DEBUG
if debug == true && !entry && !entry_index > 0:
#Show console
if Input.is_action_just_pressed("debug_show"):
console.visible = !console.visible
#Move player to mouse
if Input.is_action_pressed("debug_move_player"):
var nodes = get_tree().get_nodes_in_group("player")
if not nodes.empty():
var player = nodes[0].get_parent()
var mouse_position = Game.viewport.get_mouse_position() / Game.viewport_container.rect_scale
var mouse_position = SceneManager.viewport.get_mouse_position() / SceneManager.viewport_container.rect_scale
mouse_position.x = clamp(mouse_position.x, 8.0, Game.resolution.x - 8.0)
mouse_position.y = clamp(mouse_position.y, 8.0, Game.resolution.y - 8.0)
var world_position = mouse_position + Game.current_sector * Game.resolution
player.position = world_position
# Game.get_map().get_node("Player").position = get_viewport().get_mouse_position()
# Debug.print(get_viewport().get_mouse_position())
# Console.print(get_viewport().get_mouse_position())
#Test room
if Input.is_action_just_pressed("debug_testroom"):
Game.change_map(load("res://maps/test_room.tscn"))
@ -64,25 +55,6 @@ func _physics_process(delta):
if Input.is_action_just_pressed("debug_2"):
Game.freeze_frame(1.0)
func print(text):
lines += 1
if lines > 1:
console.text += "\n"
if lines > 10:
var n = console.text.find("\n")
var t = console.text
t.erase(0, n+1)
lines -= 1
console.text = t + str(text)
else:
console.text += str(text)
func _on_visible_toggled(button_pressed):
if button_pressed:
console.visible = true
else:
console.visible = false
func _input(event):
if event is InputEventKey && event.is_pressed():
var character = OS.get_scancode_string(event.scancode)
@ -126,7 +98,7 @@ func _enter_code():
"DGSTEEZY":
debug = true
"6DOUBLOONS":
Debug.print(get_tree().get_nodes_in_group("gold").size())
Console.print(get_tree().get_nodes_in_group("gold").size())
"EVILSBANE":
allow_sword = true
Input.action_press("sword")

View file

@ -1,36 +1,17 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://autoloads/debug.gd" type="Script" id=1]
[ext_resource path="res://ui/2ndpuberty_no_dropshadow.tres" type="Theme" id=2]
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3]
[sub_resource type="InputEventAction" id=4]
action = "toggle_console"
[sub_resource type="ShortCut" id=3]
shortcut = SubResource( 4 )
[node name="Debug" type="CanvasLayer"]
[node name="Debug" type="CanvasLayer" groups=["viewport_autoload"]]
layer = 128
script = ExtResource( 1 )
[node name="Console" type="Label" parent="."]
anchor_right = 1.0
size_flags_vertical = 2
[node name="Panel" type="Panel" parent="Console"]
show_behind_parent = true
[node name="CheatLabel" type="Label" parent="."]
material = ExtResource( 3 )
anchor_right = 1.0
anchor_bottom = 1.0
[node name="VisibleToggle" type="CheckBox" parent="."]
visible = false
anchor_left = 1.0
anchor_right = 1.0
margin_left = -22.0
margin_top = 173.0
margin_right = 57.0
margin_bottom = 197.0
pressed = true
shortcut = SubResource( 3 )
text = "Console"
[connection signal="toggled" from="VisibleToggle" to="." method="_on_visible_toggled"]
theme = ExtResource( 2 )
align = 2
valign = 2

18
autoloads/fade.gd Normal file
View file

@ -0,0 +1,18 @@
extends CanvasLayer
signal fade_finished
func fade_in(time, reverse = false, color = Color.black):
var rect = $TextureRect
rect.material.set_shader_param("color", color)
rect.material.set_shader_param("reverse", reverse)
$AnimationPlayer.play("FadeIn", -1, 1.0 / time)
func fade_out(time, reverse = false, color = Color.black):
var rect = $TextureRect
rect.material.set_shader_param("color", color)
rect.material.set_shader_param("reverse", reverse)
$AnimationPlayer.play("FadeOut", -1, 1.0 / time)
func _fade_finished(anim_name):
emit_signal("fade_finished")

61
autoloads/fade.tscn Normal file
View file

@ -0,0 +1,61 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://graphics/fade_patterns/diamonds2.png" type="Texture" id=1]
[ext_resource path="res://autoloads/fade.gd" type="Script" id=2]
[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=3]
[sub_resource type="ShaderMaterial" id=6]
shader = ExtResource( 3 )
shader_param/color = Color( 0, 0, 0, 1 )
shader_param/smooth_mode = false
shader_param/reverse = false
shader_param/opacity = 0.0
[sub_resource type="Animation" id=7]
resource_name = "FadeIn"
tracks/0/type = "value"
tracks/0/path = NodePath("TextureRect:material:shader_param/opacity")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 1.0, 0.0 ]
}
[sub_resource type="Animation" id=8]
resource_name = "FadeOut"
tracks/0/type = "value"
tracks/0/path = NodePath("TextureRect:material:shader_param/opacity")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 0.0, 1.0 ]
}
[node name="Fade" type="CanvasLayer" groups=["viewport_autoload"]]
pause_mode = 2
layer = 125
script = ExtResource( 2 )
[node name="TextureRect" type="TextureRect" parent="."]
material = SubResource( 6 )
margin_right = 256.0
margin_bottom = 192.0
texture = ExtResource( 1 )
expand = true
stretch_mode = 6
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
anims/FadeIn = SubResource( 7 )
anims/FadeOut = SubResource( 8 )
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_fade_finished"]

View file

@ -1,11 +1,8 @@
extends Node
var resolution = Vector2(256,192)
onready var viewport = get_parent().get_node("Main/Control/ViewportContainer/Viewport")
var current_sector = Vector2(0,0)
#Onreadys
onready var fade = viewport.get_node("FadeLayer")
onready var viewport_container = get_parent().get_node("Main/Control/ViewportContainer")
#Collectibles
var golds = 0
var stars = [false,false,false,false,false]
@ -48,17 +45,15 @@ func get_map():
return get_tree().get_nodes_in_group("map")[0]
#Go to new map
func change_map(map):
func change_map(map: PackedScene):
get_tree().paused = true
can_pause = false
fade.fade_out(0.4)
yield(fade, "fade_finished")
Fade.fade_out(0.4)
yield(Fade, "fade_finished")
can_pause = true
clear_collectibles()
#Loop is so no more than one level is loaded at a time
for maps in get_tree().get_nodes_in_group("map"):
maps.queue_free()
instance_node(map,0,0,viewport)
SceneManager.current_scene = map.instance()
#Clear data
func clear_collectibles():
@ -129,9 +124,3 @@ func freeze_frame(time):
#Check if 100%ed
func has_collection_bonus():
return shards == 5 && golds == 50
func _physics_process(delta):
if Debug.entry == false:
#CRT FILTER
if Input.is_action_just_pressed("crt"):
viewport_container.material.set_shader_param("enabled",!viewport_container.material.get_shader_param("enabled"))

View file

@ -0,0 +1,83 @@
## manages current scene and viewport scaling
extends Node
# methods of scaling viewport
enum ScalingMode {
INTEGER, # maintain aspect ratio and scale by whole numbers
ASPECT, # maintain aspect ratio
STRETCH, # stretch to fill screen
}
## method used to scale game viewport
export (ScalingMode) var scaling_mode: int = ScalingMode.INTEGER
# node references #
onready var viewport_container: ViewportContainer = $ViewportContainer
onready var viewport: Viewport = $ViewportContainer/Viewport
var resolution: Vector2
var current_scene: Node setget change_scene
## change the current scene
func change_scene(new_scene: Node) -> void:
# remove current scene if it exists
if current_scene != null:
viewport.remove_child(current_scene)
current_scene.queue_free()
# remove child from parent if it has one
if new_scene.is_inside_tree():
new_scene.get_parent().call_deferred("remove_child", new_scene)
# add new scene to tree
viewport.call_deferred("add_child", new_scene)
current_scene = new_scene
func _ready() -> void:
var tree := get_tree()
# capture initial scene
if tree.current_scene != self:
change_scene(tree.current_scene)
tree.current_scene = self
# capture autoloads in the group "viewport_autoload"
for node in tree.get_nodes_in_group("viewport_autoload"):
node.get_parent().call_deferred("remove_child", node)
viewport.call_deferred("add_child", node)
# get design resolution from project settings
var project_resolution := Vector2(
ProjectSettings.get_setting("display/window/size/width"),
ProjectSettings.get_setting("display/window/size/height")
)
viewport.size = project_resolution
resolution = project_resolution
# size container and pivot on center
viewport_container.rect_size = resolution
viewport_container.rect_pivot_offset = resolution / 2.0
# fix viewportcontainer input bug
viewport.set_deferred("handle_input_locally", true)
# connect resized signal
tree.connect("screen_resized", self, "_on_screen_resized")
_on_screen_resized()
func _process(delta: float) -> void:
if Debug.entry == false:
#CRT FILTER
if Input.is_action_just_pressed("crt"):
viewport_container.material.set_shader_param("enabled", not viewport_container.material.get_shader_param("enabled"))
func _on_screen_resized() -> void:
var screen_size := OS.window_size
var scale_delta := screen_size / resolution
match scaling_mode:
ScalingMode.INTEGER:
# find smaller scale difference, floor to integer
var scale = floor(min(scale_delta.x, scale_delta.y))
viewport_container.rect_scale = Vector2(scale, scale)
ScalingMode.ASPECT:
# find smaller scale difference
var scale = min(scale_delta.x, scale_delta.y)
viewport_container.rect_scale = Vector2(scale, scale)
ScalingMode.STRETCH:
# simply use scale difference
viewport_container.rect_scale = scale_delta

View file

@ -0,0 +1,34 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://autoloads/scene_manager.gd" type="Script" id=1]
[ext_resource path="res://shaders/lcd.gdshader" type="Shader" id=2]
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 2 )
shader_param/enabled = false
shader_param/resolution = Vector2( 256, 192 )
shader_param/curvature = Vector2( 0, 0 )
shader_param/scanline_opacity = Vector2( 0, 0 )
shader_param/brightness = null
[node name="SceneManager" type="Node"]
pause_mode = 2
script = ExtResource( 1 )
[node name="ViewportContainer" type="ViewportContainer" parent="."]
material = SubResource( 1 )
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -128.0
margin_top = -96.0
margin_right = 128.0
margin_bottom = 96.0
mouse_filter = 1
[node name="Viewport" type="Viewport" parent="ViewportContainer"]
size = Vector2( 256, 192 )
handle_input_locally = false
usage = 0
render_target_update_mode = 3