|
if Platform.cmdline then return end |
|
|
|
if FirstLoad then |
|
g_DebugWindDraw = false |
|
g_DebugWindTexts = false |
|
g_DebugWindTiles = false |
|
end |
|
|
|
function OnMsg.NewMapLoaded() |
|
g_DebugWindDraw = false |
|
g_DebugWindTexts = false |
|
g_DebugWindTiles = false |
|
end |
|
|
|
function DbgDrawWind(show, show_texts, show_tiles_around_cursor) |
|
g_DebugWindDraw = not not show |
|
g_DebugWindTexts = not not show_texts |
|
g_DebugWindTiles = not not show_tiles_around_cursor |
|
DbgClearVectors() |
|
DbgClearTexts() |
|
if not show then |
|
return |
|
end |
|
|
|
local width, height = terrain.GetMapSize() |
|
local wind_tile_size = const.WindTileSize |
|
local wind_half_tile_size = wind_tile_size / 2 |
|
local end_x = width / wind_tile_size * wind_tile_size |
|
local end_y = height / wind_tile_size * wind_tile_size |
|
local cursor = show_tiles_around_cursor and GetTerrainCursor() |
|
for j = 0, end_y, wind_tile_size do |
|
for i = 0, end_x, wind_tile_size do |
|
local pos = point(i + wind_half_tile_size, j + wind_half_tile_size) |
|
pos = pos:SetZ(terrain.GetHeight(pos) + 5 * guim) |
|
local dir = terrain.GetWindDirection(pos):SetZ(0) |
|
if dir:Len2D2() > 0 then |
|
local strength = dir:Len2D() |
|
local color = GetWindColorCode(strength, const.WindMaxStrength) |
|
DbgAddVector(pos - dir / 2, dir, color) |
|
if show_texts then |
|
DbgAddText(strength, pos, color) |
|
end |
|
if show_tiles_around_cursor then |
|
local pt1 = point(i, j) |
|
local pt2 = point(i + wind_tile_size - 1, j + wind_tile_size - 1) |
|
local center = (pt1 + pt2) / 2 |
|
if center:Dist2D(cursor) < 30 * guim then |
|
local z = terrain.GetHeight(center) + 4 * guim |
|
local tile_box = box(pt1:SetZ(z), pt2:SetZ(z)) |
|
DbgAddBox(tile_box, color) |
|
end |
|
end |
|
end |
|
end |
|
end |
|
end |
|
|
|
function OnMsg.WindMarkersApplied() |
|
if g_DebugWindDraw then |
|
DbgDrawWind(g_DebugWindDraw, g_DebugWindTexts, g_DebugWindTiles) |
|
end |
|
end |
|
|