using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace Chop.Rooms { public class NavigatorRoom { public int mID; public string mName; public string mDescription; public string mPassword; public int mOwnerID; public string mOwnerName; public RoomState mState; public int mCategory; public int mFloorID; public int mWallID; public string mModel; public bool mAllHaveRights; public bool mShowOwnerName; public string mShockwaveCasts; public byte mMinimumRank; public int mMaxVisitors; public bool IsPublic { get { return !string.IsNullOrEmpty(mShockwaveCasts) && mOwnerID == 0; } } //public int ID { get { return mID; } } //public string Name { get { return mName; } } //public string Description { get { return mDescription; } } //public string Password { get { return mPassword; } } //public uint OwnerID { get { return mOwnerID; } } //public string OwnerName { get { return mOwnerName; } } //public RoomState State { get { return mState; } } //public int FloorID { get { return mFloorID; } } //public int WallID { get { return mWallID; } } //public string Model { get { return mModel; } } //public bool AllHaveRights { get { return mAllHaveRights; } } //public string ShockwaveCasts { get { return mShockwaveCasts; } } //public byte MinimumRank { get { return mMinimumRank; } } //public int Category { get { return mCategory; } } //public DateTime LastUsed; public virtual int Visitors { get { if (Core.RoomManager.ContainsRoom(mID)) return Core.RoomManager.GetRoom(mID).Visitors; else return 0; } } public int MaxVisitors { get { return mMaxVisitors; } } public static NavigatorRoom StaticParse(DataRow row) { NavigatorRoom room = new NavigatorRoom(); room.Parse(row); return room; } public void Parse(DataRow row) { mID = Convert.ToInt32(row["id"]); mName = row["name"].ToString(); mDescription = row["description"].ToString(); mPassword = row["password"].ToString(); mOwnerName = row["owner"].ToString(); // Public rooms don't have any owner, so no ID for owner mOwnerID = !string.IsNullOrWhiteSpace(mOwnerName) ? Core.HabboManager.GetID(mOwnerName) : 0; mState = (RoomState)Convert.ToInt32(row["state"]); mCategory = Convert.ToInt32(row["category"]); mFloorID = Convert.ToInt32(row["floorid"]); mWallID = Convert.ToInt32(row["wallid"]); mModel = row["model"].ToString(); mShowOwnerName = Helper.ConvertToBool(row["showowner"]); mAllHaveRights = Helper.ConvertToBool(row["allrights"]); mShockwaveCasts = row["casts"].ToString(); mMinimumRank = Convert.ToByte(row["minrank"]); mMaxVisitors = Convert.ToInt32(row["maxvisitors"]); } //public string ToFuseString(CategoryType type) //{ // ResponseBuilder mResponse = new ResponseBuilder(); // mResponse.AppendInt32(mID); // if (type == CategoryType.Publics) // { // mResponse.AppendInt32(1); // mResponse.AppendString(mName); // mResponse.AppendInt32(Visitors); // mResponse.AppendInt32(mMaxVisitors); // mResponse.AppendInt32(mCategory); // mResponse.AppendString(mDescription); // mResponse.AppendInt32(mID); // mResponse.AppendInt32(0); // mResponse.AppendString(mShockwaveCasts); // mResponse.AppendInt32(0); // mResponse.AppendInt32(1); // } // else // Guestroom // { // mResponse.AppendString(mName); // mResponse.AppendString(mOwnerName); // mResponse.AppendString(mState); // mResponse.AppendInt32(Visitors); // mResponse.AppendInt32(mMaxVisitors); // mResponse.AppendString(mDescription); // } // return mResponse.ToString(); //} public void AddToPacket(ResponseBuilder message) { if (IsPublic) { // unitPropertySet // unitPort // worldId // castLibs // maxUsers // nodeId message.AppendString("IM 12 AND WHAT IS THIS?"); message.AppendInt32(12); message.AppendInt32(0); message.AppendString(mShockwaveCasts); message.AppendInt32(mMaxVisitors); message.AppendInt32(mID); } else { message.AppendInt32(mID); // flatId message.AppendBoolean(false); // event (TODO) message.AppendString(mName); // roomName message.AppendString(mOwnerName); // ownerName //message.AppendInt32(room.mOwnerID); // ownerId message.AppendInt32((int)mState); // doorMode message.AppendInt32(Visitors); // userCount message.AppendInt32(mMaxVisitors); // maxUserCount message.AppendString(mDescription); // description message.AppendInt32(1); // srchSpecPrm (NO IDEA WHAT THIS IS) message.AppendBoolean(false); // allowTrading message.AppendInt32(1942); // score message.AppendInt32(mCategory); // categoryId message.AppendInt32(1); // group room? message.AppendString(""); // ??? message.AppendString("s43103s19014d5a1dc291574a508bc80a64663e61a00"); // eventCreationTime message.AppendString("s43103s19014d5a1dc291574a508bc80a64663e61a00"); // ??? message.AppendInt32(2); // tag count message.AppendString("hey i just met you"); message.AppendString("and this is crazy"); // thumbnail message.AppendInt32(0); // bgImgId, 0 = default message.AppendInt32(0); // frontImgId message.AppendInt32(0); // object count //message.AppendInt32(0); // pos //message.AppendInt32(0); // imgId message.AppendBoolean(true); // allowPets message.AppendBoolean(true); // displayRoomEntryAd } } public NavigatorCategory GetCategory() { return Core.NavigatorManager.GetCategory(mCategory); } } }