$sprite.width/2: + remove_collision_exception_with(leaving_machine) + leaving_machine = null + return + + var direction = Vector2(0, 0) + for i in len(foot_vectors): + var vec = beltmap.world_to_map(position + foot_vectors[i].rotated(rotation)) + var celltype = beltmap.get_cell(vec.x, vec.y) + if celltype >= 0 and celltype != 4: + direction += dir_vectors[get_belt_direction(vec.x, vec.y)] * foot_weights[i] + direction /= total_weight*0.5 + direction.x = clamp(direction.x, -1, 1) + direction.y = clamp(direction.y, -1, 1) + move_and_slide(direction * belt_speed) + + if held: # Cursor drag code + var ggv = to_global(grabbed_vector) + var dv = get_global_mouse_position() - ggv + var dvn = dv.normalized() + var dvm = dv.length() + var velo = dvn * min(dvm*dvm, max_speed) +# move_and_slide(dvn * min(dvm*dvm, max_speed)) # Simple movement + var collision = move_and_collide(velo*delta) + if collision and collision.remainder.length_squared()>0: + if collision.collider is KinematicBody2D: + var col2 = collision.collider.move_and_collide(collision.remainder) + if col2 and col2.remainder.length_squared()>0: + if col2.collider is KinematicBody2D: + col2.collider.move_and_collide(col2.remainder) + collision.collider.move_and_collide(col2.remainder) + move_and_collide(col2.remainder) + move_and_collide(collision.remainder) + else: + move_and_collide(collision.remainder.slide(collision.normal)) + + +func _input(event): + if entering_machine or leaving_machine: + return + if event is InputEventMouseButton: + if not event.pressed: + held = false + elif $sprite.get_rect().has_point(to_local(event.position)): + held = true + grabbed_vector = to_local(event.position) + + +func enter_machine(machine): + add_collision_exception_with(machine) + entering_machine = machine + held = false + +func leave_machine(machine): + add_collision_exception_with(machine) + leaving_machine = machine diff --git a/objects/BigLadder.tscn b/objects/BigLadder.tscn index 9cd142d..8f5e033 100644 --- a/objects/BigLadder.tscn +++ b/objects/BigLadder.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://kb2dladder.gd" type="Script" id=1] +[ext_resource path="res://object.gd" type="Script" id=1] [ext_resource path="res://assets/sprites/iron_ladder4.tres" type="Texture" id=2] [node name="BigLadder" type="KinematicBody2D"] input_pickable = true script = ExtResource( 1 ) +material_type = 5 [node name="CS2D" type="CollisionPolygon2D" parent="."] polygon = PoolVector2Array( -24, -7, -24, 7, 24, 7, 24, -7 ) diff --git a/objects/IronOre.tscn b/objects/IronOre.tscn index 9bd75c8..379b28e 100644 --- a/objects/IronOre.tscn +++ b/objects/IronOre.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://kb2dladder.gd" type="Script" id=1] +[ext_resource path="res://object.gd" type="Script" id=1] [ext_resource path="res://assets/sprites/iron_ore.tres" type="Texture" id=2] [node name="IronOre" type="KinematicBody2D"] diff --git a/objects/IronRod.tscn b/objects/IronRod.tscn index 2b6b1f4..c758dbf 100644 --- a/objects/IronRod.tscn +++ b/objects/IronRod.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://kb2dladder.gd" type="Script" id=1] +[ext_resource path="res://object.gd" type="Script" id=1] [ext_resource path="res://assets/sprites/iron_rod.tres" type="Texture" id=2] [node name="IronRod" type="KinematicBody2D"] input_pickable = true script = ExtResource( 1 ) +material_type = 2 rungs = 3 cx = 2.35 cy = 2.0 diff --git a/objects/IronStock.tscn b/objects/IronStock.tscn index e16986b..7265792 100644 --- a/objects/IronStock.tscn +++ b/objects/IronStock.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://kb2dladder.gd" type="Script" id=1] +[ext_resource path="res://object.gd" type="Script" id=1] [ext_resource path="res://assets/sprites/iron_stock.tres" type="Texture" id=2] [node name="IronStock" type="KinematicBody2D"] input_pickable = true script = ExtResource( 1 ) +material_type = 1 rungs = 3 cx = 2.35 cy = 3.0 diff --git a/objects/MedLadder.tscn b/objects/MedLadder.tscn index 0a717ec..84c5249 100644 --- a/objects/MedLadder.tscn +++ b/objects/MedLadder.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://kb2dladder.gd" type="Script" id=1] +[ext_resource path="res://object.gd" type="Script" id=1] [ext_resource path="res://assets/sprites/iron_ladder2.tres" type="Texture" id=2] [node name="MedLadder" type="KinematicBody2D"] input_pickable = true script = ExtResource( 1 ) +material_type = 4 rungs = 7 [node name="CS2D" type="CollisionPolygon2D" parent="."] diff --git a/objects/SmallLadder.tscn b/objects/SmallLadder.tscn index aebe39f..2d175a9 100644 --- a/objects/SmallLadder.tscn +++ b/objects/SmallLadder.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://kb2dladder.gd" type="Script" id=1] +[ext_resource path="res://object.gd" type="Script" id=1] [ext_resource path="res://assets/sprites/iron_ladder.tres" type="Texture" id=2] [node name="SmallLadder" type="KinematicBody2D"] input_pickable = true script = ExtResource( 1 ) +material_type = 3 rungs = 3 cx = 2.35 diff --git a/project.godot b/project.godot index 93f7f11..90ab3c5 100644 --- a/project.godot +++ b/project.godot @@ -19,9 +19,17 @@ config/name="LD46" run/main_scene="res://Main.tscn" config/icon="res://icon.png" +[autoload] + +Constants="*res://constants.gd" + [debug] settings/fps/force_fps=60 +gdscript/warnings/unused_variable=false +gdscript/warnings/unused_argument=false +gdscript/warnings/unused_signal=false +gdscript/warnings/return_value_discarded=false [display] diff --git a/spritesheet.png b/spritesheet.png index 784127b..ad2ec43 100644 Binary files a/spritesheet.png and b/spritesheet.png differ diff --git a/spritesheet.xcf b/spritesheet.xcf index 0322659..daec6a8 100644 Binary files a/spritesheet.xcf and b/spritesheet.xcf differ