diff --git a/LICENSE b/LICENSE
index 1d879c6..ac91c6e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,15 @@
+The following textures are licensed under Apache License 2.0,
+originally obtained from https://github.com/Remix-Design/remixicon
+
+textures/game_doc_back_pressed.png
+textures/game_doc_back.png
+textures/game_doc_help_pressed.png
+textures/game_doc_help.png
+textures/game_doc_select_pressed.png
+textures/game_doc_select.png
+
+All other files in this mod are licensed as follows:
+
MIT License
Copyright (c) 2021 ExeVirus
diff --git a/code/add_entries.lua b/code/add_entries.lua
index 3773944..307d93a 100644
--- a/code/add_entries.lua
+++ b/code/add_entries.lua
@@ -61,10 +61,6 @@ end
-- markdown_file: file_path to markdown file to load
-- hidden: default false (based on settings), true will hide from players until
-- shown via hidden_modifications.lua functions >> optional
-local x = game_doc.settings.edge_size
-local y = game_doc.settings.edge_size + game_doc.settings.header_size
-local w = game_doc.settings.width - game_doc.settings.edge_size * 2
-local h = game_doc.settings.height - game_doc.settings.edge_size * 2 - game_doc.settings.header_size
game_doc.add_file_entry = function(category_name, entry_name, markdown_file, hidden)
--safety check
if category_name == nil or entry_name == nil or markdown_file == nil then
@@ -72,26 +68,16 @@ game_doc.add_file_entry = function(category_name, entry_name, markdown_file, hid
return
end
- local md2f_settings = {
- background_color = "#222E",
- font_color = "#FFF",
- heading_1_color = "#AFA",
- heading_2_color = "#FAA",
- heading_3_color = "#AAF",
- heading_4_color = "#FFA",
- heading_5_color = "#AFF",
- heading_6_color = "#FAF",
- code_block_mono_color = "#6F6",
- code_block_font_size = 14,
- mono_color = "#6F6",
- block_quote_color = "#FFA",
- }
+ local x = game_doc.settings.edge_size
+ local y = game_doc.settings.edge_size * 2 + game_doc.settings.header_size + game_doc.settings.button_height
+ local w = game_doc.settings.width - game_doc.settings.edge_size * 2
+ local h = game_doc.settings.height - game_doc.settings.edge_size * 3 - game_doc.settings.header_size - game_doc.settings.button_height
--load hypertext via markdown2formspec
game_doc.add_direct_entry(
category_name,
entry_name,
- md2f.md2ff(x,y,w,h,markdown_file,entry_name,md2f_settings),
+ md2f.md2ff(x,y,w,h,markdown_file,entry_name,game_doc.md2f_settings),
hidden
)
end
diff --git a/code/formspecs.lua b/code/formspecs.lua
index dba75da..1e66b4c 100644
--- a/code/formspecs.lua
+++ b/code/formspecs.lua
@@ -10,11 +10,16 @@
-- <> game_doc.entry_form() --
-- --
-- Use the above functions to show the stadard game_doc --
--- formspecs. --
+-- formspecs. There is a fourth, private function which --
+-- provides the help formspec found in the main form. --
+-- --
+-- This file also provides the functions for receiving and --
+-- responding to the submission of these formspecs after --
+-- these functions are defined. --
--------------------------------------------------------------
--- Common header for the three formspecs
-local function header()
+-- Common functions for the three formspecs
+game_doc.header = function()
return table.concat(
{
"formspec_version[4]\n",
@@ -24,6 +29,43 @@ local function header()
},"")
end
+--Overridable button functions for i3 support
+game_doc.help_button = function(x,y,w,h,i3)
+ if i3 then
+ return table.concat({
+ "image_button[",x,",",y,";",w,",",h,";game_doc_help.png;gmdc_help;;;false;game_doc_help_pressed.png]"
+ })
+ else
+ return table.concat({"button[",x,",",y,";",w,",",h,";gmdc_help;Help]\n"})
+ end
+end
+
+game_doc.back_button = function(x,y,w,h,i3)
+ if i3 then
+ return table.concat({"image_button[",x,",",y,";",w,",",h,";game_doc_back.png;gmdc_back;;;false;game_doc_back_pressed.png]"})
+ else
+ return table.concat({"button[",x,",",y,";",w,",",h,";gmdc_back;Back]\n"})
+ end
+end
+
+game_doc.select_button = function(x,y,w,h,i3)
+ if i3 then
+ return table.concat({"image_button[",x,",",y,";",w,",",h,";game_doc_select.png;gmdc_select;;;false;game_doc_select_pressed.png]"})
+ else
+ return table.concat({"button[",x,",",y,";",w,",",h,";gmdc_select;Select]\n"})
+ end
+end
+
+-- Function for hiding spaces to fix reorder issues
+local function move_spaces(s)
+ local new_table = {}
+ for i=1,#s do
+ local _s = s[i]
+ new_table[i] = _s:match("%s*(.*)").._s:match("%s*")
+ end
+ return new_table
+end
+
------------------------------
-- main_form
--
@@ -57,19 +99,22 @@ game_doc.main_form = function(player_name)
local mname = game_doc.settings.main_name
local non_list_height = hsize+edge*2+button_h
- -- Get list of categories
- local category_list = {}
- for k in pairs(game_doc.doc_data) do table.insert(category_list, k) end
- table.sort(category_list)
- category_list = table.concat(category_list, ",")
+ if game_doc.category_list == nil then
+ -- Get list of categories
+ local category_list = {}
+ for k in pairs(game_doc.doc_data) do table.insert(category_list, k) end
+ table.sort(category_list)
+ game_doc.category_list = category_list
+ game_doc.category_comma_list = table.concat(move_spaces(category_list), ",")
+ end
game_doc.ready_main_form = table.concat({
- header(),
+ game_doc.header(),
"hypertext[0,0;",w,",",h,";;]\n",
- "button[",edge,",",edge+hsize,";",button_w,",",button_h,";gdmc_help;Help]\n",
- "button_exit[",(taw/2)-button_w/2,",",edge+hsize,";",button_w,",",button_h,";gdmc_quit;Quit]\n",
- "button[",taw-button_w,",",edge+hsize,";",button_w,",",button_h,";gdmc_select;Select]\n",
- "textlist[",edge,",",non_list_height,";",taw,",",h-non_list_height,";gmdc_list;",category_list,";1;false]\n",
+ game_doc.help_button(edge, edge+hsize, button_w, button_h, game_doc.i3),
+ game_doc.select_button(taw-button_w, edge+hsize, button_w, button_h, game_doc.i3),
+ "box[",edge,",",non_list_height,";",taw,",",h-non_list_height-edge,";#bababa25]\n",
+ "textlist[",edge,",",non_list_height,";",taw,",",h-non_list_height-edge,";gmdc_list;",game_doc.category_comma_list,";;true]\n",
},"")
end
return game_doc.ready_main_form
@@ -109,26 +154,40 @@ game_doc.category_form = function(category_name, player_name)
local hfsize = game_doc.settings.main_font_size
local non_list_height = hsize+edge*2+button_h
- -- Get list of categories
- local entry_list = {}
- for k in pairs(game_doc.doc_data[category_name].entries) do table.insert(entry_list, k) end
- table.sort(entry_list)
- entry_list = table.concat(entry_list, ",")
+ if game_doc.category_list == nil then
+ -- Get list of categories
+ local category_list = {}
+ for k in pairs(game_doc.doc_data) do table.insert(category_list, k) end
+ table.sort(category_list)
+ game_doc.category_list = category_list
+ game_doc.category_comma_list = table.concat(category_list, ",")
+ end
+
+ -- Get list of entries
+ if game_doc.entry_lists == nil then game_doc.entry_lists = {} end
+ if game_doc.entry_lists[category_name] == nil then
+ game_doc.entry_lists[category_name] = {}
+ local entry_list = {}
+ for k in pairs(game_doc.doc_data[category_name].entries) do table.insert(entry_list, k) end
+ table.sort(entry_list)
+ game_doc.entry_lists[category_name].entry_list = entry_list
+ game_doc.entry_lists[category_name].entry_comma_list = table.concat(move_spaces(entry_list), ",")
+ end
game_doc.ready_forms[category_name] = table.concat({
- header(),
+ game_doc.header(),
"hypertext[0,0;",w,",",h,";;]\n",
- "button[",edge,",",edge+hsize,";",button_w,",",button_h,";gdmc_back;Back]\n",
- "button_exit[",(taw/2)-button_w/2,",",edge+hsize,";",button_w,",",button_h,";gdmc_quit;Quit]\n",
- "button[",taw-button_w,",",edge+hsize,";",button_w,",",button_h,";gdmc_select;Select]\n",
- "textlist[",edge,",",non_list_height,";",taw,",",h-non_list_height,";gmdc_list;",entry_list,";1;false]\n",
+ game_doc.back_button(edge, edge+hsize, button_w, button_h, game_doc.i3),
+ game_doc.select_button(taw-button_w, edge+hsize, button_w, button_h, game_doc.i3),
+ "box[",edge,",",non_list_height,";",taw,",",h-non_list_height-edge,";#bababa25]\n",
+ "textlist[",edge,",",non_list_height,";",taw,",",h-non_list_height,";gmdc_list;",game_doc.entry_lists[category_name].entry_comma_list,";;true]\n",
},"")
end
return game_doc.ready_forms[category_name]
end
else --error
return table.concat({
- header(),
+ game_doc.header(),
"label[0,0;Error: category: ", category_name, " does not exist.\n",
},"")
end
@@ -149,7 +208,7 @@ game_doc.entry_form = function(category_name, entry_name, player_name)
else
return table.concat({
- header(),
+ game_doc.header(),
"label[0,0;Error: player: ", player_name, " is unable to view this hidden entry.\n",
},"")
end
@@ -162,18 +221,146 @@ game_doc.entry_form = function(category_name, entry_name, player_name)
local button_h = game_doc.settings.button_height
local taw = w - edge * 2 --text_area_width
local hsize = game_doc.settings.header_size
+ local hcolor = game_doc.settings.heading_color
+ local hfsize = game_doc.settings.main_font_size
return table.concat({
- header(),
- "button[",edge,",",edge,";",button_w,",",button_h,";gdmc_back;Back]\n",
- "button_exit[",(taw/2)-button_w/2,",",edge,";",button_w,",",button_h,";gdmc_quit;Quit]\n",
+ game_doc.header(),
+ "hypertext[0,0;",w,",",h,";;]\n",
+ game_doc.back_button(edge, edge+hsize, button_w, button_h, game_doc.i3),
game_doc.doc_data[category_name].entries[entry_name].hypertext,
},"")
end
else --error
return table.concat({
- header(),
+ game_doc.header(),
"label[0,0;Error: category: ", category_name, ", entry: ", entry_name," does not exist.\n",
},"")
end
-end
\ No newline at end of file
+end
+
+------------------------------
+-- help_form
+--
+-- Merely explains how to use this game_doc documentation
+--
+game_doc.help_form = function()
+ local x = game_doc.settings.edge_size
+ local y = game_doc.settings.edge_size + game_doc.settings.header_size
+ local w = game_doc.settings.width - game_doc.settings.edge_size * 2
+ local h = game_doc.settings.height - game_doc.settings.edge_size * 2 - game_doc.settings.header_size
+ local edge = game_doc.settings.edge_size
+ local button_w = game_doc.settings.button_width
+ local button_h = game_doc.settings.button_height
+ local hsize = game_doc.settings.header_size
+ return table.concat({
+ game_doc.header(),
+ game_doc.back_button(edge, edge+hsize, button_w, button_h, game_doc.i3),
+ md2f.md2f(x,y+edge+button_h,w,h-edge*2-button_h,
+ --begin markdown for help file
+[[# **Game Guide Help**
+This game guide is built to provide you with all the knowledge needed to enjoy every part of this game: from building, to mining, farming, fighting, flying, tinkering, and more.
+#### Categories and Entries
+The guide is broken into *Categories* and *Entires*. *Categories* are shown on the main
+page, and once you **select** one or double click/tap that option in the list,
+you will be greeted with that Category's page of *Entries*.
+
+You then do the same on the entry page, and now you can read all about that exact topic.]]
+ --end markdown for help file
+ ,"game_doc_help",
+ game_doc.md2f_settings),
+ },"")
+end
+
+
+------------------------------
+-- on_recieve
+--
+-- Handles the above 4 formspec submissions
+--
+minetest.register_on_player_receive_fields(
+function(player, formname, fields)
+ --Early fail for efficiency
+ if formname:sub(1,4) == "gmdc" then
+ local player_name = player:get_player_name()
+ minetest.log(dump(fields))
+
+ ---------------Main Form---------------
+ if formname == "gmdc_main" then
+ --reused local function
+ local function show_category(player_name)
+ local index = game_doc.player_data[player_name].selected_category or nil
+ if index == nil then return end
+ if game_doc.settings.hidden_enable then
+
+ else
+ game_doc.player_data[player_name].selected_category = game_doc.category_list[index]
+ minetest.show_formspec(player_name,"gmdc_category",game_doc.category_form(game_doc.category_list[index], player_name))
+ end
+ end
+
+ --handle help
+ if fields.gmdc_help then
+ minetest.show_formspec(player_name,"gmdc_help", game_doc.help_form())
+ --handle select
+ elseif fields.gmdc_select then
+ show_category(player_name)
+ --handle text_list
+ elseif fields.gmdc_list then
+ local type, index = fields.gmdc_list:sub(1,3), tonumber(fields.gmdc_list:sub(5))
+ if type == "CHG" then
+ game_doc.player_data[player_name].selected_category = index
+ elseif type == "DCL" then
+ game_doc.player_data[player_name].selected_category = index
+ show_category(player_name)
+ end
+ end
+
+ ---------------Category Form---------------
+ elseif formname == "gmdc_category" then
+ --reused local function
+ local function show_entry(player_name)
+ local index = game_doc.player_data[player_name].selected_entry or nil
+ if index == nil then return end
+ if game_doc.settings.hidden_enable then
+
+ else
+ local category = game_doc.player_data[player_name].selected_category
+ local entry = game_doc.entry_lists[category].entry_list[index]
+ minetest.show_formspec(player_name,"gmdc_entry",game_doc.entry_form(category, entry, player_name))
+ end
+ end
+ --handle back
+ if fields.gmdc_back then
+ game_doc.player_data[player_name].selected_category = nil
+ minetest.show_formspec(player_name,"gmdc_main", game_doc.main_form(player_name))
+ --handle select
+ elseif fields.gmdc_select then
+ show_entry(player_name)
+ --handle text_list
+ elseif fields.gmdc_list then
+ local type, index = fields.gmdc_list:sub(1,3), tonumber(fields.gmdc_list:sub(5))
+ if type == "CHG" then
+ game_doc.player_data[player_name].selected_entry = index
+ elseif type == "DCL" then
+ game_doc.player_data[player_name].selected_entry = index
+ show_entry(player_name)
+ end
+ end
+ ---------------Entry Form---------------
+ elseif formname == "gmdc_entry" then
+ --handle back
+ if fields.gmdc_back then
+ game_doc.player_data[player_name].selected_entry = nil
+ minetest.show_formspec(player_name,"gmdc_category", game_doc.category_form(game_doc.player_data[player_name].selected_category,player_name))
+ end
+
+ ---------------Help Form---------------
+ elseif formname == "gmdc_help" then
+ if fields.gmdc_help_back then
+ game_doc.player_data[player_name].selected_category = nil
+ minetest.show_formspec(player_name,"gmdc_main", game_doc.main_form(player_name))
+ end
+ end
+ end
+end)
\ No newline at end of file
diff --git a/code/integration.lua b/code/integration.lua
index 7d96653..f4790d1 100644
--- a/code/integration.lua
+++ b/code/integration.lua
@@ -7,20 +7,176 @@
-- formspec. --
--------------------------------------------------------------
-
--- Chat Command Integration
-if game_doc.settings.enable_chat_command then
+-- Chat Command Integration (disabled if i3 is present)
+if game_doc.settings.enable_chat_command and not rawget(_G, "i3") then
minetest.register_chatcommand("doc", {
privs = {
interact = true,
},
func = function(player_name, _)
- minetest.show_formspec(
- player_name,
- "game_doc_main",
- game_doc.main_form(player_name)
- )
+ --game_doc.player_data[player_name].selected_category = 1
+ minetest.show_formspec(player_name,"gmdc_main",game_doc.main_form(player_name))
end,
})
end
+-- i3 Integration
+
+-- The following is essentially a bunch of overrides on the default guide formspecs
+-- so that it fits very nicely into i3's world
+if rawget(_G, "i3") then
+ game_doc.i3 = true
+
+ -- Override the header and other values, as everything will flow through i3
+ game_doc.header = function() return "" end
+ game_doc.settings.edge_size = 0.1
+ game_doc.settings.width = 10.23
+ game_doc.settings.height = 12
+ game_doc.settings.button_width = 0.6
+ game_doc.settings.button_height = 0.6
+ game_doc.settings.header_size = 0
+ game_doc.settings.main_font_size = 26
+ game_doc.settings.heading_color = "#FFF"
+ game_doc.current_form = "main"
+ game_doc.md2f_settings.background_color = "#bababa25"
+
+ --Register our new "Game Guide" Tab
+ i3.new_tab {
+ name = "guide",
+ description = "Game Guide",
+
+ -- Determine if the tab is visible by a player, `false` or `nil` hide the tab
+ access = function() return true end,
+
+ formspec = function(player, data, fs) end,
+
+ -----------------------
+ -- fields()
+ --
+ -- player: player objectRef
+ -- data: internal i3 data
+ -- fields: fields received by i3
+ --
+ -- This function is where all the magical integration happens
+ -- Long story short, the tab.formspec function gets called
+ -- with set_fs, which is the final bit of this function.
+ -- In order to support multiple pages, we have to override that
+ -- formspec function to write out the correct player formspec
+ --
+ -- The correct formspec can be the help page, main page,
+ -- category page, or entry page. What page is shown depends
+ -- on what fields are received.
+ --
+ -- The flow of the function is as follows
+ -- 1. Handle Fields
+ -- 2. Override tab[our_index].formspec
+ -- 3. Show/Update formspec
+
+ fields = function(player, data, fields)
+ local player_name = player:get_player_name()
+ -----------------Handle Main Form Fields------------------
+ if game_doc.player_data[player_name].current_form == "main" then
+ --Parse and process actual fields
+ if fields.gmdc_help then
+ game_doc.player_data[player_name].current_form = "help"
+ elseif fields.gmdc_select then
+ game_doc.player_data[player_name].current_form = "category"
+ elseif fields.gmdc_list then
+ local type, index = fields.gmdc_list:sub(1,3), tonumber(fields.gmdc_list:sub(5))
+ if type == "CHG" then
+ game_doc.player_data[player_name].category_index = index
+ elseif type == "DCL" then
+ game_doc.player_data[player_name].category_index = index
+ game_doc.player_data[player_name].current_form = "category"
+ end
+ end
+ -----------------Handle Category Form Fields------------------
+ elseif game_doc.player_data[player_name].current_form == "category" then
+ if fields.gmdc_back then
+ game_doc.player_data[player_name].category_index = nil
+ game_doc.player_data[player_name].current_form = "main"
+ elseif fields.gmdc_select then
+ game_doc.player_data[player_name].current_form = "entry"
+ elseif fields.gmdc_list then
+ local type, index = fields.gmdc_list:sub(1,3), tonumber(fields.gmdc_list:sub(5))
+ if type == "CHG" then
+ game_doc.player_data[player_name].selected_entry = index
+ elseif type == "DCL" then
+ game_doc.player_data[player_name].selected_entry = index
+ game_doc.player_data[player_name].current_form = "entry"
+ end
+ end
+ -----------------Handle Entry Form Fields------------------
+ elseif game_doc.player_data[player_name].current_form == "entry" then
+ if fields.gmdc_back then
+ game_doc.player_data[player_name].selected_entry = nil
+ game_doc.player_data[player_name].current_form = "category"
+ end
+ -----------------Handle Help Form Fields------------------
+ elseif game_doc.player_data[player_name].current_form == "help" then
+ if fields.gmdc_back then
+ game_doc.player_data[player_name].category_index = nil
+ game_doc.player_data[player_name].current_form = "main"
+ end
+ else --hasn't been set yet
+ game_doc.player_data[player_name].current_form = "main"
+ end
+
+ -----Override Formspec for tab-----
+ local tabs = i3.get_tabs()
+ local index = nil
+ for i=1,#tabs,1 do
+ if tabs[i].name == "guide" then
+ index = i
+ end
+ end
+ if index ~= nil then
+ -------------Handle displaying correct formspec-------------
+ local _fs = "" --variable to store the formspec to be shown
+ if game_doc.player_data[player_name].current_form == "help" then
+ _fs = game_doc.help_form(player_name)
+ elseif game_doc.player_data[player_name].current_form == "category" then
+ -- Get the selected category name
+ local index = game_doc.player_data[player_name].category_index or nil
+ if index == nil then
+ _fs = game_doc.main_form(player_name)
+ game_doc.player_data[player_name].current_form = "main"
+ else
+ if game_doc.settings.hidden_enable then
+
+ else
+ game_doc.player_data[player_name].selected_category = game_doc.category_list[index]
+ _fs = game_doc.category_form(game_doc.player_data[player_name].selected_category, player_name)
+ end
+ end
+ elseif game_doc.player_data[player_name].current_form == "entry" then
+ -- Get the selected entry name
+ local index = game_doc.player_data[player_name].selected_entry or nil
+ if index == nil then
+ _fs = game_doc.category_form(game_doc.player_data[player_name].selected_category, player_name)
+ game_doc.player_data[player_name].current_form = "category"
+ else
+ if game_doc.settings.hidden_enable then
+
+ else
+ local category = game_doc.player_data[player_name].selected_category
+ local entry = game_doc.entry_lists[category].entry_list[index]
+ _fs = game_doc.entry_form(category, entry, player_name)
+ end
+ end
+ else --main
+ _fs = game_doc.main_form(player_name)
+ end
+ tabs[index].formspec = function(player, data, fs)
+ fs(_fs)
+ end
+ else
+ tabs[index].formspec = function(player, data, fs)
+ fs("label[1,1,game_doc error in integration.lua]")
+ end
+ end
+ -----Display Formspec-----
+ i3.set_fs(player)
+ end,
+ }
+end
diff --git a/code/player_management.lua b/code/player_management.lua
index 619f97b..0913f85 100644
--- a/code/player_management.lua
+++ b/code/player_management.lua
@@ -25,6 +25,14 @@
-- returned, the old player value will be remembered. --
--------------------------------------------------------------
---All hidden data for each player is stored here
-game_doc.player_data = {}
-
+--------------------------
+--
+-- on_joinplayer
+--
+-- handles creating and loading a player's stored data
+--
+minetest.register_on_joinplayer(
+function(player, last_login)
+ local player_name = player:get_player_name()
+ game_doc.player_data[player_name] = {}
+end)
diff --git a/code/settings.lua b/code/settings.lua
index 483eb60..09c8686 100644
--- a/code/settings.lua
+++ b/code/settings.lua
@@ -77,7 +77,7 @@ handleStandardVariable("game_doc_button_height", "button_height", 1.6)
handleStandardVariable("game_doc_bgcolor", "bgcolor", "#111E")
-- Formspec heading Color
-handleStandardVariable("game_doc_heading_color", "heading_color", "#AFA")
+handleStandardVariable("game_doc_heading_color", "heading_color", "#FFF")
--Text Specific--
@@ -85,4 +85,20 @@ handleStandardVariable("game_doc_heading_color", "heading_color", "#AFA")
handleStandardVariable("game_doc_main_name", "main_name", "Game Guide")
-- Main Formspec Heading Font-Size
-handleStandardVariable("game_doc_main_font_size", "main_font_size", 32)
\ No newline at end of file
+handleStandardVariable("game_doc_main_font_size", "main_font_size", 32)
+
+ -- Markdown2Formspec
+game_doc.md2f_settings = {
+ background_color = "#bababa25",
+ font_color = "#FFF",
+ heading_1_color = "#AFA",
+ heading_2_color = "#FAA",
+ heading_3_color = "#AAF",
+ heading_4_color = "#FFA",
+ heading_5_color = "#AFF",
+ heading_6_color = "#FAF",
+ code_block_mono_color = "#6F6",
+ code_block_font_size = 14,
+ mono_color = "#6F6",
+ block_quote_color = "#FFA",
+}
\ No newline at end of file
diff --git a/init.lua b/init.lua
index 2094fda..fa1664e 100644
--- a/init.lua
+++ b/init.lua
@@ -48,6 +48,7 @@ game_doc = {}
game_doc.name = "game_doc"
game_doc.path = minetest.get_modpath(game_doc.name)
game_doc.doc_data = {} -- the actual entries
+game_doc.player_data = {} -- for storing current selected entries/categories, and hidden values
game_doc.ready_forms = {} -- for storing ready made category formspecs- if hidden system is disabled
game_doc.mods_loaded = false
@@ -55,14 +56,10 @@ game_doc.mods_loaded = false
dofile(game_doc.path .. "/code/settings.lua")
dofile(game_doc.path .. "/code/add_entries.lua")
dofile(game_doc.path .. "/code/direct_access.lua")
+dofile(game_doc.path .. "/code/player_management.lua")
+dofile(game_doc.path .. "/code/hidden_modifications.lua")
dofile(game_doc.path .. "/code/formspecs.lua")
dofile(game_doc.path .. "/code/integration.lua")
--- These are only used if the hidden system is enabled
-if game_doc.hidden_enable then
- dofile(game_doc.path .. "/code/player_management.lua")
- dofile(game_doc.path .. "/code/hidden_modifications.lua")
-end
-
-- Done, let 'em know
minetest.log("info","'game_doc' loaded successfully")
\ No newline at end of file
diff --git a/mod.conf b/mod.conf
index 54a16b1..86f71d3 100644
--- a/mod.conf
+++ b/mod.conf
@@ -2,4 +2,5 @@ name=game_doc
description=A Flexible In-Game Documentation System
title=game_doc
depends=markdown2formspec
+optional_depends=i3
author=Just_Visiting
diff --git a/settingtypes.txt b/settingtypes.txt
index 2a932af..1a64c29 100644
--- a/settingtypes.txt
+++ b/settingtypes.txt
@@ -13,7 +13,7 @@ game_doc_enable_chat_command (Enable chat command access) enum Enabled Enabled,D
#------------Graphical Settings------------#
- --Dimensions--
+# --Dimensions--
# Full Width of all game_doc formspecs
game_doc_width (Formspec Width) float 20.0
@@ -33,15 +33,15 @@ game_doc_button_width (Button Width) float 5.0
# The button heights
game_doc_button_height (Button Height) float 1.6
- --Colors--
+# --Colors--
# Formspec Background Color
-game_doc_bgcolor (Background Color) string #111E
+game_doc_bgcolor (Background Color) string #bababa25
# Formspec heading Color
-game_doc_heading_color (Heading Color) string #AFA
+game_doc_heading_color (Heading Color) string #FFF
- --Text Specific--
+# --Text Specific--
# Main Formspec Name
game_doc_main_name (Main Formspec Heading) string Game Guide
diff --git a/textures/game_doc_back.png b/textures/game_doc_back.png
new file mode 100644
index 0000000..7bdb629
Binary files /dev/null and b/textures/game_doc_back.png differ
diff --git a/textures/game_doc_back_pressed.png b/textures/game_doc_back_pressed.png
new file mode 100644
index 0000000..63c09e5
Binary files /dev/null and b/textures/game_doc_back_pressed.png differ
diff --git a/textures/game_doc_help.png b/textures/game_doc_help.png
new file mode 100644
index 0000000..8446001
Binary files /dev/null and b/textures/game_doc_help.png differ
diff --git a/textures/game_doc_help_pressed.png b/textures/game_doc_help_pressed.png
new file mode 100644
index 0000000..9d88388
Binary files /dev/null and b/textures/game_doc_help_pressed.png differ
diff --git a/textures/game_doc_select.png b/textures/game_doc_select.png
new file mode 100644
index 0000000..03f0982
Binary files /dev/null and b/textures/game_doc_select.png differ
diff --git a/textures/game_doc_select_pressed.png b/textures/game_doc_select_pressed.png
new file mode 100644
index 0000000..704a19b
Binary files /dev/null and b/textures/game_doc_select_pressed.png differ