diff --git a/scenes/player.tscn b/scenes/player.tscn index 34943f2..f31380c 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -82,7 +82,7 @@ proximity_fade_enable = false distance_fade_enable = false _sections_unfolded = [ "Albedo", "Flags", "Parameters", "Vertex Color" ] -[node name="RigidBody" type="RigidBody" groups=[ +[node name="RigidBody" type="RigidBody" index="0" groups=[ "player", ]] @@ -246,8 +246,8 @@ projection = 0 current = false fov = 70.0 size = 1.0 -near = 0.05 -far = 100.0 +near = 0.1 +far = 250.0 [node name="Ray" type="RayCast" parent="TPCamera/Camera" index="0"] diff --git a/scripts/ai.gd b/scripts/ai.gd index 9ecd2ce..f8ab4d7 100644 --- a/scripts/ai.gd +++ b/scripts/ai.gd @@ -8,6 +8,7 @@ func _ready(): if is_network_master(): print("readdyyyyy") read_recording() + set_spawn = true time = 0 set_physics_process(true) @@ -15,6 +16,7 @@ func _physics_process(delta): if is_network_master(): if set_spawn: get_node("..").set_translation(str2var(recording.spawn)) + get_node("..").switch_charge = str2var(recording.switch_charge) print(get_node("..").get_translation()) set_spawn = false play_keys() @@ -69,6 +71,10 @@ func obj_to_event(d): func play_keys(): # events[0] is first event # events[0][0] is first event's TIME + if recording.events.size() == 0: + get_node("..").spawn() # This may cause spawn twice, I hope this isn't a problem + # get_node("..").switch_charge = 0 # This needs to reset so the recording is accurate + read_recording() while float(recording.events[0][0]) <= time: # events[0][1] is first event's EVENT var event_obj = recording.events.pop_front()[1] diff --git a/scripts/player.gd b/scripts/player.gd index ac7ebe5..2816de8 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -22,7 +22,7 @@ var movement_charge = 0.15 # In percent per meter (except when heroes change tha const fall_height = -50 var debug_node -var recording = { "time": 0, "states": [], "events": [], "spawn": Vector3() } +var recording slave var slave_transform = Basis() slave var slave_lin_v = Vector3() @@ -51,6 +51,8 @@ func _ready(): remove_child(get_node(master_only)) func spawn(): + if "record" in player_info: + write_recording() # Write each spawn as a separate recording var placement = Vector3() var x_varies = 5 var z_varies = 5 @@ -62,11 +64,13 @@ func spawn(): # So we don't all spawn on top of each other placement.x += rand_range(0, x_varies) placement.z += rand_range(0, z_varies) + recording = { "time": 0, "states": [], "events": [], "spawn": Vector3() } recording.spawn = var2str(placement) + recording.switch_charge = var2str(switch_charge) set_transform(Basis()) set_translation(placement) set_linear_velocity(Vector3()) - + func event_to_obj(event): var d = {} if event is InputEventMouseMotion: @@ -220,8 +224,7 @@ func _process(delta): if get_translation().y < fall_height: spawn() - switch_hero_interface() - + if "record" in player_info: recording.time += delta @@ -264,11 +267,12 @@ func _exit_tree(): # ========= func write_recording(): - var save = File.new() - var fname = "res://recordings/%d-%d-%d.rec" % [player_info.level, player_info.hero, randi() % 10000] - save.open(fname, File.WRITE) - save.store_line(to_json(recording)) - save.close() + if recording and recording.events.size() > 0: + var save = File.new() + var fname = "res://recordings/%d-%d-%d.rec" % [player_info.level, player_info.hero, randi() % 10000] + save.open(fname, File.WRITE) + save.store_line(to_json(recording)) + save.close() # Quits the game: func quit():