2020-09-14 15:21:59 +00:00
|
|
|
extends Node2D
|
|
|
|
|
2020-09-17 17:44:48 +00:00
|
|
|
|
2020-09-14 15:21:59 +00:00
|
|
|
export var screen_size := Vector2(480, 270)
|
|
|
|
|
|
|
|
var _grid_active_cell_origin := Vector2.ZERO
|
|
|
|
|
|
|
|
var latest_checkpoint:CheckPoint = null
|
|
|
|
|
|
|
|
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
|
|
_update_camera(delta)
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2020-09-28 21:18:07 +00:00
|
|
|
AudioManager.play_music(AudioManager.Music.Abandon)
|
2020-09-14 15:21:59 +00:00
|
|
|
for coin in $Coins.get_children():
|
|
|
|
coin.connect("collected", self, "_on_coin_collected")
|
|
|
|
for checkpoint in $Checkpoints.get_children():
|
|
|
|
checkpoint.connect("activated", self, "_on_checkpoint_activated")
|
|
|
|
|
|
|
|
func _on_coin_collected(amount:int):
|
|
|
|
$HUD.on_coin_collected(amount)
|
|
|
|
|
|
|
|
func _on_checkpoint_activated(cp:CheckPoint):
|
|
|
|
if latest_checkpoint != null and latest_checkpoint != cp:
|
|
|
|
latest_checkpoint.deactivate()
|
|
|
|
latest_checkpoint = cp
|
|
|
|
$Player.respawn_position = cp.global_position
|
|
|
|
|
|
|
|
func _update_camera(delta:float) -> void:
|
|
|
|
var player_position = $Player.position
|
|
|
|
var camera_position = $Camera2D.position
|
|
|
|
var desired_camera_position = Vector2(
|
|
|
|
floor(player_position.x / screen_size.x) * screen_size.x,
|
|
|
|
floor(player_position.y / screen_size.y) * screen_size.y)
|
|
|
|
if camera_position != desired_camera_position:
|
|
|
|
_grid_active_cell_origin = desired_camera_position
|
|
|
|
$Camera2D.update_grid_position(desired_camera_position)
|
|
|
|
|
|
|
|
func _on_Player_landed(position:Vector2) -> void:
|
2020-09-17 17:44:48 +00:00
|
|
|
pass
|
2020-09-14 15:21:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
func _on_Player_jumping(position:Vector2) -> void:
|
2020-09-17 17:44:48 +00:00
|
|
|
pass
|