Loading

Revision differences

Old revision #prqsbwatyNew revision #p1x8xmqgt
1    function InitializePath(source, goal) {  1        if (this._search_range) {
2        this._pathfinder.InitializePath([source, 0xFF], goal);    
3        if (this._search_range != 0) {    
4            local source_x = AIMap.GetTileX(source);  2            local source_x = AIMap.GetTileX(source);  
5            local source_y = AIMap.GetTileY(source);  3            local source_y = AIMap.GetTileY(source);  
6            local goal_x = AIMap.GetTileX(goal);  4            local goal_x = AIMap.GetTileX(goal);  
7            local goal_y = AIMap.GetTileY(goal);  5            local goal_y = AIMap.GetTileY(goal);  
8  6  
9            local N_x = source_x > goal_x ? goal_x : source_x;    
10            local N_y = source_y > goal_y ? goal_y : source_y;    
11            local S_x = source_x > goal_x ? source_x : goal_x;    
12            local S_y = source_y > goal_y ? source_y : goal_y;    
13    
14            local min_freeform = AIMap.IsValidTile(0) ? 0 : 1;  7            local min_freeform = AIMap.IsValidTile(0) ? 0 : 1;  
15            local max_freeform = min_freeform == 0 ? 3 : 2;  8            local max_freeform = min_freeform == 0 ? 3 : 2;  
16  9  
17            this._min_x = N_x - this._search_range < min_freeform ? min_freeform : N_x - this._search_range;  17            this._min_x = max(min_freeform, min(source_x, goal_x) - this._search_range);
18            this._min_y = N_y - this._search_range < min_freeform ? min_freeform : N_y - this._search_range;  18            this._min_y = max(min_freeform, min(source_y, goal_y) - this._search_range);
19            this._max_x = S_x + this._search_range > AIMap.GetMapSizeX() - max_freeform ? AIMap.GetMapSizeX() - max_freeform : S_x + this._search_range;  19            this._max_x = min(AIMap.GetMapSizeX() - max_freeform, max(source_x, goal_x) + this._search_range);
20            this._max_y = S_y + this._search_range > AIMap.GetMapSizeY() - max_freeform ? AIMap.GetMapSizeY() - max_freeform : S_y + this._search_range;  20            this._max_y = max(AIMap.GetMapSizeY() - max_freeform, max(source_y, goal_y) + this._search_range);
21        }  21        }
22    }    
23    
24function Road::_IsInsideRangeEfficient(self, cur_tile,    
25        _AIMap = AIMap)    
26{    
27    if (!self._search_range) return true;    
28    local cur_tile_x = _AIMap.GetTileX(cur_tile);    
29    local cur_tile_y = _AIMap.GetTileY(cur_tile);    
30    return cur_tile_x >= self._min_x && cur_tile_x <= self._max_x && cur_tile_y >= self._min_y && cur_tile_y <= self._max_y;    
31}