wh y f a lling dot s
bendn 2022-02-28
parent 2bbf0d9 · commit 7bffdc2
-rw-r--r--World.gd3
-rw-r--r--dots/YellowDot.gd1
-rw-r--r--dots/dot.gd11
-rw-r--r--dots/dot_extras/dotcollider.tscn2
-rw-r--r--dots/dot_template.tscn3
-rw-r--r--dots/plain_dot.gd7
-rw-r--r--dots/plain_dot.tscn8
-rw-r--r--dots/reddot.gd5
-rw-r--r--dots/reddot.tscn6
-rw-r--r--dots/yellowdot.tscn6
-rw-r--r--global_vars.gd1
-rw-r--r--leveldata.gd4
-rw-r--r--leveldata.tscn7
-rw-r--r--project.godot3
14 files changed, 38 insertions, 29 deletions
diff --git a/World.gd b/World.gd
index 1f1ce1f..acc4e8e 100644
--- a/World.gd
+++ b/World.gd
@@ -10,8 +10,7 @@ var h = GlobalVars.height
var w = GlobalVars.width
var dots = {
- "yellowdot" : load(dots_path + "yellowdot.tscn"),
- "reddot" : load(dots_path + "reddot.tscn")
+ "dot" : load(dots_path + "plain_dot.tscn"),
}
func _ready():
diff --git a/dots/YellowDot.gd b/dots/YellowDot.gd
deleted file mode 100644
index a5b88f0..0000000
--- a/dots/YellowDot.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends dot
diff --git a/dots/dot.gd b/dots/dot.gd
index d7b915e..7383686 100644
--- a/dots/dot.gd
+++ b/dots/dot.gd
@@ -1,4 +1,4 @@
-extends KinematicBody2D
+extends Area2D
class_name dot
var dotCollider = preload("res://dots/dot_extras/dotcollider.tscn" )
@@ -8,19 +8,20 @@ onready var ray : RayCast2D
var tween = Tween.new()
-export(Color) var color
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)
- $dotsprite.change_color(color)
func move():
if ! GlobalVars.state == GlobalVars.states.level_turn:
@@ -38,8 +39,9 @@ func extend_ray_until_collides() -> Vector2:
ray.cast_to.y += 1
ray.force_raycast_update()
var size = ray.cast_to.y
- print(ray.get_collider())
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 turn_off_collision():
@@ -47,4 +49,3 @@ func turn_off_collision():
func _on_dot_input(viewport, event : InputEvent, shape_idx):
InputHandler._pressed(event, self)
-
diff --git a/dots/dot_extras/dotcollider.tscn b/dots/dot_extras/dotcollider.tscn
index 0ef1a53..967837d 100644
--- a/dots/dot_extras/dotcollider.tscn
+++ b/dots/dot_extras/dotcollider.tscn
@@ -13,3 +13,5 @@ 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_template.tscn b/dots/dot_template.tscn
index 5902e02..d921bcd 100644
--- a/dots/dot_template.tscn
+++ b/dots/dot_template.tscn
@@ -3,10 +3,9 @@
[ext_resource path="res://dots/dot.gd" type="Script" id=1]
[ext_resource path="res://dots/dot_extras/dotsprite.tscn" type="PackedScene" id=2]
-[node name="dot_template" type="KinematicBody2D"]
+[node name="dot_template" type="Area2D"]
collision_layer = 2
collision_mask = 0
-input_pickable = true
script = ExtResource( 1 )
[node name="dotsprite" parent="." instance=ExtResource( 2 )]
diff --git a/dots/plain_dot.gd b/dots/plain_dot.gd
new file mode 100644
index 0000000..d124ccb
--- /dev/null
+++ b/dots/plain_dot.gd
@@ -0,0 +1,7 @@
+extends dot
+
+
+func _ready():
+ randomize()
+ var i = randi() % Leveldata.dot_colors.size()
+ $dotsprite.change_color(Leveldata.dot_colors[i])
diff --git a/dots/plain_dot.tscn b/dots/plain_dot.tscn
new file mode 100644
index 0000000..7d6ab4c
--- /dev/null
+++ b/dots/plain_dot.tscn
@@ -0,0 +1,8 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://dots/dot_template.tscn" type="PackedScene" id=1]
+[ext_resource path="res://dots/plain_dot.gd" type="Script" id=2]
+
+[node name="plain_dot" instance=ExtResource( 1 )]
+script = ExtResource( 2 )
+color = null
diff --git a/dots/reddot.gd b/dots/reddot.gd
deleted file mode 100644
index 05c5a2c..0000000
--- a/dots/reddot.gd
+++ /dev/null
@@ -1,5 +0,0 @@
-extends "res://dots/dot.gd"
-
-
-func _ready():
- pass
diff --git a/dots/reddot.tscn b/dots/reddot.tscn
deleted file mode 100644
index 46826f3..0000000
--- a/dots/reddot.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=2]
-
-[ext_resource path="res://dots/dot_template.tscn" type="PackedScene" id=1]
-
-[node name="reddot" instance=ExtResource( 1 )]
-color = Color( 1, 0.407843, 0.407843, 1 )
diff --git a/dots/yellowdot.tscn b/dots/yellowdot.tscn
deleted file mode 100644
index 9f7549a..0000000
--- a/dots/yellowdot.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=2]
-
-[ext_resource path="res://dots/dot_template.tscn" type="PackedScene" id=1]
-
-[node name="yellowdot" instance=ExtResource( 1 )]
-color = Color( 1, 0.831373, 0.25098, 1 )
diff --git a/global_vars.gd b/global_vars.gd
index 5847804..ec38b06 100644
--- a/global_vars.gd
+++ b/global_vars.gd
@@ -7,6 +7,5 @@ enum states {player_turn, level_turn}
var turns_used = 0
var state = states.level_turn
-
const height = 8
const width = 8
diff --git a/leveldata.gd b/leveldata.gd
new file mode 100644
index 0000000..63fe965
--- /dev/null
+++ b/leveldata.gd
@@ -0,0 +1,4 @@
+extends Node
+
+export(PoolColorArray) var dot_colors
+export(Color) var background_collor
diff --git a/leveldata.tscn b/leveldata.tscn
new file mode 100644
index 0000000..d78560c
--- /dev/null
+++ b/leveldata.tscn
@@ -0,0 +1,7 @@
+[gd_scene load_steps=2 format=2]
+
+[ext_resource path="res://leveldata.gd" type="Script" id=1]
+
+[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 )
diff --git a/project.godot b/project.godot
index 3bfe32f..d628b7b 100644
--- a/project.godot
+++ b/project.godot
@@ -9,7 +9,7 @@
config_version=4
_global_script_classes=[ {
-"base": "KinematicBody2D",
+"base": "Area2D",
"class": "dot",
"language": "GDScript",
"path": "res://dots/dot.gd"
@@ -31,6 +31,7 @@ Utils="*res://utils.gd"
Events="*res://events.gd"
EntityTracker="*res://entity_tracker.gd"
InputHandler="*res://InputHandler.tscn"
+Leveldata="*res://leveldata.tscn"
[debug]