using System;
using System.Collections.Generic;
using System.Data;
using Hang.HabboHotel.GameClients;
using Hang.HabboHotel.Users.Badges;
using Hang.Messages;
using Hang.Storage;
// namespace Hang.HabboHotel.Achievements
// {
// class AchievementManager
// {
// private Dictionary<uint, Achievement> Achievements;
// internal AchievementManager()
// {
// this.Achievements = new Dictionary<uint, Achievement>();
// }
// internal void LoadAchievements(DatabaseClient MySQL)
// {
// Achievements.Clear();
// DataTable Data = new DataTable();
// Data = MySQL.query_read("SELECT * FROM achievements");
// if (Data == null)
// {
// return;
// }
// foreach (DataRow Row in Data.Rows)
// {
// Achievements.Add((uint)Row["id"], new Achievement((uint)Row["id"], (int)Row["levels"], (string)Row["badge"], (int)Row["pixels_base"], (double)Row["pixels_multiplier"], Convert.ToString(Row["category"]), HangEnvironment.EnumToBool(Row["dynamic_badgelevel"].ToString())));
// }
// }
// internal static Boolean UserHasAchievement(GameClient Session, uint Id, int MinLevel)
// {
// if (!Session.GetHabbo().Achievements.ContainsKey(Id))
// {
// return false;
// }
// if (Session.GetHabbo().Achievements[Id] >= MinLevel)
// {
// return true;
// }
// return false;
// }
// internal ServerMessage SerializeAchievementList(GameClient Session)
// {
// List<Achievement> AchievementsToList = new List<Achievement>();
// Dictionary<uint, int> NextAchievementLevels = new Dictionary<uint, int>();
// using (TimedLock.Lock(Achievements))
// {
// foreach (Achievement Achievement in Achievements.Values)
// {
// if (!Session.GetHabbo().Achievements.ContainsKey(Achievement.Id))
// {
// AchievementsToList.Add(Achievement);
// NextAchievementLevels.Add(Achievement.Id, 1);
// }
// else
// {
// if (Session.GetHabbo().Achievements[Achievement.Id] >= Achievement.Levels)
// {
// continue;
// }
// AchievementsToList.Add(Achievement);
// NextAchievementLevels.Add(Achievement.Id, Session.GetHabbo().Achievements[Achievement.Id] + 1);
// }
// }
// }
// ServerMessage Message = new ServerMessage(436);
// Message.AppendInt32(AchievementsToList.Count);
// foreach (Achievement Achievement in AchievementsToList)
// {
// int Level = NextAchievementLevels[Achievement.Id];
// int Pixels = CalculateAchievementValue(Achievement.PixelBase, Level);
//Fix achivements 90%
// Achievement.Serialize(Message, Pixels, Level, FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel), Achievement.category, Achievement.Levels);
// }
// return Message;
// }
// internal void UnlockAchievement(GameClient Session, uint AchievementId, int Level)
// {
// // Get the achievement
// Achievement Achievement = Achievements[AchievementId];
// Make sure the achievement is valid and has not already been unlocked
// if (Achievement == null || UserHasAchievement(Session, Achievement.Id, Level) || Level < 1 || Level > Achievement.Levels)
// {
// return;
// }
// Calculate the pixel value for this achievement
// int Value = CalculateAchievementValue(Achievement.PixelBase, Level);
// Remove any previous badges for this achievement (old levels)
// using (TimedLock.Lock(Session.GetHabbo().GetBadgeComponent().BadgeList))
// {
// List<string> BadgesToRemove = new List<string>();
// foreach (Badge Badge in Session.GetHabbo().GetBadgeComponent().BadgeList)
// {
// if (Badge.Code.StartsWith(Achievement.BadgeCode))
// {
// BadgesToRemove.Add(Badge.Code);
// }
// }
// foreach (string Badge in BadgesToRemove)
// {
// Session.GetHabbo().GetBadgeComponent().RemoveBadge(Badge);
// }
// }
// Give the user the new badge
// Session.GetHabbo().GetBadgeComponent().GiveBadge(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel), true);
// Update or set the achievement level for the user
// if (Session.GetHabbo().Achievements.ContainsKey(Achievement.Id))
// {
// Session.GetHabbo().Achievements[Achievement.Id] = Level;
// using (DatabaseClient MySQL = HangEnvironment.GetDatabase().GetClient())
// {
// MySQL.query("UPDATE user_achievements SET achievement_level = '" + Level + "' WHERE user_id = '" + Session.GetHabbo().Id + "' AND achievement_id = '" + Achievement.Id + "' LIMIT 1");
// }
// }
// else
// {
// Session.GetHabbo().Achievements.Add(Achievement.Id, Level);
// using (DatabaseClient MySQL = HangEnvironment.GetDatabase().GetClient())
// {
// MySQL.query("INSERT INTO user_achievements (user_id,achievement_id,achievement_level) VALUES ('" + Session.GetHabbo().Id + "','" + Achievement.Id + "','" + Level + "')");
// }
// }
// Notify the user of the achievement gain
// ServerMessage Message = new ServerMessage(437);
// Message.AppendUInt(Achievement.Id); //id del achivements
// Message.AppendInt32(Level); //nivel
// string L = "";
// if (Achievement.Levels > 1)
// L = Achievement.Levels.ToString(); //niveles
// Message.AppendInt32(182); // ?
// Message.AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel) + L); // datos de la placa
// Message.AppendInt32(0); // Puntos de recompensas
// Message.AppendInt32(Value); //valor
// Message.AppendBoolean(false); //progreso
// Message.AppendInt32(0); // puntos extras de facebook
// Message.AppendInt32(-1);
// Message.AppendByte(2);
// Message.AppendStringWithBreak(Achievement.category); // categoria de la placa
// Session.GetConnection().SendMessage(Message);
// Give the user the pixels he deserves
// Session.GetHabbo().ActivityPoints += Value; //valor de los pixeles
// Session.GetHabbo().UpdateActivityPointsBalance(true); // Pixeles
// Give the user the pixels he deserves
// Session.GetHabbo().ActivityPoints += Value;
// Session.GetHabbo().UpdateActivityPointsBalance(Value);
// [13-12-2009 17:03:34 from 62.50.35.181:30000]
// FvXXDRB
// [13-12-2009 17:03:34 from 62.50.35.181:30000]
// FuQBIACH_Motto1
// FuPBJACH_RoomEntry2ACH_RoomEntry1
// }
// internal static int CalculateAchievementValue(int BaseValue, int Level)
// {
// return (BaseValue + (50 * Level));
// }
// internal static string FormatBadgeCode(string BadgeTemplate, int Level, bool Dyn)
// {
// if (!Dyn)
// {
// return BadgeTemplate;
// }
// return BadgeTemplate + Level;
// }
// }
//}