summaryrefslogtreecommitdiff
path: root/Units/default.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Units/default.gd')
-rw-r--r--Units/default.gd49
1 files changed, 49 insertions, 0 deletions
diff --git a/Units/default.gd b/Units/default.gd
new file mode 100644
index 0000000..23987c3
--- /dev/null
+++ b/Units/default.gd
@@ -0,0 +1,49 @@
+class_name UnitDefault
+extends Unit
+
+
+var speed := 1000.0
+var direction := Vector2.RIGHT
+
+
+func _physics_process(delta: float) -> void:
+ if not is_on_floor():
+ velocity.x = 0
+ velocity += get_gravity() * delta * Game.speed
+ $AnimatedSprite.play("fall")
+
+ if $RayLeft.is_colliding():
+ direction = Vector2.RIGHT
+ elif $RayRight.is_colliding():
+ direction = Vector2.LEFT
+
+ if is_on_floor():
+ velocity.x = direction.x * speed * delta * Game.speed
+
+ $AnimatedSprite.play("walk")
+ $AnimatedSprite.flip_h = direction.x < 0
+
+ move_and_slide()
+ var collision = get_last_slide_collision()
+ if collision:
+ var collider = collision.get_collider() as TileMapLayer
+ if collider is TileMapLayer:
+ var cell = collider.get_cell_tile_data(collider.get_coords_for_body_rid(collision.get_collider_rid())) as TileData
+ cell.set_collision_polygon_points(0, 0, PackedVector2Array([
+ Vector2(-7,-7), Vector2(-7,7), Vector2(7,7), Vector2(7,-7)
+ ]))
+
+
+func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int) -> void:
+ if event.is_action_pressed("select"):
+ get_viewport().set_input_as_handled()
+ var blocker = preload("res://Units/Blocker.tscn").instantiate()
+ blocker.position = global_position
+ get_tree().current_scene.add_child(blocker)
+ queue_free()
+ if event.is_action_pressed("select2"):
+ get_viewport().set_input_as_handled()
+ var blocker = preload("res://Units/Digger.tscn").instantiate()
+ blocker.position = global_position
+ get_tree().current_scene.add_child(blocker)
+ queue_free()