Crossfire Server, Trunk
CREAnimationPanel.cpp
Go to the documentation of this file.
1 #include <Qt>
2 
3 extern "C" {
4 #include "global.h"
5 #include "artifact.h"
6 #include "object.h"
7 #include "face.h"
8 }
9 
10 #include "CREAnimationPanel.h"
11 #include "CREAnimationControl.h"
12 #include "CREUtils.h"
13 
14 #include "assets.h"
15 #include "AssetsManager.h"
16 #include "Archetypes.h"
18 
20 {
21  myMaps = maps;
22  myAnimation = 0;
23 
24  QGridLayout* layout = new QGridLayout(this);
25 
26  myUsing = new QTreeWidget(this);
27  myUsing->setColumnCount(1);
28  myUsing->setHeaderLabel(tr("Used by"));
29  myUsing->setIconSize(QSize(32, 32));
30  myUsing->sortByColumn(0, Qt::AscendingOrder);
31  layout->addWidget(myUsing, 1, 1);
32 
33  myFaces = new QTreeWidget(this);
34  myFaces->setColumnCount(1);
35  myFaces->setHeaderLabel(tr("Faces"));
36  myFaces->setIconSize(QSize(32, 32));
37  layout->addWidget(myFaces, 2, 1);
38 
39  myDisplay = new CREAnimationControl(this);
40  layout->addWidget(myDisplay, 3, 1);
41 }
42 
43 void CREAnimationPanel::setItem(const Animations* animation)
44 {
45  Q_ASSERT(animation);
46  myAnimation = animation;
47 
48  myUsing->clear();
49 
51 
52  QTreeWidgetItem* root = NULL;
53 
54  getManager()->archetypes()->each([this, &root] (archetype *arch) {
55  sstring key = object_get_value(&arch->clone, "identified_animation");
56  if (arch->clone.animation == myAnimation || (key && strcmp(myAnimation->name, key) == 0))
57  {
58  if (root == NULL)
59  {
61  myUsing->addTopLevelItem(root);
62  root->setExpanded(true);
63  }
65  }
66  });
67 
68  root = NULL;
69 
71  artifact* art;
72 
73  for (list = first_artifactlist; list; list = list->next)
74  {
75  for (art = list->items; art; art = art->next)
76  {
77  if (art->item->animation == myAnimation)
78  {
79  if (root == NULL)
80  {
82  myUsing->addTopLevelItem(root);
83  root->setExpanded(true);
84  }
86  }
87  }
88  }
89 
91  for (auto map : maps)
92  {
93  if (!root)
94  {
95  root = CREUtils::mapNode(nullptr);
96  myUsing->addTopLevelItem(root);
97  root->setExpanded(true);
98  }
99 
101  }
102 
103  myFaces->clear();
104  root = CREUtils::faceNode(NULL);
105  myFaces->addTopLevelItem(root);
106  root->setExpanded(true);
107 
108  for (int face = 0; face < animation->num_animations; face++)
109  {
110  CREUtils::faceNode(animation->faces[face], root);
111  }
112 }
CRETPanel
Definition: CREPanel.h:20
global.h
layout
Definition: main.c:85
CREAnimationPanel::setItem
virtual void setItem(const Animations *animation) override
Definition: CREAnimationPanel.cpp:43
maps
static std::unordered_map< std::string, mapzone * > maps
Definition: citylife.cpp:93
CREAnimationPanel::myDisplay
CREAnimationControl * myDisplay
Definition: CREAnimationPanel.h:30
archininventory.arch
arch
DIALOGCHECK MINARGS 1 MAXARGS 1
Definition: archininventory.py:16
AssetsManager.h
face.h
CREAnimationControl::setAnimation
void setAnimation(const Animations *animation, int facings=-1)
Definition: CREAnimationControl.cpp:29
CREUtils::faceNode
static QTreeWidgetItem * faceNode(QTreeWidgetItem *parent)
Definition: CREUtils.cpp:187
CREUtils::archetypeNode
static QTreeWidgetItem * archetypeNode(QTreeWidgetItem *parent)
Definition: CREUtils.cpp:14
CREUtils.h
guildoracle.list
list
Definition: guildoracle.py:87
CREUtils::artifactNode
static QTreeWidgetItem * artifactNode(QTreeWidgetItem *parent)
Definition: CREUtils.cpp:40
root
static char root[500]
Definition: mapper.cpp:305
first_artifactlist
EXTERN artifactlist * first_artifactlist
Definition: global.h:118
CREMapInformationManager::getAnimationUse
QList< CREMapInformation * > getAnimationUse(const Animations *anim)
Definition: CREMapInformationManager.cpp:371
artifact.h
CREUtils::mapNode
static QTreeWidgetItem * mapNode(QTreeWidgetItem *parent)
Definition: CREUtils.cpp:220
getManager
AssetsManager * getManager()
Definition: assets.cpp:329
archt
Definition: object.h:468
object_get_value
const char * object_get_value(const object *op, const char *const key)
Definition: object.c:4354
disinfect.map
map
Definition: disinfect.py:4
animations_struct::num_animations
uint8_t num_animations
Definition: face.h:27
artifactstruct::next
struct artifactstruct * next
Definition: artifact.h:18
CREAnimationControl
Definition: CREAnimationControl.h:14
CREAnimationPanel::myUsing
QTreeWidget * myUsing
Definition: CREAnimationPanel.h:28
CREAnimationControl.h
artifactliststruct
Definition: artifact.h:26
sstring
const typedef char * sstring
Definition: global.h:40
AssetsCollection::each
void each(std::function< void(T *)> op)
Definition: AssetsCollection.h:135
CREAnimationPanel.h
obj::animation
const Animations * animation
Definition: object.h:420
AssetsManager::archetypes
Archetypes * archetypes()
Definition: AssetsManager.h:44
artifactstruct
Definition: artifact.h:14
CREMapInformationManager.h
animations_struct::name
sstring name
Definition: face.h:26
animations_struct
Definition: face.h:25
animations_struct::faces
const Face ** faces
Definition: face.h:30
CREAnimationPanel::CREAnimationPanel
CREAnimationPanel(QWidget *parent, CREMapInformationManager *myMaps)
Definition: CREAnimationPanel.cpp:19
assets.h
Archetypes.h
CREAnimationPanel::myMaps
CREMapInformationManager * myMaps
Definition: CREAnimationPanel.h:26
artifactstruct::item
object * item
Definition: artifact.h:15
castle_read.key
key
Definition: castle_read.py:64
CREAnimationPanel::myFaces
QTreeWidget * myFaces
Definition: CREAnimationPanel.h:29
CREMapInformationManager
Definition: CREMapInformationManager.h:16
object.h
CREAnimationPanel::myAnimation
const Animations * myAnimation
Definition: CREAnimationPanel.h:25