Updates for GZDoom 4.12, part 1 (new functions, variables, flags, etc.).

This commit is contained in:
Mari the Deer 2024-04-22 14:34:22 +02:00
commit f38db38751
79 changed files with 349 additions and 183 deletions

View file

@ -105,7 +105,7 @@ extend Class SWWMHandler
double frametime = (curframe-prevframe)/1000.;
double theta = clamp(15.*frametime,0.,.5); // naive, but whatever
// draw precise crosshair(s)
if ( automapactive || (players[consoleplayer].Camera != players[consoleplayer].mo) || (players[consoleplayer].cheats&CF_CHASECAM) || (numcrosshairs <= 0) ) return;
if ( (automapactive && !viewactive) || (players[consoleplayer].Camera != players[consoleplayer].mo) || (players[consoleplayer].cheats&CF_CHASECAM) || (numcrosshairs <= 0) ) return;
let sw = SWWMWeapon(players[consoleplayer].ReadyWeapon);
if ( sw && !sw.ShouldDrawCrosshair() ) return;
if ( !swwm_precisecrosshair ) return;

View file

@ -650,7 +650,7 @@ extend Class SWWMHandler
else if ( WeapSel && swwm_useweaponbar && !paused && (players[consoleplayer].playerstate == PST_LIVE) && players[consoleplayer].mo && (gamestate == GS_LEVEL) )
{
// special case: ignore if we used the mousewheel and the automap is active
if ( automapactive && ((e.KeyScan == InputEvent.Key_MWheelUp) || (e.KeyScan == InputEvent.Key_MWheelDown)) )
if ( (automapactive && !viewactive) && ((e.KeyScan == InputEvent.Key_MWheelUp) || (e.KeyScan == InputEvent.Key_MWheelDown)) )
return false;
// only if player owns any selectable weapons
if ( !wsel && SWWMWeaponSelect.PlayerHasWeapons(players[consoleplayer].mo) )

View file

@ -133,8 +133,7 @@ extend Class SWWMHandler
hnd.bossactors.Clear();
hnd.initialized = false;
let ai = level.CreateActorIterator(tid);
Actor a;
while ( a = ai.Next() )
foreach ( a:ai )
{
hnd.bossactors.Push(a);
a.GiveInventory('BossMarker',1);

View file

@ -446,8 +446,7 @@ extend Class SWWMHandler
if ( cls.GetClassName() != 'KdikdizdCompatEventHandler' )
continue;
ti = ThinkerIterator.Create("Thinker");
Thinker t;
while ( t = ti.Next() )
foreach ( t:ti )
{
if ( t.GetClassName() != 'VoodooPusher' )
continue;

View file

@ -72,8 +72,7 @@ Class SWWMStaticHandler : StaticEventHandler
Array<Thinker> stinkers;
if ( !sti ) sti = ThinkerIterator.Create("SWWMStaticThinker");
else sti.Reinit();
Thinker t;
while ( t = sti.Next() ) stinkers.Push(t);
foreach ( t:sti ) stinkers.Push(t);
if ( stinkers.Size() > 0 )
{
foreach ( s:stinkers ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"%s is not STAT_STATIC!",s.GetClassName());
@ -341,8 +340,7 @@ Class SWWMStaticHandler : StaticEventHandler
for ( int i=Thinker.STAT_INFO; i<Thinker.MAX_STATNUM; i++ )
{
let ti = ThinkerIterator.Create("Thinker",i);
Thinker t;
while ( t = ti.Next() )
foreach ( t:ti )
{
if ( t is 'Actor' ) continue;
let cls = t.GetClass();

View file

@ -104,7 +104,7 @@ extend Class SWWMStaticHandler
}
// parses achievements.lst file(s)
private void ParseAchievementList( out Array<SWWMAchievementInfo> achievements )
private void ParseAchievementList( Array<SWWMAchievementInfo> &achievements )
{
achievements.Clear();
let lmp = Wads.FindLumpFullName("achievements.lst");
@ -241,36 +241,38 @@ extend Class SWWMStaticHandler
let di = DictionaryIterator.Create(achievementstate);
while ( di.Next() )
{
String key = di.Key();
let k = di.Key();
let v = di.Value();
bool deleteme = true;
foreach ( inf:achievementinfo )
{
if ( inf.basename != key ) continue;
if ( inf.basename != k ) continue;
deleteme = false;
break;
}
if ( deleteme )
{
if ( developer >= 2 ) Console.Printf("Deleting bogus achievement state %s = %s",key,di.Value());
achievementstate.Remove(key);
if ( developer >= 2 ) Console.Printf("Deleting bogus achievement state %s = %s",k,v);
achievementstate.Remove(k);
}
}
di = DictionaryIterator.Create(achievementprogress);
while ( di.Next() )
{
String key = di.Key();
let k = di.Key();
let v = di.Value();
bool deleteme = true;
foreach ( inf:achievementinfo )
{
if ( inf.basename != key ) continue;
if ( inf.basename != k ) continue;
if ( !inf.maxval ) continue;
deleteme = false;
break;
}
if ( deleteme )
{
if ( developer >= 2 ) Console.Printf("Deleting bogus achievement progress %s = %s",key,di.Value());
achievementprogress.Remove(key);
if ( developer >= 2 ) Console.Printf("Deleting bogus achievement progress %s = %s",k,v);
achievementprogress.Remove(k);
}
}
foreach ( inf:achievementinfo )