mapeditor - allow picking objects for events on levels below 2

This commit is contained in:
Opuszek
2025-12-31 22:48:21 +01:00
parent 7672bea319
commit 70a24ca660
8 changed files with 35 additions and 30 deletions
+4 -4
View File
@@ -28,9 +28,9 @@ PickObjectDelegate::PickObjectDelegate(MapController & c, std::function<bool(con
void PickObjectDelegate::onObjectPicked(const CGObjectInstance * o)
{
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.clear();
l.update();
QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &PickObjectDelegate::onObjectPicked);
@@ -46,9 +46,9 @@ void PickObjectDelegate::onObjectPicked(const CGObjectInstance * o)
QWidget * PickObjectDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.highlight(filter);
l.update();
QObject::connect(&l, &ObjectPickerLayer::selectionMade, this, &PickObjectDelegate::onObjectPicked);
+4 -4
View File
@@ -342,9 +342,9 @@ void QuestWidget::on_lKillTargetSelect_clicked()
return false;
};
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.highlight(pred);
l.update();
QObject::connect(&l, &ObjectPickerLayer::selectionMade, this, &QuestWidget::onTargetPicked);
@@ -357,9 +357,9 @@ void QuestWidget::onTargetPicked(const CGObjectInstance * obj)
{
show();
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.clear();
l.update();
QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &QuestWidget::onTargetPicked);
+10
View File
@@ -102,6 +102,16 @@ MapScene * MapController::scene(int level)
return _scenes[level].get();
}
std::set<MapScene *> MapController::getScenes()
{
std::set<MapScene *>result;
if (!map())
return result;
for (int i=0; i<map()->levels(); i++)
result.insert(_scenes[i].get());
return result;
}
MinimapScene * MapController::miniScene(int level)
{
return _miniscenes[level].get();
+1
View File
@@ -44,6 +44,7 @@ public:
CMap * map();
MapHandler * mapHandler();
MapScene * scene(int level);
std::set<MapScene *> getScenes();
MinimapScene * miniScene(int level);
void resetMapHandler();
+4 -4
View File
@@ -290,9 +290,9 @@ void LoseConditions::on_loseComboBox_currentIndexChanged(int index)
void LoseConditions::onObjectSelect()
{
int loseCondition = ui->loseComboBox->currentIndex() - 1;
for(int lvl : {0, 1})
for(MapScene * level : controller->getScenes())
{
auto & l = controller->scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
switch(loseCondition)
{
case 0: { //EventCondition::CONTROL (Obj::TOWN)
@@ -318,9 +318,9 @@ void LoseConditions::onObjectPicked(const CGObjectInstance * obj)
{
controller->settingsDialog->show();
for(int lvl : {0, 1})
for(MapScene * level : controller->getScenes())
{
auto & l = controller->scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.clear();
l.update();
QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &LoseConditions::onObjectPicked);
+4 -4
View File
@@ -120,9 +120,9 @@ void TimedEvent::on_TimedEvent_finished(int result)
void TimedEvent::on_addObjectToDelete_clicked()
{
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.highlight<const CGObjectInstance>();
l.update();
QObject::connect(&l, &ObjectPickerLayer::selectionMade, this, &TimedEvent::onObjectPicked);
@@ -141,9 +141,9 @@ void TimedEvent::onObjectPicked(const CGObjectInstance * obj)
show();
controller.settingsDialog->show();
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.clear();
l.update();
QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &TimedEvent::onObjectPicked);
+4 -10
View File
@@ -498,12 +498,9 @@ void VictoryConditions::onObjectSelect()
{
int vicConditions = ui->victoryComboBox->currentIndex() - 1;
std::vector<int>levels(controller->map()->levels());
std::iota (std::begin(levels), std::end(levels), 0);
for(int lvl : levels)
for(MapScene * level : controller->getScenes())
{
auto & l = controller->scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
switch(vicConditions)
{
case 3: { //EventCondition::HAVE_BUILDING
@@ -543,13 +540,10 @@ void VictoryConditions::onObjectSelect()
void VictoryConditions::onObjectPicked(const CGObjectInstance * obj)
{
controller->settingsDialog->show();
std::vector<int>levels(controller->map()->levels());
std::iota (std::begin(levels), std::end(levels), 0);
for(int lvl : levels)
for(MapScene * level : controller->getScenes())
{
auto & l = controller->scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.clear();
l.update();
QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &VictoryConditions::onObjectPicked);
+4 -4
View File
@@ -194,9 +194,9 @@ void PlayerParams::on_townSelect_clicked()
return false;
};
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.highlight(pred);
l.update();
QObject::connect(&l, &ObjectPickerLayer::selectionMade, this, &PlayerParams::onTownPicked);
@@ -209,9 +209,9 @@ void PlayerParams::onTownPicked(const CGObjectInstance * obj)
{
controller.settingsDialog->show();
for(int lvl : {0, 1})
for(MapScene * level : controller.getScenes())
{
auto & l = controller.scene(lvl)->objectPickerView;
auto & l = level->objectPickerView;
l.clear();
l.update();
QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &PlayerParams::onTownPicked);