예제 #1
0
파일: RoomData.cs 프로젝트: aromaa/Skylight
        public RoomData(DataRow dataRow)
        {
            if (dataRow != null)
            {
                this.ID          = (uint)dataRow["id"];
                this.Name        = (string)dataRow["name"];
                this.Description = (string)dataRow["description"];
                this.OwnerID     = (uint)dataRow["ownerid"];
                this.Type        = (string)dataRow["type"];
                this.Model       = (string)dataRow["model"];
                this.State       = (string)dataRow["state"] == "password" ? RoomStateType.PASSWORD : (string)dataRow["state"] == "locked" ? RoomStateType.LOCKED : RoomStateType.OPEN;
                this.Category    = (int)dataRow["category"];
                this.UsersNow    = (int)dataRow["users_now"]; //maybe we need this sometimes :3
                this.UsersMax    = (int)dataRow["users_max"];
                this.PublicCCTs  = (string)dataRow["public_ccts"];
                this.Score       = (int)dataRow["score"];
                string tags = (string)dataRow["tags"];
                if (!string.IsNullOrEmpty(tags))
                {
                    this.Tags = tags.Split(',').ToList();
                }
                else
                {
                    this.Tags = new List <string>();
                }
                this.RoomIcon         = new RoomIcon((int)dataRow["icon_bg"], (int)dataRow["icon_fg"], (string)dataRow["icon_items"]);
                this.Password         = (string)dataRow["password"];
                this.Wallpaper        = (string)dataRow["wallpaper"];
                this.Floor            = (string)dataRow["floor"];
                this.Landscape        = (string)dataRow["landscape"];
                this.AllowPets        = TextUtilies.StringToBool((string)dataRow["allow_pets"]);
                this.AllowPetsEat     = TextUtilies.StringToBool((string)dataRow["allow_pets_eat"]);
                this.AllowWalkthrough = TextUtilies.StringToBool((string)dataRow["allow_walkthrough"]);
                this.Hidewalls        = TextUtilies.StringToBool((string)dataRow["hidewalls"]);
                this.Wallthick        = (int)dataRow["wallthick"];
                this.Floorthick       = (int)dataRow["floorthick"];
                this.AllowTrade       = (RoomAllowTradeType)int.Parse((string)dataRow["trade"]);
                this.MuteOption       = (RoomWhoCanType)int.Parse((string)dataRow["mute_option"]);
                this.KickOption       = (RoomWhoCanType)int.Parse((string)dataRow["kick_option"]);
                this.BanOption        = (RoomWhoCanType)int.Parse((string)dataRow["ban_option"]);
                this.ChatMode         = (RoomChatModeType)int.Parse((string)dataRow["chat_mode"]);
                this.ChatWeight       = (RoomChatWeightType)int.Parse((string)dataRow["chat_weight"]);
                this.ChatSpeed        = (RoomChatSpeedType)int.Parse((string)dataRow["chat_speed"]);
                this.ChatProtection   = (RoomChatProtectionType)int.Parse((string)dataRow["chat_protection"]);

                string data = (string)dataRow["data"];
                if (!string.IsNullOrEmpty(data))
                {
                    this.ExtraData = JsonConvert.DeserializeObject <RoomExtraData>(data);
                }
                else
                {
                    this.ExtraData = new RoomExtraData();
                }
            }
            else
            {
                this.NullValues();
            }
        }
예제 #2
0
        public virtual void Handle(GameClient session, ClientMessage message)
        {
            Room room;

            if ((room = session?.GetHabbo()?.GetRoomSession()?.GetRoom()) != null)
            {
                RoomUnitUser user = room.RoomUserManager.GetUserByVirtualID(this.VirtualID);
                if (user != null)
                {
                    RoomAllowTradeType tradeSettings = room.RoomData.AllowTrade;
                    if (tradeSettings == RoomAllowTradeType.ALLOWED || (tradeSettings == RoomAllowTradeType.OWNER_ONLY && room.HaveOwnerRights(session)) || (tradeSettings == RoomAllowTradeType.CATEGORY && (Skylight.GetGame().GetNavigatorManager().GetFlatCat(session.GetHabbo().GetRoomSession().GetRoom().RoomData.Category)?.CanTrade ?? false)))
                    {
                        if (session.GetHabbo().GetUserSettings().AcceptTrading)
                        {
                            if (!session.GetHabbo().GetRoomSession().GetRoomUser().HasStatus("trd"))
                            {
                                if (!user.HasStatus("trd"))
                                {
                                    if (user.Session.GetHabbo().GetUserSettings().AcceptTrading)
                                    {
                                        room.StartTrade(session.GetHabbo().GetRoomSession().GetRoomUser(), user);
                                    }
                                    else
                                    {
                                        session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TargetCannotTrade));
                                    }
                                }
                                else
                                {
                                    session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TargetTrading));
                                }
                            }
                            else
                            {
                                session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TradeOpen));
                            }
                        }
                        else
                        {
                            session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.YourTradingDisabled));
                        }
                    }
                    else
                    {
                        session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TradingNotAllowInRoom));
                    }
                }
            }
        }