Wire up sfx, Sega Master System palette for win/end screen, add start screen
This commit is contained in:
parent
2f1437050a
commit
710ae4268f
13 changed files with 161 additions and 40 deletions
|
|
@ -2,15 +2,16 @@ extends CharacterBody3D
|
|||
|
||||
const STALK_DARK_DISTANCE := 19.0
|
||||
const STALK_ILLUMINATE_DISTANCE := 15.0
|
||||
const WALK_IN_DURATION := 1.5
|
||||
|
||||
var robot_ready: bool = false
|
||||
var robot_win: bool = false
|
||||
var speed: float = 1.0
|
||||
var doors_open: bool = true
|
||||
var stun_remaining: float = 0.0
|
||||
var _stalking_close: bool = false
|
||||
var _walk_in_remaining: float = 0.0
|
||||
var _game_lost_emitted: bool = false
|
||||
|
||||
var _delay_remaining: float = 0.0
|
||||
var _spawn_transform: Transform3D
|
||||
|
||||
var safety_zone: Area3D
|
||||
|
|
@ -30,21 +31,19 @@ func _on_floor_started(delay: float, new_speed: float) -> void:
|
|||
velocity = Vector3.ZERO
|
||||
stun_remaining = 0.0
|
||||
speed = new_speed
|
||||
_delay_remaining = delay
|
||||
robot_ready = false
|
||||
|
||||
func _physics_process(delta):
|
||||
|
||||
stalking_check()
|
||||
|
||||
if robot_win:
|
||||
return
|
||||
|
||||
if not robot_ready:
|
||||
if _delay_remaining > 0.0:
|
||||
_delay_remaining -= delta
|
||||
if _delay_remaining <= 0.0:
|
||||
robot_ready = true
|
||||
stalking_check()
|
||||
|
||||
if robot_win:
|
||||
velocity = Vector3(0, 0, -speed)
|
||||
move_and_slide()
|
||||
if not _game_lost_emitted:
|
||||
_walk_in_remaining -= delta
|
||||
if _walk_in_remaining <= 0.0:
|
||||
_game_lost_emitted = true
|
||||
EventBus.game_lost.emit("ROBOT GOT IN")
|
||||
return
|
||||
|
||||
if stun_remaining > 0.0:
|
||||
|
|
@ -59,14 +58,12 @@ func _physics_process(delta):
|
|||
|
||||
func _on_area_3d_area_entered(area: Area3D) -> void:
|
||||
var safety = safety_zone
|
||||
if area == safety and doors_open:
|
||||
if area == safety and doors_open and not robot_win:
|
||||
robot_win = true
|
||||
EventBus.game_lost.emit(Strings.LOSS_ROBOT)
|
||||
_walk_in_remaining = WALK_IN_DURATION
|
||||
|
||||
func stalking_check():
|
||||
if safety_zone == null:
|
||||
return
|
||||
|
||||
|
||||
var robot_position = self.global_transform.origin
|
||||
var elevator = safety_zone.global_transform.origin
|
||||
var distance = robot_position.distance_to(elevator)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue