Trying out an FSM for controlling the main loop.

This commit is contained in:
Zed A. Shaw 2025-02-04 00:52:54 -05:00
parent 740e30cb2b
commit 7228bdf210
6 changed files with 247 additions and 80 deletions

View file

@ -6,14 +6,12 @@ void CameraLOL::plan_run(Raycaster &rayview, int dir) {
t = 0.0;
targetX = rayview.$posX + int(rayview.$dirX * 1.5 * dir);
targetY = rayview.$posY + int(rayview.$dirY * 1.5 * dir);
targetDir = dir;
}
bool CameraLOL::play_run(Raycaster &rayview) {
t += moveSpeed;
rayview.$posX = std::lerp(rayview.$posX, targetX, t);
rayview.$posY = std::lerp(rayview.$posY, targetY, t);
return t >= 1.0;
void CameraLOL::plan_strafe(Raycaster &rayview, int dir) {
t = 0.0;
targetX = rayview.$posX + int(-rayview.$dirY * 1.5 * dir);
targetY = rayview.$posY + int(rayview.$dirX * 1.5 * dir);
}
void CameraLOL::plan_rotate(Raycaster &rayview, int dir) {
@ -25,8 +23,6 @@ void CameraLOL::plan_rotate(Raycaster &rayview, int dir) {
targetPlaneX = rayview.$planeX * cos(angle_dir) - rayview.$planeY * sin(angle_dir);
targetPlaneY = rayview.$planeX * sin(angle_dir) + rayview.$planeY * cos(angle_dir);
targetDir = dir;
}
bool CameraLOL::play_rotate(Raycaster &rayview) {
@ -39,14 +35,7 @@ bool CameraLOL::play_rotate(Raycaster &rayview) {
return t > 1.0;
}
void CameraLOL::plan_strafe(Raycaster &rayview, int dir) {
t = 0.0;
targetX = rayview.$posX + int(-rayview.$dirY * 1.5 * dir);
targetY = rayview.$posY + int(rayview.$dirX * 1.5 * dir);
}
bool CameraLOL::play_strafe(Raycaster &rayview) {
bool CameraLOL::play_move(Raycaster &rayview) {
t += moveSpeed;
rayview.$posX = std::lerp(rayview.$posX, targetX, t);
rayview.$posY = std::lerp(rayview.$posY, targetY, t);