mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2025-12-16 09:12:35 +00:00
84 lines
1.9 KiB
Ruby
84 lines
1.9 KiB
Ruby
class W3DHub
|
|
class Asterisk
|
|
class Config
|
|
CONFIG_PATH = "#{GAME_ROOT_PATH}/data/asterisk.json"
|
|
|
|
attr_reader :settings, :server_profiles, :games, :irc_profiles
|
|
|
|
def initialize
|
|
@config = nil
|
|
|
|
save_new_config unless load_config
|
|
load_config unless @config
|
|
end
|
|
|
|
def save_new_config
|
|
hash = {
|
|
settings: {
|
|
theme: :default,
|
|
|
|
server_profile: "",
|
|
game: "",
|
|
launch_arguments: "",
|
|
irc_profile: "None",
|
|
|
|
nickname: "",
|
|
password: "",
|
|
server_hostname: "",
|
|
server_port: "",
|
|
|
|
preload_app: "",
|
|
enable_preload_app: false,
|
|
|
|
post_launch_app: "",
|
|
enable_post_launch_app: false,
|
|
},
|
|
|
|
server_profiles: [],
|
|
|
|
games: [],
|
|
|
|
irc_profiles: []
|
|
}
|
|
|
|
save_config(hash)
|
|
end
|
|
|
|
def load_config
|
|
return false unless File.exist?(CONFIG_PATH)
|
|
|
|
begin
|
|
hash = JSON.parse(File.read(CONFIG_PATH), symbolize_names: true)
|
|
|
|
@config ||= {}
|
|
|
|
@config[:settings] = @settings = Settings.new(hash[:settings])
|
|
|
|
@config[:server_profiles] = @server_profiles = []
|
|
hash[:server_profiles].each { |profile| @server_profiles << ServerProfile.new(profile) }
|
|
|
|
@config[:games] = @games = []
|
|
hash[:games].each { |game| @games << Game.new(game) }
|
|
|
|
@config[:irc_profiles] = @irc_profiles = []
|
|
hash[:irc_profiles].each { |profile| @irc_profiles << IRCProfile.new(profile) }
|
|
|
|
rescue JSON::ParserError
|
|
puts "Config corrupted"
|
|
|
|
false
|
|
end
|
|
end
|
|
|
|
def hard_reset!
|
|
save_new_config
|
|
load_config
|
|
end
|
|
|
|
def save_config(config = @config)
|
|
File.write(CONFIG_PATH, config.to_json)
|
|
end
|
|
end
|
|
end
|
|
end
|