/**
 * input_overlay_poll_clear:
 * @ol                    : overlay handle
 *
 * Call when there is nothing to poll. Allows overlay to
 * clear certain state.
 **/
static void input_overlay_poll_clear(float opacity)
{
   size_t i;
   input_overlay_t *ol      = overlay_ptr;

   if (!ol)
      return;

   ol->blocked = false;

   input_overlay_set_alpha_mod(opacity);

   for (i = 0; i < ol->active->size; i++)
   {
      struct overlay_desc *desc = &ol->active->descs[i];

      if (!desc)
         continue;

      desc->range_x_mod = desc->range_x;
      desc->range_y_mod = desc->range_y;
      desc->updated = false;

      desc->delta_x = 0.0f;
      desc->delta_y = 0.0f;
      input_overlay_update_desc_geom(ol, desc);
   }
}
Exemple #2
0
void input_overlay_post_poll(input_overlay_t *ol)
{
   size_t i;

   input_overlay_set_alpha_mod(ol, g_settings.input.overlay_opacity);

   for (i = 0; i < ol->active->size; i++)
   {
      struct overlay_desc *desc = &ol->active->descs[i];

      if (desc->updated)
      {
         // If pressed this frame, change the hitbox.
         desc->range_x_mod = desc->range_x * desc->range_mod;
         desc->range_y_mod = desc->range_y * desc->range_mod;

         if (desc->image.pixels)
            ol->iface->set_alpha(ol->iface_data, desc->image_index,
                  desc->alpha_mod * g_settings.input.overlay_opacity);
      }
      else
      {
         desc->range_x_mod = desc->range_x;
         desc->range_y_mod = desc->range_y;
      }

      input_overlay_update_desc_geom(ol, desc);
      desc->updated = false;
   }
}
Exemple #3
0
/**
 * input_overlay_post_poll:
 *
 * Called after all the input_overlay_poll() calls to
 * update the range modifiers for pressed/unpressed regions
 * and alpha mods.
 **/
static void input_overlay_post_poll(input_overlay_t *ol, float opacity)
{
   size_t i;

   input_overlay_set_alpha_mod(opacity);

   for (i = 0; i < ol->active->size; i++)
   {
      struct overlay_desc *desc = &ol->active->descs[i];

      desc->range_x_mod = desc->range_x;
      desc->range_y_mod = desc->range_y;

      if (desc->updated)
      {
         /* If pressed this frame, change the hitbox. */
         desc->range_x_mod *= desc->range_mod;
         desc->range_y_mod *= desc->range_mod;

         if (desc->image.pixels)
         {
            if (ol->iface->set_alpha)
               ol->iface->set_alpha(ol->iface_data, desc->image_index,
                     desc->alpha_mod * opacity);
         }
      }

      input_overlay_update_desc_geom(ol, desc);
      desc->updated = false;
   }
}
Exemple #4
0
void input_overlay_poll_clear(input_overlay_t *ol)
{
   size_t i;
   ol->blocked = false;
   input_overlay_set_alpha_mod(ol, g_settings.input.overlay_opacity);

   for (i = 0; i < ol->active->size; i++)
   {
      struct overlay_desc *desc = &ol->active->descs[i];
      desc->range_x_mod = desc->range_x;
      desc->range_y_mod = desc->range_y;
      desc->updated = false;

      desc->delta_x = 0.0f;
      desc->delta_y = 0.0f;
      input_overlay_update_desc_geom(ol, desc);
   }
}