internal AchievementEarn(long time, string flightName, Achievement achievement)
 {
     this.time       = time;
     this.flightName = flightName;
     //this.achievement = achievement;
     key = achievement.getKey();
 }
 private void achievementClicked(Achievement achievement)
 {
     if (earnedAchievements.ContainsKey(achievement.getKey()))
     {
         expandedAchievement = achievement;
     }
 }
        private void checkAchievements()
        {
            long now = DateTime.UtcNow.Ticks / 10000; // 1 millisecond

            if ((now - lastCheck) >= CHECK_INTERVAL)  // this delays it to every 1.5 seconds
            {
                Vessel vessel = (FlightGlobals.fetch != null) ? FlightGlobals.ActiveVessel : null;
                if (vessel != null && EarnedAchievements.instance != null)
                {
                    foreach (Achievement achievement in EarnedAchievements.instance.achievementsList)
                    {
                        if (EarnedAchievements.instance.earnedAchievements == null || !EarnedAchievements.instance.earnedAchievements.ContainsKey(achievement.getKey()))
                        {
                            string key = achievement.getKey();

                            //Vessel vessel = (FlightGlobals.fetch != null) ? FlightGlobals.ActiveVessel : null;
                            //if (vessel != null)
                            //{
                            try
                            {
                                if (achievement.check(vessel))
                                {
                                    string          key2 = achievement.getKey();
                                    AchievementEarn earn = new AchievementEarn(now, (vessel != null) ? vessel.vesselName : Achievements.UNKNOWN_VESSEL, achievement);
                                    EarnedAchievements.instance.earnedAchievements.Add(achievement.getKey(), earn);

                                    // queue for later display
                                    queuedEarnedAchievements.Add(achievement.getKey(), achievement);
                                }
                            }

                            catch (Exception e)
                            {
                                Log.Exception(e);
                            }
                        }
                    }
                }
#if DEBUG
                long done = DateTime.UtcNow.Ticks / 10000;
                Log.Info("checking achievements took " + (done - now) + " ms");
#endif
                if ((queuedEarnedAchievements.Count() > 0) && (toast == null))
                {
                    Achievement achievement = queuedEarnedAchievements[queuedEarnedAchievements.Keys.Min()];
                    queuedEarnedAchievements.Remove(achievement.getKey());
                    //if (EarnedAchievements.instance.earnedAchievements.ContainsKey(achievement))
                    toast = null;
                    //bool found = false;
                    foreach (var e in EarnedAchievements.instance.earnedAchievements)
                    {
                        if (e.Key == achievement.getKey())
                        {
                            toast = new Toast(achievement, e.Value);
                            playAchievementEarnedClip();
                            awardReputation(achievement);
                            //found = true;
                            break;
                        }
                    }
                }

                lastCheck = now;
            }
        }