-- OT-MMO: PLANTILLA de la ventana de raid (solo aspecto). La lógica, el opcode y los jefes llegarán con las raids -- (vault OT-MMO/raids/plan-raids.md). Para verla: modules.game_raid.probar() desde la terminal o un fixture. local ORO, CLARO, TEXTO2, BAJA = '#C7A86B', '#E8D3A2', '#9AA7AE', '#39444C' raidController = Controller:new() local ventana = nil -- Datos de ejemplo de la plantilla: 4 alas de 3 jefes; los nombres de las alas son una propuesta de diseño. local EJEMPLO = { nombre = 'La Ciudadela del Faro Muerto', meta = 'Raid · 10 o 20 aventureros · nivel 100 · equipo de índice 130', alas = { { 'La Escollera', { { 'Primer jefe', true }, { 'Segundo jefe', true }, { 'Tercer jefe', false } } }, { 'El Claustro de Ceniza', { { 'Primer jefe', false }, { 'Segundo jefe', false }, { 'Tercer jefe', false } } }, { 'La Torre de las Nueve Voces', { { 'Primer jefe', false }, { 'Segundo jefe', false }, { 'Tercer jefe', false } } }, { 'La Linterna Apagada', { { 'Primer jefe', false }, { 'Segundo jefe', false }, { 'El Faro Muerto', false } } }, }, bloqueo = '2 / 12', renueva = 'Se renueva el martes a las 06:00. Los jefes muertos siguen muertos si sales y vuelves.', reglas = 'Las alas se abren en orden: hay un portal entre una y la siguiente.\nSin límite de intentos durante la semana.\n' .. '3 resurrecciones en combate por jefe.\nCuras de área al subgrupo de 5.', grupo = 'Grupo de raid · 17 / 20 · dos protectores, cinco sanadores', } local function pintar(d) ventana.nombre:setText(d.nombre) ventana:setText('Raid · ' .. d.nombre) ventana.meta:setText(d.meta) ventana.alas:destroyChildren() for _, a in ipairs(d.alas) do local w = g_ui.createWidget('RaidAla', ventana.alas) w.titulo:setText(a[1]) local muertos = 0 for _, j in ipairs(a[2]) do local f = g_ui.createWidget('RaidJefe', w.jefes) f.nombre:setText(j[1]) if j[2] then muertos = muertos + 1 f.estado:setBackgroundColor(ORO) f.nombre:setColor(TEXTO2) end end w.meta:setText(string.format('%d / %d', muertos, #a[2])) w.meta:setColor(muertos == #a[2] and ORO or TEXTO2) end ventana.bloqueo:setText(d.bloqueo) ventana.renueva:setText(d.renueva) ventana.reglas:setText(d.reglas) ventana.grupo:setText(d.grupo) ventana.entrar:setEnabled(false) ventana.entrar:setTooltip('Plantilla: las raids aún no están abiertas.') end function probar(d) pintar(d or EJEMPLO) ventana:show() ventana:raise() ventana:focus() end function toggle() if ventana:isVisible() then ventana:hide() else probar() end end function entrar() end function raidController:onInit() g_ui.importStyle('/game_viaje/valdren') ventana = g_ui.displayUI('raid') ventana:hide() end function raidController:onTerminate() if ventana then ventana:destroy() end ventana = nil end