Skip to content

Commit

Permalink
sudoku button + checkpoint
Browse files Browse the repository at this point in the history
bad programming
  • Loading branch information
AmossGuy committed May 9, 2023
1 parent 642d59d commit c346619
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 8 deletions.
10 changes: 10 additions & 0 deletions checkpoint_hack_please_refactor.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
extends Node

var scene: String = ""
var player_start: NodePath = ""

func _process(_delta: float) -> void:
var current_scene = get_tree().current_scene.scene_file_path
if current_scene != scene:
scene = current_scene
player_start = ""
19 changes: 16 additions & 3 deletions level_manager.gd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
extends Node2D

var player_start: Node2D = null
var player_start: NodePath = ""

# dog handles applying these currently
@export var camera_left: int = -10000000
Expand All @@ -9,8 +9,12 @@ var player_start: Node2D = null
@export var camera_bottom: int = 10000000

func _ready() -> void:
if is_instance_valid(player_start):
var player: Node2D = player_start.spawn_player()
var kkkkkkkkk := CheckpointHackPleaseRefactor.player_start
if str(kkkkkkkkk) != "":
player_start = kkkkkkkkk
var player_start_node := get_node(player_start)
if is_instance_valid(player_start_node):
var player: Node2D = player_start_node.spawn_player()
var hud := preload("res://hud.tscn").instantiate()
add_child(hud)
player.get_node("health").connect("health_changed", hud.update_health)
Expand All @@ -23,3 +27,12 @@ func _input(event: InputEvent) -> void:
get_viewport().set_input_as_handled()
get_tree().paused = true
add_child(preload("res://misc/pause_menu.tscn").instantiate())

func restart_from_checkpoint() -> void:
var tree := get_tree()
tree.reload_current_scene()
# tree.current_scene.player_start = self.player_start
var s := player_start
var AAAAAA := func():
tree.current_scene.player_start = s
AAAAAA.call_deferred()
13 changes: 12 additions & 1 deletion levels/test_checkpoints.tscn
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
[gd_scene load_steps=7 format=3 uid="uid://cii7o810u0665"]
[gd_scene load_steps=9 format=3 uid="uid://cii7o810u0665"]

[ext_resource type="Script" path="res://level_manager.gd" id="1_okl1l"]
[ext_resource type="TileSet" uid="uid://b28ltapshelnf" path="res://tilesets/placeholder.tres" id="2_uimbf"]
[ext_resource type="PackedScene" uid="uid://db48rlylh3q2p" path="res://objects/player_spawn.tscn" id="3_xioqf"]
[ext_resource type="PackedScene" uid="uid://bd8vhpj1hl0hq" path="res://objects/frisbee.tscn" id="4_031eq"]
[ext_resource type="PackedScene" uid="uid://d7mggav0wkdy" path="res://objects/e_dog.tscn" id="5_3tcnw"]
[ext_resource type="PackedScene" uid="uid://ctmd48hogdw2w" path="res://objects/checkpoint.tscn" id="6_f6gfn"]

[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_ocpcn"]

[sub_resource type="RectangleShape2D" id="RectangleShape2D_gyc7t"]
size = Vector2(64, 1024)

[node name="test_checkpoints" type="Node2D"]
script = ExtResource("1_okl1l")
camera_left = -64
Expand Down Expand Up @@ -53,6 +57,13 @@ position = Vector2(96, 16)
[node name="e_dog" parent="." instance=ExtResource("5_3tcnw")]
position = Vector2(200, 48)

[node name="checkpoint" parent="." node_paths=PackedStringArray("spawn") instance=ExtResource("6_f6gfn")]
position = Vector2(464, 0)
spawn = NodePath("../player_spawn2")

[node name="CollisionShape2D" type="CollisionShape2D" parent="checkpoint"]
shape = SubResource("RectangleShape2D_gyc7t")

[node name="player_spawn2" parent="." instance=ExtResource("3_xioqf")]
position = Vector2(464, 16)

Expand Down
8 changes: 8 additions & 0 deletions objects/checkpoint.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
extends Area2D

@export var spawn: Node2D

func _on_body_entered(body: Node2D) -> void:
if body.is_in_group("player"):
var thingy := get_tree().current_scene
CheckpointHackPleaseRefactor.player_start = thingy.get_path_to(spawn)
10 changes: 10 additions & 0 deletions objects/checkpoint.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[gd_scene load_steps=2 format=3 uid="uid://ctmd48hogdw2w"]

[ext_resource type="Script" path="res://objects/checkpoint.gd" id="1_rujm0"]

[node name="checkpoint" type="Area2D"]
collision_layer = 0
collision_mask = 2
script = ExtResource("1_rujm0")

[connection signal="body_entered" from="." to="." method="_on_body_entered"]
12 changes: 10 additions & 2 deletions objects/dog.gd
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ func _ready() -> void:
camera.limit_bottom = level_manager.camera_bottom

func _physics_process(delta: float) -> void:
var sudoku := false
if Input.is_action_just_pressed("debug_sudoku"):
sudoku = true

if invulnerability_timer > 0:
var interval := FLASH_INTERVAL
if invulnerability_timer <= INVULNERABILITY_TIME / 5:
Expand All @@ -44,10 +48,12 @@ func _physics_process(delta: float) -> void:
invulnerability_timer = max(invulnerability_timer, 0)
elif not state in [State.HURT, State.OOFED]:
$sprite.visible = true
if %hitbox.has_overlapping_areas():
if %hitbox.has_overlapping_areas() or sudoku:
velocity.x = -$sprite.scale.x * KNOCKBACK_FORCE_H
velocity.y = -KNOCKBACK_FORCE_V
$health.health -= 1
if sudoku:
$health.health = 0
if $health.health <= 0:
velocity.y *= 1.5
state = State.OOFED
Expand Down Expand Up @@ -145,5 +151,7 @@ func _physics_process(delta: float) -> void:

if state == State.OOFED:
if not $VisibleOnScreenNotifier2D.is_on_screen():
get_tree().create_timer(1.5, false).timeout.connect(get_tree().reload_current_scene)
get_tree().create_timer(1.5, false).timeout.connect(
get_tree().current_scene.restart_from_checkpoint
)
queue_free()
2 changes: 1 addition & 1 deletion objects/dog.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ size = Vector2(32, 22)

[node name="dog" type="CharacterBody2D" groups=["player"]]
z_index = 2
collision_layer = 0
collision_layer = 2
floor_constant_speed = true
floor_snap_length = 4.0
script = ExtResource("2")
Expand Down
4 changes: 3 additions & 1 deletion objects/player_spawn.gd
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ func _ready() -> void:

if not Engine.is_editor_hint():
if start:
get_tree().current_scene.player_start = self
var thingy := get_tree().current_scene
if str(thingy.player_start) == "":
thingy.player_start = thingy.get_path_to(self)

func spawn_player() -> Node2D:
var player := preload("res://objects/dog.tscn").instantiate()
Expand Down
10 changes: 10 additions & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ run/main_scene="res://menu.tscn"
config/features=PackedStringArray("4.0")
config/icon="res://icon.png"

[autoload]

CheckpointHackPleaseRefactor="*res://checkpoint_hack_please_refactor.gd"

[display]

window/size/viewport_width=426
Expand Down Expand Up @@ -150,10 +154,16 @@ pause={
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
]
}
debug_sudoku={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194312,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}

[layer_names]

2d_physics/layer_1="Solid"
2d_physics/layer_2="Detection"
2d_physics/layer_3="Harmful to Enemy"
2d_physics/layer_4="Harmful to Player"

Expand Down

0 comments on commit c346619

Please sign in to comment.