How to implement first person dungeon crawler-like movements

Hello, I’m currently trying to implement a first person dungeon crawler like move.

I’, currently trying to implement a “first person dungeon crawler” like movement.
But I’ struggling to find the best solution to implement it.
If it were grid-based movement like a typical dungeon crawler, it would be easy to implement, but in this game I want the player to have some freedom of movement, so the implementation has become more complicated.
Below is a description of what we would like to do.

Movement inputs

Move forward with “W”
Rotate left with “A”
Rotate right with “D”
Rotate directly behind the direction the player is looking with “S”

A movable point is called a “Point”.

If “A” is pressed

Find the next Point within -90 degrees from the angle the player is looking at.
If a Point is found
Look at that Point.
If no Point is found
Look in the direction of -90 degrees.

If “D” is pressed

Find the next Point within +90 degrees of the player’s viewing angle
If a Point is found
Look at the Point.
If no Point is found
Look in the direction of +90 degrees.

If “W” is pressed

If there is a Point in the direction the player is looking, the player moves to that location; if not, the player does not move.

If “S” is pressed

The viewpoint is directed to the nearest Point 180 degrees from the Point the player is looking at.

I managed to implement the above by creating “BP_Points (Actor)”, etc. and placing them on the level, making full use of data tables, etc., but it became impossible.

Do you know of any good ways to implement this?

help me … help …