public void UpdateAchievementBadge(SqlDatabaseClient MySqlClient, string AchievementGroup, Badge NewBadge) { MySqlClient.SetParameter("userid", mUserId); MySqlClient.SetParameter("sourcetype", "achievement"); MySqlClient.SetParameter("sourcedata", AchievementGroup); MySqlClient.SetParameter("badgecode", NewBadge.Code); lock (mSyncRoot) { if (mAchievementBadges.ContainsKey(AchievementGroup)) { Badge OldBadge = mAchievementBadges[AchievementGroup]; if (OldBadge == NewBadge) { MySqlClient.ClearParameters(); return; } mIndexCache.Remove(OldBadge.Code); mAchievementBadges[AchievementGroup] = NewBadge; MySqlClient.ExecuteNonQuery("UPDATE badges SET badge_code = @badgecode WHERE user_id = @userid AND source_type = @sourcetype AND source_data = @sourcedata LIMIT 1"); foreach (KeyValuePair<int, Badge> Badge in mEquippedBadges) { if (Badge.Value.Code == OldBadge.Code) { mEquippedBadges[Badge.Key] = NewBadge; break; } } } else { mAchievementBadges.Add(AchievementGroup, NewBadge); MySqlClient.ExecuteNonQuery("INSERT INTO user_badges (user_id,badge_code,source_type,source_data) VALUES (@userid,@badgecode,@sourcetype,@sourcedata)"); } mIndexCache.Add(NewBadge.Code); } }