diff --git a/scripts/ai.gd b/scripts/ai.gd index 1c7b345..9ecd2ce 100644 --- a/scripts/ai.gd +++ b/scripts/ai.gd @@ -2,19 +2,25 @@ extends Node var recording var time +var set_spawn = true func _ready(): if is_network_master(): print("readdyyyyy") read_recording() time = 0 - get_node("..").set_translation(str2var(recording.spawn)) set_physics_process(true) func _physics_process(delta): if is_network_master(): - time += delta + if set_spawn: + get_node("..").set_translation(str2var(recording.spawn)) + print(get_node("..").get_translation()) + set_spawn = false play_keys() + # It's actually better to do this 2nd + # Since input is, on average, called 1/2way through a frame + time += delta func read_recording(): @@ -27,7 +33,6 @@ func read_recording(): dir.list_dir_begin() while true: var fname = dir.get_next() - print(fname) if fname == "": # Indicates end of directory break @@ -65,7 +70,7 @@ func play_keys(): # events[0] is first event # events[0][0] is first event's TIME while float(recording.events[0][0]) <= time: - # events[0][1] is first event's EVENT2 + # events[0][1] is first event's EVENT var event_obj = recording.events.pop_front()[1] var event = obj_to_event(event_obj) Input.parse_input_event(event) diff --git a/scripts/player.gd b/scripts/player.gd index 138a4bb..3bc9022 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -31,6 +31,8 @@ slave var slave_ang_v = Vector3() var tp_camera = "TPCamera" var master_only = "MasterOnly" +var ai_instanced = false + func _ready(): set_process_input(true) @@ -38,11 +40,11 @@ func _ready(): if is_network_master(): get_node(tp_camera).set_enabled(true) spawn() + if "is_ai" in player_info and player_info.is_ai and not ai_instanced: + add_child(preload("res://scenes/ai.tscn").instance()) + ai_instanced = true else: remove_child(get_node(master_only)) - - if "is_ai" in player_info and player_info.is_ai: - add_child(preload("res://scenes/ai.tscn").instance()) func spawn(): var placement = Vector3() @@ -71,6 +73,7 @@ func event_to_obj(event): if event is InputEventKey: d.scancode = event.scancode d.pressed = event.pressed + d.echo = event.echo d.type = "key" if event is InputEventMouseButton: d.button_index = event.button_index @@ -196,9 +199,6 @@ func _process(delta): if "record" in player_info: recording.time += delta - if "record" in player_info: - recording.time += delta - func switch_hero_interface(): if switch_charge >= 100: # Interface needs the mouse! @@ -246,6 +246,4 @@ func write_recording(): # Quits the game: func quit(): - if "record" in player_info: - write_recording() get_tree().quit()