Loading

Revision differences

Old revision #przx0mp7jNew revision #p0laqcito
1if (this->activity == GA_WANDER || this->activity == GA_QUEUING) { // Prevent wandering and queuing guests from walking out the park.  1if (this->activity == GA_WANDER || this->activity == GA_QUEUING) { // Prevent wandering and queuing guests from walking out the park.  
2    uint8 exits_viable = this->Person::HandleParkExits(); // Handle guests trying to wander out.  2    uint8 exits_viable = this->Person::HandleParkExits();
3    exits &= exits_viable;  3    exits &= exits_viable;  
4    shops &= exits_viable;  4    shops &= exits_viable;  
5}  5}  
6  6  
7/**  7/**  
8 * Prevent people from wandering out of the park.  8 * Prevent people from wandering out of the park.  
9 * @return exits Possible exits at the tile.  9 * @return exits Exits from the current tile that stay or lead into the park in
   10 * the low nibble.
10 */  11 */  
11void Person::HandleParkExits()  11uint8 Person::HandleParkExits()
12{  13{  
13    uint8 exits = 0xF;  14    uint8 exits = 0xF;  
14    for (TileEdge exit_edge = EDGE_BEGIN; exit_edge != EDGE_COUNT; exit_edge++) {  15    for (TileEdge exit_edge = EDGE_BEGIN; exit_edge != EDGE_COUNT; exit_edge++) {  
15        Point16 dxy = _tile_dxy[exit_edge];  16        Point16 dxy = _tile_dxy[exit_edge];  
16  17  
17        if (this->x_vox + dxy.x < 0 || this->x_vox + dxy.x >= _world.GetXSize() * 256 ||  18        if (this->x_vox + dxy.x < 0 || this->x_vox + dxy.x >=
18            this->y_vox + dxy.y < 0 || this->y_vox + dxy.y >= _world.GetYSize() * 256 ||  19        _world.GetXSize()) continue;
19            _world.GetTileOwner(this->x_vox + dxy.x, this->y_vox + dxy.y) != OWN_PARK) {  20        if (this->y_vox + dxy.y < 0 || this->y_vox + dxy.y >=
   21        _world.GetYSize()) continue;
   22        if (_world.GetTileOwner(this->x_vox + dxy.x, this->y_vox + dxy.y) != OWN_PARK) {
20            SB(exits, exit_edge, 1, 0);  23            SB(exits, exit_edge, 1, 0);  
21        }  24        }  
22    }  25    }