Skip to content
Snippets Groups Projects
Commit a086f402 authored by magicfelix's avatar magicfelix
Browse files

Allow custom category functionality

parent 776852d2
No related branches found
No related tags found
No related merge requests found
...@@ -2,46 +2,65 @@ local storage = minetest.get_mod_storage() ...@@ -2,46 +2,65 @@ local storage = minetest.get_mod_storage()
local games = {} local games = {}
local Category = {}
local Game = {} local Game = {}
function Game.get_stat(self, player, category) function Category.get_stat(self, player)
return storage:get_int("STATS." .. self.mod.. "." .. player .. "." .. category) return storage:get_int("STATS." .. self.game.mod .. "." .. player .. "." .. self.name)
end end
function Game.set_stat(self, player, category, value) function Category.set_stat(self, player, value)
storage:set_int("STATS." .. self.mod .. "." .. player .. "." .. category, value) storage:set_int("STATS." .. self.game.mod .. "." .. player .. "." .. self.name, value)
end end
function Game.increment_stat(self, player, category, difference) function Category.increment_stat(self, player, difference)
local current = self:get_stat(player, category) minetest.log(dump(self))
local current = self:get_stat(player)
if current == nil then if current == nil then
current = 0 current = 0
end end
self:set_stat(player, category, current + difference) self:set_stat(player, current + difference)
end
function Category.new(game, name, display_name, get, set, custom)
local category = {
game = game,
name = name,
display_name = display_name,
get_stat = get or Category.get_stat,
set_stat = set or Category.set_stat,
}
if custom then
for name, func in pairs(custom) do
category[name] = func
end
else
category.increment_stat = Category.increment_stat
end
return category
end end
function Game.get_stats(self, target) function Game.get_stats(self, target)
local output = self.display_name .. " statistics of " .. target local output = self.display_name .. " statistics of " .. target
for c_name, category in pairs(self.categories) do for c_name, category in pairs(self.categories) do
output = output .. "\n" .. category.display_name .. ": " .. self:get_stat(target, c_name) output = output .. "\n" .. category.display_name .. ": " .. category:get_stat(target)
end end
return true, output return true, output
end end
function Game.register(mod, name, display_name, categories) function Game.register(mod, name, display_name)
local game = { local game = {
mod = mod, mod = mod,
name = name, name = name,
display_name = display_name, display_name = display_name,
categories = categories,
get_stat = Game.get_stat,
set_stat = Game.set_stat,
increment_stat = Game.increment_stat,
get_stats = Game.get_stats, get_stats = Game.get_stats,
categories = {},
} }
games[mod] = game games[mod] = game
return game return game
end end
magic_stats.games = games magic_stats.games = games
magic_stats.Category = Category
magic_stats.Game = Game magic_stats.Game = Game
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment