コード例 #1
0
    Vector2 conv(WalkDirections wd)
    {
        switch (wd)
        {
        case WalkDirections.up:
            return(Vector2.up);

        case WalkDirections.down:
            return(Vector2.down);

        case WalkDirections.left:
            return(Vector2.left);

        case WalkDirections.right:
            return(Vector2.right);

        case WalkDirections.right_down:
            return(Vector2.right * slow_r + Vector2.down * slow_r);

        case WalkDirections.right_up:
            return(Vector2.right * slow_r + Vector2.up * slow_r);

        case WalkDirections.left_up:
            return(Vector2.left * slow_r + Vector2.up * slow_r);

        case WalkDirections.left_down:
            return(Vector2.left * slow_r + Vector2.down * slow_r);
        }
        return(Vector2.zero);
    }
コード例 #2
0
ファイル: RoleplayManager.cs プロジェクト: xjoao97/HabboRP
        /// <summary>
        /// For arrow keys (websockets)
        /// </summary>
        public static Point GetDirectionDeviation(RoomUser User)
        {
            if (User == null)
            {
                return(new Point(0, 0));
            }

            if (User.GetClient() == null)
            {
                return(new Point(0, 0));
            }

            WalkDirections Direction = User.GetClient().GetRoleplay().WalkDirection;
            Point          Deviation = new Point(User.Coordinate.X, User.Coordinate.Y);

            if (Direction == WalkDirections.Up)
            {
                Deviation = new Point(User.Coordinate.X - 2, User.Coordinate.Y);

                if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y),
                                                             (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride))
                {
                    Deviation = new Point(User.Coordinate.X - 1, User.Coordinate.Y);
                }
            }

            else if (Direction == WalkDirections.Down)
            {
                Deviation = new Point(User.Coordinate.X + 2, User.Coordinate.Y);
                if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y),
                                                             (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride))
                {
                    Deviation = new Point(User.Coordinate.X + 1, User.Coordinate.Y);
                }
            }

            else if (Direction == WalkDirections.Right)
            {
                Deviation = new Point(User.Coordinate.X, User.Coordinate.Y - 2);
                if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y),
                                                             (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride))
                {
                    Deviation = new Point(User.Coordinate.X, User.Coordinate.Y - 1);
                }
            }
            else if (Direction == WalkDirections.Left)
            {
                Deviation = new Point(User.Coordinate.X, User.Coordinate.Y + 2);
                if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y),
                                                             (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride))
                {
                    Deviation = new Point(User.Coordinate.X, User.Coordinate.Y + 1);
                }
            }
            return(Deviation);
        }
コード例 #3
0
ファイル: WalkWebEvent.cs プロジェクト: xjoao97/HabboRP
        /// <summary>
        /// Executes socket data.
        /// </summary>
        /// <param name="Client"></param>
        /// <param name="Data"></param>
        /// <param name="Socket"></param>
        public void Execute(GameClient Client, string Data, IWebSocketConnection Socket)
        {
            if (Data.Contains("stop"))
            {
                Client.GetRoleplay().WalkDirection = WalkDirections.None;
                Client.GetRoomUser().GoalX         = Client.GetRoomUser().SetX;
                Client.GetRoomUser().GoalY         = Client.GetRoomUser().SetY;
                return;
            }

            if (Client.GetRoleplay().Game != null)
            {
                Client.SendWhisper("Você não pode usar as setas enquanto estiver dentro de um evento!", 1);

                Client.GetRoleplay().ArrowEnabled = false;
                PlusEnvironment.GetGame().GetWebEventManager().SendDataDirect(Client, "compose_arrowmovement:no");
                return;
            }

            WalkDirections Direction = WalkDirections.None;

            Direction = (WalkDirections)Enum.Parse(typeof(WalkDirections), Data);

            if (Direction == WalkDirections.None)
            {
                return;
            }

            Client.GetRoleplay().WalkDirection = Direction;

            if (Client.GetRoomUser() != null)
            {
                Client.GetRoomUser().GoalX = Client.GetRoomUser().SetX;
                Client.GetRoomUser().GoalY = Client.GetRoomUser().SetY;
            }

            Point Point = RoleplayManager.GetDirectionDeviation(Client.GetRoomUser());

            if (Point != new Point(0, 0))
            {
                Client.GetRoomUser().MoveTo(Point);
            }

            return;
        }