static GtkTreeModel *
create_and_fill_model (LokGameWidget * game_widget)
{
  GtkListStore *list_store;
  GtkTreeIter toplevel;
  TList *l;
  LokBagPack *bag_pack;

  bag_pack = game_widget->game->hero->bag_pack;

  list_store = gtk_list_store_new (NUM_COLS,
      G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT);

  if (!bag_pack)
    return GTK_TREE_MODEL (list_store);

  for (l = bag_pack->list->start; l != NULL; l = l->next) {
    LokElement *element;

    element = LOK_ELEMENT (l->data);
    gtk_list_store_append (list_store, &toplevel);
    gtk_list_store_set (list_store, &toplevel,
        COL_TYPE, lok_element_type_to_string (lok_element_get_type (element)),
        COL_NAME, element->name,
        COL_POINTS, element->points,
        COL_WEIGHT, element->weight,
        -1);
  }

  return GTK_TREE_MODEL (list_store);
}
Beispiel #2
0
TBoolean
lok_hero_use_belt (LokHero * hero, int index)
{
  LokElement *element;
  element = lok_belt_get_element (hero->belt, index);
  if (!element)
    return FALSE;
  if (lok_element_get_type (element) == LOK_ELEMENT_TYPE_POTION) {
    lok_hero_drink_potion (hero, element);
    lok_belt_remove_element (hero->belt, index);
    return TRUE;
  } else {
    if (hero->hand == NULL) {
      lok_belt_remove_element (hero->belt, index);
      hero->hand = element;
      return TRUE;
    } else { 
      int capacity_belt;
      capacity_belt = lok_belt_get_belt_pocket (hero->belt, index)->capacity;
      if (capacity_belt >= hero->hand->weight) {
        lok_belt_remove_element (hero->belt, index);
        lok_belt_insert_element (hero->belt, index, LOK_ELEMENT (hero->hand));
        hero->hand = element;
        return TRUE;
      }
    }
  }
  return FALSE;
}
LokElement *
lok_level_object_get_element (LokLevelObject * object)
{
  LokElement *ret = NULL;
  if (object->type == LOK_LEVEL_OBJECT_TYPE_ELEMENT)
    ret = LOK_ELEMENT (object->data);
  return ret;
}
static GtkTreeModel *
create_and_fill_model (LokBagPack * bag_pack)
{
  GtkListStore *list_store;
  GtkTreeIter toplevel;
  TList *l;

  list_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_INT,
      G_TYPE_INT);

  if (!bag_pack)
    return GTK_TREE_MODEL (list_store);

  for (l = bag_pack->list->start; l != NULL; l = l->next) {
    LokElement *element;

    element = LOK_ELEMENT (l->data);
    gtk_list_store_append (list_store, &toplevel);
    gtk_list_store_set (list_store, &toplevel, COL_NAME, element->name,
      COL_ATTACK_POINTS, element->points, COL_WEIGHT, element->weight, -1);
  }

  return GTK_TREE_MODEL (list_store);
}