Crossfire Resources Editor
TreasuresWrapper.h
Go to the documentation of this file.
1 /*
2  * Crossfire -- cooperative multi-player graphical RPG and adventure game
3  *
4  * Copyright (c) 2022 the Crossfire Development Team
5  *
6  * Crossfire is free software and comes with ABSOLUTELY NO WARRANTY. You are
7  * welcome to redistribute it under certain conditions. For details, please
8  * see COPYING and LICENSE.
9  *
10  * The authors can be reached via e-mail at <crossfire@metalforge.org>.
11  */
12 
13 #ifndef TREASURES_WRAPPER_H
14 #define TREASURES_WRAPPER_H
15 
16 #include "global.h"
17 
18 #include "AssetsManager.h"
19 #include "assets.h"
20 #include "../assets/AssetsCollectionWrapper.h"
21 #include "../archetypes/ArchetypeWrapper.h"
22 #include "TreasureListWrapper.h"
23 #include "../assets/AssetOriginAndCreationDialog.h"
24 
25 class ResourcesManager;
26 
27 class TreasuresWrapper : public AssetsCollectionWrapper<treasurelist> {
28  Q_OBJECT
29 public:
30  TreasuresWrapper(AssetWrapper *parent, ResourcesManager *resourcesManager)
31  : AssetsCollectionWrapper(parent, tr("Treasures"), getManager()->treasures(), resourcesManager,
32  tr("Display all treasures.")), myResources(resourcesManager) {
33  }
34 
35  virtual PossibleUse uses(const AssetWrapper *asset, std::string &) const override {
36  return dynamic_cast<const ArchetypeWrapper *>(asset) || dynamic_cast<const TreasureListWrapper *>(asset) ? ChildrenMayUse : DoesntUse;
37  }
38 
39  void fillMenu(QMenu *menu) {
40  connect(menu->addAction(tr("Add treasure list")), &QAction::triggered, [this] () { addTreasureList(); });
41  }
42 
43 protected:
44  void addTreasureList() {
45  auto origins = myResources->treasureFiles();
46  auto keys = getManager()->treasures()->keys();
47 
49  if (aqd.exec() != QDialog::Accepted) {
50  return;
51  }
52  auto list = asset_create<treasurelist>(aqd.code().toStdString());
53  getManager()->treasures()->define(list->name, list);
54  myResources->assetDefined(list, aqd.file().toStdString());
57  myAssets.push_back(myResources->wrap(list, this));
59  }
60 
62 };
63 
64 #endif /* TREASURES_WRAPPER_H */
ResourcesManager::treasureModified
void treasureModified(treasurelist *treasure)
Definition: ResourcesManager.cpp:229
ResourcesManager
Class managing all assets, tracking in which file they are, which are modified, and such.
Definition: ResourcesManager.h:80
AssetWrapper::AfterChildAdd
@ AfterChildAdd
Definition: AssetWrapper.h:33
ResourcesManager::wrap
ArchetypeWrapper * wrap(archetype *arch, AssetWrapper *parent)
Definition: ResourcesManager.h:134
TreasuresWrapper::uses
virtual PossibleUse uses(const AssetWrapper *asset, std::string &) const override
Definition: TreasuresWrapper.h:35
ResourcesManager::assetDefined
virtual void assetDefined(const archetype *arch, const std::string &filename) override
Definition: ResourcesManager.h:101
AssetWrapper::PossibleUse
PossibleUse
Definition: AssetWrapper.h:32
TreasureListWrapper
Definition: TreasureListWrapper.h:27
TreasuresWrapper::addTreasureList
void addTreasureList()
Definition: TreasuresWrapper.h:44
ResourcesManager::treasureFiles
std::vector< std::string > treasureFiles() const
Definition: ResourcesManager.h:117
AssetWrapper::ChildrenMayUse
@ ChildrenMayUse
Definition: AssetWrapper.h:32
AssetOriginAndCreationDialog::CreateAsset
@ CreateAsset
Definition: AssetOriginAndCreationDialog.h:25
AssetWrapper::BeforeChildAdd
@ BeforeChildAdd
Definition: AssetWrapper.h:33
TreasuresWrapper::myResources
ResourcesManager * myResources
Definition: TreasuresWrapper.h:61
AssetWrapper
Base class for all assets that can be displayed or edited by CRE.
Definition: AssetWrapper.h:25
TreasuresWrapper
Definition: TreasuresWrapper.h:27
TreasuresWrapper::TreasuresWrapper
TreasuresWrapper(AssetWrapper *parent, ResourcesManager *resourcesManager)
Definition: TreasuresWrapper.h:30
AssetOriginAndCreationDialog
Helper dialog to input origin of an asset, and maybe create a new one.
Definition: AssetOriginAndCreationDialog.h:21
TreasuresWrapper::fillMenu
void fillMenu(QMenu *menu)
Definition: TreasuresWrapper.h:39
AssetOriginAndCreationDialog::Treasure
@ Treasure
Definition: AssetOriginAndCreationDialog.h:24
ArchetypeWrapper
Definition: ArchetypeWrapper.h:25
TreasureListWrapper.h
AssetWrapper::markModified
void markModified(ChangeType change, int extra=0)
Definition: AssetWrapper.h:57
AssetsCollectionWrapper< treasurelist >::myAssets
QVector< AssetWrapper * > myAssets
Definition: AssetsCollectionWrapper.h:41
AssetWrapper::DoesntUse
@ DoesntUse
Definition: AssetWrapper.h:32
AssetsCollectionWrapper
Definition: AssetsCollectionWrapper.h:21
AssetOriginAndCreationDialog::code
QString code() const
Definition: AssetOriginAndCreationDialog.h:37
AssetOriginAndCreationDialog::file
QString file() const
Definition: AssetOriginAndCreationDialog.h:38