namespace Butterfly.HabboHotel.Items.Interactors { using Butterfly.HabboHotel.GameClients; using Butterfly.HabboHotel.Items; using Butterfly.HabboHotel.Rooms; using System; internal class InteractorOneWayGate : FurniInteractor { internal override void OnPlace(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0) { RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.ClearMovement(true); roomUserByHabbo.UnlockWalking(); } Item.InteractingUser = 0; } } internal override void OnRemove(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0) { RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.ClearMovement(true); roomUserByHabbo.UnlockWalking(); } Item.InteractingUser = 0; } } internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session != null) { RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (roomUserByHabbo != null) { if ((roomUserByHabbo.Coordinate != Item.SquareInFront) && roomUserByHabbo.CanWalk) { roomUserByHabbo.MoveTo(Item.SquareInFront); } else if (Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, roomUserByHabbo.AllowOverride) && (Item.InteractingUser == 0)) { Item.InteractingUser = roomUserByHabbo.HabboId; roomUserByHabbo.CanWalk = false; if (roomUserByHabbo.IsWalking && ((roomUserByHabbo.GoalX != Item.SquareInFront.X) || (roomUserByHabbo.GoalY != Item.SquareInFront.Y))) { roomUserByHabbo.ClearMovement(true); } roomUserByHabbo.AllowOverride = true; roomUserByHabbo.MoveTo(Item.Coordinate); Item.ReqUpdate(4, true); } } } } } }