Browse Source

Fix AI going twice as slow

master
Luna 7 years ago
parent
commit
b0358efb20
2 changed files with 15 additions and 12 deletions
  1. +9
    -4
      scripts/ai.gd
  2. +6
    -8
      scripts/player.gd

+ 9
- 4
scripts/ai.gd View File

@ -2,19 +2,25 @@ extends Node
var recording var recording
var time var time
var set_spawn = true
func _ready(): func _ready():
if is_network_master(): if is_network_master():
print("readdyyyyy") print("readdyyyyy")
read_recording() read_recording()
time = 0 time = 0
get_node("..").set_translation(str2var(recording.spawn))
set_physics_process(true) set_physics_process(true)
func _physics_process(delta): func _physics_process(delta):
if is_network_master(): 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() 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(): func read_recording():
@ -27,7 +33,6 @@ func read_recording():
dir.list_dir_begin() dir.list_dir_begin()
while true: while true:
var fname = dir.get_next() var fname = dir.get_next()
print(fname)
if fname == "": if fname == "":
# Indicates end of directory # Indicates end of directory
break break
@ -65,7 +70,7 @@ func play_keys():
# events[0] is first event # events[0] is first event
# events[0][0] is first event's TIME # events[0][0] is first event's TIME
while float(recording.events[0][0]) <= 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 = recording.events.pop_front()[1]
var event = obj_to_event(event_obj) var event = obj_to_event(event_obj)
Input.parse_input_event(event) Input.parse_input_event(event)


+ 6
- 8
scripts/player.gd View File

@ -31,6 +31,8 @@ slave var slave_ang_v = Vector3()
var tp_camera = "TPCamera" var tp_camera = "TPCamera"
var master_only = "MasterOnly" var master_only = "MasterOnly"
var ai_instanced = false
func _ready(): func _ready():
set_process_input(true) set_process_input(true)
@ -38,11 +40,11 @@ func _ready():
if is_network_master(): if is_network_master():
get_node(tp_camera).set_enabled(true) get_node(tp_camera).set_enabled(true)
spawn() 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: else:
remove_child(get_node(master_only)) 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(): func spawn():
var placement = Vector3() var placement = Vector3()
@ -71,6 +73,7 @@ func event_to_obj(event):
if event is InputEventKey: if event is InputEventKey:
d.scancode = event.scancode d.scancode = event.scancode
d.pressed = event.pressed d.pressed = event.pressed
d.echo = event.echo
d.type = "key" d.type = "key"
if event is InputEventMouseButton: if event is InputEventMouseButton:
d.button_index = event.button_index d.button_index = event.button_index
@ -196,9 +199,6 @@ func _process(delta):
if "record" in player_info: if "record" in player_info:
recording.time += delta recording.time += delta
if "record" in player_info:
recording.time += delta
func switch_hero_interface(): func switch_hero_interface():
if switch_charge >= 100: if switch_charge >= 100:
# Interface needs the mouse! # Interface needs the mouse!
@ -246,6 +246,4 @@ func write_recording():
# Quits the game: # Quits the game:
func quit(): func quit():
if "record" in player_info:
write_recording()
get_tree().quit() get_tree().quit()

Loading…
Cancel
Save