Color boxes in the random order selection formspec.

white/gray: not yet completed boxes
green: completed boxes

Display the box numbers, since the order numbers may be confusing.
This commit is contained in:
Auke Kok 2017-12-11 22:16:37 -08:00
parent 0b106b1a34
commit fec7f4a25b
2 changed files with 32 additions and 3 deletions

View File

@ -114,12 +114,20 @@ local function series_enter_choice(player, id)
f = f .. "textlist[0.2,0.5;5.4,7.4;in_series;"
local boxes = db.series_get_boxes(id)
local player_id = db.player_get_id(name)
local completed = db.player_get_series_boxes(player_id, id)
for k, box_id in pairs(boxes) do
-- TODO: color box depending on completed status
local bmeta = db.box_get_meta(box_id)
local bname = bmeta.meta.box_name or "[unnamed]"
--f = f .. "#00FF00"
f = f .. minetest.formspec_escape("[" .. k .. "] " .. bname)
local color = "#c0c0c0"
for _, v in ipairs(completed) do
if v == box_id then
color = "#00ff00"
break
end
end
f = f .. color
f = f .. minetest.formspec_escape("[" .. box_id .. "] " .. bname)
if k ~= #boxes then
f = f .. ","
end

View File

@ -278,6 +278,27 @@ function db.player_get_players()
return players
end
function db.player_get_series_boxes(player_id, series_id)
local stmt = itb_db:prepare[[
SELECT box_id FROM points WHERE player_id=:player_id AND type="time" AND box_id
IN (SELECT box_id FROM series_box WHERE series_id=:series_id)
]]
stmt:bind_names{
player_id = player_id,
series_id = series_id
}
local completed = {}
local completed_count = 1
for row in stmt:nrows() do
completed[completed_count] = row.box_id
completed_count = completed_count + 1
end
stmt:finalize()
return completed
end
function db.series_create(name)
assert(name ~= "")
local stmt = itb_db:prepare[[