init
This commit is contained in:
commit
b99855351d
434 changed files with 50357 additions and 0 deletions
204
addons/inkgd/editor/common/ink_configuration.gd
Normal file
204
addons/inkgd/editor/common/ink_configuration.gd
Normal file
|
@ -0,0 +1,204 @@
|
|||
# ############################################################################ #
|
||||
# Copyright © 2019-2022 Frédéric Maquin <fred@ephread.com>
|
||||
# Licensed under the MIT License.
|
||||
# See LICENSE in the project root for license information.
|
||||
# ############################################################################ #
|
||||
|
||||
extends RefCounted
|
||||
|
||||
class_name InkConfiguration
|
||||
|
||||
# ############################################################################ #
|
||||
# Enums
|
||||
# ############################################################################ #
|
||||
|
||||
enum BuildMode {
|
||||
MANUAL = 0,
|
||||
DURING_BUILD,
|
||||
AFTER_CHANGE
|
||||
}
|
||||
|
||||
# ############################################################################ #
|
||||
# Constants
|
||||
# ############################################################################ #
|
||||
|
||||
const ROOT_DIR = "res://"
|
||||
|
||||
const COMPILER_CONFIG = ROOT_DIR + ".inkgd_compiler.cfg"
|
||||
const INK_CONFIG = ROOT_DIR + ".inkgd_ink.cfg"
|
||||
|
||||
const COMPILER_CONFIG_FORMAT_VERSION = 2
|
||||
const INK_CONFIG_FORMAT_VERSION = 2
|
||||
|
||||
const FORMAT_SECTION = "format"
|
||||
const VERSION = "version"
|
||||
|
||||
const INKGD_SECTION = "inkgd"
|
||||
const USE_MONO = "use_mono"
|
||||
const MONO_PATH = "mono_path"
|
||||
const INKLECATE_PATH = "inklecate_path"
|
||||
const COMPILATION_MODE = "compilation_mode"
|
||||
const STORIES = "stories"
|
||||
const SOURCE_FILE_PATH = "source_file_path"
|
||||
const TARGET_FILE_PATH = "target_file_path"
|
||||
const WATCHED_FOLDER_PATH = "watched_folder_path"
|
||||
|
||||
const DEFAULT_STORIES = [
|
||||
{
|
||||
SOURCE_FILE_PATH: "",
|
||||
TARGET_FILE_PATH: "",
|
||||
WATCHED_FOLDER_PATH: ""
|
||||
}
|
||||
]
|
||||
|
||||
# ############################################################################ #
|
||||
# Signals
|
||||
# ############################################################################ #
|
||||
|
||||
signal story_configuration_changed()
|
||||
signal compilation_mode_changed(compilation_mode)
|
||||
|
||||
# ############################################################################ #
|
||||
# Properties
|
||||
# ############################################################################ #
|
||||
|
||||
var use_mono: bool = false
|
||||
var mono_path: String = ""
|
||||
var inklecate_path: String = ""
|
||||
|
||||
var compilation_mode: int = BuildMode.MANUAL: set = set_compilation_mode
|
||||
func set_compilation_mode(new_value: int):
|
||||
compilation_mode = new_value
|
||||
emit_signal("compilation_mode_changed", compilation_mode)
|
||||
|
||||
var stories: Array = DEFAULT_STORIES
|
||||
|
||||
# ############################################################################ #
|
||||
# Private Properties
|
||||
# ############################################################################ #
|
||||
|
||||
var _compiler_config_file = ConfigFile.new()
|
||||
var _ink_config_file = ConfigFile.new()
|
||||
|
||||
# ############################################################################ #
|
||||
# Overrides
|
||||
# ############################################################################ #
|
||||
|
||||
func _init():
|
||||
pass
|
||||
|
||||
# ############################################################################ #
|
||||
# Public Methods
|
||||
# ############################################################################ #
|
||||
|
||||
## Loads the content of the configuration files from disk.
|
||||
func retrieve():
|
||||
_retrieve_inklecate()
|
||||
_retrieve_ink()
|
||||
|
||||
## Stores the content of the configuration to the disk.
|
||||
func persist():
|
||||
_persist_inklecate()
|
||||
_persist_ink()
|
||||
|
||||
func append_new_story_configuration(
|
||||
source_file_path: String,
|
||||
target_file_path: String,
|
||||
wacthed_folder_path: String
|
||||
):
|
||||
stories.append({
|
||||
SOURCE_FILE_PATH: source_file_path,
|
||||
TARGET_FILE_PATH: target_file_path,
|
||||
WATCHED_FOLDER_PATH: wacthed_folder_path
|
||||
})
|
||||
|
||||
emit_signal("story_configuration_changed")
|
||||
|
||||
func remove_story_configuration_at_index(index: int):
|
||||
if index >= 0 && index < stories.size():
|
||||
stories.remove_at(index)
|
||||
|
||||
emit_signal("story_configuration_changed")
|
||||
|
||||
func get_story_configuration_at_index(index):
|
||||
if index >= 0 && index < stories.size():
|
||||
return stories[index]
|
||||
else:
|
||||
return null
|
||||
|
||||
func get_source_file_path(story_configuration):
|
||||
return story_configuration[SOURCE_FILE_PATH]
|
||||
|
||||
func get_target_file_path(story_configuration):
|
||||
return story_configuration[TARGET_FILE_PATH]
|
||||
|
||||
func get_watched_folder_path(story_configuration):
|
||||
return story_configuration[WATCHED_FOLDER_PATH]
|
||||
|
||||
# ############################################################################ #
|
||||
# Private Methods
|
||||
# ############################################################################ #
|
||||
|
||||
## Loads the content of the inklecate configuration file from disk.
|
||||
func _retrieve_inklecate():
|
||||
var err = _compiler_config_file.load(COMPILER_CONFIG)
|
||||
if err != OK:
|
||||
# Assuming it doesn't exist.
|
||||
return
|
||||
|
||||
use_mono = _compiler_config_file.get_value(INKGD_SECTION, USE_MONO, false)
|
||||
mono_path = _compiler_config_file.get_value(INKGD_SECTION, MONO_PATH, "")
|
||||
inklecate_path = _compiler_config_file.get_value(INKGD_SECTION, INKLECATE_PATH, "")
|
||||
|
||||
if _compiler_config_file.get_value(FORMAT_SECTION, VERSION, 0) >= 2:
|
||||
compilation_mode = _compiler_config_file.get_value(INKGD_SECTION, COMPILATION_MODE, 0)
|
||||
|
||||
## Loads the content of the story configuration file from disk.
|
||||
func _retrieve_ink():
|
||||
var err = _ink_config_file.load(INK_CONFIG)
|
||||
if err != OK:
|
||||
# Assuming it doesn't exist.
|
||||
return
|
||||
|
||||
if _ink_config_file.get_value(FORMAT_SECTION, VERSION, 0) >= 2:
|
||||
stories = _ink_config_file.get_value(INKGD_SECTION, STORIES, DEFAULT_STORIES)
|
||||
else:
|
||||
var source_file_path = _ink_config_file.get_value(INKGD_SECTION, SOURCE_FILE_PATH, "")
|
||||
var target_file_path = _ink_config_file.get_value(INKGD_SECTION, TARGET_FILE_PATH, "")
|
||||
var watched_folder_path = _ink_config_file.get_value(INKGD_SECTION, WATCHED_FOLDER_PATH, "")
|
||||
|
||||
stories[0] = {
|
||||
SOURCE_FILE_PATH: source_file_path,
|
||||
TARGET_FILE_PATH: target_file_path,
|
||||
WATCHED_FOLDER_PATH: watched_folder_path
|
||||
}
|
||||
|
||||
## Stores the content of the inklecate configuration to the disk.
|
||||
func _persist_inklecate():
|
||||
_compiler_config_file.set_value(FORMAT_SECTION, VERSION, COMPILER_CONFIG_FORMAT_VERSION)
|
||||
|
||||
_compiler_config_file.set_value(INKGD_SECTION, USE_MONO, use_mono)
|
||||
_compiler_config_file.set_value(INKGD_SECTION, MONO_PATH, mono_path)
|
||||
_compiler_config_file.set_value(INKGD_SECTION, INKLECATE_PATH, inklecate_path)
|
||||
_compiler_config_file.set_value(INKGD_SECTION, COMPILATION_MODE, compilation_mode)
|
||||
|
||||
var err = _compiler_config_file.save(COMPILER_CONFIG)
|
||||
if err != OK:
|
||||
printerr("[inkgd] [ERROR] Could not save: %s" % COMPILER_CONFIG)
|
||||
|
||||
## Stores the content of the story configuration to the disk.
|
||||
func _persist_ink():
|
||||
# Clean up the file if it was created before version 2.
|
||||
if _ink_config_file.has_section_key(INKGD_SECTION, SOURCE_FILE_PATH):
|
||||
_ink_config_file.erase_section_key(INKGD_SECTION, SOURCE_FILE_PATH)
|
||||
|
||||
if _ink_config_file.has_section_key(INKGD_SECTION, TARGET_FILE_PATH):
|
||||
_ink_config_file.erase_section_key(INKGD_SECTION, TARGET_FILE_PATH)
|
||||
|
||||
# Write version 2 values.
|
||||
_ink_config_file.set_value(FORMAT_SECTION, VERSION, COMPILER_CONFIG_FORMAT_VERSION)
|
||||
_ink_config_file.set_value(INKGD_SECTION, STORIES, stories)
|
||||
|
||||
var err = _ink_config_file.save(INK_CONFIG)
|
||||
if err != OK:
|
||||
printerr("[inkgd] [ERROR] Could not save: %s" % INK_CONFIG)
|
Loading…
Add table
Add a link
Reference in a new issue