adds track parser from txt files

This commit is contained in:
2020-11-03 00:47:59 +01:00
parent d5ad9b8e1c
commit 4f2a4768c8
31 changed files with 649 additions and 103 deletions

89
track_selection.gd Normal file
View File

@@ -0,0 +1,89 @@
extends Node
const TRACKS_PATH = "res://assets/tracks/"
var _tracks = [
[ Vector2(2, 1), Vector2(3, 1), Vector2(4, 1),
Vector2(4, 2), Vector2(3, 2), Vector2(2, 2), Vector2(1, 2), Vector2(1, 1),
],
[ Vector2(7,1), Vector2(8,1), Vector2(9,1), Vector2(9,2), Vector2(9,3),
Vector2(8,3), Vector2(7,3), Vector2(7,4), Vector2(7,5), Vector2(7,6),
Vector2(6,6), Vector2(6,5), Vector2(6,4), Vector2(6,3), Vector2(5,3),
Vector2(4,3), Vector2(4,2), Vector2(4,1), Vector2(5,1), Vector2(6,1), ],
]
var _selected : int = 1
func _ready():
_load_tracks()
func set_next_track():
_selected = wrapi(_selected + 1, 0, _tracks.size())
func set_previous_track():
_selected = wrapi(_selected - 1, 0, _tracks.size())
func get_current_track():
return _tracks[_selected]
func _load_tracks():
var loaded = []
for path in _find_track_files():
var file = File.new()
file.open(path, File.READ)
var track = _load_from_txt(file.get_as_text())
if track.size() > 1:
loaded.append(track)
else:
print("Error in track file : ", path)
if loaded:
print("Successfully loaded ", loaded.size(), " tracks.")
_tracks = loaded
func _load_from_txt(content):
var used_cells = []
var start
# Load the content
var lines = content.split("\n")
for y in range(0, lines.size()):
for x in range(0, lines[y].length()):
if lines[y][x] == "s":
start = Vector2(x,y)
elif lines[y][x] == "x":
used_cells.append(Vector2(x,y))
# Build an oriented path from start cell going right first
var path = [start]
while used_cells.size() > 0:
var next = __find_adjacent(path[-1], used_cells)
if next == -1:
print("Error while loading path. (Path is invalid)")
else:
path.append(used_cells[next])
used_cells.remove(next)
#print_debug("Loading map from txt. Starting at : ", start, " | Path : \n", path)
return path
func __find_adjacent(coords, cells):
for dir in [Vector2(1,0), Vector2(0,1), Vector2(-1,0), Vector2(0,-1)]:
var idx = cells.find(coords + dir)
if idx != -1:
return idx
return -1
func _find_track_files():
var tracks = []
var dir = Directory.new()
if dir.open(TRACKS_PATH) == OK:
dir.list_dir_begin(true, true)
while true:
var file = dir.get_next()
if file == "":
break
if file.ends_with(".txt"):
tracks.append(TRACKS_PATH + file)
return tracks
else:
print("An error occured while trying to load tracks. (Folder not found)")