Ejemplo n.º 1
0
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);
}
Ejemplo n.º 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;
}
Ejemplo n.º 3
0
void
lok_hero_use_bag_pack (LokHero * hero)
{
  LokElement *element;
  element = lok_bag_pack_pop_element (hero->bag_pack);

  if (!element)
    return;

  if (lok_element_get_type (element) == LOK_ELEMENT_TYPE_POTION)
    lok_hero_drink_potion (hero, element);
  else {
    if (hero->hand != NULL)
      lok_bag_pack_add_element (hero->bag_pack, hero->hand);
    hero->hand = element;
  }
}