Beispiel #1
0
def GetLastSimID(targetSimInfo: sim_info.SimInfo) -> typing.Optional[int]:
    if not isinstance(targetSimInfo, sim_info.SimInfo):
        Exceptions.IncorrectTypeException(targetSimInfo, "targetSimInfo",
                                          (sim_info.SimInfo, ))

    lastSimIDStatisticType = services.get_instance_manager(
        resources.Types.STATISTIC).get(
            LastSimIDStatisticID,
            None)  # type: typing.Optional[typing.Type[statistic.Statistic]]

    if lastSimIDStatisticType is None:
        Debug.Log(
            "Could not find the last sim id statistic type.\nTarget Sim ID: %s"
            % str(targetSimInfo.id),
            This.Mod.Namespace,
            Debug.LogLevels.Error,
            group=This.Mod.Namespace,
            owner=__name__,
            lockIdentifier=__name__ + ":MissingLastSimIDStatisticType")
        return None

    lastSimIDStatisticTracker = targetSimInfo.get_tracker(
        lastSimIDStatisticType
    )  # type: typing.Optional[statistic_tracker.StatisticTracker]

    if lastSimIDStatisticTracker is None:
        Debug.Log(
            "Could not find the last sim id statistic's tracker in the target sim.\nTarget Sim ID: %s"
            % str(targetSimInfo.id),
            This.Mod.Namespace,
            Debug.LogLevels.Error,
            group=This.Mod.Namespace,
            owner=__name__,
            lockIdentifier=__name__ + ":MissingLastSimIDStatisticTracker")
        return None

    lastSimIDStatistic = lastSimIDStatisticTracker.get_statistic(
        lastSimIDStatisticType,
        add=True)  # type: typing.Optional[statistic.Statistic]

    if lastSimIDStatistic is None:
        Debug.Log(
            "Could not retrieve a sim's last sim id statistic\nTarget Sim ID: %s"
            % str(targetSimInfo.id),
            This.Mod.Namespace,
            Debug.LogLevels.Error,
            group=This.Mod.Namespace,
            owner=__name__,
            lockIdentifier=__name__ + ":MissingLastSimIDStatistic")
        return None

    lastSimID = lastSimIDStatistic.get_value()  # type: int

    if lastSimID == 0:
        return None
    else:
        return lastSimID
Beispiel #2
0
 def get_pregnancy_progress(sim_info: SimInfo) -> float:
     """ Retrieve the pregnancy progress of a Sim. """
     pregnancy_tracker = CommonSimPregnancyUtils._get_pregnancy_tracker(
         sim_info)
     if pregnancy_tracker is None or not CommonSimPregnancyUtils.is_pregnant(
             sim_info):
         return 0.0
     pregnancy_commodity_type = pregnancy_tracker.PREGNANCY_COMMODITY_MAP.get(
         CommonSpeciesUtils.get_species(sim_info))
     statistic_tracker = sim_info.get_tracker(pregnancy_commodity_type)
     pregnancy_commodity = statistic_tracker.get_statistic(
         pregnancy_commodity_type, add=False)
     if not pregnancy_commodity:
         return 0.0
     return pregnancy_commodity.get_value()