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); }
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); }