From 8dfa8ad757430d64740bb1c8e28a6971b893fe67 Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Fri, 3 May 2019 13:04:47 +0300 Subject: [PATCH] Clean up M_RoundWalk. --- Source/monster.cpp | 76 +++++++++++++++------------------------------- Source/monster.h | 2 +- 2 files changed, 26 insertions(+), 52 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 1a4d5eddf..5a5146009 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -2882,59 +2882,33 @@ BOOL M_DumbWalk(int i, int md) return ok; } -BOOLEAN M_RoundWalk(int i, int md, int *dir) -{ - int *v3; // ebp - int v4; // ebx - int v5; // esi - //int v6; // eax - BOOLEAN v7; // di - int v8; // edi - //int v9; // eax - //int v10; // eax - int *v11; // ebp - //int v12; // eax - //int v13; // eax - - v3 = dir; - v4 = i; +BOOL M_RoundWalk(int i, int md, int *dir) +{ + int mdtemp; + BOOL ok; if (*dir) - v5 = left[left[md]]; + md = left[left[md]]; else - v5 = right[right[md]]; - //_LOBYTE(v6) = DirOK(i, v5); - v7 = DirOK(i, v5); - if (v7) - goto LABEL_12; - v8 = v5; - if (!*dir) { - v11 = &left[v8]; - v5 = left[v8]; - //_LOBYTE(v12) = DirOK(v4, left[v8]); - if (DirOK(v4, left[v8])) - goto LABEL_11; - v5 = left[*v11]; - //_LOBYTE(v13) = DirOK(v4, left[*v11]); - if (DirOK(v4, left[*v11])) - goto LABEL_11; - v3 = dir; - LABEL_14: - *v3 = *v3 == 0; - return M_CallWalk(v4, opposite[v8]); - } - v5 = right[v8]; - //_LOBYTE(v9) = DirOK(v4, right[v8]); - if (!DirOK(v4, right[v8])) { - v5 = right[right[v8]]; - //_LOBYTE(v10) = DirOK(v4, v5); - if (!DirOK(v4, v5)) - goto LABEL_14; - } -LABEL_11: - v7 = 1; -LABEL_12: - M_WalkDir(v4, v5); - return v7; + md = right[right[md]]; + + ok = DirOK(i, md); + mdtemp = md; + if (!ok) { + if (*dir) { + md = right[mdtemp]; + ok = DirOK(i, md) || (md = right[right[mdtemp]], DirOK(i, md)); + } else { + md = left[mdtemp]; + ok = (DirOK(i, md) || (md = left[left[mdtemp]], DirOK(i, md))); + } + } + if (ok) { + M_WalkDir(i, md); + } else { + *dir = !*dir; + ok = M_CallWalk(i, opposite[mdtemp]); + } + return ok; } void MAI_Zombie(int i) diff --git a/Source/monster.h b/Source/monster.h index ff53940a0..c7bd7c6f7 100644 --- a/Source/monster.h +++ b/Source/monster.h @@ -92,7 +92,7 @@ BOOL M_CallWalk(int i, int md); BOOL M_PathWalk(int i); BOOL M_CallWalk2(int i, int md); BOOL M_DumbWalk(int i, int md); -BOOLEAN M_RoundWalk(int i, int md, int *dir); +BOOL M_RoundWalk(int i, int md, int *dir); void MAI_Zombie(int i); void MAI_SkelSd(int i); BOOL MAI_Path(int i);