示例#1
0
    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}.')
示例#2
0
    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}.')
示例#3
0
 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()}.')