Compare commits
5 Commits
903ea68754
...
35f4201dbd
Author | SHA1 | Date |
---|---|---|
Wuzzy | 35f4201dbd | |
Wuzzy | c6e2848b56 | |
Wuzzy | ef753f94a2 | |
Wuzzy | fb46fead56 | |
Wuzzy | f71c788fea |
8
API.md
8
API.md
|
@ -116,6 +116,8 @@ Holidays can be queried with `calendar.get_holidays`.
|
|||
|
||||
* `def`: Holiday definition. A table with these fields:
|
||||
* `name`: Human-readable holiday name
|
||||
* `text_color` (optional): Custom text color of day/tooltip text
|
||||
* `daybox_color` (optional): Custom text color of day box
|
||||
* `type`: type of holiday, determines other arguments
|
||||
* Arguments when `type=="monthday"`:
|
||||
* `days`: Cardinal month day on which the holiday occurs
|
||||
|
@ -126,6 +128,10 @@ Holidays can be queried with `calendar.get_holidays`.
|
|||
return true if it's a holiday and false if not.
|
||||
Try to keep your calculations as simple as possible
|
||||
|
||||
When no colors are specified, a default green color is used. When multiple holidays fall
|
||||
on the same day and the holidays use different colors, the day box will assume the color
|
||||
of the first registered holiday (the order is not predictable).
|
||||
|
||||
#### Examples
|
||||
```
|
||||
-- First day of every year
|
||||
|
@ -171,7 +177,7 @@ get a tooltip.
|
|||
* `show_holiday`: If `true`, mark holidays (default: `true`)
|
||||
* `changable`: Which controls are available:
|
||||
* `"full"`: Can change year and month (default)
|
||||
* `"months"`: Can change month only
|
||||
* `"months"`: Can change month within selected year only
|
||||
* `"none"`: Can't change anything
|
||||
* `today_button`: Whether to show the 'Today' button (default: `true`)
|
||||
Note: If `changable=="none"`, the 'Today' button is never shown
|
||||
|
|
|
@ -12,7 +12,7 @@ There are 7 weekdays from Monday to Sunday, starting at Monday.
|
|||
The calendar starts at Day 1, Month 1 (January), Year 1.
|
||||
|
||||
## Version
|
||||
0.1.0
|
||||
1.1.1
|
||||
|
||||
## Compability
|
||||
This mod is designed for Minetest 5.3.0, but there's a compability
|
||||
|
|
27
gui.lua
27
gui.lua
|
@ -118,6 +118,7 @@ function calendar.show_calendar(player_name, settings, wanted_months, wanted_yea
|
|||
pday = iday + 1
|
||||
end
|
||||
local day_str = tostring(pday)
|
||||
local holiday_color
|
||||
local box_color = COLOR_DAYBOX
|
||||
local holidays = calendar.get_holidays(tdays)
|
||||
local tooltip_lines = {}
|
||||
|
@ -125,11 +126,18 @@ function calendar.show_calendar(player_name, settings, wanted_months, wanted_yea
|
|||
local is_holiday = false
|
||||
if settings.show_holidays and #holidays > 0 then
|
||||
is_holiday = true
|
||||
local text_color = COLOR_HOLIDAY
|
||||
for h=1, #holidays do
|
||||
table.insert(tooltip_lines, minetest.colorize(COLOR_HOLIDAY, holidays[h].name))
|
||||
if holidays[h].text_color then
|
||||
text_color = holidays[h].text_color
|
||||
else
|
||||
text_color = COLOR_HOLIDAY
|
||||
end
|
||||
day_str = minetest.colorize(COLOR_HOLIDAY, day_str)
|
||||
box_color = COLOR_DAYBOX_HOLIDAY
|
||||
table.insert(tooltip_lines, minetest.colorize(text_color, holidays[h].name))
|
||||
end
|
||||
holiday_color = holidays[1].text_color or COLOR_HOLIDAY
|
||||
day_str = minetest.colorize(holiday_color, day_str)
|
||||
box_color = holidays[1].daybox_color or COLOR_DAYBOX_HOLIDAY
|
||||
end
|
||||
day_str = F(day_str)
|
||||
-- Highlight today
|
||||
|
@ -146,8 +154,8 @@ function calendar.show_calendar(player_name, settings, wanted_months, wanted_yea
|
|||
.. "label["..(x+0.15)..","..(y+0.075)..";"..day_str.."]"
|
||||
else
|
||||
local day_num = pday
|
||||
if is_holiday then
|
||||
day_num = minetest.colorize(COLOR_HOLIDAY, pday)
|
||||
if is_holiday and settings.show_holidays then
|
||||
day_num = minetest.colorize(holiday_color, pday)
|
||||
end
|
||||
-- Fake button to display the day box. Clicking has no effect, this
|
||||
-- fake button is only used to support tooltips as a workaround
|
||||
|
@ -175,8 +183,9 @@ function calendar.show_calendar(player_name, settings, wanted_months, wanted_yea
|
|||
local chg_years = settings.changable == "full"
|
||||
-- Add controls
|
||||
if chg_months then
|
||||
|
||||
if wanted_months > 0 or wanted_years > 0 then
|
||||
if chg_months or wanted_months > 0 then
|
||||
if (chg_years or wanted_months > 0) or (not chg_years and wanted_months > 0) then
|
||||
formspec = formspec .. "button[1.5,"..y..";1,1;prev_month;<]"
|
||||
.. "tooltip[prev_month;"..F(S("Previous month")).."]"
|
||||
end
|
||||
|
@ -189,7 +198,7 @@ function calendar.show_calendar(player_name, settings, wanted_months, wanted_yea
|
|||
formspec = formspec .. "button[2.5,"..y..";2,1;today;"..F(S("Today")).."]"
|
||||
end
|
||||
|
||||
if chg_months or wanted_months < calendar.MONTHS - 1 then
|
||||
if (chg_years or wanted_months < calendar.MONTHS - 1) or (not chg_years and wanted_months < calendar.MONTHS - 1) then
|
||||
formspec = formspec .. "button[4.5,"..y..";1,1;next_month;>]"
|
||||
.. "tooltip[next_month;"..F(S("Next month")).."]"
|
||||
end
|
||||
|
@ -248,7 +257,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
if fields.next_month then
|
||||
cur_months = cur_months + 1
|
||||
if cur_months > calendar.MONTHS - 1 then
|
||||
if settings.changable == "months" or settings.changable == "full" then
|
||||
if settings.changable == "full" then
|
||||
cur_months = 0
|
||||
cur_years = cur_years + 1
|
||||
else
|
||||
|
@ -259,7 +268,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
elseif fields.prev_month then
|
||||
cur_months = cur_months - 1
|
||||
if cur_months < 0 and cur_years > 0 then
|
||||
if settings.changable == "months" or settings.changable == "full" then
|
||||
if settings.changable == "full" then
|
||||
cur_months = calendar.MONTHS - 1
|
||||
cur_years = cur_years - 1
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue