- self._surrounding_map = None
- self._surroundings_offset = None
-
- def get_surroundings_offset(self):
- if self._surroundings_offset is not None:
- return self._surroundings_offset
- y_long = self.position[0].y * self.game.map_size.y + self.position[1].y
- x_long = self.position[0].x * self.game.map_size.x + self.position[1].x
- yx_to_origin = YX(y_long, x_long)
- self._surroundings_offset = yx_to_origin - YX(self._radius, self._radius)
- return self._surroundings_offset
-
- def get_surrounding_map(self):
- if self._surrounding_map is not None:
- return self._surrounding_map
- self._surrounding_map = Map(size=YX(self._radius*2+1, self._radius*2+1))
- offset = self.get_surroundings_offset()
- for pos in self._surrounding_map:
- correct = self.game.map_geometry.correct_double_coordinate
- big_yx, small_yx = correct(self.game.map_size, (0,0), pos + offset)
- map_ = self.game.get_map(big_yx, False)
- if map_ is None:
- map_ = Map(size=self.game.map_size)
- self._surrounding_map[pos] = map_[small_yx]
- return self._surrounding_map
+ self._surroundings = None
+
+ @property
+ def view_offset(self):
+ return self.game.map_geometry.get_view_offset(self.game.map_size,
+ self.position,
+ self._radius)
+
+ @property
+ def surroundings(self):
+ if self._surroundings is not None:
+ return self._surroundings
+ s, close_maps = self.\
+ game.map_geometry.get_view_and_seen_maps(self.game.map_size,
+ self.game.get_map,
+ self._radius,
+ self.view_offset)
+ self.close_maps = close_maps
+ self._surroundings = s
+ return self._surroundings