using System;
using System.Collections;
using System.Collections.Generic;
using Aleeda.HabboHotel.Cache;
using Aleeda.HabboHotel.Catalog;
namespace Aleeda.HabboHotel.Client
{
public partial class ClientMessageHandler
{
///
/// 101 - "Ae"
///
private void GetCatalogIndex()
{
Response.Initialize(126); // "A~"
Response.AppendBoolean(true);
Response.AppendBoolean(false);
Response.AppendBoolean(false);
Response.AppendInt32(-1);
Response.AppendChar(2);
AleedaEnvironment.GetCache().GetCataIndex().Serialize(GetResponse(), Client.GetHabbo().Role);
//Response.AppendString(Catalog.Catalog.getPageIndex(Client.GetHabbo().Role));
SendResponse();
}
///
/// 102 = "Af"
///
private void GetCatalogPage()
{
int pageID = Request.PopWiredInt32();
cataloguePages cataPage = Aleeda.AleedaEnvironment.GetCache().GetCataloguePage().getPage(pageID);
if (cataPage == null)
return;
Response.Initialize(127); // "A"
Response.AppendInt32(pageID);
if (cataPage.Layout != "")
{
switch (cataPage.Layout)
{
case "pets":
{
Response.AppendString(cataPage.Layout);
Response.AppendInt32(2);
Response.AppendString(cataPage.ImgHeader);
Response.AppendString("");
Response.AppendInt32(4);
Response.AppendString(cataPage.LabelDesc);
Response.AppendString("Name your pet:");
Response.AppendString("Pick a colour:");
Response.AppendString("Pick a breed:");
//Get the items account
Response.AppendInt32(AleedaEnvironment.GetCache().GetCatalogueItems().GetItemCount(pageID));
//Serialize Item Page
AleedaEnvironment.GetCache().GetCatalogueItems().SerializeItemPage(pageID, Response);
//Needed for latest R63
Response.AppendInt32(-1);
}
break;
case "spaces":
{
Response.AppendString("spaces_new");
Response.AppendInt32(1);
Response.AppendString(cataPage.ImgHeader);
Response.AppendInt32(1);
Response.AppendString(cataPage.LabelDesc);
//Get the items account
Response.AppendInt32(AleedaEnvironment.GetCache().GetCatalogueItems().GetItemCount(pageID));
//Serialize Item Page
AleedaEnvironment.GetCache().GetCatalogueItems().SerializeItemPage(pageID, Response);
//Needed for latest R63
Response.AppendInt32(-1);
}
break;
default:
{
Response.AppendString(cataPage.Layout);
Response.AppendInt32(3);
Response.AppendString(cataPage.ImgHeader);
Response.AppendString(cataPage.ImgSide);
if (cataPage.LabelText != "")
Response.AppendString("catalog_special_txtbg2");
else
Response.AppendString(string.Empty);
Response.AppendInt32(3);
Response.AppendString(cataPage.LabelDesc);
Response.AppendString(cataPage.MoreDetails);
Response.AppendString(cataPage.LabelText);
//Get the items account
Response.AppendInt32(AleedaEnvironment.GetCache().GetCatalogueItems().GetItemCount(pageID));
//Serialize Item Page
AleedaEnvironment.GetCache().GetCatalogueItems().SerializeItemPage(pageID, Response);
//Needed for latest R63
Response.AppendInt32(-1);
}
break;
}
}
else if (cataPage.Layout == "")
{
Response.Append(cataPage.HeaderElse);
Response.Append(cataPage.ContentElse);
}
SendResponse();
}
///
/// 100 = "Ad"
///
private void HandleProduct()
{
int pgid = Request.PopWiredInt32();
int itemid = Request.PopWiredInt32();
string ExtraData = Request.PopFixedString();
//Console.WriteLine(ExtraData);
Catalog.Catalog.HandlePurchase(Client, itemid, ExtraData);
List cItem = AleedaEnvironment.GetHabboHotel().GetCatalog().CataProductsByItemID(itemid);
foreach (CataProducts mItem in cItem)
{
Response.Initialize(67); // "AC"
Response.AppendInt32(mItem.ID);
Response.AppendString(mItem.CCTName);
Response.AppendInt32(0);
Response.AppendInt32(0);
Response.AppendInt32(0);
Response.AppendInt32(1);
Response.AppendInt32(mItem.Credits);
Response.AppendInt32(mItem.Pixels);
Response.AppendString(mItem.Type.ToLower());
Response.AppendInt32(mItem.ItemID);
Response.AppendString("", 2);
Response.AppendInt32(1);
Response.AppendInt32(-1);
}
SendResponse();
Response.Initialize(101); //"Ae" = Update Inventory
SendResponse();
Response.Initialize(6); // "@F"
Response.Append(Client.GetHabbo().Coins);
Response.Append(".0");
SendResponse();
}
private void GetPetRace()
{
/*L{a0 pet9{{2}}
* QB (count)
* QB (type)
* H (for/count)
* I (true)
* H (false)*/
string PetType = Request.PopFixedString();
int count = 0;
int Type = int.Parse(PetType.Substring(6));
if (Type == 0)
count = 25;
else if (Type == 1)
count = 25;
else if (Type == 2)
count = 12;
else if (Type == 3)
count = 7;
else if (Type == 4)
count = 4;
else if (Type == 5)
count = 7;
else if (Type == 6)
count = 13;
else if (Type == 7)
count = 8;
else if (Type == 8)
count = 13;
else if (Type == 9)
count = 9;
else if (Type == 10)
count = 0;
else if (Type == 11)
count = 13;
else if (Type == 12)
count = 6;
Response.Initialize(827); // "L{"
Response.AppendString("a0 pet" + Type);
Response.AppendInt32(count);
for (int i = 0; i < count; i++)
{
Response.AppendInt32(Type);
Response.AppendInt32(i);
Response.AppendBoolean(true);
Response.AppendBoolean(false);
}
SendResponse();
}
private void CheckPetName()
{
string petname = Request.PopFixedString();
bool IsValid = true;
if (petname.Length < 1 || petname.Length > 16)
{
IsValid = false;
}
if (!AleedaEnvironment.IsValidAlphaNumeric(petname))
{
IsValid = false;
}
Response.Initialize(36);
Response.AppendInt32(IsValid ? 0 : 2);
SendResponse();
}
///
/// Registers handlers that have to do with the ingame Catalog.
///
public void RegisterCatalog()
{
mRequestHandlers[101] = new RequestHandler(GetCatalogIndex);
mRequestHandlers[102] = new RequestHandler(GetCatalogPage);
mRequestHandlers[100] = new RequestHandler(HandleProduct);
mRequestHandlers[3007] = new RequestHandler(GetPetRace);
mRequestHandlers[42] = new RequestHandler(CheckPetName);
}
}
}