| -rw-r--r-- | World.gd | 18 | ||||
| -rw-r--r-- | dots/dot.gd | 35 | ||||
| -rw-r--r-- | dots/dot_extras/dotcollider.gd | 7 | ||||
| -rw-r--r-- | dots/dot_extras/dotcollider.tscn | 17 | ||||
| -rw-r--r-- | dots/dot_extras/dotray.tscn | 7 | ||||
| -rw-r--r-- | dots/dot_extras/dotsprite.gd | 4 | ||||
| -rw-r--r-- | dots/dot_extras/dotsprite.tscn | 14 | ||||
| -rw-r--r-- | dots/dot_template.tscn | 25 | ||||
| -rw-r--r-- | dots/plain_dot.gd | 3 | ||||
| -rw-r--r-- | dots/plain_dot.tscn | 1 | ||||
| -rw-r--r-- | input_handler.gd | 3 | ||||
| -rw-r--r-- | leveldata.gd | 3 | ||||
| -rw-r--r-- | leveldata.tscn | 5 |
13 files changed, 48 insertions, 94 deletions
@@ -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 ) ] |