Files
CarRacer/TileMap.gd
2020-10-28 16:08:07 +01:00

54 lines
1.7 KiB
GDScript3

extends TileMap
signal player_moved(track_offset)
signal wrong_way(coords)
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# 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 !!
const TRACK_TILES = [
Vector2(1,0), Vector2(2,0), Vector2(3,0), Vector2(3,1),
Vector2(2,1), Vector2(1,1), Vector2(0,1), Vector2(0,0)
]
var laps = 0
var current_cell = TRACK_TILES[0]
func get_track_offset(coords):
var offset = float(TRACK_TILES.find(coords)) / float(len(TRACK_TILES))
return offset
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
func _input(event):
# Check if the mouse if following the tiles track
if event is InputEventMouseMotion:
var hover_cell = 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_TILES.find(hover_cell) != -1:
# Check if a lap is finished
if hover_cell == TRACK_TILES[0] and current_cell == TRACK_TILES[-1]:
laps += 1
get_node("/root/Node2D/GUI/Laps/Value/").set_text("%d" % laps)
# Check we are following the path
if TRACK_TILES[TRACK_TILES.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_to_world(hover_cell))
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass