Skip to content

Commit

Permalink
Refactoring badges, achievements & a bit of rooms.
Browse files Browse the repository at this point in the history
  • Loading branch information
Sledmore committed Dec 18, 2017
1 parent 5692ba4 commit c2acbf7
Show file tree
Hide file tree
Showing 17 changed files with 170 additions and 195 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet
room.WallThickness = WallThickness;
room.FloorThickness = FloorThickness;

room.chatMode = chatMode;
room.ChatMode = chatMode;
room.ChatSize = chatSize;
room.ChatSpeed = chatSpeed;
room.ChatDistance = chatDistance;
Expand Down Expand Up @@ -190,7 +190,7 @@ public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet
dbClient.AddParameter("muteSettings", room.WhoCanMute);
dbClient.AddParameter("kickSettings", room.WhoCanKick);
dbClient.AddParameter("banSettings", room.WhoCanBan);
dbClient.AddParameter("chatMode", room.chatMode);
dbClient.AddParameter("chatMode", room.ChatMode);
dbClient.AddParameter("chatSize", room.ChatSize);
dbClient.AddParameter("chatSpeed", room.ChatSpeed);
dbClient.AddParameter("extraFlood", room.ExtraFlood);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public GetGuestRoomResultComposer(GameClient Session, RoomData Data, Boolean isL
base.WriteInteger(Data.WhoCanBan);

base.WriteBoolean(Session.GetHabbo().GetPermissions().HasRight("mod_tool") || Data.OwnerName == Session.GetHabbo().Username);//Room muting.
base.WriteInteger(Data.chatMode);
base.WriteInteger(Data.ChatMode);
base.WriteInteger(Data.ChatSize);
base.WriteInteger(Data.ChatSpeed);
base.WriteInteger(Data.ExtraFlood);//Hearing distance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public RoomSettingsDataComposer(Room room)
base.WriteInteger(room.WallThickness);
base.WriteInteger(room.FloorThickness);

base.WriteInteger(room.chatMode);//Chat mode
base.WriteInteger(room.ChatMode);//Chat mode
base.WriteInteger(room.ChatSize);//Chat size
base.WriteInteger(room.ChatSpeed);//Chat speed
base.WriteInteger(room.ChatDistance);//Hearing Distance
Expand Down
25 changes: 13 additions & 12 deletions HabboHotel/Achievements/Achievement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,25 @@ namespace Plus.HabboHotel.Achievements
{
public class Achievement
{
public int Id;
public string Category;
public string GroupName;
public int GameId;
public int Id { get; private set; }
public string Category { get; private set; }
public string GroupName { get; private set; }
public int GameId { get; private set; }

public Dictionary<int, AchievementLevel> Levels;

public Achievement(int Id, string GroupName, string Category, int GameId)
public Achievement(int id, string groupName, string category, int gameId)
{
this.Id = Id;
this.GroupName = GroupName;
this.Category = Category;
this.GameId = GameId;
this.Levels = new Dictionary<int, AchievementLevel>();
Id = id;
GroupName = groupName;
Category = category;
GameId = gameId;
Levels = new Dictionary<int, AchievementLevel>();
}

public void AddLevel(AchievementLevel Level)
public void AddLevel(AchievementLevel level)
{
Levels.Add(Level.Level, Level);
Levels.Add(level.Level, level);
}
}
}
8 changes: 4 additions & 4 deletions HabboHotel/Achievements/AchievementLevel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
{
public struct AchievementLevel
{
public readonly int Level;
public readonly int Requirement;
public readonly int RewardPixels;
public readonly int RewardPoints;
public int Level { get; private set; }
public int Requirement { get; private set; }
public int RewardPixels { get; private set; }
public int RewardPoints { get; private set; }

public AchievementLevel(int level, int rewardPixels, int rewardPoints, int requirement)
{
Expand Down
32 changes: 16 additions & 16 deletions HabboHotel/Achievements/AchievementLevelFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,37 @@ namespace Plus.HabboHotel.Achievements
{
public class AchievementLevelFactory
{
public static void GetAchievementLevels(out Dictionary<string, Achievement> Achievements)
public static void GetAchievementLevels(out Dictionary<string, Achievement> achievements)
{
Achievements = new Dictionary<string, Achievement>();
achievements = new Dictionary<string, Achievement>();

using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.SetQuery("SELECT `id`,`category`,`group_name`,`level`,`reward_pixels`,`reward_points`,`progress_needed`,`game_id` FROM `achievements`");
DataTable dTable = dbClient.GetTable();
DataTable table = dbClient.GetTable();

if (dTable != null)
if (table != null)
{
foreach (DataRow dRow in dTable.Rows)
foreach (DataRow row in table.Rows)
{
int id = Convert.ToInt32(dRow["id"]);
string category = Convert.ToString(dRow["category"]);
string groupName = Convert.ToString(dRow["group_name"]);
int level = Convert.ToInt32(dRow["level"]);
int rewardPixels = Convert.ToInt32(dRow["reward_pixels"]);
int rewardPoints = Convert.ToInt32(dRow["reward_points"]);
int progressNeeded = Convert.ToInt32(dRow["progress_needed"]);
int id = Convert.ToInt32(row["id"]);
string category = Convert.ToString(row["category"]);
string groupName = Convert.ToString(row["group_name"]);
int level = Convert.ToInt32(row["level"]);
int rewardPixels = Convert.ToInt32(row["reward_pixels"]);
int rewardPoints = Convert.ToInt32(row["reward_points"]);
int progressNeeded = Convert.ToInt32(row["progress_needed"]);

AchievementLevel AchievementLevel = new AchievementLevel(level, rewardPixels, rewardPoints, progressNeeded);

if (!Achievements.ContainsKey(groupName))
if (!achievements.ContainsKey(groupName))
{
Achievement Achievement = new Achievement(id, groupName, category, Convert.ToInt32(dRow["game_id"]));
Achievement Achievement = new Achievement(id, groupName, category, Convert.ToInt32(row["game_id"]));
Achievement.AddLevel(AchievementLevel);
Achievements.Add(groupName, Achievement);
achievements.Add(groupName, Achievement);
}
else
Achievements[groupName].AddLevel(AchievementLevel);
achievements[groupName].AddLevel(AchievementLevel);
}
}
}
Expand Down
86 changes: 44 additions & 42 deletions HabboHotel/Achievements/AchievementManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,39 +31,39 @@ public void LoadAchievements()
AchievementLevelFactory.GetAchievementLevels(out _achievements);
}

public bool ProgressAchievement(GameClient Session, string AchievementGroup, int ProgressAmount, bool FromZero = false)
public bool ProgressAchievement(GameClient session, string group, int progress, bool fromBeginning = false)
{
if (!_achievements.ContainsKey(AchievementGroup) || Session == null)
if (!_achievements.ContainsKey(group) || session == null)
return false;

Achievement AchievementData = null;
AchievementData = _achievements[AchievementGroup];
Achievement data = null;
data = _achievements[group];

UserAchievement UserData = Session.GetHabbo().GetAchievementData(AchievementGroup);
if (UserData == null)
UserAchievement userData = session.GetHabbo().GetAchievementData(group);
if (userData == null)
{
UserData = new UserAchievement(AchievementGroup, 0, 0);
Session.GetHabbo().Achievements.TryAdd(AchievementGroup, UserData);
userData = new UserAchievement(group, 0, 0);
session.GetHabbo().Achievements.TryAdd(group, userData);
}

int TotalLevels = AchievementData.Levels.Count;
int TotalLevels = data.Levels.Count;

if (UserData != null && UserData.Level == TotalLevels)
if (userData != null && userData.Level == TotalLevels)
return false; // done, no more.

int TargetLevel = (UserData != null ? UserData.Level + 1 : 1);
int TargetLevel = (userData != null ? userData.Level + 1 : 1);

if (TargetLevel > TotalLevels)
TargetLevel = TotalLevels;

AchievementLevel TargetLevelData = AchievementData.Levels[TargetLevel];
AchievementLevel TargetLevelData = data.Levels[TargetLevel];
int NewProgress = 0;
if (FromZero)
NewProgress = ProgressAmount;
if (fromBeginning)
NewProgress = progress;
else
NewProgress = (UserData != null ? UserData.Progress + ProgressAmount : ProgressAmount);
NewProgress = (userData != null ? userData.Progress + progress : progress);

int NewLevel = (UserData != null ? UserData.Level : 0);
int NewLevel = (userData != null ? userData.Level : 0);
int NewTarget = NewLevel + 1;

if (NewTarget > TotalLevels)
Expand All @@ -79,11 +79,11 @@ public bool ProgressAchievement(GameClient Session, string AchievementGroup, int
NewProgress = 0;

if (TargetLevel == 1)
Session.GetHabbo().GetBadgeComponent().GiveBadge(AchievementGroup + TargetLevel, true, Session);
session.GetHabbo().GetBadgeComponent().GiveBadge(group + TargetLevel, true, session);
else
{
Session.GetHabbo().GetBadgeComponent().RemoveBadge(Convert.ToString(AchievementGroup + (TargetLevel - 1)));
Session.GetHabbo().GetBadgeComponent().GiveBadge(AchievementGroup + TargetLevel, true, Session);
session.GetHabbo().GetBadgeComponent().RemoveBadge(Convert.ToString(group + (TargetLevel - 1)));
session.GetHabbo().GetBadgeComponent().GiveBadge(group + TargetLevel, true, session);
}

if (NewTarget > TotalLevels)
Expand All @@ -92,54 +92,56 @@ public bool ProgressAchievement(GameClient Session, string AchievementGroup, int
}


Session.SendPacket(new AchievementUnlockedComposer(AchievementData, TargetLevel, TargetLevelData.RewardPoints, TargetLevelData.RewardPixels));
Session.GetHabbo().GetMessenger().BroadcastAchievement(Session.GetHabbo().Id, Users.Messenger.MessengerEventTypes.AchievementUnlocked, AchievementGroup + TargetLevel);
session.SendPacket(new AchievementUnlockedComposer(data, TargetLevel, TargetLevelData.RewardPoints, TargetLevelData.RewardPixels));
session.GetHabbo().GetMessenger().BroadcastAchievement(session.GetHabbo().Id, Users.Messenger.MessengerEventTypes.AchievementUnlocked, group + TargetLevel);

using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.SetQuery("REPLACE INTO `user_achievements` VALUES ('" + Session.GetHabbo().Id + "', @group, '" + NewLevel + "', '" + NewProgress + "')");
dbClient.AddParameter("group", AchievementGroup);
dbClient.SetQuery("REPLACE INTO `user_achievements` VALUES ('" + session.GetHabbo().Id + "', @group, '" + NewLevel + "', '" + NewProgress + "')");
dbClient.AddParameter("group", group);
dbClient.RunQuery();
}

UserData.Level = NewLevel;
UserData.Progress = NewProgress;
userData.Level = NewLevel;
userData.Progress = NewProgress;

Session.GetHabbo().Duckets += TargetLevelData.RewardPixels;
Session.GetHabbo().GetStats().AchievementPoints += TargetLevelData.RewardPoints;
Session.SendPacket(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, TargetLevelData.RewardPixels));
Session.SendPacket(new AchievementScoreComposer(Session.GetHabbo().GetStats().AchievementPoints));
session.GetHabbo().Duckets += TargetLevelData.RewardPixels;
session.GetHabbo().GetStats().AchievementPoints += TargetLevelData.RewardPoints;
session.SendPacket(new HabboActivityPointNotificationComposer(session.GetHabbo().Duckets, TargetLevelData.RewardPixels));
session.SendPacket(new AchievementScoreComposer(session.GetHabbo().GetStats().AchievementPoints));

AchievementLevel NewLevelData = AchievementData.Levels[NewTarget];
Session.SendPacket(new AchievementProgressedComposer(AchievementData, NewTarget, NewLevelData, TotalLevels, Session.GetHabbo().GetAchievementData(AchievementGroup)));
AchievementLevel NewLevelData = data.Levels[NewTarget];
session.SendPacket(new AchievementProgressedComposer(data, NewTarget, NewLevelData, TotalLevels, session.GetHabbo().GetAchievementData(group)));

return true;
}
else
{
UserData.Level = NewLevel;
UserData.Progress = NewProgress;
userData.Level = NewLevel;
userData.Progress = NewProgress;
using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.SetQuery("REPLACE INTO `user_achievements` VALUES ('" + Session.GetHabbo().Id + "', @group, '" + NewLevel + "', '" + NewProgress + "')");
dbClient.AddParameter("group", AchievementGroup);
dbClient.SetQuery("REPLACE INTO `user_achievements` VALUES ('" + session.GetHabbo().Id + "', @group, '" + NewLevel + "', '" + NewProgress + "')");
dbClient.AddParameter("group", group);
dbClient.RunQuery();
}

Session.SendPacket(new AchievementProgressedComposer(AchievementData, TargetLevel, TargetLevelData, TotalLevels, Session.GetHabbo().GetAchievementData(AchievementGroup)));
session.SendPacket(new AchievementProgressedComposer(data, TargetLevel, TargetLevelData, TotalLevels, session.GetHabbo().GetAchievementData(group)));
}
return false;
}

public ICollection<Achievement> GetGameAchievements(int GameId)
public ICollection<Achievement> GetGameAchievements(int gameId)
{
List<Achievement> GameAchievements = new List<Achievement>();
foreach (Achievement Achievement in _achievements.Values.ToList())
List<Achievement> achievements = new List<Achievement>();

foreach (Achievement achievement in _achievements.Values.ToList())
{
if (Achievement.Category == "games" && Achievement.GameId == GameId)
GameAchievements.Add(Achievement);
if (achievement.Category == "games" && achievement.GameId == gameId)
achievements.Add(achievement);
}
return GameAchievements;

return achievements;
}
}
}
12 changes: 6 additions & 6 deletions HabboHotel/Achievements/UserAchievement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
{
public class UserAchievement
{
public readonly string AchievementGroup;
public int Level;
public int Progress;
public string AchievementGroup { get; private set; }
public int Level { get; set; }
public int Progress { get; set; }

public UserAchievement(string achievementGroup, int level, int progress)
{
this.AchievementGroup = achievementGroup;
this.Level = level;
this.Progress = progress;
AchievementGroup = achievementGroup;
Level = level;
Progress = progress;
}
}
}
22 changes: 5 additions & 17 deletions HabboHotel/Badges/BadgeDefinition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,13 @@
{
public class BadgeDefinition
{
private string _code;
private string _requiredRight;
public string Code { get; private set; }
public string RequiredRight { get; private set; }

public BadgeDefinition(string Code, string RequiredRight)
public BadgeDefinition(string code, string requiredRight)
{
this._code = Code;
this._requiredRight = RequiredRight;
}

public string Code
{
get { return this._code; }
set { this._code = value; }
}

public string RequiredRight
{
get { return this._requiredRight; }
set { this._requiredRight = value; }
Code = code;
RequiredRight = requiredRight;
}
}
}
16 changes: 8 additions & 8 deletions HabboHotel/Badges/BadgeManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,31 @@ public class BadgeManager

public BadgeManager()
{
this._badges = new Dictionary<string, BadgeDefinition>();
_badges = new Dictionary<string, BadgeDefinition>();
}

public void Init()
{
using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.SetQuery("SELECT * FROM `badge_definitions`;");
DataTable GetBadges = dbClient.GetTable();
DataTable data = dbClient.GetTable();

foreach (DataRow Row in GetBadges.Rows)
foreach (DataRow row in data.Rows)
{
string BadgeCode = Convert.ToString(Row["code"]).ToUpper();
string code = Convert.ToString(row["code"]).ToUpper();

if (!this._badges.ContainsKey(BadgeCode))
this._badges.Add(BadgeCode, new BadgeDefinition(BadgeCode, Convert.ToString(Row["required_right"])));
if (!this._badges.ContainsKey(code))
this._badges.Add(code, new BadgeDefinition(code, Convert.ToString(row["required_right"])));
}
}

log.Info("Loaded " + this._badges.Count + " badge definitions.");
}

public bool TryGetBadge(string BadgeCode, out BadgeDefinition Badge)
public bool TryGetBadge(string code, out BadgeDefinition badge)
{
return this._badges.TryGetValue(BadgeCode.ToUpper(), out Badge);
return this._badges.TryGetValue(code.ToUpper(), out badge);
}
}
}
Loading

0 comments on commit c2acbf7

Please sign in to comment.