fix naming convention
This commit is contained in:
58
race_track.gd
Normal file
58
race_track.gd
Normal file
@@ -0,0 +1,58 @@
|
||||
extends Node
|
||||
|
||||
signal player_moved(track_offset)
|
||||
signal wrong_way(coords)
|
||||
|
||||
# TODO:
|
||||
# - Find a mean to import tracks (arrays of cell coordinates).
|
||||
# ( - Autopopulate the map according to track data )
|
||||
# - Build the track Curve2D from track and tiles data
|
||||
# - Keyboard controls !!
|
||||
|
||||
var laps
|
||||
var current_cell
|
||||
var track = null
|
||||
onready var map = $TileMap
|
||||
|
||||
func get_track_offset(coords):
|
||||
var offset = float(track.find(coords)) / float(len(track))
|
||||
return offset
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
TrackSelection.connect("track_changed", self, "_reset_state")
|
||||
_reset_state()
|
||||
|
||||
func _reset_state():
|
||||
track = TrackSelection.get_current_track()
|
||||
laps = 0
|
||||
current_cell = track[0]
|
||||
|
||||
|
||||
func _input(event):
|
||||
if not Global.race_started:
|
||||
return -1
|
||||
# Check if the mouse if following the tiles track
|
||||
if event is InputEventMouseMotion:
|
||||
var hover_cell = map.world_to_map(event.position)
|
||||
if hover_cell != current_cell: # The mouse moved to a new cell
|
||||
# Check the tile is on path
|
||||
if track.find(hover_cell) != -1:
|
||||
# Check if a lap is finished
|
||||
if hover_cell == track[0] and current_cell == track[-1]:
|
||||
laps += 1
|
||||
# Check we are following the path
|
||||
if track[track.find(hover_cell) - 1] == current_cell:
|
||||
emit_signal("player_moved", laps + get_track_offset(hover_cell))
|
||||
emit_signal("wrong_way", Vector2(-1, -1))
|
||||
current_cell = hover_cell
|
||||
else:
|
||||
emit_signal("wrong_way", map.map_to_world(hover_cell))
|
||||
|
||||
func _on_Menu_track_changed():
|
||||
print("Options clicked")
|
||||
TrackSelection.set_next_track()
|
||||
_reset_state()
|
||||
$TileMap._reset()
|
||||
$TrackPath._reset()
|
||||
|
||||
Reference in New Issue
Block a user