Files
academy2-game/world.gd
2021-12-02 20:29:34 +03:00

132 lines
4.0 KiB
GDScript3

extends Spatial
export var camera_path: NodePath
export var camera_pos_path: NodePath
export var camera_rot_y_path: NodePath
export var camera_rot_x_path: NodePath
export var camera_offset_path: NodePath
export var camera_arm_path: NodePath
export var fps_camera_scene: PackedScene
export var fps_camera_rot_y_node: String = "fps_cam_rot_y"
export var fps_camera_rot_x_node: String = "fps_cam_rot_x"
export var fps_camera_node: String = "fps_camera"
var door_sc = preload("res://scenes/door_control.tscn")
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
func _ready():
$waiting.show()
characters.set_navmesh(null, Transform())
var start_delay0 = 2.0
var start_delay1 = 3.0
var start_delay2 = 30.0
var start_delay3 = 2.0
var state = 0
var viewer
var player_place_intended
var player_place_fact
func _process(delta):
match state:
0:
start_delay0 -= delta
if start_delay0 < 0:
state = 1
1:
start_delay1 -= delta
if start_delay1 < 0:
if has_node("Roads") && get_node("Roads") is Roads:
for site in range(RoadsData.get_site_count()):
if site == 0:
streaming.setup_first_town()
else:
streaming.setup_town(site)
streaming.setup_traffic(site)
print("towns done: ", streaming.towns)
var poly = RoadsData.get_site_polygon_3d(0)
var center = Vector3()
for p in poly:
center += p
center /= poly.size()
var infl = RoadsData.get_influence_cached(center.x, center.z, 256)
center.y = infl.y
var v = center
$player.global_transform.origin.x = v.x
$player.global_transform.origin.y = v.y + 1.0
$player.global_transform.origin.z = v.z
player_place_intended = $player.global_transform.origin
viewer = VoxelViewer.new()
$player.add_child(viewer)
state = 2
print("added viewer")
2:
start_delay2 -= delta
print("delay2 ", start_delay2)
if start_delay2 < 0:
print("start configuring player")
var player
var cam: Camera
var fps_cam: Camera
var cam_pos
var cam_rot_y
var cam_rot_x
var cam_offset
var cam_arm
var fps_cam_rot_y
var fps_cam_rot_x
var default_offset
player = characters.replace_character($player, "male", ["player", "cmdq", "player_clothes"])
$player.remove_child(viewer)
player.add_child(viewer)
# player.add_child(VoxelViewer.new())
player.set_script(load("res://characters/character.gd"))
var fps_cam_pos = fps_camera_scene.instance()
player.add_child(fps_cam_pos)
fps_cam = fps_cam_pos.find_node(fps_camera_node, true, false)
cam = get_node(camera_path)
cam.current = true
cam_pos = get_node(camera_pos_path)
cam_rot_y = get_node(camera_rot_y_path)
cam_rot_x = get_node(camera_rot_x_path)
cam_offset = get_node(camera_offset_path)
cam_arm = get_node(camera_arm_path)
fps_cam_rot_y = fps_cam_pos.find_node(fps_camera_rot_y_node, true, false)
fps_cam_rot_x = fps_cam_pos.find_node(fps_camera_rot_x_node, true, false)
default_offset = cam_offset.translation
cam.set_meta("cam_pos", cam_pos)
cam.set_meta("cam_rot_y", cam_rot_y)
cam.set_meta("cam_rot_x", cam_rot_x)
cam.set_meta("cam_offset", cam_offset)
cam.set_meta("cam_arm", cam_arm)
cam.set_meta("default_offset", default_offset)
fps_cam.set_meta("fps_cam_rot_y", fps_cam_rot_y)
fps_cam.set_meta("fps_cam_rot_x", fps_cam_rot_x)
cam_arm.add_excluded_object(player.get_rid())
cam.set_meta("player", player)
fps_cam.set_meta("player", player)
player.set_meta("cam", cam)
player.set_meta("fps_cam", fps_cam)
print(player)
controls.switch_fps_mode(false)
print("configured player")
player_place_fact = player.global_transform.origin
state = 3
3:
start_delay3 -= delta
if start_delay3 < 0:
$waiting.hide()
print("starting game")
print("intended: ", player_place_intended, " fact: ", player_place_fact)
state = 4
4:
RoadsData.save_json("user://world-gen.json")
state = 5