def _expire_players(self) -> None: # Issue warnings for any players that left the game but don't # get freed soon. for ex_player in (p() for p in self._players_that_left): if ex_player is not None: verify_object_death(ex_player) for player in self.players: # This should allow our ba.Player instance to be freed. # Complain if that doesn't happen. verify_object_death(player) try: player.expire() except Exception: print_exception(f'Error expiring {player}') # Reset the SessionPlayer to a not-in-an-activity state. try: sessionplayer = player.sessionplayer self._reset_session_player_for_no_activity(sessionplayer) except SessionPlayerNotFoundError: # Conceivably, someone could have held on to a Player object # until now whos underlying SessionPlayer left long ago... pass except Exception: print_exception(f'Error expiring {player}.')
def _expire_teams(self) -> None: # Issue warnings for any teams that left the game but don't # get freed soon. for ex_team in (p() for p in self._teams_that_left): if ex_team is not None: verify_object_death(ex_team) for team in self.teams: # This should allow our ba.Team instance to die. # Complain if that doesn't happen. verify_object_death(team) try: team.expire() except Exception: print_exception(f'Error expiring {team}') try: sessionteam = team.sessionteam sessionteam.activityteam = None except SessionTeamNotFoundError: # It is expected that Team objects may last longer than # the SessionTeam they came from (game objects may hold # team references past the point at which the underlying # player/team has left the game) pass except Exception: print_exception(f'Error expiring Team {team}.')
def _expire_actors(self) -> None: # Expire all Actors. for actor_ref in self._actor_weak_refs: actor = actor_ref() if actor is not None: verify_object_death(actor) try: actor.on_expire() except Exception: print_exception(f'Error in Actor.on_expire()' f' for {actor_ref()}.')