test-client-godot/global.gd

128 lines
3.7 KiB
GDScript

extends Node
const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title"
var character_name = null
var character_color = null
var character_gender = null
var character_slot = null
# BG loader
var loader
var wait_frames
var time_max = 10 # msec
var current_scene = null
func _ready():
var root = get_tree().get_root()
current_scene = root.get_child(root.get_child_count() -1)
change_title()
get_tree().get_root().connect("size_changed", self, "on_window_size_changed")
########
#### change title ####
func on_window_size_changed():
change_title()
func change_title():
var title = "Khanat"
if has_node( WINDOW_TITLE_INPUT ):
var title_node = get_node( WINDOW_TITLE_INPUT )
if title_node and not title_node.text.strip_edges() == "":
title = title_node.text.strip_edges()
title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")"
OS.set_window_title( title )
########
########
#### scene loading
func goto_scene_loading( path ):
print( "goto: "+str(path) )
get_node("background_loader").show()
loader = ResourceLoader.load_interactive( path )
if loader == null: # check for errors
show_error()
return
set_process(true)
if current_scene:
print( "queue_free: "+str(current_scene.name) )
current_scene.queue_free() # get rid of the old scene
wait_frames = 1
func _process( time ):
print( "process" )
if loader == null:
# no need to process anymore
set_process(false)
return
if wait_frames > 0: # wait for frames to let the "loading" animation to show up
wait_frames -= 1
return
var t = OS.get_ticks_msec()
while OS.get_ticks_msec() < t + time_max: # use "time_max" to control how much time we block this thread
print( "poll: "+str((float(loader.get_stage()) / loader.get_stage_count())*100)+"%" )
# poll your loader
var err = loader.poll()
# update_progress()
if err == ERR_FILE_EOF: # load finished
# update_progress()
var resource = loader.get_resource()
loader = null
set_new_scene( resource )
break
elif err == OK:
update_progress()
pass
else: # error during loading
show_error()
loader = null
break
func update_progress():
var progress_texture = get_node("background_loader/center_container/texture_progress")
var progress = (float(loader.get_stage()) / loader.get_stage_count()) * progress_texture.max_value
progress_texture.value = progress
func set_new_scene( scene_resource ):
var progress_texture = get_node("background_loader/center_container/texture_progress")
progress_texture.value = 0
current_scene = scene_resource.instance()
get_tree().get_root().add_child(current_scene)
get_node("background_loader").hide()
func _on_login_scene_character_creation_finished():
var config_file = ConfigFile.new()
var err = config_file.load( "user://player.cfg" )
if err:
print("Error code when loading config file: ", err)
config_file.set_value(str(global.character_slot), "name", global.character_name)
config_file.set_value(str(global.character_slot), "color", global.character_color)
config_file.save( "user://player.cfg" )
global.goto_scene_loading( "res://game_scene/game_scene.tscn" )
func _on_logout_button_pressed():
global.goto_scene_loading( "res://login_scene/login_scene.tscn" )
get_tree().paused = false
########