Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
myin142 committed Jun 1, 2023
1 parent a5ddacd commit 6155dd9
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 41 deletions.
7 changes: 3 additions & 4 deletions addons/input-system/InputReader.gd
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,10 @@ func _register_action(event: InputEvent, action: String):
if event.is_action_pressed(action):
if not inputs.has(action):
inputs.append(action)
emit_signal("just_pressed", event)
emit_signal("just_pressed", event)
if event.is_action_released(action):
if inputs.has(action):
inputs.erase(action)
emit_signal("just_released", event)
inputs.erase(action)
emit_signal("just_released", event)


func _get_actions_for_event(event: InputEvent) -> Array:
Expand Down
22 changes: 19 additions & 3 deletions addons/input-system/InputType.gd
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,29 @@ static func to_text(type: int) -> String:
if index != -1:
return Key.keys()[index]

var ev = to_event(type)
var ev = to_event(type) as InputEventKey
if ev:
# if ev.unicode:
# var char = String.chr(ev.unicode)
# if char == " ":
# return "Space"
# return char
return ev.as_text()
return ""


static func to_event(type: int) -> InputEvent:
if type <= 0:
var key = InputEventKey.new()
key.keycode = -type
var code = -type
if code >= KEY_SPECIAL:
key.keycode = code
else:
if code >= 97 and code <= 122: # lower case a-z
code -= 32 # make it upper case to match keycode
key.unicode = code
key.keycode = code
key.pressed = true
return key

if type >= Key.JOYSTICK_L_UP and type <= Key.JOYSTICK_R_LEFT:
Expand Down Expand Up @@ -120,7 +133,10 @@ static func to_event(type: int) -> InputEvent:

static func to_type(event: InputEvent) -> int:
if event is InputEventKey:
return -event.keycode
if event.unicode: # ASCII should only return unicodes ?
return -event.unicode

return -event.keycode # Special Keys like Enter, Tab should only have keycode ?

if event is InputEventJoypadMotion and event.axis_value != 0:
for key in JOY_MOTION_MAP:
Expand Down
4 changes: 1 addition & 3 deletions addons/menu-system/RemapButton.gd
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ func get_input() -> InputEvent:


func remap_input(ev: InputEvent) -> void:
var existing = get_input()
if existing:
InputMap.action_erase_event(action, existing)
InputMap.action_erase_events(action)
InputMap.action_add_event(action, ev)

_update()
40 changes: 22 additions & 18 deletions addons/scene-manager/SceneManager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@ const TRANSITION_MAP = {
Transition.RADIAL: "radial.png",
}

const DEFAULT_SPEED = 1
const DEFAULT_SPEED = 1.5

@export var disable_inputs = true

@onready var anim: AnimationPlayer = $AnimationPlayer
@onready var rect: ColorRect = $CanvasLayer/ColorRect

var transitioning = false
Expand All @@ -44,7 +45,7 @@ func _input(event):


func reload_scene():
change_scene(get_tree().current_scene.filename)
change_scene(get_tree().current_scene.scene_file_path)


func change_scene(scene, transition = null, speed = DEFAULT_SPEED):
Expand All @@ -53,25 +54,28 @@ func change_scene(scene, transition = null, speed = DEFAULT_SPEED):
path = scene.resource_path
transitioning = true

await _fade(false, transition, speed)
anim.play("fade_out", -1, speed)
await anim.animation_finished

get_tree().change_scene_to_file(path)
await _fade(true, transition, speed)

anim.play("fade_in", -1, speed)
transitioning = false
emit_signal("scene_changed")
await anim.animation_finished

emit_signal("scene_changed")

func _fade(reverse: bool, transition, speed: float):
var eff = Effect.new()
var start = 1.0 if reverse else 0.0
var end = 0.0 if reverse else 1.0
eff.setup_props("shader_parameter/dissolve_amount", start, end)
var mat: ShaderMaterial = rect.get_material()
if transition:
mat.set("shader_parameter/dissolve_texture", load(SHADER_DIR + "/" + TRANSITION_MAP[transition]))
mat.set("shader_parameter/fade", transition == null)
eff.obj = mat
# func _fade(reverse: bool, transition, speed: float):
# var eff = Effect.new()
# var start = 1.0 if reverse else 0.0
# var end = 0.0 if reverse else 1.0
# eff.setup_props("shader_parameter/dissolve_amount", start, end)
# var mat: ShaderMaterial = rect.get_material()
# if transition:
# mat.set("shader_parameter/dissolve_texture", load(SHADER_DIR + "/" + TRANSITION_MAP[transition]))
# mat.set("shader_parameter/fade", transition == null)
# eff.obj = mat

eff.duration = speed
add_child(eff)
await eff.finished
# eff.duration = speed
# add_child(eff)
# await eff.finished
60 changes: 59 additions & 1 deletion addons/scene-manager/SceneManager.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=4 format=3 uid="uid://b8dxgonvi2qp2"]
[gd_scene load_steps=8 format=3 uid="uid://b8dxgonvi2qp2"]

[ext_resource type="Shader" path="res://addons/scene-manager/Transition.gdshader" id="1"]
[ext_resource type="Script" path="res://addons/scene-manager/SceneManager.gd" id="3"]
Expand All @@ -10,7 +10,60 @@ shader_parameter/fade_color = Color(0, 0, 0, 1)
shader_parameter/fade = true
shader_parameter/inverted = false

[sub_resource type="Animation" id="Animation_13odc"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CanvasLayer/ColorRect:material:shader_parameter/dissolve_amount")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}

[sub_resource type="Animation" id="Animation_5qvpm"]
resource_name = "fade_in"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CanvasLayer/ColorRect:material:shader_parameter/dissolve_amount")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [1.0, 0.0]
}

[sub_resource type="Animation" id="Animation_wwcam"]
resource_name = "fade_out"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CanvasLayer/ColorRect:material:shader_parameter/dissolve_amount")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}

[sub_resource type="AnimationLibrary" id="AnimationLibrary_pf8t3"]
_data = {
"RESET": SubResource("Animation_13odc"),
"fade_in": SubResource("Animation_5qvpm"),
"fade_out": SubResource("Animation_wwcam")
}

[node name="SceneManager" type="Node"]
process_mode = 3
script = ExtResource("3")

[node name="CanvasLayer" type="CanvasLayer" parent="."]
Expand All @@ -23,3 +76,8 @@ anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
color = Color(0, 0, 0, 1)

[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_pf8t3")
}
15 changes: 8 additions & 7 deletions shared/items/Interactable.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,20 @@ signal interacted

const OUTLINE = preload("res://shared/items/sprite_outline.tres")

@export var sprite_path: NodePath
@onready var sprite: Sprite2D = get_node(sprite_path)
@export var sprite: Sprite2D

func _ready():
sprite.material = OUTLINE

func highlight():
if sprite and not sprite.material:
sprite.material = OUTLINE
var mat = sprite.material as ShaderMaterial
mat.set_shader_parameter("enable", true)


func unhighlight():
if sprite and sprite.material:
sprite.material = null
var mat = sprite.material as ShaderMaterial
mat.set_shader_parameter("enable", false)


func interact():
emit_signal("interacted")
interacted.emit()
14 changes: 9 additions & 5 deletions shared/shaders/outline.gdshader
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ uniform int pattern : hint_range(0, 2) = 0; // diamond, circle, square
uniform bool inside = false;
uniform bool add_margins = true; // only useful when inside is false

uniform bool enable = true;

void vertex() {
if (add_margins) {
if (enable && add_margins) {
VERTEX += (UV * 2.0 - 1.0) * width;
}
}
Expand Down Expand Up @@ -41,7 +43,7 @@ bool hasContraryNeighbour(vec2 uv, vec2 texture_pixel_size, sampler2D texture) {
void fragment() {
vec2 uv = UV;

if (add_margins) {
if (enable && add_margins) {
vec2 texture_pixel_size = vec2(1.0) / (vec2(1.0) / TEXTURE_PIXEL_SIZE + vec2(width * 2.0));

uv = (uv - texture_pixel_size * width) * TEXTURE_PIXEL_SIZE / texture_pixel_size;
Expand All @@ -55,8 +57,10 @@ void fragment() {
COLOR = texture(TEXTURE, uv);
}

if ((COLOR.a > 0.0) == inside && hasContraryNeighbour(uv, TEXTURE_PIXEL_SIZE, TEXTURE)) {
COLOR.rgb = inside ? mix(COLOR.rgb, color.rgb, color.a) : color.rgb;
COLOR.a += (1.0 - COLOR.a) * color.a;
if (enable) {
if ((COLOR.a > 0.0) == inside && hasContraryNeighbour(uv, TEXTURE_PIXEL_SIZE, TEXTURE)) {
COLOR.rgb = inside ? mix(COLOR.rgb, color.rgb, color.a) : color.rgb;
COLOR.a += (1.0 - COLOR.a) * color.a;
}
}
}
1 change: 1 addition & 0 deletions theme/theme.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ $hover-color: Color(1, 1, 1, 1);

body {
font-family: url(jackeyfont.ttf);
font-size: 8;
}

Button {
Expand Down

0 comments on commit 6155dd9

Please sign in to comment.