once upon a time, it worked. now, it does not work
bendn 2022-03-01
parent 7bb9b96 · commit 807f089
-rw-r--r--World.gd18
-rw-r--r--dots/dot.gd35
-rw-r--r--dots/dot_extras/dotcollider.gd7
-rw-r--r--dots/dot_extras/dotcollider.tscn17
-rw-r--r--dots/dot_extras/dotray.tscn7
-rw-r--r--dots/dot_extras/dotsprite.gd4
-rw-r--r--dots/dot_extras/dotsprite.tscn14
-rw-r--r--dots/dot_template.tscn25
-rw-r--r--dots/plain_dot.gd3
-rw-r--r--dots/plain_dot.tscn1
-rw-r--r--input_handler.gd3
-rw-r--r--leveldata.gd3
-rw-r--r--leveldata.tscn5
13 files changed, 48 insertions, 94 deletions
diff --git a/World.gd b/World.gd
index acc4e8e..8548b55 100644
--- a/World.gd
+++ b/World.gd
@@ -9,18 +9,13 @@ var counted_done = 0
var h = GlobalVars.height
var w = GlobalVars.width
-var dots = {
- "dot" : load(dots_path + "plain_dot.tscn"),
-}
-
func _ready():
- spawn_dots(dots)
+ spawn_dots(Leveldata.dots)
Events.connect("done_moving", self, "_on_dot_done_moving")
Events.connect("dots_done_moving", self, "_dots_done_moving")
-func spawn_dots(library : Dictionary):
- var lib_size = library.keys().size()
- var lib_keys = library.keys()
+func spawn_dots(library : Array):
+ var lib_size = library.size()
for wi in w:
for hi in h:
var current_row_item
@@ -28,7 +23,7 @@ func spawn_dots(library : Dictionary):
current_row_item = EntityTracker.rows[hi][wi]
if current_row_item != 0:
continue
- var new_dot = choose_random_dot(lib_size, lib_keys, library)
+ var new_dot = choose_random_dot(lib_size, library)
EntityTracker.rows[hi].append(new_dot)
dots_holder.add_child(new_dot)
var offset = Vector2(GlobalVars.size.x * wi, GlobalVars.size.y * hi)
@@ -36,11 +31,10 @@ func spawn_dots(library : Dictionary):
new_dot.global_position = new_pos
Events.emit_signal("level_initialized")
-func choose_random_dot(lib_size, lib_keys, library) -> Array:
+func choose_random_dot(lib_size, library) -> Array:
randomize()
var rand_number = randi() % lib_size
- var lib_key = lib_keys[rand_number]
- var new_dot = library[lib_key].instance()
+ var new_dot = library[rand_number].instance()
return new_dot
func _on_dot_done_moving():
diff --git a/dots/dot.gd b/dots/dot.gd
index 7383686..5a5066e 100644
--- a/dots/dot.gd
+++ b/dots/dot.gd
@@ -1,10 +1,8 @@
extends Area2D
class_name dot
-var dotCollider = preload("res://dots/dot_extras/dotcollider.tscn" )
-
-onready var dotcollider : CollisionShape2D
-onready var ray : RayCast2D
+onready var dotcollider : CollisionShape2D = $dotcollider
+onready var ray : RayCast2D = $dotray
var tween = Tween.new()
@@ -13,39 +11,26 @@ export(GlobalVars.type) var dot_type
func _ready():
Events.connect("level_initialized", self, "move")
Events.connect("turn_over", self, "move")
- add_collider()
add_child(tween)
-func add_collider():
- var new_dotcollider = dotCollider.instance()
- add_child(new_dotcollider)
- dotcollider = new_dotcollider
- ray = dotcollider.get_ray()
- dotcollider.move_ray($dotsprite/pos.global_position)
-
func move():
- if ! GlobalVars.state == GlobalVars.states.level_turn:
- return
- var go_to = extend_ray_until_collides()
+ var go_to = get_collision_point()
+ print(go_to)
tween.interpolate_property(self, "global_position",
global_position, go_to, 2,
Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
tween.start()
Events.emit_signal("done_moving")
-func extend_ray_until_collides() -> Vector2:
- for i in get_viewport_rect().size.y:
- if not ray.is_colliding():
- ray.cast_to.y += 1
- ray.force_raycast_update()
- var size = ray.cast_to.y
- ray.cast_to = Vector2.ZERO
- print(ray.get_collider())
- print(global_position.x, global_position.y + size)
- return Vector2(global_position.x, global_position.y + size)
+func get_collision_point() -> Vector2:
+ ray.enabled = true
+ ray.force_raycast_update()
+ ray.enabled = false
+ return ray.get_collision_point()
func turn_off_collision():
dotcollider.disabled = true
+# warning-ignore-all:unused_argument
func _on_dot_input(viewport, event : InputEvent, shape_idx):
InputHandler._pressed(event, self)
diff --git a/dots/dot_extras/dotcollider.gd b/dots/dot_extras/dotcollider.gd
deleted file mode 100644
index bd3c227..0000000
--- a/dots/dot_extras/dotcollider.gd
+++ /dev/null
@@ -1,7 +0,0 @@
-extends CollisionShape2D
-
-func move_ray(position):
- $dotray.global_position = position
-
-func get_ray():
- return $dotray
diff --git a/dots/dot_extras/dotcollider.tscn b/dots/dot_extras/dotcollider.tscn
deleted file mode 100644
index 967837d..0000000
--- a/dots/dot_extras/dotcollider.tscn
+++ /dev/null
@@ -1,17 +0,0 @@
-[gd_scene load_steps=4 format=2]
-
-[ext_resource path="res://dots/dot_extras/dotray.tscn" type="PackedScene" id=1]
-[ext_resource path="res://dots/dot_extras/dotcollider.gd" type="Script" id=2]
-
-[sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 30, 30 )
-
-[node name="dotcollider" type="CollisionShape2D"]
-position = Vector2( 30, 30 )
-shape = SubResource( 1 )
-script = ExtResource( 2 )
-
-[node name="dotray" parent="." instance=ExtResource( 1 )]
-position = Vector2( 0, 32 )
-collide_with_areas = true
-collide_with_bodies = false
diff --git a/dots/dot_extras/dotray.tscn b/dots/dot_extras/dotray.tscn
deleted file mode 100644
index 9a95b1d..0000000
--- a/dots/dot_extras/dotray.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene format=2]
-
-[node name="dotray" type="RayCast2D"]
-position = Vector2( 30, 60 )
-enabled = true
-cast_to = Vector2( 0, 0 )
-collision_mask = 2
diff --git a/dots/dot_extras/dotsprite.gd b/dots/dot_extras/dotsprite.gd
deleted file mode 100644
index d77e17e..0000000
--- a/dots/dot_extras/dotsprite.gd
+++ /dev/null
@@ -1,4 +0,0 @@
-extends Sprite
-
-func change_color(color : Color):
- self_modulate = color
diff --git a/dots/dot_extras/dotsprite.tscn b/dots/dot_extras/dotsprite.tscn
deleted file mode 100644
index c3cfebb..0000000
--- a/dots/dot_extras/dotsprite.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://dot.png" type="Texture" id=1]
-[ext_resource path="res://dots/dot_extras/dotsprite.gd" type="Script" id=2]
-
-[node name="dotsprite" type="Sprite"]
-texture = ExtResource( 1 )
-centered = false
-script = ExtResource( 2 )
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-
-[node name="pos" type="Position2D" parent="."]
-position = Vector2( 30, 59 )
diff --git a/dots/dot_template.tscn b/dots/dot_template.tscn
index d921bcd..a450aa6 100644
--- a/dots/dot_template.tscn
+++ b/dots/dot_template.tscn
@@ -1,13 +1,32 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://dots/dot.gd" type="Script" id=1]
-[ext_resource path="res://dots/dot_extras/dotsprite.tscn" type="PackedScene" id=2]
+[ext_resource path="res://dot.png" type="Texture" id=2]
+
+[sub_resource type="RectangleShape2D" id=1]
+extents = Vector2( 35, 35 )
[node name="dot_template" type="Area2D"]
collision_layer = 2
collision_mask = 0
script = ExtResource( 1 )
-[node name="dotsprite" parent="." instance=ExtResource( 2 )]
+[node name="dotsprite" type="Sprite" parent="."]
+position = Vector2( 5, -65 )
+texture = ExtResource( 2 )
+centered = false
+
+[node name="dotcollider" type="CollisionShape2D" parent="."]
+visible = false
+position = Vector2( 35, -35 )
+shape = SubResource( 1 )
+
+[node name="dotray" type="RayCast2D" parent="."]
+position = Vector2( 0, -70 )
+enabled = true
+cast_to = Vector2( 0, 1000 )
+collision_mask = 2
+collide_with_areas = true
+collide_with_bodies = false
[connection signal="input_event" from="." to="." method="_on_dot_input"]
diff --git a/dots/plain_dot.gd b/dots/plain_dot.gd
index d124ccb..56f7f77 100644
--- a/dots/plain_dot.gd
+++ b/dots/plain_dot.gd
@@ -1,7 +1,6 @@
extends dot
-
func _ready():
randomize()
var i = randi() % Leveldata.dot_colors.size()
- $dotsprite.change_color(Leveldata.dot_colors[i])
+ $dotsprite.set_self_modulate(Leveldata.dot_colors[i])
diff --git a/dots/plain_dot.tscn b/dots/plain_dot.tscn
index 7d6ab4c..0a9f7b0 100644
--- a/dots/plain_dot.tscn
+++ b/dots/plain_dot.tscn
@@ -5,4 +5,3 @@
[node name="plain_dot" instance=ExtResource( 1 )]
script = ExtResource( 2 )
-color = null
diff --git a/input_handler.gd b/input_handler.gd
index b0f64c2..7d6bc65 100644
--- a/input_handler.gd
+++ b/input_handler.gd
@@ -9,6 +9,7 @@ onready var line = $Line2D
func _pressed(event : InputEvent, node : dot):
if not GlobalVars.state == GlobalVars.states.player_turn:
return
+ print("aloh")
if line.get_point_count() > 0:
if node.color == line.default_color:
if not node in nodes_with_points:
@@ -27,7 +28,7 @@ func _pressed(event : InputEvent, node : dot):
line.add_point(line.get_global_mouse_position())
line.default_color = node.color
-func _physics_process(delta):
+func _physics_process(_delta):
if line.get_point_count() > 0:
if Input.is_action_pressed("click") and pressed == true:
line.remove_point(line.get_point_count() - 1)
diff --git a/leveldata.gd b/leveldata.gd
index 6c17fd8..2f25b03 100644
--- a/leveldata.gd
+++ b/leveldata.gd
@@ -4,4 +4,7 @@ export(PoolColorArray) var dot_colors
export(Color) var background_color
func _ready():
+ randomize()
VisualServer.set_default_clear_color(background_color)
+
+export(Array, PackedScene) var dots
diff --git a/leveldata.tscn b/leveldata.tscn
index d78560c..b63b50d 100644
--- a/leveldata.tscn
+++ b/leveldata.tscn
@@ -1,7 +1,10 @@
-[gd_scene load_steps=2 format=2]
+[gd_scene load_steps=3 format=2]
[ext_resource path="res://leveldata.gd" type="Script" id=1]
+[ext_resource path="res://dots/plain_dot.tscn" type="PackedScene" id=2]
[node name="leveldata" type="Node"]
script = ExtResource( 1 )
dot_colors = PoolColorArray( 1, 0.211765, 0.211765, 1, 0.25098, 0.701961, 1, 1, 1, 0.792157, 0.235294, 1, 0.67451, 0.317647, 1, 1 )
+background_color = Color( 0.0352941, 0.168627, 0.403922, 1 )
+dots = [ ExtResource( 2 ) ]