// 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("GetAchievementProgress: 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("AchievementProgressInc: 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("AchievementProgressIncDOuble: achievement '"..pvar.."' not found"); return; } if ( pval ~== "NaN" ) // this can happen, yup pval = "0"; 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("AchievementProgressOr: achievement '"..pvar.."' not found"); return; } hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()|val)); } }