def _common_testing_show_choose_sims_option_dialog(_connection: int=None):
    output = sims4.commands.CheatOutput(_connection)
    output('Showing test choose sims option dialog.')

    def _on_submit(sim_info_list: Tuple[SimInfo]):
        output('Chose Sims with names {}'.format(CommonSimNameUtils.get_full_names(sim_info_list)))

    try:
        # LocalizedStrings within other LocalizedStrings
        title_tokens = (
            CommonLocalizationUtils.create_localized_string(
                CommonStringId.TESTING_SOME_TEXT_FOR_TESTING,
                text_color=CommonLocalizedStringColor.GREEN
            ),
        )
        description_tokens = (
            CommonLocalizationUtils.create_localized_string(
                CommonStringId.TESTING_TEST_TEXT_WITH_SIM_FIRST_AND_LAST_NAME,
                tokens=(CommonSimUtils.get_active_sim_info(),),
                text_color=CommonLocalizedStringColor.BLUE
            ),
        )

        # Create the dialog and show a number of Sims in 4 columns and being able to select up to 5 Sims.
        option_dialog = CommonChooseSimsOptionDialog(
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            title_tokens=title_tokens,
            description_tokens=description_tokens,
            mod_identity=ModInfo.get_identity()
        )

        current_count = 0
        count = 25

        for sim_info in CommonSimUtils.get_sim_info_for_all_sims_generator():
            if current_count >= count:
                break
            is_enabled = random.choice((True, False))
            option_dialog.add_option(
                CommonDialogSimOption(
                    sim_info,
                    CommonDialogSimOptionContext(
                        is_enabled=is_enabled
                    )
                )
            )

        option_dialog.show(
            sim_info=CommonSimUtils.get_active_sim_info(),
            column_count=4,
            max_selectable=5,
            on_submit=_on_submit
        )
    except Exception as ex:
        CommonExceptionHandler.log_exception(ModInfo.get_identity(), 'Failed to show dialog', exception=ex)
        output('Failed to show dialog, please locate your exception log file.')
    output('Done showing.')
def _common_testing_show_choose_sims_dialog(_connection: int = None):
    output = sims4.commands.CheatOutput(_connection)
    output('Showing test choose sims dialog.')

    def _on_chosen(choice: Union[Tuple[SimInfo], None],
                   outcome: CommonChoiceOutcome):
        output('Chose {} with result: {}.'.format(
            CommonSimNameUtils.get_full_names(choice), pformat(outcome)))

    try:
        # LocalizedStrings within other LocalizedStrings
        title_tokens = (CommonLocalizationUtils.create_localized_string(
            CommonStringId.TESTING_SOME_TEXT_FOR_TESTING,
            text_color=CommonLocalizedStringColor.GREEN), )
        description_tokens = (CommonLocalizationUtils.create_localized_string(
            CommonStringId.TESTING_TEST_TEXT_WITH_SIM_FIRST_AND_LAST_NAME,
            tokens=(CommonSimUtils.get_active_sim_info(), ),
            text_color=CommonLocalizedStringColor.BLUE), )
        from sims4communitylib.utils.common_icon_utils import CommonIconUtils
        current_count = 0
        count = 25
        options = []
        for sim_info in CommonSimUtils.get_sim_info_for_all_sims_generator():
            if current_count >= count:
                break
            sim_id = CommonSimUtils.get_sim_id(sim_info)
            is_enabled = random.choice((True, False))
            options.append(
                SimPickerRow(sim_id,
                             select_default=False,
                             tag=sim_info,
                             is_enable=is_enabled))
            current_count += 1

        dialog = CommonChooseSimsDialog(
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            tuple(options),
            title_tokens=title_tokens,
            description_tokens=description_tokens)
        dialog.show(on_chosen=_on_chosen,
                    column_count=5,
                    min_selectable=2,
                    max_selectable=6)
    except Exception as ex:
        CommonExceptionHandler.log_exception(ModInfo.get_identity().name,
                                             'Failed to show dialog',
                                             exception=ex)
        output(
            'Failed to show dialog, please locate your exception log file and upload it to the appropriate thread.'
        )
    output('Done showing.')
def _common_testing_show_choose_sim_option_dialog(_connection: int = None):
    output = sims4.commands.CheatOutput(_connection)
    output('Showing test choose sim option dialog.')

    def _on_chosen(_sim_info: SimInfo):
        output('Chose Sim with name \'{}\''.format(
            CommonSimNameUtils.get_full_name(_sim_info)))

    try:
        # LocalizedStrings within other LocalizedStrings
        title_tokens = (CommonLocalizationUtils.create_localized_string(
            CommonStringId.TESTING_SOME_TEXT_FOR_TESTING,
            text_color=CommonLocalizedStringColor.GREEN), )
        description_tokens = (CommonLocalizationUtils.create_localized_string(
            CommonStringId.TESTING_TEST_TEXT_WITH_SIM_FIRST_AND_LAST_NAME,
            tokens=(CommonSimUtils.get_active_sim_info(), ),
            text_color=CommonLocalizedStringColor.BLUE), )

        # Create the dialog and only showing 2 options per page.
        option_dialog = CommonChooseSimOptionDialog(
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            title_tokens=title_tokens,
            description_tokens=description_tokens,
            mod_identity=ModInfo.get_identity())

        current_count = 0
        count = 25

        for sim_info in CommonSimUtils.get_sim_info_for_all_sims_generator():
            if current_count >= count:
                break
            should_select = random.choice((True, False))
            is_enabled = random.choice((True, False))
            option_dialog.add_option(
                CommonDialogSimOption(sim_info,
                                      CommonDialogSimOptionContext(
                                          is_enabled=is_enabled,
                                          is_selected=should_select),
                                      on_chosen=_on_chosen))

        option_dialog.show(sim_info=CommonSimUtils.get_active_sim_info(),
                           column_count=4)
    except Exception as ex:
        CommonExceptionHandler.log_exception(ModInfo.get_identity().name,
                                             'Failed to show dialog',
                                             exception=ex)
        output('Failed to show dialog, please locate your exception log file.')
    output('Done showing.')
 def update_relationship_decay(self, sim_info_list: Iterator[SimInfo]=()):
     """ Update the relationship decay for friendship and romance. """
     friendship_decay_percentage = self._as_percentage(NRDSettingUtils().get_setting(NRDSettings.FRIENDSHIP_DECAY, variable_type=float))
     romance_decay_percentage = self._as_percentage(NRDSettingUtils().get_setting(NRDSettings.ROMANCE_DECAY, variable_type=float))
     all_sims = sim_info_list or CommonSimUtils.get_sim_info_for_all_sims_generator()
     for sim_info in all_sims:
         if sim_info is None:
             continue
         relationships = sim_info.relationship_tracker
         for relationship in relationships:
             target_id = relationship.sim_id_a
             relationship_tracks = sim_info.relationship_tracker.relationship_tracks_gen(target_id)
             for relationship_track in relationship_tracks:
                 if relationship_track.stat_type == relationship_track.FRIENDSHIP_TRACK:
                     self._modify_decay_rate(relationship_track, friendship_decay_percentage)
                 elif relationship_track.stat_type == relationship_track.ROMANCE_TRACK:
                     self._modify_decay_rate(relationship_track, romance_decay_percentage)
def _common_testing_show_targeted_question_dialog(_connection: int = None):
    output = sims4.commands.CheatOutput(_connection)
    output('Showing test targeted question dialog.')

    def _ok_chosen(_: UiDialogOkCancel):
        output('Ok option chosen.')

    def _cancel_chosen(_: UiDialogOkCancel):
        output('Cancel option chosen.')

    try:
        # LocalizedStrings within other LocalizedStrings
        description_tokens = (CommonLocalizationUtils.create_localized_string(
            CommonStringId.TESTING_TEST_TEXT_WITH_SIM_FIRST_AND_LAST_NAME,
            tokens=(CommonSimUtils.get_active_sim_info(), ),
            text_color=CommonLocalizedStringColor.BLUE), )
        dialog = CommonTargetedQuestionDialog(
            CommonStringId.TESTING_TEST_TEXT_WITH_STRING_TOKEN,
            question_tokens=description_tokens,
            ok_text_identifier=CommonLocalizationUtils.create_localized_string(
                CommonStringId.TESTING_TEST_BUTTON_ONE,
                text_color=CommonLocalizedStringColor.RED),
            cancel_text_identifier=CommonStringId.TESTING_TEST_BUTTON_TWO)
        dialog.show(
            CommonSimUtils.get_active_sim_info(),
            tuple(CommonSimUtils.get_sim_info_for_all_sims_generator())[0],
            on_ok_selected=_ok_chosen,
            on_cancel_selected=_cancel_chosen)
    except Exception as ex:
        CommonExceptionHandler.log_exception(ModInfo.get_identity().name,
                                             'Failed to show dialog',
                                             exception=ex)
        output(
            'Failed to show ok cancel dialog, please locate your exception log file.'
        )
    output('Done showing.')
def _nrd_testing_show_relationship_decay(_connection: int=None):
    output = CheatOutput(_connection)
    output('Showing Relationship Decay Values.')
    _NRDRelationshipUtils().show_relationships(CommonSimUtils.get_sim_info_for_all_sims_generator())
    output('Done')