86 lines
3 KiB
Text
86 lines
3 KiB
Text
// achievement helpers
|
|
|
|
extend class SWWMUtility
|
|
{
|
|
static void MarkAchievement( String mvar, PlayerInfo p = null )
|
|
{
|
|
if ( !p || (p != players[consoleplayer]) ) return;
|
|
let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
|
if ( !hnd ) return;
|
|
String val = hnd.achievementstate.At(mvar);
|
|
if ( val == "" )
|
|
{
|
|
if ( developer >= 2 ) Console.Printf("MarkAchievement: achievement '"..mvar.."' not found");
|
|
return;
|
|
}
|
|
if ( val == "2" ) return;
|
|
hnd.achievementstate.Insert(mvar,"1");
|
|
}
|
|
static int GetAchievementProgress( String pvar, PlayerInfo p = null )
|
|
{
|
|
if ( !p || (p != players[consoleplayer]) ) return 0;
|
|
let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
|
if ( !hnd ) return 0;
|
|
String pval = hnd.achievementprogress.At(pvar);
|
|
if ( pval == "" )
|
|
{
|
|
if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found");
|
|
return 0;
|
|
}
|
|
return pval.ToInt();
|
|
}
|
|
static void AchievementProgress( String pvar, int val, PlayerInfo p = null )
|
|
{
|
|
if ( !p || (p != players[consoleplayer]) ) return;
|
|
let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
|
if ( !hnd ) return;
|
|
String pval = hnd.achievementprogress.At(pvar);
|
|
if ( pval == "" )
|
|
{
|
|
if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found");
|
|
return;
|
|
}
|
|
if ( val <= pval.ToInt() ) return;
|
|
hnd.achievementprogress.Insert(pvar,String.Format("%d",val));
|
|
}
|
|
static void AchievementProgressInc( String pvar, int inc, PlayerInfo p = null )
|
|
{
|
|
if ( !p || (p != players[consoleplayer]) ) return;
|
|
let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
|
if ( !hnd ) return;
|
|
String pval = hnd.achievementprogress.At(pvar);
|
|
if ( pval == "" )
|
|
{
|
|
if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found");
|
|
return;
|
|
}
|
|
hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()+inc));
|
|
}
|
|
static void AchievementProgressIncDouble( String pvar, double inc, PlayerInfo p = null )
|
|
{
|
|
if ( !p || (p != players[consoleplayer]) ) return;
|
|
let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
|
if ( !hnd ) return;
|
|
String pval = hnd.achievementprogress.At(pvar);
|
|
if ( pval == "" )
|
|
{
|
|
if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found");
|
|
return;
|
|
}
|
|
hnd.achievementprogress.Insert(pvar,String.Format("%g",pval.ToDouble()+inc));
|
|
}
|
|
// for bitfields
|
|
static void AchievementProgressOr( String pvar, int val, PlayerInfo p = null )
|
|
{
|
|
if ( !p || (p != players[consoleplayer]) ) return;
|
|
let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
|
if ( !hnd ) return;
|
|
String pval = hnd.achievementprogress.At(pvar);
|
|
if ( pval == "" )
|
|
{
|
|
if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found");
|
|
return;
|
|
}
|
|
hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()|val));
|
|
}
|
|
}
|