Crossfire Server, Branch 1.12  R12190
CREUtils.cpp
Go to the documentation of this file.
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     //item->setData(0, Qt::UserRole, arch->getId());
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 }