Skip to content

Commit

Permalink
Controlling sims without a home lot can cause exceptions #29
Browse files Browse the repository at this point in the history
  • Loading branch information
TitanNano committed Nov 9, 2022
1 parent 9560a54 commit 113891c
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/control_any_sim/services/selection_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import services # pylint: disable=import-error

from sims.sim_info_lod import SimInfoLODLevel # pylint: disable=import-error
from sims.sim_info import SimInfo # pylint: disable=import-error
from objects import ALL_HIDDEN_REASONS # pylint: disable=import-error,E0611
from objects.components.types import INVENTORY_COMPONENT # pylint: disable=import-error,E0611
from server.client import Client # pylint: disable=import-error,E0611

from control_any_sim.util.serialize import serialize
from control_any_sim.util.game_events import GameEvents
Expand Down Expand Up @@ -78,7 +80,7 @@ def get_instance(cls, household_id):
return cls(household_id)

@property
def client(self):
def client(self) -> Client:
return services.get_first_client()

def __init__(self, household_id, selectable_sims=None, zone_is_setup=None, household_npcs=None): # pylint: disable=unused-argument
Expand Down Expand Up @@ -119,7 +121,7 @@ def on_zone_teardown(self, _zone, _client):
self.zone_is_setup = False
self.__class__.instance = None

def make_sim_selectable(self, sim_info):
def make_sim_selectable(self, sim_info: SimInfo):
if sim_info.is_selectable:
return

Expand All @@ -128,7 +130,7 @@ def make_sim_selectable(self, sim_info):

self.client.add_selectable_sim_info(sim_info)

currently_active_sim = self.client.active_sim_info
currently_active_sim: SimInfo = self.client.active_sim_info

# force the game to update now selectable NPC tracker information
self.client.set_active_sim_by_id(sim_info.id)
Expand Down Expand Up @@ -170,7 +172,7 @@ def on_active_sim_changed(self, _old_sim, _new_sim):
Logger.log("active sim changed but we have no client, yet?")
return

sim_info = self.client.active_sim_info
sim_info: SimInfo = self.client.active_sim_info

if sim_info is None:
Logger.log("sim selection changed but no sim is selected")
Expand All @@ -182,9 +184,12 @@ def on_active_sim_changed(self, _old_sim, _new_sim):
try:
sim_info.request_lod(SimInfoLODLevel.ACTIVE)

Logger.log(f"sim {sim_info} lod is now: {sim_info.lod}")
Logger.log(f"sim {sim_info!r} lod is now: {sim_info.lod}")

if sim_info.zone_id > 0:
Logger.log(f"Sim zone id is set: {sim_info.zone_id!r}")
sim_info.away_action_tracker.refresh(on_travel_away=True)

sim_info.away_action_tracker.refresh(on_travel_away=True)
sim_info.relationship_tracker.clean_and_send_remaining_relationship_info()
sim_info.publish_all_commodities()

Expand All @@ -194,10 +199,10 @@ def on_active_sim_changed(self, _old_sim, _new_sim):
inventory = sim_instance.get_component(INVENTORY_COMPONENT)
inventory.publish_inventory_items()
else:
Logger.log(f'there is no sim instance for {sim_info}')
Logger.log(f'there is no sim instance for {sim_info!r}')

except BaseException:
Logger.error(f"updating newly active sim: {sim_info}")
Logger.error(f"updating newly active sim: {sim_info!r}")
Logger.error(traceback.format_exc())

def cleanup_sims(self):
Expand Down

0 comments on commit 113891c

Please sign in to comment.