Allow clearing the message log.

This commit is contained in:
Mari the Deer 2023-03-10 11:48:21 +01:00
commit bbf89546e3
6 changed files with 84 additions and 5 deletions

View file

@ -418,6 +418,10 @@ SWWM_NOSTOREBUY = "(no items left to buy)";
SWWM_NOSTORESELL = "(no items to be sold)";
SWWM_CHATTAB = "Messages";
SWWM_NOCHAT = "(message history is empty)";
SWWM_CLEARCHAT0 = "Are you sure you want to clear all messages?";
SWWM_CLEARCHAT1 = "\cfEnter, Left Click\c- to confirm";
SWWM_CLEARCHAT2 = "\cfBackspace, Right Click\c- to cancel";
SWWM_CHATCLEARED = "Message history has been cleared.";
SWWM_SECRETTAB = "Secret";
SWWM_TODEMO = "\cx\"Fight for justice, Demo-chan! You can do it!\"\c- \cg♥\c- Ibuki & Saya";
SWWM_CUTIECLUB = "\cx\"Never lose hope, Demo-chan! We're all with you!\"\c- \cg♥\c- Cutie Club";
@ -513,7 +517,9 @@ SWWM_HELPTXT =
"\cxMessages Tab - Controls\c-\n"
"\cx———————————————————————\c-\n"
"\n"
"\cfUp, Down:\c- Scroll";
"\cfUp, Down:\c- Scroll\n"
"\cfBackspace, Right Click:\c- Clear messages\n"
"\cfEnter, Left Click:\c- Confirm clear";
SWWM_GAMETAB = "Games";
SWWM_PICKGAME = "Choose a game";
SWWM_GAMETITLE_MADCATGAME = "Boot Test";

View file

@ -377,6 +377,10 @@ SWWM_NOSTOREBUY = "(no queda nada que comprar)";
SWWM_NOSTORESELL = "(no tienes ítems que vender)";
SWWM_CHATTAB = "Mensajes";
SWWM_NOCHAT = "(historial de mensajes vacío)";
SWWM_CLEARCHAT0 = "¿Seguro que quieres borrar todos los mensajes?";
SWWM_CLEARCHAT1 = "\cfEnter/Click Izdo.\c- para confirmar";
SWWM_CLEARCHAT2 = "\cfRetroceso/Click Dcho.\c- para cancelar";
SWWM_CHATCLEARED = "El historial de mensajes ha sido borrado.";
SWWM_SECRETTAB = "Secreto";
SWWM_TODEMO = "\cx\"¡Lucha por la justicia, Demo-chan! ¡Tú puedes!\"\c- \cg♥\c- Ibuki y Saya";
SWWM_CUTIECLUB = "\cx\"¡Jamás pierdas la esperanza, Demo-chan! ¡Estamos todas contigo!\"\c- \cg♥\c- Club Cuqui";
@ -472,7 +476,9 @@ SWWM_HELPTXT =
"\cxPestaña de Mensajes - Controles\c-\n"
"\cx———————————————————————————————\c-\n"
"\n"
"\cfArriba/Abajo:\c- Scroll";
"\cfArriba/Abajo:\c- Scroll\n"
"\cfRetroceso/Click Dcho.:\c- Borrar mensajes\n"
"\cfEnter/Click Izdo.:\c- Confirmar borrado";
SWWM_GAMETAB = "Juegos";
SWWM_PICKGAME = "Elige un juego";
SWWM_GAMETITLE_MADCATGAME = "Test de Arranque";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r783 \cu(Fri 10 Mar 11:24:32 CET 2023)\c-";
SWWM_SHORTVER="\cw1.3pre r783 \cu(2023-03-10 11:24:32)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r784 \cu(Fri 10 Mar 11:48:21 CET 2023)\c-";
SWWM_SHORTVER="\cw1.3pre r784 \cu(2023-03-10 11:48:21)\c-";

View file

@ -88,6 +88,20 @@ extend Class SWWMHandler
bar.ntagtic = level.totaltime;
bar.ntagcol = nametagcolor;
}
else if ( e.Name ~== "swwmrefreshmessagelog" )
{
let kbase = DemolitionistMenu(Menu.GetCurrentMenu());
if ( !kbase ) return;
foreach ( t:kbase.tabs )
{
if ( !(t is 'DemolitionistChatTab') ) continue;
let ct = DemolitionistChatTab(t);
if ( ct.msglist ) ct.msglist.Destroy();
break;
}
kbase.tmsg = StringTable.Localize("$SWWM_CHATCLEARED");
kbase.tmsgtic = Menu.MenuTime()+70;
}
}
override void NetworkProcess( ConsoleEvent e )
@ -454,6 +468,12 @@ extend Class SWWMHandler
if ( consoleplayer != e.Args[2] ) return;
SWWMFullHistory.PushMessage(e.Name.Mid(17),e.Args[0],e.Args[1]);
}
else if ( e.Name ~== "swwmclearmessages" )
{
if ( consoleplayer != e.Args[0] ) return;
SWWMFullHistory.ClearMessages();
SendInterfaceEvent(consoleplayer,"swwmrefreshmessagelog");
}
else if ( e.Name.Left(16) ~== "swwmremoteliner." )
{
if ( consoleplayer == e.Args[0] ) return;

View file

@ -7,6 +7,7 @@ Class DemolitionistChatTab : DemolitionistMenuTab
double smofs;
bool drag;
bool justopened;
bool bDel;
SWWMFullHistory hist;
override DemolitionistMenuTab Init( DemolitionistMenu master )
@ -116,6 +117,18 @@ Class DemolitionistChatTab : DemolitionistMenuTab
case MK_UP:
if ( Scroll(-16) ) master.MenuSound("menu/demoscroll");
break;
case MK_ENTER:
if ( bDel )
{
master.MenuSound("menu/democlose");
bDel = false;
EventHandler.SendNetworkEvent("swwmclearmessages",consoleplayer);
}
break;
case MK_BACK:
bDel = !bDel;
master.MenuSound(bDel?"menu/demosel":"menu/democlose");
break;
}
}
override void MouseInput( Vector2 pos, int btn )
@ -131,6 +144,10 @@ Class DemolitionistChatTab : DemolitionistMenuTab
master.MenuSound("menu/demoscroll");
drag = true;
}
MenuInput(MK_ENTER);
break;
case MB_RIGHT:
MenuInput(MK_BACK);
break;
case MB_WHEELUP:
if ( Scroll(-8) ) master.MenuSound("menu/demoscroll");
@ -148,7 +165,24 @@ Class DemolitionistChatTab : DemolitionistMenuTab
}
override void Drawer( double fractic )
{
if ( !hist || (msglist.items.Size() <= 0) )
if ( bDel )
{
double fh = master.mSmallFont.GetHeight();
double yy = int(master.ws.y-fh*4)/2;
String str = StringTable.Localize("$SWWM_CLEARCHAT0");
double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2;
Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true);
yy += fh*2;
str = StringTable.Localize("$SWWM_CLEARCHAT1");
xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2;
Screen.DrawText(master.mSmallFont,Font.CR_WHITE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true);
yy += fh;
str = StringTable.Localize("$SWWM_CLEARCHAT2");
xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2;
Screen.DrawText(master.mSmallFont,Font.CR_WHITE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true);
return;
}
if ( !hist || !msglist || (msglist.items.Size() <= 0) )
{
String str = StringTable.Localize("$SWWM_NOCHAT");
double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2;

View file

@ -53,6 +53,19 @@ Class SWWMFullHistory : SWWMStaticThinker
m.rep = 1;
fh.msg.Push(m);
}
static play void ClearMessages()
{
let fh = SWWMFullHistory(ThinkerIterator.Create("SWWMFullHistory",STAT_STATIC).Next());
if ( !fh )
{
fh = new("SWWMFullHistory");
fh.ChangeStatNum(STAT_STATIC);
return;
}
fh.lastmap = "";
fh.msg.Clear();
}
}
// Dedicated mission log (for custom maps)