--[[
Read/Write Config.ini [v2] (02/03/2014)
Written by AFRLme [Lee Clarke]
-- + --
alternatingfrequencies@hotmail.com | skype @ AFRLme
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]
-- * local variables * --
local fn = "config.ini" -- store filename
-- * --
local wm = getObject("Conditions[fullscreen]") -- window mode [fullscreen/windowed]
local res = getObject("Values[res]") -- resolution [fullscreen mode only]
-- local subs = getObject("Conditions[cfg_subs]") -- subtitles [on/off]
--local fx = getObject("Values[cfg_fx]") -- fx level [low/medium/high] (controls which animations will be displayed)
--local cbm = getObject("Conditions[cfg_cbm]") -- color blind mode [on/off]
-- * fallback * --
local lglvl = "Info" -- default value for log level
local df = "Data.vis" -- filename should reflect exported .vis file
game:setValue(VGameSpeechLanguage, game:getLink(VGameStandardLanguage)) -- default speech language to stndard language
-- * tables * --
local t_res = {"Auto", "1024x768","1280x1024","1680x1050","1920x1080"} -- add available resolutions here
local t_lang = game:getLinks(VGameLanguages) -- store all available languages into a table
-- * function used to read data from the config.ini file * --
function read_ini()
local fr = io.open(localAppDir .. fn, "r") -- read from config.ini
-- * --
if fr then -- if file exists then...
lines = fr:read() -- read currently selected line
print("-- * --")
print(fn .. " exists")
print("retrieving settings from " .. fn)
for lines in io.lines(localAppDir .. fn) do
line = string.lower(lines) -- convert all line content to lowercase
if not line:find("#") then -- skip all lines containing "#"
if line:find("file =") then df = string.sub(lines, 8); print("file is currently linked to " .. df) end
-- * window mode * --
if line == "fullscreen = no" then wm:setValue(VConditionValue, false); print("window mode is currently set to Windowed") end
if line == "fullscreen = yes" then wm:setValue(VConditionValue, true); print("window mode is currently set to Fullscreen") end
-- * resolution * --
for i = 1, table.maxn(t_res) do if line == ("resolution = " .. string.lower( t_res[i] )) then res:setValue(VValueString, t_res[i]); res:setValue(VValueInt, i); print("resolution is currently set to " .. res:getStr(VValueString)) end end
-- * subtitles * --
-- if line == "subtitles = no" then subs:setValue(VConditionValue, false); print("subtitles are currently set to Off") end
-- if line == "subtitles = yes" then subs:setValue(VConditionValue, true); print("subtitles are currently set to On") end
-- * text language * --
-- for i = 1, table.maxn(t_lang) do if line == ("textlanguage = " .. string.lower( t_lang[i]:getName() )) then game:setValue(VGameStandardLanguage, t_lang[i]); print("text language is currently set to " .. game:getLink(VGameStandardLanguage):getName()) end end
-- * speech language * --
-- for i = 1, table.maxn(t_lang) do if line == ("speechlanguage = " .. string.lower( t_lang[i]:getName() )) then game:setValue(VGameSpeechLanguage, t_lang[i]); print("spoken language is currently set to " .. game:getLink(VGameSpeechLanguage):getName()) end end
-- * fx quality * --
--if line == "fxquality = low" then fx:setValue(VValueString, "Low"); fx:setValue(VValueInt, 1); print("fx quality is currently set to " .. fx:getStr(VValueString)) end
--if line == "fxquality = medium" then fx:setValue(VValueString, "Medium"); fx:setValue(VValueInt, 2); print("fx quality is currently set to " .. fx:getStr(VValueString)) end
--if line == "fxquality = high" then fx:setValue(VValueString, "High"); fx:setValue(VValueInt, 3); print("fx quality is currently set to " .. fx:getStr(VValueString)) end
-- * color blind mode * ---
--if line == "colorblindmode = no" then cbm:setValue(VConditionValue, false); print("color blind mode is currently set to Off") end
--if line == "colorblindmode = yes" then cbm:setValue(VConditionValue, true); print("color blind mode is currently set to On") end
-- * log level * --
if line == "loglevel = error" then lglvl = "Error"; print("log level is currently set to Error") end
if line == "loglevel = warning" then lglvl = "Warning"; print("log level is currently set to Warning") end
if line == "loglevel = info" then lglvl = "Info"; print("log level is currently set to Info") end
-- * sound levels * --
if line:find("musicvolume =") then print("music volume = " .. getVolume(eMusicVolume)) end
if line:find("soundvolume =") then print("sound volume = " .. getVolume(eSoundVolume)) end
if line:find("speechvolume =") then print("speech volume = " .. getVolume(eSpeechVolume)) end
if line:find("movievolume =") then print("movie volume = " .. getVolume(eMovieVolume)) end
if line:find("globalvolume =") then print("global volume = " .. getVolume(eGlobalVolume)) end
end
end
fr:close()
print("successfully retrieved settings from " .. fn)
else
print(fn .. " does not exist")
end
end
-- * function used to write data to the config.ini file * --
function write_ini()
local fw = io.open(localAppDir .. fn, "w") -- write to config.ini
print("-- * --")
print("writing new settings to " .. fn)
-- * data file * --
fw:write("File = " .. df .. "\n")
-- * window mode * --
fw:write("#\n")
fw:write("# Fullscreen = {Yes|No}\n")
fw:write("# Yes: starts the game in fullscreen\n")
fw:write("# No: starts the game in a window\n")
fw:write("Fullscreen = ")
if wm:getBool(VConditionValue) then fw:write("Yes\n") else fw:write("No\n") end
-- * resolution * --
fw:write("#\n")
fw:write("# Resolution = {Auto|Desktop|Custom}\n")
fw:write("# Auto: wide-screen support is activated if a wide-screen display is detected\n")
fw:write("# Desktop: current desktop resolution is used when game is started in full screen mode\n")
fw:write("# Custom: enter a custom value eg: Resolution = 1920x1080\n")
fw:write("Resolution = " .. res:getStr(VValueString) .. "\n")
-- * subtitles * --
fw:write("#\n")
fw:write("# Subtitles = {Yes|No}\n")
fw:write("# Yes: show subtitles during the game, cut scenes & videos\n")
fw:write("# No: do not show subtitles during the game, cut scenes or videos\n")
fw:write("Subtitles = ")
if subs:getBool(VConditionValue) then fw:write("Yes\n") else fw:write("No\n") end
-- * text language * --
fw:write("#\n")
fw:write("# TextLanguage = {English|French|German|Spanish}\n")
fw:write("# this will display subtitles in the specified language\n")
fw:write("TextLanguage = " .. game:getLink(VGameStandardLanguage):getName() .. "\n")
-- * speech language * --
fw:write("#\n")
fw:write("# SpeechLanguage = {English|French|German|Spanish}\n")
fw:write("# this will play speech files linked to the specified language\n")
fw:write("# if no speech language is provided then the speech language will default to the standard language\n")
fw:write("SpeechLanguage = " .. game:getLink(VGameSpeechLanguage):getName() .. "\n")
-- * fx quality * --
fw:write("#\n")
fw:write("# FxQuality = {Low|Medium|High}\n")
fw:write("# allows user to change animation/particle fx modes (for players on lower end machines)\n")
fw:write("# Low: only show the basic required game animations/particle fx\n")
fw:write("# Medium: only show certain animations/particle fx &/or animations containing less frames\n")
fw:write("# High: show all animations, in all their glory\n")
fw:write("FxQuality = " .. fx:getStr(VValueString) .. "\n")
-- * color blind mode * --
fw:write("#\n")
fw:write("# ColorBlindMode = {Yes|No}\n")
fw:write("# Yes: enable color blind support (graphic replacement, on screen indicators etc)\n")
fw:write("# No: show the game as it's meant to be played\n")
fw:write("ColorBlindMode = ")
if cbm:getBool(VConditionValue) then fw:write("Yes\n") else fw:write("No\n") end
-- * log level * --
fw:write("#\n")
fw:write("# LogLevel = {Info|Warning|Error}\n")
fw:write("LogLevel = " .. lglvl .. "\n")
-- * volume settings * --
fw:write("#\n")
fw:write("# MusicVolume|SoundVolume|SpeechVolume|MovieVolume|GlobalVolume = int value {0-100}\n")
fw:write("MusicVolume = " .. getVolume(eMusicVolume) .. "\n")
fw:write("SoundVolume = " .. getVolume(eSoundVolume) .. "\n")
fw:write("SpeechVolume = " .. getVolume(eSpeechVolume) .. "\n")
fw:write("MovieVolume = " .. getVolume(eMovieVolume) .. "\n")
fw:write("GlobalVolume = " .. getVolume(eGlobalVolume) .. "\n")
print("new settings successfully written to " .. fn)
fw:close()
end