示例#1
0
void                          SettingsUI::setupItemsSettings()
{
  auto asset = AssetManager::instance();
  _factory = GeometryFactory::instanciate();
  _front[0] = new Geometric(glm::vec3(0, 0, 15.1), glm::vec3(0, 0, 0), glm::vec3(39, 20, 2));
  _front[1] = new Geometric(glm::vec3(0, 6.5, 12), glm::vec3(), glm::vec3(2.5, 1.75, 15));
  _front[2] = new Geometric(glm::vec3(-6.5, -3.5, 6.5), glm::vec3(), glm::vec3(4, 2, 10));
  _front[3] = new Geometric(glm::vec3(4.5, _cursor[ALIASING], 12), glm::vec3(0, 0, 0), glm::vec3(1, 1, 1));
  int fixItems = _itemsName.size() - _dynamicItems;
  for (int i = 0; i < _fixItems; i++) {
    int n = _itemsName.size() - fixItems;
    _front[i]->setGeometry(_factory->getGeometry(GeometryFactory::VERTICAL_PLANE));
    _front[i]->setTexture((*(*THEME((*THEME_HANDLER(asset["themes"]))["default"]))[_itemsName[n]]));
    _front[i]->initialize();
    _front[i]->draw(_shader, _clock);
    --fixItems;
  }
  for (int i = 0; i < _dynamicItems; i++) {
    _items.push_back(new Geometric(glm::vec3(3, _spreading, 10), glm::vec3(0, 0, 0), glm::vec3(2.5, 1.5, 40)));
    _items.back()->setGeometry(_factory->getGeometry(GeometryFactory::VERTICAL_PLANE));
    _items.back()->setTexture((*(*THEME((*THEME_HANDLER(asset["themes"]))["default"]))[_itemsName[i]]));
    _items.back()->initialize();
    _items.back()->draw(_shader, _clock);
    if (i < (_dynamicItems - 1))
    {
      std::vector<std::string>    tmp;
      std::ostringstream          gv;
      std::ostringstream          fx;
      gv << _gameVolum;
      fx << _fxVolum;
      tmp.push_back(!_antiAliasing ? "OFF" : "ON");
      tmp.push_back(gv.str());
      tmp.push_back(fx.str());
      _settings[i] = new GraphicString(tmp[i]);
      _settings[i]->render(*_factory);
      _settings[i]->translate(*_posSettings[i]);
      _settings[i]->scale(glm::vec3(2, 4, 10));
      _settings[i]->draw(_shader, _clock);
    }
    _spreading -= 2.5;
  }
  _spreading = 2;
}
示例#2
0
static void
theme_parser_start_element (GMarkupParseContext  *context,
                            const gchar          *element_name,
                            const gchar         **attribute_names,
                            const gchar         **attribute_values,
                            gpointer              user_data,
                            GError              **error)
{
  const gchar *prop_value;
  Theme *theme = THEME (user_data);
  ThemePrivate *priv = theme->priv;

  if (!g_strcmp0 (element_name, "theme")) {
    prop_value = get_attribute_value ("name", attribute_names, attribute_values);
    priv->name = g_strdup (prop_value);
  } else if (!g_strcmp0 (element_name, "icon")) {
    gchar *src;
    GdkPixbuf *pixbuf;
    gint alpha = 255;

    src = g_build_filename (theme->priv->path, 
                            get_attribute_value ("src", attribute_names, attribute_values),
                            NULL);

    prop_value = get_attribute_value ("alpha", attribute_names, attribute_values);

    if (prop_value != NULL)
      alpha = CLAMP (atoi (prop_value), 0, 255);

    if (theme->priv->tile_width == 0) {
      pixbuf = gdk_pixbuf_new_from_file (src, NULL);
      if (pixbuf != NULL) {
        theme->priv->tile_width = gdk_pixbuf_get_width (pixbuf);
        theme->priv->tile_height = gdk_pixbuf_get_height (pixbuf);
        g_object_unref (pixbuf);
      }
    }

    theme_add_image (theme, src, alpha);

    g_free (src);
  } else if (!g_strcmp0 (element_name, "animstep")) {
    priv->animstep = atoi (get_attribute_value ("dist", attribute_names, 
                                                    attribute_values));
  } else if (!g_strcmp0 (element_name, "bgcolor")) {
    /* handle background color */
    prop_value = get_attribute_value ("color", attribute_names, attribute_values);
    gdk_rgba_parse (&(priv->bg_color), prop_value);
  } else if (!g_strcmp0 (element_name, "bgcolor_rgb")) {
    /* handle rgb color node */
    prop_value = get_attribute_value ("red", attribute_names, attribute_values);
    priv->bg_color.red = (atof (prop_value) / 255.0) * 65536;
    prop_value = get_attribute_value ("blue", attribute_names, attribute_values);
    priv->bg_color.blue = (atof (prop_value) / 255.0) * 65536;
    prop_value = get_attribute_value ("green", attribute_names, attribute_values);
    priv->bg_color.green = (atof (prop_value) / 255.0) * 65536;
  } else if (!g_strcmp0 (element_name, "decor")) {
    gchar *src;
    const gchar *base;
    GQuark base_id;
    GQuark decor_id;
    gint alpha = 255;

    src = g_build_filename (theme->priv->path, 
                            get_attribute_value ("src", attribute_names, attribute_values),
                            NULL);

    prop_value = get_attribute_value ("alpha", attribute_names, attribute_values);
    if (prop_value != NULL) {
      alpha = CLAMP (atoi (prop_value), 0, 255);
    }

    decor_id = theme_add_image (theme, src, alpha);
    g_free (src);

    base = get_attribute_value ("base", attribute_names, attribute_values);
    if (base == NULL)
      return;

    base_id = g_quark_from_string (base);
    theme_add_image_decoration (theme, base_id, decor_id);
  }
}