Crossfire Server, Trunk
CRETreasurePanel.cpp
Go to the documentation of this file.
1
#include <Qt>
2
3
extern
"C"
{
4
#include "
global.h
"
5
#include "
treasure.h
"
6
}
7
8
#include "
CRETreasurePanel.h
"
9
#include "
CREUtils.h
"
10
11
#include "
assets.h
"
12
#include "
AssetsManager.h
"
13
14
CRETreasurePanel::CRETreasurePanel
(QWidget* parent) :
CRETPanel
(parent)
15
{
16
QGridLayout*
layout
=
new
QGridLayout(
this
);
17
18
myUsing
=
new
QTreeWidget(
this
);
19
myUsing
->setColumnCount(1);
20
myUsing
->setHeaderLabel(tr(
"Used by"
));
21
myUsing
->setIconSize(QSize(32, 32));
22
layout
->addWidget(
myUsing
, 1, 1, 2, 1);
23
24
layout
->addWidget(
new
QLabel(
"Difficulty:"
), 1, 2);
25
layout
->addWidget(
myDifficulty
=
new
QSpinBox(
this
), 1, 3);
26
myDifficulty
->setRange(0, 150);
27
myDifficulty
->setValue(150);
28
QPushButton* generate =
new
QPushButton(
"generate"
,
this
);
29
connect
(generate, SIGNAL(clicked(
bool
)),
this
, SLOT(
onGenerate
(
bool
)));
30
layout
->addWidget(generate, 1, 4);
31
layout
->addWidget(
myGenerated
=
new
QTreeWidget(
this
), 2, 2, 1, 3);
32
myGenerated
->setHeaderLabel(tr(
"Generation result"
));
33
myGenerated
->setIconSize(QSize(32, 32));
34
}
35
36
void
CRETreasurePanel::setItem
(
const
treasurelist
* treas)
37
{
38
myUsing
->clear();
39
myTreasure
= treas;
40
41
QTreeWidgetItem*
root
= NULL;
42
43
QString
name
=
myTreasure
->
name
;
44
45
getManager
()->
archetypes
()->
each
([
this
, &
root
, &
name
] (
const
archetype
*
arch
) {
46
if
(
arch
->clone.randomitems &&
name
==
arch
->clone.randomitems->name)
47
{
48
if (root == NULL)
49
{
50
root = CREUtils::archetypeNode(NULL);
51
myUsing->addTopLevelItem(root);
52
root->setExpanded(true);
53
}
54
CREUtils::archetypeNode
(
arch
,
root
);
55
}
56
});
57
58
root
= NULL;
59
60
getManager
()->
treasures
()->
each
([
this
, &
root
, &
name
] (
treasurelist
*
list
) {
61
for
(
const
treasure
*
t
=
list
->items;
t
;
t
=
t
->next)
62
{
63
if (t->name == name)
64
{
65
if (root == NULL)
66
{
67
root = CREUtils::treasureNode(NULL);
68
myUsing->addTopLevelItem(root);
69
root->setExpanded(true);
70
}
71
CREUtils::treasureNode(list, root);
72
}
73
}
74
});
75
76
myGenerated->clear();
77
}
78
79
void
CRETreasurePanel::onGenerate
(
bool
)
80
{
81
const
int
difficulty =
myDifficulty
->value();
82
myGenerated
->clear();
83
object
* result =
object_new
(), *
item
;
84
create_treasure
((
treasurelist
*)
myTreasure
, result, 0, difficulty, 0);
85
while
((
item
= result->
inv
))
86
{
87
identify
(result->
inv
);
88
myGenerated
->addTopLevelItem(
CREUtils::objectNode
(
item
, NULL));
89
90
object_remove
(
item
);
91
object_free
(
item
, 0);
92
}
93
94
object_free
(result, 0);
95
}
CRETPanel
Definition:
CREPanel.h:20
global.h
object_free
void object_free(object *ob, int flags)
Definition:
object.c:1565
object_remove
void object_remove(object *op)
Definition:
object.c:1806
layout
Definition:
main.c:85
archininventory.arch
arch
DIALOGCHECK MINARGS 1 MAXARGS 1
Definition:
archininventory.py:16
AssetsManager.h
CRETreasurePanel::myDifficulty
QSpinBox * myDifficulty
Definition:
CRETreasurePanel.h:28
object_new
object * object_new(void)
Definition:
object.c:1242
CRETreasurePanel::myUsing
QTreeWidget * myUsing
Definition:
CRETreasurePanel.h:26
CREUtils::archetypeNode
static QTreeWidgetItem * archetypeNode(QTreeWidgetItem *parent)
Definition:
CREUtils.cpp:14
CREUtils.h
guildoracle.list
list
Definition:
guildoracle.py:87
CRETreasurePanel::myTreasure
const treasurelist * myTreasure
Definition:
CRETreasurePanel.h:25
root
static char root[500]
Definition:
mapper.cpp:305
CRETreasurePanel::CRETreasurePanel
CRETreasurePanel(QWidget *parent)
Definition:
CRETreasurePanel.cpp:14
create_treasure
void create_treasure(treasurelist *t, object *op, int flag, int difficulty, int tries)
Definition:
treasure.c:242
getManager
AssetsManager * getManager()
Definition:
assets.cpp:329
treasurestruct
Definition:
treasure.h:63
archt
Definition:
object.h:468
identify
object * identify(object *op)
Definition:
item.c:1408
AssetsManager::treasures
Treasures * treasures()
Definition:
AssetsManager.h:54
CRETreasurePanel::onGenerate
void onGenerate(bool pressed)
Definition:
CRETreasurePanel.cpp:79
treasureliststruct::name
const char * name
Definition:
treasure.h:83
AssetsCollection::each
void each(std::function< void(T *)> op)
Definition:
AssetsCollection.h:135
CRETreasurePanel::setItem
virtual void setItem(const treasurelist *treasure) override
Definition:
CRETreasurePanel.cpp:36
AssetsManager::archetypes
Archetypes * archetypes()
Definition:
AssetsManager.h:44
treasure.h
Floor.t
t
Definition:
Floor.py:62
item
Definition:
item.py:1
CREUtils::objectNode
static QTreeWidgetItem * objectNode(const object *op, QTreeWidgetItem *parent)
Definition:
CREUtils.cpp:27
assets.h
CRETreasurePanel::myGenerated
QTreeWidget * myGenerated
Definition:
CRETreasurePanel.h:27
CRETreasurePanel.h
say.item
dictionary item
Definition:
say.py:149
connect
Definition:
connect.py:1
treasureliststruct
Definition:
treasure.h:82
obj::inv
struct obj * inv
Definition:
object.h:291
give.name
name
Definition:
give.py:27
crossfire-crossfire-server
utils
cre
CRETreasurePanel.cpp
Generated by
1.8.17