OSDN Git Service

[Refactor] #40030 Separated store_moves_val() to get_moves()
authorHourier <hourier@users.sourceforge.jp>
Sun, 8 Mar 2020 01:46:49 +0000 (10:46 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 8 Mar 2020 01:46:49 +0000 (10:46 +0900)
src/monster-process.c
src/monster/monster-util.c
src/monster/monster-util.h

index 7d4c362..504a428 100644 (file)
@@ -659,7 +659,7 @@ static bool get_moves(player_type *target_ptr, MONSTER_IDX m_idx, DIRECTION *mm)
        floor_type *floor_ptr = target_ptr->current_floor_ptr;
        monster_type *m_ptr = &floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
-       POSITION y = 0, ay, x = 0, ax;
+       POSITION y = 0, x = 0;
        POSITION y2 = target_ptr->y;
        POSITION x2 = target_ptr->x;
        bool done = FALSE;
@@ -773,160 +773,7 @@ static bool get_moves(player_type *target_ptr, MONSTER_IDX m_idx, DIRECTION *mm)
 
        if (!x && !y) return FALSE;
 
-       ax = ABS(x);
-       ay = ABS(y);
-
-       int move_val = 0;
-       if (y < 0) move_val += 8;
-       if (x > 0) move_val += 4;
-
-       if (ay > (ax << 1)) move_val += 2;
-       else if (ax > (ay << 1)) move_val++;
-
-       switch (move_val)
-       {
-       case 0:
-               mm[0] = 9;
-               if (ay > ax)
-               {
-                       mm[1] = 8;
-                       mm[2] = 6;
-                       mm[3] = 7;
-                       mm[4] = 3;
-               }
-               else
-               {
-                       mm[1] = 6;
-                       mm[2] = 8;
-                       mm[3] = 3;
-                       mm[4] = 7;
-               }
-               break;
-       case 1:
-       case 9:
-               mm[0] = 6;
-               if (y < 0)
-               {
-                       mm[1] = 3;
-                       mm[2] = 9;
-                       mm[3] = 2;
-                       mm[4] = 8;
-               }
-               else
-               {
-                       mm[1] = 9;
-                       mm[2] = 3;
-                       mm[3] = 8;
-                       mm[4] = 2;
-               }
-               break;
-       case 2:
-       case 6:
-               mm[0] = 8;
-               if (x < 0)
-               {
-                       mm[1] = 9;
-                       mm[2] = 7;
-                       mm[3] = 6;
-                       mm[4] = 4;
-               }
-               else
-               {
-                       mm[1] = 7;
-                       mm[2] = 9;
-                       mm[3] = 4;
-                       mm[4] = 6;
-               }
-               break;
-       case 4:
-               mm[0] = 7;
-               if (ay > ax)
-               {
-                       mm[1] = 8;
-                       mm[2] = 4;
-                       mm[3] = 9;
-                       mm[4] = 1;
-               }
-               else
-               {
-                       mm[1] = 4;
-                       mm[2] = 8;
-                       mm[3] = 1;
-                       mm[4] = 9;
-               }
-               break;
-       case 5:
-       case 13:
-               mm[0] = 4;
-               if (y < 0)
-               {
-                       mm[1] = 1;
-                       mm[2] = 7;
-                       mm[3] = 2;
-                       mm[4] = 8;
-               }
-               else
-               {
-                       mm[1] = 7;
-                       mm[2] = 1;
-                       mm[3] = 8;
-                       mm[4] = 2;
-               }
-               break;
-       case 8:
-               mm[0] = 3;
-               if (ay > ax)
-               {
-                       mm[1] = 2;
-                       mm[2] = 6;
-                       mm[3] = 1;
-                       mm[4] = 9;
-               }
-               else
-               {
-                       mm[1] = 6;
-                       mm[2] = 2;
-                       mm[3] = 9;
-                       mm[4] = 1;
-               }
-               break;
-       case 10:
-       case 14:
-               mm[0] = 2;
-               if (x < 0)
-               {
-                       mm[1] = 3;
-                       mm[2] = 1;
-                       mm[3] = 6;
-                       mm[4] = 4;
-               }
-               else
-               {
-                       mm[1] = 1;
-                       mm[2] = 3;
-                       mm[3] = 4;
-                       mm[4] = 6;
-               }
-               break;
-       case 12:
-               mm[0] = 1;
-               if (ay > ax)
-               {
-                       mm[1] = 2;
-                       mm[2] = 4;
-                       mm[3] = 3;
-                       mm[4] = 7;
-               }
-               else
-               {
-                       mm[1] = 4;
-                       mm[2] = 2;
-                       mm[3] = 7;
-                       mm[4] = 3;
-               }
-               break;
-       }
-
+       store_moves_val(mm, y, x);
        return TRUE;
 }
 
index 448330c..875e1f1 100644 (file)
@@ -132,6 +132,164 @@ void store_enemy_approch_direction(int *mm, POSITION y, POSITION x)
 }
 
 
+void store_moves_val(int *mm, int y, int x)
+{
+       POSITION ax = ABS(x);
+       POSITION ay = ABS(y);
+
+       int move_val = 0;
+       if (y < 0) move_val += 8;
+       if (x > 0) move_val += 4;
+
+       if (ay > (ax << 1)) move_val += 2;
+       else if (ax > (ay << 1)) move_val++;
+
+       switch (move_val)
+       {
+       case 0:
+               mm[0] = 9;
+               if (ay > ax)
+               {
+                       mm[1] = 8;
+                       mm[2] = 6;
+                       mm[3] = 7;
+                       mm[4] = 3;
+               }
+               else
+               {
+                       mm[1] = 6;
+                       mm[2] = 8;
+                       mm[3] = 3;
+                       mm[4] = 7;
+               }
+               break;
+       case 1:
+       case 9:
+               mm[0] = 6;
+               if (y < 0)
+               {
+                       mm[1] = 3;
+                       mm[2] = 9;
+                       mm[3] = 2;
+                       mm[4] = 8;
+               }
+               else
+               {
+                       mm[1] = 9;
+                       mm[2] = 3;
+                       mm[3] = 8;
+                       mm[4] = 2;
+               }
+               break;
+       case 2:
+       case 6:
+               mm[0] = 8;
+               if (x < 0)
+               {
+                       mm[1] = 9;
+                       mm[2] = 7;
+                       mm[3] = 6;
+                       mm[4] = 4;
+               }
+               else
+               {
+                       mm[1] = 7;
+                       mm[2] = 9;
+                       mm[3] = 4;
+                       mm[4] = 6;
+               }
+               break;
+       case 4:
+               mm[0] = 7;
+               if (ay > ax)
+               {
+                       mm[1] = 8;
+                       mm[2] = 4;
+                       mm[3] = 9;
+                       mm[4] = 1;
+               }
+               else
+               {
+                       mm[1] = 4;
+                       mm[2] = 8;
+                       mm[3] = 1;
+                       mm[4] = 9;
+               }
+               break;
+       case 5:
+       case 13:
+               mm[0] = 4;
+               if (y < 0)
+               {
+                       mm[1] = 1;
+                       mm[2] = 7;
+                       mm[3] = 2;
+                       mm[4] = 8;
+               }
+               else
+               {
+                       mm[1] = 7;
+                       mm[2] = 1;
+                       mm[3] = 8;
+                       mm[4] = 2;
+               }
+               break;
+       case 8:
+               mm[0] = 3;
+               if (ay > ax)
+               {
+                       mm[1] = 2;
+                       mm[2] = 6;
+                       mm[3] = 1;
+                       mm[4] = 9;
+               }
+               else
+               {
+                       mm[1] = 6;
+                       mm[2] = 2;
+                       mm[3] = 9;
+                       mm[4] = 1;
+               }
+               break;
+       case 10:
+       case 14:
+               mm[0] = 2;
+               if (x < 0)
+               {
+                       mm[1] = 3;
+                       mm[2] = 1;
+                       mm[3] = 6;
+                       mm[4] = 4;
+               }
+               else
+               {
+                       mm[1] = 1;
+                       mm[2] = 3;
+                       mm[3] = 4;
+                       mm[4] = 6;
+               }
+               break;
+       case 12:
+               mm[0] = 1;
+               if (ay > ax)
+               {
+                       mm[1] = 2;
+                       mm[2] = 4;
+                       mm[3] = 3;
+                       mm[4] = 7;
+               }
+               else
+               {
+                       mm[1] = 4;
+                       mm[2] = 2;
+                       mm[3] = 7;
+                       mm[4] = 3;
+               }
+               break;
+       }
+}
+
+
 /*!
  * @brief 古いモンスター情報の保存
  * @param monster_race_idx モンスターID
index 03cc0b8..0da6285 100644 (file)
@@ -53,6 +53,7 @@ old_race_flags *init_old_race_flags(old_race_flags *old_race_flags_ptr);
 coordinate_candidate init_coordinate_candidate(void);
 
 void store_enemy_approch_direction(int *mm, POSITION y, POSITION x);
+void store_moves_val(int *mm, int y, int x);
 void save_old_race_flags(MONRACE_IDX monster_race_idx, old_race_flags *old_race_flags_ptr);
 SPEED decide_monster_speed(monster_type *m_ptr);
 void update_player_window(MONRACE_IDX monster_race_idx, BIT_FLAGS *window, old_race_flags *old_race_flags_ptr);