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

Allow custom category functionality

parent 776852d2
Branches main
No related tags found
No related merge requests found
......@@ -2,46 +2,65 @@ local storage = minetest.get_mod_storage()
local games = {}
local Category = {}
local Game = {}
function Game.get_stat(self, player, category)
return storage:get_int("STATS." .. self.mod.. "." .. player .. "." .. category)
function Category.get_stat(self, player)
return storage:get_int("STATS." .. self.game.mod .. "." .. player .. "." .. self.name)
end
function Game.set_stat(self, player, category, value)
storage:set_int("STATS." .. self.mod .. "." .. player .. "." .. category, value)
function Category.set_stat(self, player, value)
storage:set_int("STATS." .. self.game.mod .. "." .. player .. "." .. self.name, value)
end
function Game.increment_stat(self, player, category, difference)
local current = self:get_stat(player, category)
function Category.increment_stat(self, player, difference)
minetest.log(dump(self))
local current = self:get_stat(player)
if current == nil then
current = 0
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
function Game.get_stats(self, target)
local output = self.display_name .. " statistics of " .. target
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
return true, output
end
function Game.register(mod, name, display_name, categories)
function Game.register(mod, name, display_name)
local game = {
mod = mod,
name = 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,
categories = {},
}
games[mod] = game
return game
end
magic_stats.games = games
magic_stats.Category = Category
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