-- Print the weather map or change weather.
local helpstr = [====[

weather
=======
Prints a map of the local weather, or with arguments ``clear``,
``rain``, and ``snow`` changes the weather.

]====]

local args = {...}
local cmd
local val_override = tonumber(args[1])
if args[1] then
    cmd = args[1]:sub(1, 1)
end
if cmd == "h" or cmd == "?" then
    print("The current weather is "..df.weather_type[dfhack.world.ReadCurrentWeather()])
    print(helpstr)
elseif cmd == "c" then
    dfhack.world.SetCurrentWeather(df.weather_type.None)
    print("The weather has cleared.")
elseif cmd == "r" then
    dfhack.world.SetCurrentWeather(df.weather_type.Rain)
    print("It is now raining.")
elseif cmd == "s" then
    dfhack.world.SetCurrentWeather(df.weather_type.Snow)
    print("It is now snowing.")
elseif val_override then
    dfhack.world.SetCurrentWeather(val_override)
    print("Set weather to " .. val_override)
elseif args[1] then
    qerror("Unrecognized argument: " .. args[1])
else
    -- df.global.current_weather is arranged in columns, not rows
    local kind = {[0]="C", "R", "S"}
    print("Weather map (C = clear, R = rain, S = snow):")
    for y=0, 4 do
        local s = ""
        for x=0, 4 do
            local cur = df.global.current_weather[x][y]
            s = s .. (kind[cur] or cur) .. ' '
        end
        print(s)
    end
end
