Пример #1
0
 def get_tooltip_field(self, field, context=None, target=None):
     if field == TooltipFields.relic_description:
         sim = context.sim
         if sim is None:
             return
         return sim.sim_info.relic_tracker.get_description_for_objects(
             self.owner, target)
     name = TooltipFieldsComplete(field).name
     existing_handle = self._ui_metadata_handles.get(name, None)
     if existing_handle is not None:
         (_, _, value) = self.owner.get_ui_metadata(existing_handle)
         return value
     tooltip_component = None
     tooltip_override = self.owner.get_tooltip_override()
     if tooltip_override is not None:
         tooltip_component = tooltip_override.get_component(
             types.TOOLTIP_COMPONENT)
     if tooltip_component is None:
         tooltip_component = self
     tooltip_text = None
     resolver = SingleObjectResolver(self.owner)
     for tooltip_data in tooltip_component.custom_tooltips:
         object_tests = tooltip_data.object_tests
         if object_tests and not object_tests.run_tests(resolver):
             continue
         tooltip_text = tooltip_data.tooltip_fields.get(field, tooltip_text)
     if tooltip_text is not None:
         if tooltip_text.text_tokens is not None:
             tokens = tooltip_text.text_tokens.get_tokens(resolver)
             if None in tokens:
                 return
         else:
             tokens = ()
         text = tooltip_text.text(*tokens)
         external_field_data_tuple = tooltip_component._external_field_to_data.get(
             name)
         if external_field_data_tuple:
             tooltip_override_data = tooltip_text.override_component_information
             if tooltip_override_data is not None:
                 if tooltip_override_data.concatenation_type == TooltipFieldConcatenationType.CONCATENATE_BEFORE:
                     text = LocalizationHelperTuning.get_separated_string_by_style(
                         tooltip_override_data.concatenation_style, text,
                         external_field_data_tuple.field_data)
                 else:
                     text = LocalizationHelperTuning.get_separated_string_by_style(
                         tooltip_override_data.concatenation_style,
                         external_field_data_tuple.field_data, text)
         if name == self.SUBTEXT_HANDLE:
             if tooltip_component._ui_metadata_handles:
                 subtext = tooltip_component.get_state_strings(text)
                 if subtext is not None:
                     text = subtext
         handle = self.owner.add_ui_metadata(name, text)
         self._ui_metadata_handles[name] = handle
         return text
Пример #2
0
 def update_object_tooltip(self):
     if not self.hovertip_requested:
         return
     if services.client_manager() is None:
         return
     caches.clear_all_caches()
     tooltip_component = None
     tooltip_override = self.owner.get_tooltip_override()
     if tooltip_override is not None:
         tooltip_component = tooltip_override.get_component(
             types.TOOLTIP_COMPONENT)
     if tooltip_component is None:
         tooltip_component = self
     old_handles = dict(self._ui_metadata_handles)
     try:
         self._ui_metadata_handles = {}
         subtext_field = None
         resolver = SingleObjectResolver(self.owner)
         if self.tooltip_tests.run_tests(resolver):
             for (name, value, tooltip_override_data
                  ) in tooltip_component._ui_metadata_gen():
                 external_field_data_tuple = tooltip_component._external_field_to_data.get(
                     name)
                 if external_field_data_tuple:
                     if tooltip_override_data is not None:
                         if tooltip_override_data.concatenation_type == TooltipFieldConcatenationType.CONCATENATE_BEFORE:
                             value = LocalizationHelperTuning.get_separated_string_by_style(
                                 tooltip_override_data.concatenation_style,
                                 value,
                                 external_field_data_tuple.field_data)
                         else:
                             value = LocalizationHelperTuning.get_separated_string_by_style(
                                 tooltip_override_data.concatenation_style,
                                 external_field_data_tuple.field_data,
                                 value)
                 handle = self.owner.add_ui_metadata(name, value)
                 self._ui_metadata_handles[name] = handle
                 if name == self.SUBTEXT_HANDLE:
                     subtext_field = value
             if tooltip_component._ui_metadata_handles:
                 subtext = tooltip_component.get_state_strings(
                     subtext_field)
                 if subtext is not None:
                     if self.SUBTEXT_HANDLE in self._ui_metadata_handles:
                         self.owner.remove_ui_metadata(
                             self._ui_metadata_handles[self.SUBTEXT_HANDLE])
                     handle = self.owner.add_ui_metadata(
                         self.SUBTEXT_HANDLE, subtext)
                     self._ui_metadata_handles[self.SUBTEXT_HANDLE] = handle
             for index_unused in tooltip_component._external_field_to_data.keys(
             ) - self._ui_metadata_handles.keys():
                 external_field_data = tooltip_component._external_field_to_data.get(
                     index_unused)
                 handle = self.owner.add_ui_metadata(
                     index_unused, external_field_data.field_data)
                 self._ui_metadata_handles[index_unused] = handle
     finally:
         for handle in old_handles.values():
             self.owner.remove_ui_metadata(handle)
         self.owner.update_ui_metadata()
     if not self._ui_metadata_handles:
         self.owner.hover_tip = ui_protocols.UiObjectMetadata.HOVER_TIP_DISABLED
         self.owner.update_ui_metadata()