2018-09-21 02:43:57 +01:00
|
|
|
extends Node
|
|
|
|
|
2018-09-21 19:50:37 +01:00
|
|
|
# generic game globals
|
2018-09-21 02:43:57 +01:00
|
|
|
var game_started = false setget _on_game_started_set
|
|
|
|
|
|
|
|
var current_registry
|
|
|
|
|
2018-09-21 19:50:37 +01:00
|
|
|
var reading_speed = 1.0 setget _on_set_reading_speed
|
|
|
|
var master_vol = 50 setget _on_set_master_vol
|
|
|
|
var music_vol = 50 setget _on_set_music_vol
|
|
|
|
var sfx_vol = 50 setget _on_set_sfx_vol
|
2018-09-21 03:37:07 +01:00
|
|
|
|
2018-09-21 19:50:37 +01:00
|
|
|
# options state
|
|
|
|
signal on_reading_speed_changed(new_value)
|
|
|
|
signal on_master_volume_changed(new_value)
|
2018-09-21 02:43:57 +01:00
|
|
|
signal on_music_volume_changed(new_value)
|
|
|
|
signal on_sfx_volume_changed(new_value)
|
|
|
|
|
|
|
|
signal on_settings_enter()
|
|
|
|
signal on_settings_exit()
|
|
|
|
|
2018-09-21 19:50:37 +01:00
|
|
|
# music related
|
|
|
|
onready var music_player = get_node("music_player")
|
|
|
|
onready var sfx_player = get_node("sfx_player")
|
|
|
|
|
|
|
|
# transition node
|
|
|
|
onready var transition = get_node("trans_layer/transition")
|
|
|
|
|
2018-09-21 02:43:57 +01:00
|
|
|
# voices for characters
|
|
|
|
const brain_voice = null
|
|
|
|
const arborator_voice = null
|
|
|
|
|
|
|
|
const DEFAULT_CHARS_PER_SECOND = 32
|
|
|
|
|
|
|
|
const Characters = {
|
|
|
|
BRAIN = {
|
|
|
|
name = "~brain~",
|
|
|
|
name_colour = Color(1, 1, 1, 1),
|
|
|
|
voice = brain_voice,
|
|
|
|
talking_speed = 1.0,
|
|
|
|
},
|
|
|
|
ARBORATOR = {
|
|
|
|
name = "arborator",
|
|
|
|
name_colour = Color(1, 1, 1, 1),
|
|
|
|
voice = arborator_voice,
|
|
|
|
talking_speed = 1.0,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-09-21 02:48:13 +01:00
|
|
|
const Scenes = {
|
|
|
|
|
|
|
|
# MENUS
|
|
|
|
MAIN_MENU = "res://menus/main_menu.tscn",
|
2018-09-21 19:39:08 +01:00
|
|
|
OPTIONS_MENU = "res://menus/options_menu.tscn",
|
2018-09-21 02:48:13 +01:00
|
|
|
|
|
|
|
# GAME
|
2018-09-21 03:11:14 +01:00
|
|
|
INTRO = "res://scenes/intro.tscn",
|
|
|
|
FIRST_SCENE = "res://scenes/first_scene.tscn"
|
2018-09-21 02:48:13 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-09-21 18:45:08 +01:00
|
|
|
const Themes = {}
|
|
|
|
|
|
|
|
const Images = {
|
|
|
|
INTRO_BG = "res://img/intro_bg.png"
|
|
|
|
}
|
|
|
|
|
2018-09-21 19:50:37 +01:00
|
|
|
func _ready():
|
|
|
|
pass
|
|
|
|
|
2018-09-21 02:43:57 +01:00
|
|
|
func _register_functions():
|
2018-09-21 18:45:08 +01:00
|
|
|
|
|
|
|
# default VN.. functions
|
2018-09-21 03:11:14 +01:00
|
|
|
current_registry["SWITCH_SCENE"] = funcref(self, "_switch_scene_fnc")
|
2018-09-21 18:45:08 +01:00
|
|
|
current_registry["SET_BACKGROUND"] = funcref(self, "_set_background_fnc")
|
|
|
|
|
|
|
|
|
|
|
|
func _set_background_fnc(args):
|
|
|
|
if args.size() == 1:
|
|
|
|
var bg_name = args[0]
|
|
|
|
var bg_texture = load(Images[bg_name])
|
|
|
|
SceneSwitcher.current_scene.set_background(bg_texture)
|
2018-09-21 03:11:14 +01:00
|
|
|
|
|
|
|
func _switch_scene_fnc(args):
|
|
|
|
if args.size() == 1:
|
|
|
|
var scene_name = args[0]
|
2018-09-21 18:51:38 +01:00
|
|
|
var scene_path = Scenes[scene_name]
|
|
|
|
switch_scene_to(scene_path)
|
2018-09-21 02:43:57 +01:00
|
|
|
|
|
|
|
func _on_game_started_set(v):
|
|
|
|
if v and not game_started:
|
2018-09-21 03:11:14 +01:00
|
|
|
print("STARTO")
|
2018-09-21 02:43:57 +01:00
|
|
|
_on_game_start()
|
|
|
|
game_started = v
|
|
|
|
|
2018-09-21 19:50:37 +01:00
|
|
|
func _on_set_reading_speed(s):
|
|
|
|
pass
|
|
|
|
|
2018-09-21 19:39:08 +01:00
|
|
|
func _on_set_master_vol(v):
|
|
|
|
pass
|
|
|
|
|
|
|
|
func _on_set_music_vol(v):
|
|
|
|
pass
|
|
|
|
|
|
|
|
func _on_set_sfx_vol(v):
|
|
|
|
pass
|
|
|
|
|
2018-09-21 02:43:57 +01:00
|
|
|
func _on_game_start():
|
|
|
|
|
|
|
|
# all game state here
|
|
|
|
current_registry = {}
|
2018-09-21 19:50:37 +01:00
|
|
|
|
2018-09-21 03:11:14 +01:00
|
|
|
# register all de stuff
|
|
|
|
_register_functions()
|
2018-09-21 02:43:57 +01:00
|
|
|
|
|
|
|
|
2018-09-21 18:51:38 +01:00
|
|
|
# public interface sorta
|
2018-09-21 19:39:08 +01:00
|
|
|
func switch_scene_to(scene_path, fade = true):
|
|
|
|
|
|
|
|
if fade:
|
|
|
|
transition.start_transition()
|
|
|
|
yield(transition, "on_transition_time")
|
|
|
|
|
2018-09-21 18:51:38 +01:00
|
|
|
SceneSwitcher.goto_scene(scene_path)
|
2018-09-21 19:39:08 +01:00
|
|
|
|
|
|
|
if fade:
|
|
|
|
yield(transition, "on_transition_completed")
|
|
|
|
if SceneSwitcher.current_scene.has_method("on_scene_start"):
|
|
|
|
SceneSwitcher.current_scene.on_scene_start()
|
2018-09-21 19:50:37 +01:00
|
|
|
|