97 lines
3.4 KiB
Lua
97 lines
3.4 KiB
Lua
|
|
||
|
function on_hud_render()
|
||
|
local s = gPlayerSyncTable[0]
|
||
|
hud_hide()
|
||
|
|
||
|
djui_hud_set_resolution(RESOLUTION_N64)
|
||
|
djui_hud_set_font(FONT_NORMAL)
|
||
|
|
||
|
local scale = 0.25
|
||
|
local width = 0
|
||
|
local height = 4 * scale
|
||
|
|
||
|
for i in pairs(gRankings) do
|
||
|
local np = gNetworkPlayers[gRankings[i].playerIndex]
|
||
|
local w = (djui_hud_measure_text(tostring(i) .. '. ' .. np.name) + 8) * scale
|
||
|
if w > width then width = w end
|
||
|
height = height + 28 * scale
|
||
|
end
|
||
|
|
||
|
djui_hud_set_color(0, 0, 0, 128)
|
||
|
djui_hud_render_rect(0, 0, width, height)
|
||
|
|
||
|
local x = 4 * scale
|
||
|
local y = 0
|
||
|
local rank = 0
|
||
|
|
||
|
-- draw rankings
|
||
|
for i in pairs(gRankings) do
|
||
|
local np = gNetworkPlayers[gRankings[i].playerIndex]
|
||
|
djui_hud_set_color(0, 0, 0, 255)
|
||
|
djui_hud_print_text(tostring(i) .. '. ' .. np.name, x + 2 * scale, y + 2 * scale, scale)
|
||
|
if gRankings[i].playerIndex == 0 then
|
||
|
rank = i
|
||
|
djui_hud_set_color(255, 240, 150, 255)
|
||
|
else
|
||
|
djui_hud_set_color(220, 220, 220, 255)
|
||
|
end
|
||
|
djui_hud_print_text(tostring(i) .. '. ' .. np.name, x + 0 * scale, y + 0 * scale, scale)
|
||
|
y = y + 28 * scale
|
||
|
end
|
||
|
|
||
|
|
||
|
if gGlobalSyncTable.gameState == GAME_STATE_RACE_COUNTDOWN then
|
||
|
-- draw countdown
|
||
|
scale = 0.6
|
||
|
djui_hud_set_font(FONT_MENU)
|
||
|
djui_hud_set_color(64, 128, 255, 255)
|
||
|
local countdown = math.floor((gGlobalSyncTable.raceStartTime - get_network_area_timer()) / 30)
|
||
|
countdown = clamp(countdown + 1, 1, 5)
|
||
|
|
||
|
local countdownText = tostring(countdown)
|
||
|
x = (djui_hud_get_screen_width() - djui_hud_measure_text(countdownText) * scale) / 2
|
||
|
djui_hud_print_text(countdownText, x, 2 * scale, scale)
|
||
|
else
|
||
|
-- draw lap counter
|
||
|
scale = 0.3
|
||
|
djui_hud_set_font(FONT_MENU)
|
||
|
djui_hud_set_color(64, 128, 255, 255)
|
||
|
local lapText = 'LAP ' .. tostring(s.lap) .. ' /' .. tostring(gGlobalSyncTable.maxLaps)
|
||
|
if s.finish ~= nil and s.finish > 0 then lapText = 'FINISHED' end
|
||
|
x = (djui_hud_get_screen_width() - djui_hud_measure_text(lapText) * scale) / 2
|
||
|
djui_hud_print_text(lapText, x, 2 * scale, scale)
|
||
|
|
||
|
-- draw player rank
|
||
|
if rank > 0 then
|
||
|
scale = 0.6
|
||
|
djui_hud_set_color(255, clamp(255 - 255 * (rank / 8), 0, 255), 0, 255)
|
||
|
|
||
|
local rankText = tostring(rank) .. 'th'
|
||
|
if rank == 1 then rankText = '1st' end
|
||
|
if rank == 2 then rankText = '2nd' end
|
||
|
if rank == 3 then rankText = '3rd' end
|
||
|
|
||
|
x = (djui_hud_get_screen_width() - djui_hud_measure_text(rankText) * scale) / 2
|
||
|
y = (djui_hud_get_screen_height() - 80 * scale)
|
||
|
djui_hud_print_text(rankText, x, y, scale)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if gGlobalSyncTable.raceQuitTime > 0 then
|
||
|
-- draw ending countdown
|
||
|
scale = 0.6
|
||
|
djui_hud_set_font(FONT_MENU)
|
||
|
djui_hud_set_color(64, 128, 255, 255)
|
||
|
local countdown = math.floor((gGlobalSyncTable.raceQuitTime - get_network_area_timer()) / 30)
|
||
|
countdown = clamp(countdown + 1, 1, 20)
|
||
|
|
||
|
local countdownText = tostring(countdown)
|
||
|
x = (djui_hud_get_screen_width() - djui_hud_measure_text(countdownText) * scale) / 2
|
||
|
y = 40 * scale
|
||
|
djui_hud_print_text(countdownText, x, y, scale)
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
hook_event(HOOK_ON_HUD_RENDER, on_hud_render)
|