Refactor out single-mode silliness
Gotta lay out the scene tree such that Radial and Dance modes can be loaded in and out. Godot's GUI nodes are pretty good we should use them more :)
This commit is contained in:
parent
b4e10d3eb5
commit
f90543660f
|
@ -0,0 +1,189 @@
|
||||||
|
[gd_scene load_steps=20 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://scripts/InputHandler.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://assets/text-4k.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://scripts/video.gd" type="Script" id=3]
|
||||||
|
[ext_resource path="res://scripts/ScreenFilter.gd" type="Script" id=4]
|
||||||
|
[ext_resource path="res://scripts/NoteViewport.gd" type="Script" id=5]
|
||||||
|
[ext_resource path="res://scripts/NotePainter.gd" type="Script" id=6]
|
||||||
|
[ext_resource path="res://scripts/NoteHandler.gd" type="Script" id=8]
|
||||||
|
[ext_resource path="res://scripts/Receptors.gd" type="Script" id=9]
|
||||||
|
[ext_resource path="res://shaders/notelines.shader" type="Shader" id=10]
|
||||||
|
[ext_resource path="res://shaders/notemesh.shader" type="Shader" id=11]
|
||||||
|
[ext_resource path="res://shaders/receptors.shader" type="Shader" id=12]
|
||||||
|
[ext_resource path="res://scripts/Bezel.gd" type="Script" id=13]
|
||||||
|
[ext_resource path="res://Menu.tscn" type="PackedScene" id=15]
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=1]
|
||||||
|
shader = ExtResource( 12 )
|
||||||
|
shader_param/num_receptors = 8
|
||||||
|
shader_param/receptor_offset = 0.392699
|
||||||
|
shader_param/line_color = Color( 0, 0, 1, 1 )
|
||||||
|
shader_param/dot_color = Color( 0, 0, 1, 1 )
|
||||||
|
shader_param/shadow_color = Color( 0, 0, 0, 0.57 )
|
||||||
|
shader_param/line_thickness = 0.00434783
|
||||||
|
shader_param/dot_radius = 0.026087
|
||||||
|
shader_param/shadow_thickness = 0.0173913
|
||||||
|
shader_param/px = 0.00108696
|
||||||
|
shader_param/px2 = 0.00217391
|
||||||
|
shader_param/alpha = 1.0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id=2]
|
||||||
|
surfaces/0 = {
|
||||||
|
"aabb": AABB( -481.834, -481.834, 0, 963.667, 963.667, 0 ),
|
||||||
|
"array_data": PoolByteArray( 0, 0, 220, 67, 0, 0, 0, 0, 166, 59, 0, 0, 177, 234, 240, 67, 0, 0, 0, 0, 48, 60, 0, 0, 95, 168, 216, 67, 118, 207, 152, 66, 137, 59, 80, 49, 183, 65, 237, 67, 202, 86, 167, 66, 32, 60, 210, 49, 125, 187, 206, 67, 38, 125, 22, 67, 48, 59, 60, 53, 64, 99, 226, 67, 249, 203, 36, 67, 223, 59, 187, 53, 141, 134, 190, 67, 0, 0, 92, 67, 160, 58, 166, 55, 217, 163, 208, 67, 177, 234, 112, 67, 65, 59, 48, 56, 159, 135, 168, 67, 204, 105, 141, 67, 220, 57, 235, 56, 142, 141, 184, 67, 186, 219, 154, 67, 107, 58, 98, 57, 204, 105, 141, 67, 159, 135, 168, 67, 235, 56, 220, 57, 186, 219, 154, 67, 142, 141, 184, 67, 98, 57, 107, 58, 0, 0, 92, 67, 141, 134, 190, 67, 166, 55, 160, 58, 177, 234, 112, 67, 217, 163, 208, 67, 48, 56, 65, 59, 38, 125, 22, 67, 125, 187, 206, 67, 60, 53, 48, 59, 249, 203, 36, 67, 64, 99, 226, 67, 187, 53, 223, 59, 118, 207, 152, 66, 95, 168, 216, 67, 80, 49, 137, 59, 202, 86, 167, 66, 183, 65, 237, 67, 210, 49, 32, 60, 141, 172, 242, 40, 0, 0, 220, 67, 0, 0, 166, 59, 143, 223, 4, 41, 177, 234, 240, 67, 0, 0, 48, 60, 118, 207, 152, 194, 95, 168, 216, 67, 80, 177, 137, 59, 202, 86, 167, 194, 183, 65, 237, 67, 210, 177, 32, 60, 38, 125, 22, 195, 125, 187, 206, 67, 60, 181, 48, 59, 249, 203, 36, 195, 64, 99, 226, 67, 187, 181, 223, 59, 0, 0, 92, 195, 141, 134, 190, 67, 166, 183, 160, 58, 177, 234, 112, 195, 217, 163, 208, 67, 48, 184, 65, 59, 204, 105, 141, 195, 159, 135, 168, 67, 235, 184, 220, 57, 186, 219, 154, 195, 142, 141, 184, 67, 98, 185, 107, 58, 159, 135, 168, 195, 204, 105, 141, 67, 220, 185, 235, 56, 142, 141, 184, 195, 186, 219, 154, 67, 107, 186, 98, 57, 141, 134, 190, 195, 0, 0, 92, 67, 160, 186, 166, 55, 217, 163, 208, 195, 177, 234, 112, 67, 65, 187, 48, 56, 125, 187, 206, 195, 38, 125, 22, 67, 48, 187, 60, 53, 64, 99, 226, 195, 249, 203, 36, 67, 223, 187, 187, 53, 95, 168, 216, 195, 118, 207, 152, 66, 137, 187, 80, 49, 183, 65, 237, 195, 202, 86, 167, 66, 32, 188, 210, 49, 0, 0, 220, 195, 141, 172, 114, 41, 166, 187, 0, 0, 177, 234, 240, 195, 143, 223, 132, 41, 48, 188, 0, 0, 95, 168, 216, 195, 118, 207, 152, 194, 137, 187, 80, 177, 183, 65, 237, 195, 202, 86, 167, 194, 32, 188, 210, 177, 125, 187, 206, 195, 38, 125, 22, 195, 48, 187, 60, 181, 64, 99, 226, 195, 249, 203, 36, 195, 223, 187, 187, 181, 141, 134, 190, 195, 0, 0, 92, 195, 160, 186, 166, 183, 217, 163, 208, 195, 177, 234, 112, 195, 65, 187, 48, 184, 159, 135, 168, 195, 204, 105, 141, 195, 220, 185, 235, 184, 142, 141, 184, 195, 186, 219, 154, 195, 107, 186, 98, 185, 204, 105, 141, 195, 159, 135, 168, 195, 235, 184, 220, 185, 186, 219, 154, 195, 142, 141, 184, 195, 98, 185, 107, 186, 0, 0, 92, 195, 141, 134, 190, 195, 166, 183, 160, 186, 177, 234, 112, 195, 217, 163, 208, 195, 48, 184, 65, 187, 38, 125, 22, 195, 125, 187, 206, 195, 60, 181, 48, 187, 249, 203, 36, 195, 64, 99, 226, 195, 187, 181, 223, 187, 118, 207, 152, 194, 95, 168, 216, 195, 80, 177, 137, 187, 202, 86, 167, 194, 183, 65, 237, 195, 210, 177, 32, 188, 106, 1, 182, 169, 0, 0, 220, 195, 0, 0, 166, 187, 87, 79, 199, 169, 177, 234, 240, 195, 0, 0, 48, 188, 118, 207, 152, 66, 95, 168, 216, 195, 80, 49, 137, 187, 202, 86, 167, 66, 183, 65, 237, 195, 210, 49, 32, 188, 38, 125, 22, 67, 125, 187, 206, 195, 60, 53, 48, 187, 249, 203, 36, 67, 64, 99, 226, 195, 187, 53, 223, 187, 0, 0, 92, 67, 141, 134, 190, 195, 166, 55, 160, 186, 177, 234, 112, 67, 217, 163, 208, 195, 48, 56, 65, 187, 204, 105, 141, 67, 159, 135, 168, 195, 235, 56, 220, 185, 186, 219, 154, 67, 142, 141, 184, 195, 98, 57, 107, 186, 159, 135, 168, 67, 204, 105, 141, 195, 220, 57, 235, 184, 142, 141, 184, 67, 186, 219, 154, 195, 107, 58, 98, 185, 141, 134, 190, 67, 0, 0, 92, 195, 160, 58, 166, 183, 217, 163, 208, 67, 177, 234, 112, 195, 65, 59, 48, 184, 125, 187, 206, 67, 38, 125, 22, 195, 48, 59, 60, 181, 64, 99, 226, 67, 249, 203, 36, 195, 223, 59, 187, 181, 95, 168, 216, 67, 118, 207, 152, 194, 137, 59, 80, 177, 183, 65, 237, 67, 202, 86, 167, 194, 32, 60, 210, 177, 0, 0, 220, 67, 0, 0, 0, 0, 166, 59, 0, 0, 177, 234, 240, 67, 0, 0, 0, 0, 48, 60, 0, 0 ),
|
||||||
|
"array_index_data": PoolByteArray( ),
|
||||||
|
"blend_shape_data": [ ],
|
||||||
|
"format": 359441,
|
||||||
|
"index_count": 0,
|
||||||
|
"primitive": 5,
|
||||||
|
"skeleton_aabb": [ ],
|
||||||
|
"vertex_count": 74
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=3]
|
||||||
|
shader = ExtResource( 11 )
|
||||||
|
shader_param/bps = null
|
||||||
|
shader_param/star_color = null
|
||||||
|
shader_param/held_color = null
|
||||||
|
shader_param/screen_size = null
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=4]
|
||||||
|
shader = ExtResource( 10 )
|
||||||
|
shader_param/line_color = Color( 0.8, 0.8, 1, 0.8 )
|
||||||
|
shader_param/line_color_double = Color( 1, 1, 0.6, 0.9 )
|
||||||
|
shader_param/dot_color = Color( 1, 1, 1, 0.8 )
|
||||||
|
shader_param/bps = 1.0
|
||||||
|
shader_param/line_thickness = 0.012
|
||||||
|
shader_param/line_thickness_min = 0.0
|
||||||
|
shader_param/dot_thickness = 0.033
|
||||||
|
shader_param/dot_fullbright_thickness = 0.013
|
||||||
|
shader_param/max_angle = 1.0708
|
||||||
|
shader_param/max_dist = 1.25
|
||||||
|
shader_param/array_postmul = Vector3( 1, 1, 1 )
|
||||||
|
shader_param/array_sidelen = 16
|
||||||
|
shader_param/array_size = 256
|
||||||
|
|
||||||
|
[sub_resource type="CanvasItemMaterial" id=5]
|
||||||
|
blend_mode = 4
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id=6]
|
||||||
|
min_value = -1.0
|
||||||
|
_data = [ Vector2( -1, -1 ), 0.0, 0.0, 0, 0, Vector2( 0, 0 ), 2.0, 2.0, 1, 1, Vector2( 1, 1 ), 0.0, 0.0, 0, 0 ]
|
||||||
|
|
||||||
|
[node name="RadialGame" type="Control"]
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
margin_left = -540.0
|
||||||
|
margin_top = -540.0
|
||||||
|
margin_right = 540.0
|
||||||
|
margin_bottom = 540.0
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="music" type="AudioStreamPlayer" parent="."]
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
|
[node name="video" type="VideoPlayer" parent="."]
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
margin_left = -540.0
|
||||||
|
margin_top = -540.0
|
||||||
|
margin_right = 540.0
|
||||||
|
margin_bottom = 540.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
rect_pivot_offset = Vector2( 540, 540 )
|
||||||
|
mouse_filter = 2
|
||||||
|
volume_db = -80.0
|
||||||
|
bus = "Music"
|
||||||
|
script = ExtResource( 3 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ScreenFilter" type="ColorRect" parent="."]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
color = Color( 0, 0, 0, 1 )
|
||||||
|
script = ExtResource( 4 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Center" type="Control" parent="."]
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Receptors" type="MeshInstance2D" parent="Center"]
|
||||||
|
material = SubResource( 1 )
|
||||||
|
mesh = SubResource( 2 )
|
||||||
|
script = ExtResource( 9 )
|
||||||
|
|
||||||
|
[node name="Tween" type="Tween" parent="Center/Receptors"]
|
||||||
|
|
||||||
|
[node name="NoteHandler" type="Node2D" parent="Center"]
|
||||||
|
script = ExtResource( 8 )
|
||||||
|
|
||||||
|
[node name="Viewport" type="Viewport" parent="Center/NoteHandler"]
|
||||||
|
size = Vector2( 1080, 1080 )
|
||||||
|
transparent_bg = true
|
||||||
|
usage = 1
|
||||||
|
render_target_v_flip = true
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
|
||||||
|
[node name="Center" type="Node2D" parent="Center/NoteHandler/Viewport"]
|
||||||
|
position = Vector2( 540, 540 )
|
||||||
|
|
||||||
|
[node name="SlideTrailHandler" type="Node2D" parent="Center/NoteHandler/Viewport/Center"]
|
||||||
|
|
||||||
|
[node name="JudgeText" type="MeshInstance2D" parent="Center/NoteHandler/Viewport/Center"]
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="meshinstance" type="MeshInstance2D" parent="Center/NoteHandler/Viewport/Center"]
|
||||||
|
material = SubResource( 3 )
|
||||||
|
|
||||||
|
[node name="notelines" type="MeshInstance2D" parent="Center/NoteHandler/Viewport/Center"]
|
||||||
|
material = SubResource( 4 )
|
||||||
|
|
||||||
|
[node name="Painter" type="Node2D" parent="Center/NoteHandler"]
|
||||||
|
material = SubResource( 5 )
|
||||||
|
script = ExtResource( 6 )
|
||||||
|
|
||||||
|
[node name="Menu" parent="." instance=ExtResource( 15 )]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
margin_left = 0.0
|
||||||
|
margin_top = 0.0
|
||||||
|
margin_right = 0.0
|
||||||
|
margin_bottom = 0.0
|
||||||
|
NoteHandlerPath = NodePath("../Center/NoteHandler")
|
||||||
|
ease_curve = SubResource( 6 )
|
||||||
|
|
||||||
|
[node name="Bezel" type="Control" parent="."]
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
script = ExtResource( 13 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="InputHandler" type="Control" parent="."]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
155
main.tscn
155
main.tscn
|
@ -1,152 +1,25 @@
|
||||||
[gd_scene load_steps=21 format=2]
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://scripts/main.gd" type="Script" id=1]
|
[ext_resource path="res://RadialGame.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://scripts/video.gd" type="Script" id=2]
|
[ext_resource path="res://scripts/TouchInput.gd" type="Script" id=2]
|
||||||
[ext_resource path="res://scripts/ScreenFilter.gd" type="Script" id=3]
|
|
||||||
[ext_resource path="res://shaders/receptors.shader" type="Shader" id=4]
|
|
||||||
[ext_resource path="res://scripts/Receptors.gd" type="Script" id=5]
|
|
||||||
[ext_resource path="res://scripts/NoteHandler.gd" type="Script" id=6]
|
|
||||||
[ext_resource path="res://scripts/NoteViewport.gd" type="Script" id=7]
|
|
||||||
[ext_resource path="res://assets/text-4k.png" type="Texture" id=8]
|
|
||||||
[ext_resource path="res://shaders/notemesh.shader" type="Shader" id=9]
|
|
||||||
[ext_resource path="res://shaders/notelines.shader" type="Shader" id=10]
|
|
||||||
[ext_resource path="res://scripts/NotePainter.gd" type="Script" id=11]
|
|
||||||
[ext_resource path="res://Menu.tscn" type="PackedScene" id=12]
|
|
||||||
[ext_resource path="res://OptionPanel.tscn" type="PackedScene" id=13]
|
[ext_resource path="res://OptionPanel.tscn" type="PackedScene" id=13]
|
||||||
[ext_resource path="res://scripts/Bezel.gd" type="Script" id=15]
|
|
||||||
[ext_resource path="res://scripts/InputHandler.gd" type="Script" id=17]
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=1]
|
[node name="main" type="Control"]
|
||||||
shader = ExtResource( 4 )
|
anchor_right = 1.0
|
||||||
shader_param/num_receptors = 8
|
anchor_bottom = 1.0
|
||||||
shader_param/receptor_offset = 0.392699
|
|
||||||
shader_param/line_color = Color( 0, 0, 1, 1 )
|
|
||||||
shader_param/dot_color = Color( 0, 0, 1, 1 )
|
|
||||||
shader_param/shadow_color = Color( 0, 0, 0, 0.57 )
|
|
||||||
shader_param/line_thickness = 0.00434783
|
|
||||||
shader_param/dot_radius = 0.026087
|
|
||||||
shader_param/shadow_thickness = 0.0173913
|
|
||||||
shader_param/px = 0.00108696
|
|
||||||
shader_param/px2 = 0.00217391
|
|
||||||
shader_param/alpha = 1.0
|
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id=6]
|
|
||||||
surfaces/0 = {
|
|
||||||
"aabb": AABB( -481.834, -481.834, 0, 963.667, 963.667, 0 ),
|
|
||||||
"array_data": PoolByteArray( 0, 0, 220, 67, 0, 0, 0, 0, 166, 59, 0, 0, 177, 234, 240, 67, 0, 0, 0, 0, 48, 60, 0, 0, 95, 168, 216, 67, 118, 207, 152, 66, 137, 59, 80, 49, 183, 65, 237, 67, 202, 86, 167, 66, 32, 60, 210, 49, 125, 187, 206, 67, 38, 125, 22, 67, 48, 59, 60, 53, 64, 99, 226, 67, 249, 203, 36, 67, 223, 59, 187, 53, 141, 134, 190, 67, 0, 0, 92, 67, 160, 58, 166, 55, 217, 163, 208, 67, 177, 234, 112, 67, 65, 59, 48, 56, 159, 135, 168, 67, 204, 105, 141, 67, 220, 57, 235, 56, 142, 141, 184, 67, 186, 219, 154, 67, 107, 58, 98, 57, 204, 105, 141, 67, 159, 135, 168, 67, 235, 56, 220, 57, 186, 219, 154, 67, 142, 141, 184, 67, 98, 57, 107, 58, 0, 0, 92, 67, 141, 134, 190, 67, 166, 55, 160, 58, 177, 234, 112, 67, 217, 163, 208, 67, 48, 56, 65, 59, 38, 125, 22, 67, 125, 187, 206, 67, 60, 53, 48, 59, 249, 203, 36, 67, 64, 99, 226, 67, 187, 53, 223, 59, 118, 207, 152, 66, 95, 168, 216, 67, 80, 49, 137, 59, 202, 86, 167, 66, 183, 65, 237, 67, 210, 49, 32, 60, 141, 172, 242, 40, 0, 0, 220, 67, 0, 0, 166, 59, 143, 223, 4, 41, 177, 234, 240, 67, 0, 0, 48, 60, 118, 207, 152, 194, 95, 168, 216, 67, 80, 177, 137, 59, 202, 86, 167, 194, 183, 65, 237, 67, 210, 177, 32, 60, 38, 125, 22, 195, 125, 187, 206, 67, 60, 181, 48, 59, 249, 203, 36, 195, 64, 99, 226, 67, 187, 181, 223, 59, 0, 0, 92, 195, 141, 134, 190, 67, 166, 183, 160, 58, 177, 234, 112, 195, 217, 163, 208, 67, 48, 184, 65, 59, 204, 105, 141, 195, 159, 135, 168, 67, 235, 184, 220, 57, 186, 219, 154, 195, 142, 141, 184, 67, 98, 185, 107, 58, 159, 135, 168, 195, 204, 105, 141, 67, 220, 185, 235, 56, 142, 141, 184, 195, 186, 219, 154, 67, 107, 186, 98, 57, 141, 134, 190, 195, 0, 0, 92, 67, 160, 186, 166, 55, 217, 163, 208, 195, 177, 234, 112, 67, 65, 187, 48, 56, 125, 187, 206, 195, 38, 125, 22, 67, 48, 187, 60, 53, 64, 99, 226, 195, 249, 203, 36, 67, 223, 187, 187, 53, 95, 168, 216, 195, 118, 207, 152, 66, 137, 187, 80, 49, 183, 65, 237, 195, 202, 86, 167, 66, 32, 188, 210, 49, 0, 0, 220, 195, 141, 172, 114, 41, 166, 187, 0, 0, 177, 234, 240, 195, 143, 223, 132, 41, 48, 188, 0, 0, 95, 168, 216, 195, 118, 207, 152, 194, 137, 187, 80, 177, 183, 65, 237, 195, 202, 86, 167, 194, 32, 188, 210, 177, 125, 187, 206, 195, 38, 125, 22, 195, 48, 187, 60, 181, 64, 99, 226, 195, 249, 203, 36, 195, 223, 187, 187, 181, 141, 134, 190, 195, 0, 0, 92, 195, 160, 186, 166, 183, 217, 163, 208, 195, 177, 234, 112, 195, 65, 187, 48, 184, 159, 135, 168, 195, 204, 105, 141, 195, 220, 185, 235, 184, 142, 141, 184, 195, 186, 219, 154, 195, 107, 186, 98, 185, 204, 105, 141, 195, 159, 135, 168, 195, 235, 184, 220, 185, 186, 219, 154, 195, 142, 141, 184, 195, 98, 185, 107, 186, 0, 0, 92, 195, 141, 134, 190, 195, 166, 183, 160, 186, 177, 234, 112, 195, 217, 163, 208, 195, 48, 184, 65, 187, 38, 125, 22, 195, 125, 187, 206, 195, 60, 181, 48, 187, 249, 203, 36, 195, 64, 99, 226, 195, 187, 181, 223, 187, 118, 207, 152, 194, 95, 168, 216, 195, 80, 177, 137, 187, 202, 86, 167, 194, 183, 65, 237, 195, 210, 177, 32, 188, 106, 1, 182, 169, 0, 0, 220, 195, 0, 0, 166, 187, 87, 79, 199, 169, 177, 234, 240, 195, 0, 0, 48, 188, 118, 207, 152, 66, 95, 168, 216, 195, 80, 49, 137, 187, 202, 86, 167, 66, 183, 65, 237, 195, 210, 49, 32, 188, 38, 125, 22, 67, 125, 187, 206, 195, 60, 53, 48, 187, 249, 203, 36, 67, 64, 99, 226, 195, 187, 53, 223, 187, 0, 0, 92, 67, 141, 134, 190, 195, 166, 55, 160, 186, 177, 234, 112, 67, 217, 163, 208, 195, 48, 56, 65, 187, 204, 105, 141, 67, 159, 135, 168, 195, 235, 56, 220, 185, 186, 219, 154, 67, 142, 141, 184, 195, 98, 57, 107, 186, 159, 135, 168, 67, 204, 105, 141, 195, 220, 57, 235, 184, 142, 141, 184, 67, 186, 219, 154, 195, 107, 58, 98, 185, 141, 134, 190, 67, 0, 0, 92, 195, 160, 58, 166, 183, 217, 163, 208, 67, 177, 234, 112, 195, 65, 59, 48, 184, 125, 187, 206, 67, 38, 125, 22, 195, 48, 59, 60, 181, 64, 99, 226, 67, 249, 203, 36, 195, 223, 59, 187, 181, 95, 168, 216, 67, 118, 207, 152, 194, 137, 59, 80, 177, 183, 65, 237, 67, 202, 86, 167, 194, 32, 60, 210, 177, 0, 0, 220, 67, 0, 0, 0, 0, 166, 59, 0, 0, 177, 234, 240, 67, 0, 0, 0, 0, 48, 60, 0, 0 ),
|
|
||||||
"array_index_data": PoolByteArray( ),
|
|
||||||
"blend_shape_data": [ ],
|
|
||||||
"format": 359441,
|
|
||||||
"index_count": 0,
|
|
||||||
"primitive": 5,
|
|
||||||
"skeleton_aabb": [ ],
|
|
||||||
"vertex_count": 74
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=3]
|
|
||||||
shader = ExtResource( 9 )
|
|
||||||
shader_param/bps = null
|
|
||||||
shader_param/star_color = null
|
|
||||||
shader_param/held_color = null
|
|
||||||
shader_param/screen_size = null
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=4]
|
|
||||||
shader = ExtResource( 10 )
|
|
||||||
shader_param/line_color = Color( 0.8, 0.8, 1, 0.8 )
|
|
||||||
shader_param/line_color_double = Color( 1, 1, 0.6, 0.9 )
|
|
||||||
shader_param/dot_color = Color( 1, 1, 1, 0.8 )
|
|
||||||
shader_param/bps = 1.0
|
|
||||||
shader_param/line_thickness = 0.012
|
|
||||||
shader_param/line_thickness_min = 0.0
|
|
||||||
shader_param/dot_thickness = 0.033
|
|
||||||
shader_param/dot_fullbright_thickness = 0.013
|
|
||||||
shader_param/max_angle = 1.0708
|
|
||||||
shader_param/max_dist = 1.25
|
|
||||||
shader_param/array_postmul = Vector3( 1, 1, 1 )
|
|
||||||
shader_param/array_sidelen = 16
|
|
||||||
shader_param/array_size = 256
|
|
||||||
|
|
||||||
[sub_resource type="CanvasItemMaterial" id=5]
|
|
||||||
blend_mode = 4
|
|
||||||
|
|
||||||
[node name="main" type="Node2D"]
|
|
||||||
position = Vector2( 540, 540 )
|
|
||||||
script = ExtResource( 1 )
|
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_horizontal_guides_": [ ],
|
"_edit_use_anchors_": false
|
||||||
"_edit_vertical_guides_": [ ]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="music" type="AudioStreamPlayer" parent="."]
|
[node name="RadialGame" parent="." instance=ExtResource( 1 )]
|
||||||
bus = "Music"
|
|
||||||
|
|
||||||
[node name="video" type="VideoPlayer" parent="."]
|
[node name="OptionPanel" parent="." instance=ExtResource( 13 )]
|
||||||
margin_left = -540.0
|
|
||||||
margin_top = -540.0
|
[node name="TouchInput" type="Control" parent="."]
|
||||||
margin_right = 540.0
|
margin_right = 40.0
|
||||||
margin_bottom = 540.0
|
margin_bottom = 40.0
|
||||||
grow_horizontal = 2
|
mouse_filter = 1
|
||||||
grow_vertical = 2
|
|
||||||
rect_pivot_offset = Vector2( 540, 540 )
|
|
||||||
mouse_filter = 2
|
|
||||||
volume_db = -80.0
|
|
||||||
bus = "Music"
|
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="ScreenFilter" type="Node2D" parent="."]
|
|
||||||
script = ExtResource( 3 )
|
|
||||||
|
|
||||||
[node name="Receptors" type="MeshInstance2D" parent="."]
|
|
||||||
material = SubResource( 1 )
|
|
||||||
mesh = SubResource( 6 )
|
|
||||||
script = ExtResource( 5 )
|
|
||||||
|
|
||||||
[node name="Tween" type="Tween" parent="Receptors"]
|
|
||||||
|
|
||||||
[node name="NoteHandler" type="Node2D" parent="."]
|
|
||||||
script = ExtResource( 6 )
|
|
||||||
|
|
||||||
[node name="Viewport" type="Viewport" parent="NoteHandler"]
|
|
||||||
size = Vector2( 1080, 1080 )
|
|
||||||
transparent_bg = true
|
|
||||||
usage = 1
|
|
||||||
render_target_v_flip = true
|
|
||||||
script = ExtResource( 7 )
|
|
||||||
|
|
||||||
[node name="Center" type="Node2D" parent="NoteHandler/Viewport"]
|
|
||||||
position = Vector2( 540, 540 )
|
|
||||||
|
|
||||||
[node name="SlideTrailHandler" type="Node2D" parent="NoteHandler/Viewport/Center"]
|
|
||||||
|
|
||||||
[node name="JudgeText" type="MeshInstance2D" parent="NoteHandler/Viewport/Center"]
|
|
||||||
texture = ExtResource( 8 )
|
|
||||||
|
|
||||||
[node name="meshinstance" type="MeshInstance2D" parent="NoteHandler/Viewport/Center"]
|
|
||||||
material = SubResource( 3 )
|
|
||||||
|
|
||||||
[node name="notelines" type="MeshInstance2D" parent="NoteHandler/Viewport/Center"]
|
|
||||||
material = SubResource( 4 )
|
|
||||||
|
|
||||||
[node name="Painter" type="Node2D" parent="NoteHandler"]
|
|
||||||
material = SubResource( 5 )
|
|
||||||
script = ExtResource( 11 )
|
|
||||||
|
|
||||||
[node name="Menu" parent="." instance=ExtResource( 12 )]
|
|
||||||
|
|
||||||
[node name="Bezel" type="Node2D" parent="."]
|
|
||||||
script = ExtResource( 15 )
|
|
||||||
|
|
||||||
[node name="InputHandler" type="Control" parent="."]
|
|
||||||
margin_left = -540.0
|
|
||||||
margin_top = -540.0
|
|
||||||
margin_right = 540.0
|
|
||||||
margin_bottom = 540.0
|
|
||||||
script = ExtResource( 17 )
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="OptionPanel" parent="." instance=ExtResource( 13 )]
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ window/size/height=1080
|
||||||
window/size/fullscreen=true
|
window/size/fullscreen=true
|
||||||
window/handheld/orientation="sensor"
|
window/handheld/orientation="sensor"
|
||||||
window/stretch/mode="2d"
|
window/stretch/mode="2d"
|
||||||
window/stretch/aspect="keep_height"
|
window/stretch/aspect="expand"
|
||||||
|
|
||||||
[gdnative]
|
[gdnative]
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
tool
|
tool
|
||||||
extends Node2D
|
extends Control
|
||||||
|
|
||||||
# Draw the bezel for radial gamemode
|
# Draw the bezel for radial gamemode
|
||||||
var center := Vector2(0.0, 0.0)
|
var center := Vector2(0.0, 0.0)
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
var touch_points = {} # dict containing all points touched on the screen
|
|
||||||
var touch_positions = [] # array of above
|
|
||||||
var fingers = 0 setget set_fingers # setter for show fingers number on screen
|
|
||||||
var txt_ball = preload('res://assets/ball.png') # preload our ball texture
|
|
||||||
var default_font = preload('res://assets/NotoSans.tres')
|
|
||||||
|
|
||||||
var buttons_pressed := PoolByteArray()
|
var buttons_pressed := PoolByteArray()
|
||||||
var touchbuttons_pressed := PoolByteArray()
|
var touchbuttons_pressed := PoolByteArray()
|
||||||
signal button_pressed(index) # Add int type to these once Godot supports typed signals
|
signal button_pressed(index) # Add int type to these once Godot supports typed signals
|
||||||
|
@ -17,12 +11,8 @@ const TOUCHBUTTON_MAX_DIST := 1.075
|
||||||
const BUTTON_MIN_DIST := 0.925
|
const BUTTON_MIN_DIST := 0.925
|
||||||
const BUTTON_MAX_DIST := 1.25
|
const BUTTON_MAX_DIST := 1.25
|
||||||
|
|
||||||
var swipe_momentum := Vector2.ZERO
|
func _ready():
|
||||||
|
$'/root/main/TouchInput'.connect('touch_positions_updated', self, '_check_buttons')
|
||||||
func resize():
|
|
||||||
var screen_size = $'/root'.get_visible_rect().size
|
|
||||||
rect_position = -screen_size*0.5
|
|
||||||
rect_size = screen_size
|
|
||||||
|
|
||||||
func _init():
|
func _init():
|
||||||
buttons_pressed.resize(Rules.COLS)
|
buttons_pressed.resize(Rules.COLS)
|
||||||
|
@ -31,51 +21,19 @@ func _init():
|
||||||
buttons_pressed[i] = 0
|
buttons_pressed[i] = 0
|
||||||
touchbuttons_pressed[i] = 0
|
touchbuttons_pressed[i] = 0
|
||||||
|
|
||||||
func _ready():
|
|
||||||
Input.set_use_accumulated_input(false) # Gotta go fast
|
|
||||||
set_process_unhandled_input(true) # process user input
|
|
||||||
set_fingers(0)
|
|
||||||
# connect('button_pressed', self, 'print_pressed')
|
|
||||||
resize()
|
|
||||||
|
|
||||||
func print_pressed(col: int):
|
func print_pressed(col: int):
|
||||||
print('Pressed %d'%col)
|
print('Pressed %d'%col)
|
||||||
|
|
||||||
func _draw(): # draw fingers points on screen
|
func _check_buttons(touch_positions):
|
||||||
# var swipe_origin = Vector2(300, 540)
|
|
||||||
# draw_line(swipe_origin, swipe_origin+swipe_momentum, Color.red)
|
|
||||||
|
|
||||||
# draw points
|
|
||||||
for i in touch_points:
|
|
||||||
var point = touch_points[i]
|
|
||||||
# if point.pressed:
|
|
||||||
# DRAW POINTS ################################################
|
|
||||||
draw_texture(txt_ball, point.position - Vector2(24, 24))
|
|
||||||
# draw_string(default_font, point.position - Vector2(24, 24), str(i))
|
|
||||||
# draw_string(default_font, point.position + Vector2(-24, 48), str(point.position))
|
|
||||||
# if len(touch_positions) > 1:
|
|
||||||
# for i in range(len(touch_positions)-1):
|
|
||||||
# # Draw line
|
|
||||||
# draw_line(touch_positions[i], touch_positions[i+1], Color(1,1,1,1))
|
|
||||||
|
|
||||||
func _process(delta):
|
|
||||||
swipe_momentum *= max(1.0 - 5.0*delta, 0)
|
|
||||||
if swipe_momentum.length_squared() < 1.0:
|
|
||||||
swipe_momentum = Vector2.ZERO
|
|
||||||
update()
|
|
||||||
|
|
||||||
func update_data():
|
|
||||||
touch_positions.clear()
|
|
||||||
for i in touch_points:
|
|
||||||
touch_positions.push_back(touch_points[i].position - rect_size/2)
|
|
||||||
|
|
||||||
var buttons_pressed_temp := []
|
var buttons_pressed_temp := []
|
||||||
var touchbuttons_pressed_temp := []
|
var touchbuttons_pressed_temp := []
|
||||||
for i in Rules.COLS:
|
for i in Rules.COLS:
|
||||||
buttons_pressed_temp.append(false)
|
buttons_pressed_temp.append(false)
|
||||||
touchbuttons_pressed_temp.append(false)
|
touchbuttons_pressed_temp.append(false)
|
||||||
|
|
||||||
|
var global_center = rect_global_position + rect_size*0.5
|
||||||
for pos in touch_positions:
|
for pos in touch_positions:
|
||||||
|
pos -= global_center
|
||||||
var pol = cartesian2polar(pos.x, pos.y)
|
var pol = cartesian2polar(pos.x, pos.y)
|
||||||
var dist = pol.x/GameTheme.receptor_ring_radius
|
var dist = pol.x/GameTheme.receptor_ring_radius
|
||||||
var angle = rad2deg(pol.y)
|
var angle = rad2deg(pol.y)
|
||||||
|
@ -93,36 +51,6 @@ func update_data():
|
||||||
set_button_state(i, buttons_pressed_temp[i])
|
set_button_state(i, buttons_pressed_temp[i])
|
||||||
set_touchbutton_state(i, touchbuttons_pressed_temp[i])
|
set_touchbutton_state(i, touchbuttons_pressed_temp[i])
|
||||||
|
|
||||||
set_fingers(len(touch_positions))
|
|
||||||
update()
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
func _input(event):
|
|
||||||
# Unfortunately event.device does NOT differentiate touchscreen inputs on X11, Godot v3.1.1
|
|
||||||
# As such, we'll need to do some fancy mapping for multiple inputs
|
|
||||||
if (event is InputEventScreenDrag):
|
|
||||||
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
|
|
||||||
touch_points[event.index] = {pressed = true, position = event.position}
|
|
||||||
swipe_momentum = event.speed
|
|
||||||
elif (event is InputEventScreenTouch):
|
|
||||||
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
|
|
||||||
if event.pressed:
|
|
||||||
if not touch_points.has(event.index):
|
|
||||||
touch_points[event.index] = {}
|
|
||||||
touch_points[event.index].position = event.position # update position
|
|
||||||
# touch_points[event.index].pressed = event.pressed # update "pressed" flag
|
|
||||||
else:
|
|
||||||
if touch_points.has(event.index):
|
|
||||||
touch_points.erase(event.index)
|
|
||||||
elif (event is InputEventMouse):
|
|
||||||
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
|
||||||
update_data()
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
# write how many fingers are tapping the screen
|
|
||||||
func set_fingers(value):
|
|
||||||
fingers = max(value, 0)
|
|
||||||
|
|
||||||
func set_button_state(index: int, state: bool):
|
func set_button_state(index: int, state: bool):
|
||||||
var new_state = int(state)
|
var new_state = int(state)
|
||||||
match new_state - buttons_pressed[index]:
|
match new_state - buttons_pressed[index]:
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
#extends Node2D
|
#extends Node2D
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
export var NoteHandlerPath := @'/root/main/NoteHandler'
|
export var NoteHandlerPath := @'../Center/NoteHandler'
|
||||||
|
export var ReceptorsPath := @'../Center/Receptors'
|
||||||
onready var NoteHandler := get_node(NoteHandlerPath)
|
onready var NoteHandler := get_node(NoteHandlerPath)
|
||||||
|
onready var Receptors := get_node(ReceptorsPath)
|
||||||
onready var ScoreText := $ScoreText
|
onready var ScoreText := $ScoreText
|
||||||
onready var PVMusic := $PVMusic
|
onready var PVMusic := $PVMusic
|
||||||
|
|
||||||
|
@ -435,7 +437,7 @@ func _draw():
|
||||||
ScoreText.show()
|
ScoreText.show()
|
||||||
|
|
||||||
func set_menu_mode(mode):
|
func set_menu_mode(mode):
|
||||||
$'../Receptors'.fade(mode == MenuMode.GAMEPLAY)
|
Receptors.fade(mode == MenuMode.GAMEPLAY)
|
||||||
if mode == MenuMode.GAMEPLAY:
|
if mode == MenuMode.GAMEPLAY:
|
||||||
PVMusic.stop()
|
PVMusic.stop()
|
||||||
rect_clip_content = false
|
rect_clip_content = false
|
||||||
|
@ -501,7 +503,8 @@ func finished_song(song_key, score_data):
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if !visible:
|
if !visible:
|
||||||
return
|
return
|
||||||
if (event is InputEventScreenTouch) or (event is InputEventMouseButton):
|
if (event is InputEventMouseButton): # Add this if we ever manage to be rid of the curse of Touch->Mouse emulation: (event is InputEventScreenTouch)
|
||||||
|
print(event)
|
||||||
if event.pressed:
|
if event.pressed:
|
||||||
var pos = event.position - get_global_transform_with_canvas().get_origin()
|
var pos = event.position - get_global_transform_with_canvas().get_origin()
|
||||||
match menu_mode:
|
match menu_mode:
|
||||||
|
|
|
@ -7,9 +7,9 @@ signal finished_song(song_key, score_data)
|
||||||
var running := false
|
var running := false
|
||||||
var song_key = ''
|
var song_key = ''
|
||||||
|
|
||||||
export var MusicPlayerPath := @'/root/main/music'
|
export var MusicPlayerPath := @'../../music'
|
||||||
export var VideoPlayerPath := @'/root/main/video'
|
export var VideoPlayerPath := @'../../video'
|
||||||
export var InputHandlerPath := @'/root/main/InputHandler'
|
export var InputHandlerPath := @'../../InputHandler'
|
||||||
onready var MusicPlayer := get_node(MusicPlayerPath)
|
onready var MusicPlayer := get_node(MusicPlayerPath)
|
||||||
onready var VideoPlayer := get_node(VideoPlayerPath)
|
onready var VideoPlayer := get_node(VideoPlayerPath)
|
||||||
onready var InputHandler := get_node(InputHandlerPath)
|
onready var InputHandler := get_node(InputHandlerPath)
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
extends VBoxContainer
|
extends VBoxContainer
|
||||||
|
|
||||||
func resize():
|
|
||||||
var screen_size = $'/root'.get_visible_rect().size
|
|
||||||
rect_position = -screen_size*0.5
|
|
||||||
# rect_size = screen_size
|
|
||||||
|
|
||||||
export var btn_language: NodePath = @"hbox_language/btn_language"
|
export var btn_language: NodePath = @"hbox_language/btn_language"
|
||||||
onready var BtnLanguage = get_node(btn_language)
|
onready var BtnLanguage = get_node(btn_language)
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
$'/root'.connect('size_changed', self, 'resize')
|
|
||||||
$HBoxContainer/btn_vsync.connect('toggled', OS, 'set_use_vsync')
|
$HBoxContainer/btn_vsync.connect('toggled', OS, 'set_use_vsync')
|
||||||
$HBoxContainer/btn_wakelock.connect('toggled', OS, 'set_keep_screen_on') # This is waiting on godotengine/godot#35536 to be merged to do anything in Linux :(
|
$HBoxContainer/btn_wakelock.connect('toggled', OS, 'set_keep_screen_on') # This is waiting on godotengine/godot#35536 to be merged to do anything in Linux :(
|
||||||
$sl_screenfilter.connect('value_changed', self, 'update_filter')
|
$sl_screenfilter.connect('value_changed', self, 'update_filter')
|
||||||
|
@ -19,7 +13,6 @@ func _ready() -> void:
|
||||||
BtnLanguage.add_item('Romaji')
|
BtnLanguage.add_item('Romaji')
|
||||||
BtnLanguage.add_item('English')
|
BtnLanguage.add_item('English')
|
||||||
BtnLanguage.connect('item_selected', self, 'update_display_language')
|
BtnLanguage.connect('item_selected', self, 'update_display_language')
|
||||||
resize()
|
|
||||||
|
|
||||||
|
|
||||||
func update_filter(alpha: float):
|
func update_filter(alpha: float):
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
extends Node2D
|
extends ColorRect
|
||||||
|
|
||||||
onready var root := $'/root'
|
onready var root := $'/root'
|
||||||
|
|
||||||
func _draw():
|
|
||||||
var screen_size = root.get_visible_rect().size
|
|
||||||
var screen_height = max(screen_size.x, screen_size.y)
|
|
||||||
draw_rect(Rect2(-screen_height/2, -screen_height/2, screen_height, screen_height), GameTheme.screen_filter)
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
GameTheme.connect('screen_filter_changed', self, 'update')
|
GameTheme.connect('screen_filter_changed', self, 'set_frame_color')
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
var touch_points = {} # dict containing all points touched on the screen
|
||||||
|
var touch_positions = [] # array of above
|
||||||
|
signal touch_positions_updated(positions)
|
||||||
|
|
||||||
|
var fingers = 0 setget set_fingers # setter for show fingers number on screen
|
||||||
|
var txt_ball = preload('res://assets/ball.png') # preload our ball texture
|
||||||
|
var default_font = preload('res://assets/NotoSans.tres')
|
||||||
|
|
||||||
|
var swipe_momentum := Vector2.ZERO
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
Input.set_use_accumulated_input(false) # Gotta go fast
|
||||||
|
set_process_unhandled_input(true) # process user input
|
||||||
|
set_fingers(0)
|
||||||
|
# connect('button_pressed', self, 'print_pressed')
|
||||||
|
|
||||||
|
func print_pressed(col: int):
|
||||||
|
print('Pressed %d'%col)
|
||||||
|
|
||||||
|
func _draw(): # draw fingers points on screen
|
||||||
|
# var swipe_origin = Vector2(300, 540)
|
||||||
|
# draw_line(swipe_origin, swipe_origin+swipe_momentum, Color.red)
|
||||||
|
|
||||||
|
# draw points
|
||||||
|
for i in touch_points:
|
||||||
|
var point = touch_points[i]
|
||||||
|
# if point.pressed:
|
||||||
|
# DRAW POINTS ################################################
|
||||||
|
draw_texture(txt_ball, point.position - Vector2(24, 24))
|
||||||
|
# draw_string(default_font, point.position - Vector2(24, 24), str(i))
|
||||||
|
# draw_string(default_font, point.position + Vector2(-24, 48), str(point.position))
|
||||||
|
# if len(touch_positions) > 1:
|
||||||
|
# for i in range(len(touch_positions)-1):
|
||||||
|
# # Draw line
|
||||||
|
# draw_line(touch_positions[i], touch_positions[i+1], Color(1,1,1,1))
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
swipe_momentum *= max(1.0 - 5.0*delta, 0)
|
||||||
|
if swipe_momentum.length_squared() < 1.0:
|
||||||
|
swipe_momentum = Vector2.ZERO
|
||||||
|
update()
|
||||||
|
|
||||||
|
func update_data():
|
||||||
|
touch_positions.clear()
|
||||||
|
for i in touch_points:
|
||||||
|
touch_positions.push_back(touch_points[i].position) # - rect_size/2)
|
||||||
|
emit_signal('touch_positions_updated', touch_positions)
|
||||||
|
set_fingers(len(touch_positions))
|
||||||
|
update()
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
func _input(event):
|
||||||
|
# Unfortunately event.device does NOT differentiate touchscreen inputs on X11, Godot v3.1.1
|
||||||
|
# As such, we'll need to do some fancy mapping for multiple inputs
|
||||||
|
if (event is InputEventScreenDrag):
|
||||||
|
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
|
||||||
|
touch_points[event.index] = {pressed = true, position = event.position}
|
||||||
|
swipe_momentum = event.speed
|
||||||
|
elif (event is InputEventScreenTouch):
|
||||||
|
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
|
||||||
|
if event.pressed:
|
||||||
|
if not touch_points.has(event.index):
|
||||||
|
touch_points[event.index] = {}
|
||||||
|
touch_points[event.index].position = event.position # update position
|
||||||
|
# touch_points[event.index].pressed = event.pressed # update "pressed" flag
|
||||||
|
else:
|
||||||
|
if touch_points.has(event.index):
|
||||||
|
touch_points.erase(event.index)
|
||||||
|
elif (event is InputEventMouse):
|
||||||
|
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
||||||
|
update_data()
|
||||||
|
|
||||||
|
func set_fingers(value):
|
||||||
|
fingers = max(value, 0)
|
|
@ -1,21 +0,0 @@
|
||||||
extends Node2D
|
|
||||||
|
|
||||||
# member variables
|
|
||||||
var screen_height := 1080
|
|
||||||
var x_margin := 0.0
|
|
||||||
var y_margin := 0.0
|
|
||||||
var screen_center := Vector2(1920/2, screen_height/2)
|
|
||||||
|
|
||||||
func resize():
|
|
||||||
var screen_size = $"/root".get_visible_rect().size
|
|
||||||
screen_center = screen_size*0.5
|
|
||||||
position = screen_center
|
|
||||||
|
|
||||||
screen_height = screen_size.y
|
|
||||||
x_margin = max((screen_size.x - screen_size.y)/2.0, 0.0)
|
|
||||||
y_margin = max((screen_size.y - screen_size.x)/2.0, 0.0)
|
|
||||||
|
|
||||||
func _ready():
|
|
||||||
$"/root".connect("size_changed", self, "resize")
|
|
||||||
resize()
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
tool
|
tool
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
signal screen_filter_changed(color)
|
||||||
|
|
||||||
var tex_notes := preload('res://assets/spritesheet-2048.png')
|
var tex_notes := preload('res://assets/spritesheet-2048.png')
|
||||||
var tex_judgement_text := preload('res://assets/text-4k.png')
|
var tex_judgement_text := preload('res://assets/text-4k.png')
|
||||||
var tex_slide_arrow := tex_notes
|
var tex_slide_arrow := tex_notes
|
||||||
|
@ -147,9 +149,25 @@ const NORMAL_ARRAY_8 := PoolVector3Array([
|
||||||
|
|
||||||
var display_language = 'n'
|
var display_language = 'n'
|
||||||
|
|
||||||
var screen_filter_min_alpha := 0.2
|
var screen_filter_min_alpha := 0.2 setget set_screen_filter_min_alpha
|
||||||
|
var screen_filter_alpha_scale := 1.0 setget set_screen_filter_alpha
|
||||||
var screen_filter := Color(0.0, 0.0, 0.0, screen_filter_min_alpha)
|
var screen_filter := Color(0.0, 0.0, 0.0, screen_filter_min_alpha)
|
||||||
signal screen_filter_changed()
|
|
||||||
|
func set_screen_filter_min_alpha(alpha: float):
|
||||||
|
# if alpha == screen_filter_min_alpha:
|
||||||
|
# return
|
||||||
|
screen_filter_min_alpha = alpha
|
||||||
|
set_screen_filter_alpha(screen_filter_alpha_scale)
|
||||||
|
|
||||||
|
func set_screen_filter_alpha(alpha: float):
|
||||||
|
# if alpha == screen_filter_alpha_scale:
|
||||||
|
# return
|
||||||
|
# Scale to minimum alpha
|
||||||
|
var new_alpha = lerp(screen_filter_min_alpha, 1.0, alpha)
|
||||||
|
if new_alpha != screen_filter.a:
|
||||||
|
screen_filter = Color(screen_filter.r, screen_filter.g, screen_filter.b, new_alpha)
|
||||||
|
emit_signal("screen_filter_changed", screen_filter)
|
||||||
|
|
||||||
var receptor_color := Color.blue
|
var receptor_color := Color.blue
|
||||||
var bezel_color := Color.black if not Engine.editor_hint else Color.red
|
var bezel_color := Color.black if not Engine.editor_hint else Color.red
|
||||||
|
|
||||||
|
@ -158,13 +176,6 @@ var slide_trail_alpha := 0.88
|
||||||
var RADIAL_COL_ANGLES := PoolRealArray() # ideally const
|
var RADIAL_COL_ANGLES := PoolRealArray() # ideally const
|
||||||
var RADIAL_UNIT_VECTORS := PoolVector2Array() # ideally const
|
var RADIAL_UNIT_VECTORS := PoolVector2Array() # ideally const
|
||||||
|
|
||||||
func set_screen_filter_alpha(alpha: float):
|
|
||||||
# Scale to minimum alpha
|
|
||||||
var new_alpha = lerp(screen_filter_min_alpha, 1.0, alpha)
|
|
||||||
if new_alpha != screen_filter.a:
|
|
||||||
screen_filter = Color(screen_filter.r, screen_filter.g, screen_filter.b, new_alpha)
|
|
||||||
emit_signal("screen_filter_changed")
|
|
||||||
|
|
||||||
var radial_values_initialized := false
|
var radial_values_initialized := false
|
||||||
func init_radial_values():
|
func init_radial_values():
|
||||||
for i in range(Rules.COLS):
|
for i in range(Rules.COLS):
|
||||||
|
|
Loading…
Reference in New Issue