extends "res://scripts/player.gd"
|
|
|
|
var time = 0
|
|
|
|
func _ready():
|
|
._ready()
|
|
read_recording()
|
|
|
|
func _physics_process(delta):
|
|
time += delta
|
|
|
|
func _integrate_forces(state):
|
|
play_keys(state)
|
|
|
|
func read_recording():
|
|
|
|
# Gather all existing recordings
|
|
var possible = []
|
|
var begin = "%d-%d" % [player_info.level, player_info.hero]
|
|
var path = "res://recordings/"
|
|
var dir = Directory.new()
|
|
dir.open(path)
|
|
dir.list_dir_begin()
|
|
while true:
|
|
var fname = dir.get_next()
|
|
print(fname)
|
|
if fname == "":
|
|
# Indicates end of directory
|
|
break
|
|
if fname.begins_with(begin):
|
|
possible.append(fname)
|
|
dir.list_dir_end()
|
|
|
|
# Now pick a random one
|
|
var fname = possible[randi() % possible.size()]
|
|
|
|
# Read the file into recording.events for later use
|
|
var frec = File.new()
|
|
frec.open(path + fname, File.READ)
|
|
recording = parse_json(frec.get_as_text())
|
|
frec.close()
|
|
|
|
func play_keys(phys_state):
|
|
# states[0] is first state
|
|
# states[0][0] is first state's time
|
|
while float(recording[0][0]) <= time:
|
|
# states[0][1] is first state's STATE
|
|
var state = recording.pop_front()[1]
|
|
for i in range(state.size()):
|
|
state[i] = str2var(state[i])
|
|
set_status(state)
|
|
phys_state.integrate_forces()
|