Advertisement
Guest User

CatalogIndexComposer.cs

a guest
Aug 3rd, 2016
880
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.06 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using Plus.HabboHotel.Catalog;
  3. using Plus.HabboHotel.GameClients;
  4.  
  5. namespace Plus.Communication.Packets.Outgoing.Catalog
  6. {
  7.     public class CatalogIndexComposer : ServerPacket
  8.     {
  9.         public CatalogIndexComposer(GameClient Session, ICollection<CatalogPage> Pages, int Sub = 0)
  10.             : base(ServerPacketHeader.CatalogIndexMessageComposer)
  11.         {
  12.             WriteRootIndex(Session, Pages);
  13.  
  14.             foreach (CatalogPage Page in Pages)
  15.             {
  16.                 if (Page.ParentId != -1 || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank && Session.GetHabbo().Rank == 1))
  17.                     continue;
  18.  
  19.                 WritePage(Page, CalcTreeSize(Session, Pages, Page.Id));
  20.  
  21.                 foreach (CatalogPage child in Pages)
  22.                 {
  23.                     if (child.ParentId != Page.Id || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank && Session.GetHabbo().Rank == 1))
  24.                         continue;
  25.  
  26.                     WritePage(child, CalcTreeSize(Session, Pages, child.Id));
  27.  
  28.                     foreach (CatalogPage baby in Pages)
  29.                     {
  30.                         if (baby.ParentId != child.Id || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank && Session.GetHabbo().Rank == 1))
  31.                             continue;
  32.  
  33.                         WritePage(baby, 0);
  34.                     }
  35.                 }
  36.             }
  37.  
  38.             base.WriteBoolean(false);
  39.            base.WriteString("NORMAL");
  40.         }
  41.  
  42.         public void WriteRootIndex(GameClient Session, ICollection<CatalogPage> Pages)
  43.         {
  44.             base.WriteBoolean(true);
  45.             base.WriteInteger(0);
  46.             base.WriteInteger(-1);
  47.            base.WriteString("root");
  48.            base.WriteString(string.Empty);
  49.             base.WriteInteger(0);
  50.             base.WriteInteger(CalcTreeSize(Session, Pages, -1));
  51.         }
  52.  
  53.         public void WritePage(CatalogPage Page, int TreeSize)
  54.         {
  55.             base.WriteBoolean(Page.Visible);
  56.             base.WriteInteger(Page.Icon);
  57.             base.WriteInteger(Page.Id);
  58.            base.WriteString(Page.PageLink);
  59.            base.WriteString(Page.Caption);
  60.  
  61.             base.WriteInteger(Page.ItemOffers.Count);
  62.             foreach (int i in Page.ItemOffers.Keys)
  63.             {
  64.                 base.WriteInteger(i);
  65.             }
  66.  
  67.             base.WriteInteger(TreeSize);
  68.         }
  69.  
  70.         public int CalcTreeSize(GameClient Session, ICollection<CatalogPage> Pages, int ParentId)
  71.         {
  72.             int i = 0;
  73.             foreach (CatalogPage Page in Pages)
  74.             {
  75.                 if (Page.MinimumRank > Session.GetHabbo().Rank|| (Page.MinimumVIP > Session.GetHabbo().VIPRank && Session.GetHabbo().Rank == 1) || Page.ParentId != ParentId)
  76.                     continue;
  77.  
  78.                 if (Page.ParentId == ParentId)
  79.                     i++;
  80.             }
  81.  
  82.             return i;
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement