Version mismatch messages don't show again when reloading a save from the current session.

This commit is contained in:
Mari the Deer 2022-06-06 00:59:50 +02:00
commit 7d9daad797
2 changed files with 23 additions and 7 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r96 \cu(Sun 5 Jun 00:36:15 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r96 \cu(2022-06-05 00:36:15)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r97 \cu(Mon 6 Jun 00:59:50 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r97 \cu(2022-06-06 00:59:50)\c-";

View file

@ -4,6 +4,7 @@
Class SWWMSaveVerData : SWWMStaticThinker
{
String ver;
int uid;
}
Class SWWMStaticHandler : StaticEventHandler
@ -14,6 +15,7 @@ Class SWWMStaticHandler : StaticEventHandler
// versioning
bool tainted;
String taintver;
int uid;
int checktic;
int maptime;
bool unloading;
@ -36,6 +38,7 @@ Class SWWMStaticHandler : StaticEventHandler
let svd = new("SWWMSaveVerData");
svd.ChangeStatNum(Thinker.STAT_STATIC);
svd.ver = StringTable.Localize("$SWWM_SHORTVER");
uid = 0;
}
override void WorldUnloaded( WorldEvent e )
@ -98,13 +101,18 @@ Class SWWMStaticHandler : StaticEventHandler
{
tainted = true;
taintver = "\cg(no version info)\c-";
return;
uid = 0;
}
String cver = StringTable.Localize("$SWWM_SHORTVER");
if ( svd.ver != cver )
else
{
tainted = true;
taintver = svd.ver;
String cver = StringTable.Localize("$SWWM_SHORTVER");
if ( svd.ver != cver )
{
tainted = true;
taintver = svd.ver;
}
if ( svd.uid == uid ) checktic = 0;
uid = svd.uid;
}
}
@ -306,10 +314,18 @@ Class SWWMStaticHandler : StaticEventHandler
c.A_StartSound("misc/achievement2",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP);
}
}
else if ( e.Name ~== "swwmsessionid" )
{
let ti = ThinkerIterator.Create("SWWMSaveVerData",Thinker.STAT_STATIC);
let svd = SWWMSaveVerData(ti.Next());
if ( !uid ) uid = e.Args[0];
if ( svd && !svd.uid ) svd.uid = e.Args[0];
}
}
override void PostUiTick()
{
if ( !uid ) EventHandler.SendNetworkEvent("swwmsessionid",SystemTime.Now());
if ( gamestate != GS_TITLELEVEL ) titlefirst = true; // we skip it
if ( !aprcheck && (gamestate == GS_LEVEL) )
{