Browse Source

[AI] Record Switch Charge on AI store and read it

master
Luna 7 years ago
parent
commit
f7dbd2ee24
3 changed files with 22 additions and 12 deletions
  1. +3
    -3
      scenes/player.tscn
  2. +6
    -0
      scripts/ai.gd
  3. +13
    -9
      scripts/player.gd

+ 3
- 3
scenes/player.tscn View File

@ -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"]


+ 6
- 0
scripts/ai.gd View File

@ -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]


+ 13
- 9
scripts/player.gd View File

@ -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():


Loading…
Cancel
Save