00001 #include <QtGui>
00002 #include "CREUtils.h"
00003 #include "CREPixmap.h"
00004
00005 extern "C" {
00006 #include "global.h"
00007 #include "recipe.h"
00008 #include "libproto.h"
00009 }
00010
00011 QTreeWidgetItem* CREUtils::archetypeNode(QTreeWidgetItem* parent)
00012 {
00013 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(QTreeWidget::tr("Archetypes")));
00014 return item;
00015 }
00016
00017 QTreeWidgetItem* CREUtils::archetypeNode(const archt* arch, QTreeWidgetItem* parent)
00018 {
00019 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(arch->name));
00020
00021 item->setIcon(0, CREPixmap::getIcon(arch->clone.face->number));
00022 return item;
00023 }
00024
00025 QTreeWidgetItem* CREUtils::artifactNode(QTreeWidgetItem* parent)
00026 {
00027 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(QTreeWidget::tr("Artifacts")));
00028 return item;
00029 }
00030
00031 QTreeWidgetItem* CREUtils::artifactNode(const artifact* arti, QTreeWidgetItem* parent)
00032 {
00033 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(arti->item->name));
00034 if (arti->item->face != NULL && arti->item->face != blank_face)
00035 item->setIcon(0, CREPixmap::getIcon(arti->item->face->number));
00036 else
00037 {
00038 int face = 0;
00039 for (linked_char* allowed = arti->allowed; allowed; allowed = allowed->next)
00040 {
00041 if (allowed->name[0] == '!')
00042 continue;
00043 const archt* specific = find_archetype(allowed->name);
00044 if (specific && specific->clone.face != NULL)
00045 {
00046 face = specific->clone.face->number;
00047 break;
00048 }
00049 }
00050
00051 if (face == 0)
00052 {
00053 const archt* generic = get_archetype_by_type_subtype(arti->item->type, -1);
00054 if (generic != NULL && generic->clone.face != NULL)
00055 face = generic->clone.face->number;
00056 }
00057
00058 if (face)
00059 item->setIcon(0, CREPixmap::getIcon(face));
00060 }
00061 return item;
00062 }
00063
00064 QTreeWidgetItem* CREUtils::treasureNode(QTreeWidgetItem* parent)
00065 {
00066 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(QTreeWidget::tr("Treasures")));
00067 return item;
00068 }
00069
00070 QTreeWidgetItem* CREUtils::treasureNode(const treasurelist* list, QTreeWidgetItem* parent)
00071 {
00072 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(list->name));
00073 if (list->total_chance == 0)
00074 item->setIcon(0, CREPixmap::getTreasureIcon());
00075 else
00076 item->setIcon(0, CREPixmap::getTreasureOneIcon());
00077 return item;
00078 }
00079
00080 QTreeWidgetItem* CREUtils::treasureNode(const treasure* treasure, QTreeWidgetItem* parent)
00081 {
00082 QTreeWidgetItem* item;
00083 if (treasure->item)
00084 {
00085 item = CREUtils::archetypeNode(treasure->item, parent);
00086 }
00087 else
00088 {
00089 treasurelist* other = find_treasurelist(treasure->name);
00090 if (other == NULL)
00091 item = new QTreeWidgetItem(parent, QStringList(QString(QTreeWidget::tr("Invalid list: %1")).arg(treasure->name)));
00092 else
00093 {
00094 item = CREUtils::treasureNode(other, parent);
00095 }
00096 }
00097
00098 return item;
00099 }
00100
00101 QTreeWidgetItem* CREUtils::formulaeNode(const recipe* recipe, QTreeWidgetItem* parent)
00102 {
00103 QString title;
00104 const archt* base = NULL;
00105
00106 if (recipe->arch_names == 0)
00107 {
00108 title = QString("%1 (no archetype?)").arg(recipe->title);
00109 }
00110 else
00111 {
00112 base = find_archetype(recipe->arch_name[0]);
00113 if (strcmp(recipe->title, "NONE") == 0)
00114 {
00115 title = base->clone.name;
00116 }
00117 else
00118 {
00119 title = QString("%1 of %2").arg(base->clone.name, recipe->title);
00120 }
00121 }
00122 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(title));
00123 if (base != NULL && base->clone.face != 0)
00124 item->setIcon(0, CREPixmap::getIcon(base->clone.face->number));
00125
00126 return item;
00127 }
00128
00129 QTreeWidgetItem* CREUtils::faceNode(QTreeWidgetItem* parent)
00130 {
00131 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(QTreeWidget::tr("Faces")));
00132 return item;
00133 }
00134
00135 QTreeWidgetItem* CREUtils::faceNode(const New_Face* face, QTreeWidgetItem* parent)
00136 {
00137 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(face->name));
00138 item->setIcon(0, CREPixmap::getIcon(face->number));
00139 return item;
00140 }
00141
00142 QTreeWidgetItem* CREUtils::animationNode(QTreeWidgetItem* parent)
00143 {
00144 return new QTreeWidgetItem(parent, QStringList(QTreeWidget::tr("Animations")));
00145 }
00146
00147 QTreeWidgetItem* CREUtils::animationNode(const Animations* anim, QTreeWidgetItem* parent)
00148 {
00149 QTreeWidgetItem* item = new QTreeWidgetItem(parent, QStringList(anim->name));
00150 if (anim->num_animations > 0)
00151 item->setIcon(0, CREPixmap::getIcon(anim->faces[0]));
00152 else
00153 LOG(llevDebug, "empty animation: %s\n", anim->name);
00154 return item;
00155 }