Add command to reveal all entries at once
This commit is contained in:
parent
e518e027c9
commit
d5542592dc
12
API.md
12
API.md
@ -77,6 +77,7 @@ These functions are available:
|
|||||||
* `doc.entry_revealed`: Checks whether an entry is visible and normally accessible to a player
|
* `doc.entry_revealed`: Checks whether an entry is visible and normally accessible to a player
|
||||||
* `doc.mark_entry_as_viewed`: Manually marks an entry as viewed/read by a player
|
* `doc.mark_entry_as_viewed`: Manually marks an entry as viewed/read by a player
|
||||||
* `doc.mark_entry_as_revealed`: Make a hidden entry visible and accessible to a player
|
* `doc.mark_entry_as_revealed`: Make a hidden entry visible and accessible to a player
|
||||||
|
* `doc.mark_all_entries_as_revealed`: Make all hidden entries visible and accessible to a player
|
||||||
* `doc.add_entry_alias`: Add an alternative name which can be used to access an entry
|
* `doc.add_entry_alias`: Add an alternative name which can be used to access an entry
|
||||||
* `doc.add_entry_aliases`: Add multiple alternative names which can be used to access an entry
|
* `doc.add_entry_aliases`: Add multiple alternative names which can be used to access an entry
|
||||||
* `doc.get_category_count`: Returns the total number categories
|
* `doc.get_category_count`: Returns the total number categories
|
||||||
@ -285,7 +286,7 @@ Always `nil`.
|
|||||||
Marks a particular entry as “revealed” to a player. If the entry is
|
Marks a particular entry as “revealed” to a player. If the entry is
|
||||||
declared as hidden, it will become visible in the list of entries for
|
declared as hidden, it will become visible in the list of entries for
|
||||||
this player and will always be accessible with `doc.show_entry`. This
|
this player and will always be accessible with `doc.show_entry`. This
|
||||||
change is permanently.
|
change is permanent.
|
||||||
|
|
||||||
For entries which are not normally hidden, this function has no direct
|
For entries which are not normally hidden, this function has no direct
|
||||||
effect.
|
effect.
|
||||||
@ -298,6 +299,15 @@ effect.
|
|||||||
#### Returns
|
#### Returns
|
||||||
Always `nil`.
|
Always `nil`.
|
||||||
|
|
||||||
|
### `doc.mark_entry_as_revealed(playername)`
|
||||||
|
Marks all entries as “revealed” to a player. This change is permanent.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* `playername`: Name of the player for whom to reveal the entries
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
Always `nil`.
|
||||||
|
|
||||||
### `doc.add_entry_alias(category_id, entry_id, alias)`
|
### `doc.add_entry_alias(category_id, entry_id, alias)`
|
||||||
Adds a single alias for an entry. When an entry has an alias, supplying the
|
Adds a single alias for an entry. When an entry has an alias, supplying the
|
||||||
alias to a function which demands an `entry_id` will work as if the original
|
alias to a function which demands an `entry_id` will work as if the original
|
||||||
|
11
README.md
11
README.md
@ -6,6 +6,7 @@ The mod itself does not provide any help texts, just the framework.
|
|||||||
Current version: 0.5.0
|
Current version: 0.5.0
|
||||||
|
|
||||||
## For users
|
## For users
|
||||||
|
### Accessing the help
|
||||||
To open the help, there are multiple ways:
|
To open the help, there are multiple ways:
|
||||||
|
|
||||||
- Say “/help” in chat. This always works.
|
- Say “/help” in chat. This always works.
|
||||||
@ -16,6 +17,16 @@ The documentation system itself should be more or less self-explanatory.
|
|||||||
This mod is useless on its own, you will only need this mod as a dependency
|
This mod is useless on its own, you will only need this mod as a dependency
|
||||||
for mods which actually add some help entries.
|
for mods which actually add some help entries.
|
||||||
|
|
||||||
|
### Hidden entries
|
||||||
|
Some entries are initially hidden from you. You can't see them until you
|
||||||
|
unlocked them. Mods can decide for themselves how particular entries are
|
||||||
|
revealed. Normally you just have to proceed in the game to unlock more
|
||||||
|
entries. Hidden entries exist to avoid spoilers and give players a small
|
||||||
|
sense of progress.
|
||||||
|
|
||||||
|
Players with the `doc_reveal` privilege can use the `doc_reveal` chat command
|
||||||
|
to reveal all hidden entries instantly.
|
||||||
|
|
||||||
## For modders and subgame authors
|
## For modders and subgame authors
|
||||||
This mod helps you in writing extensive documentation for your mod or subgame.
|
This mod helps you in writing extensive documentation for your mod or subgame.
|
||||||
You can write about basically anything in the presentation you prefer.
|
You can write about basically anything in the presentation you prefer.
|
||||||
|
50
init.lua
50
init.lua
@ -93,6 +93,42 @@ function doc.mark_entry_as_revealed(playername, category_id, entry_id)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Reveal
|
||||||
|
function doc.mark_all_entries_as_revealed(playername)
|
||||||
|
-- Has at least 1 new entry been revealed?
|
||||||
|
local reveal1 = false
|
||||||
|
for category_id, category in pairs(doc.data.categories) do
|
||||||
|
if doc.data.players[playername].stored_data.revealed[category_id] == nil then
|
||||||
|
doc.data.players[playername].stored_data.revealed[category_id] = {}
|
||||||
|
doc.data.players[playername].stored_data.revealed_count[category_id] = doc.get_entry_count(category_id) - doc.data.categories[category_id].hidden_count
|
||||||
|
end
|
||||||
|
for entry_id, _ in pairs(category.entries) do
|
||||||
|
if doc.data.players[playername].stored_data.revealed[category_id][entry_id] ~= true then
|
||||||
|
doc.data.players[playername].stored_data.revealed[category_id][entry_id] = true
|
||||||
|
doc.data.players[playername].stored_data.revealed_count[category_id] = doc.data.players[playername].stored_data.revealed_count[category_id] + 1
|
||||||
|
reveal1 = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if reveal1 then
|
||||||
|
-- Needed because new entries are added to player's view on entry list
|
||||||
|
doc.data.players[playername].entry_textlist_needs_updating = true
|
||||||
|
|
||||||
|
-- Notify
|
||||||
|
local msg = "All help entries unlocked!"
|
||||||
|
if minetest.get_modpath("central_message") ~= nil then
|
||||||
|
cmsg.push_message_player(minetest.get_player_by_name(playername), msg)
|
||||||
|
else
|
||||||
|
minetest.chat_send_player(playername, msg)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Play notification sound (ignore sound limit intentionally)
|
||||||
|
minetest.sound_play({ name = "doc_reveal", gain = 0.2 }, { to_player = playername })
|
||||||
|
doc.data.players[playername].last_reveal_sound = os.time()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Returns true if the specified entry has been viewed by the player
|
-- Returns true if the specified entry has been viewed by the player
|
||||||
function doc.entry_viewed(playername, category_id, entry_id)
|
function doc.entry_viewed(playername, category_id, entry_id)
|
||||||
local entry, entry_id = doc.get_entry(category_id, entry_id)
|
local entry, entry_id = doc.get_entry(category_id, entry_id)
|
||||||
@ -842,3 +878,17 @@ if minetest.get_modpath("unified_inventory") ~= nil then
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
minetest.register_privilege("doc_reveal", {
|
||||||
|
description = "Allows you to reveal all hidden help entries with /doc_unlock",
|
||||||
|
give_to_singleplayer = false
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_chatcommand("doc_reveal", {
|
||||||
|
params = "",
|
||||||
|
description = "Reveals all hidden help entries to you",
|
||||||
|
privs = { doc_unlock = true },
|
||||||
|
func = function(name, param)
|
||||||
|
doc.mark_all_entries_as_revealed(name)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user