fixed preview stretching, and found a workaround for the foreach segfault
This commit is contained in:
parent
388794bca6
commit
927fb17353
@ -22,13 +22,11 @@ Simulation::Simulation(MapScene *_map, std::vector<BehaviorFunction> &_behaviors
|
|||||||
|
|
||||||
void Simulation::update()
|
void Simulation::update()
|
||||||
{
|
{
|
||||||
std::random_shuffle(m_dudes.begin(),m_dudes.end());
|
std::random_shuffle(m_dudes.begin(), m_dudes.end());
|
||||||
//TODO FIX : find segfault origin
|
for (int i=0; i<m_dudes.size(); ++i){
|
||||||
if(!m_dudes.empty()){
|
Dude *dude = m_dudes[i];
|
||||||
for (auto dude : m_dudes){
|
auto action = m_teams[dude->getTeam()].update(dude); //get action for this dude from behavior function in team
|
||||||
auto action = m_teams[dude->getTeam()].update(dude); //get action for this dude from behavior function in team
|
handleAction(action, dude);
|
||||||
handleAction(action,dude);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// for each team, spawn dude if condition met
|
// for each team, spawn dude if condition met
|
||||||
for(int i=0; i<m_teams.size(); ++i){
|
for(int i=0; i<m_teams.size(); ++i){
|
||||||
|
@ -17,6 +17,7 @@ SimulationDialog::SimulationDialog(QWidget *parent) :
|
|||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::SimulationDialog),
|
ui(new Ui::SimulationDialog),
|
||||||
m_map(NULL),
|
m_map(NULL),
|
||||||
|
m_currentPreview(NULL),
|
||||||
m_availableGenerators(true)
|
m_availableGenerators(true)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
@ -31,13 +32,13 @@ SimulationDialog::SimulationDialog(QWidget *parent) :
|
|||||||
|
|
||||||
SimulationDialog::~SimulationDialog()
|
SimulationDialog::~SimulationDialog()
|
||||||
{
|
{
|
||||||
|
delete m_currentPreview;
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulationDialog::resizeEvent(QResizeEvent *e)
|
void SimulationDialog::resizeEvent(QResizeEvent *e)
|
||||||
{
|
{
|
||||||
int h = ui->mapPreview->height();
|
updatePreviewPixmap();
|
||||||
ui->mapPreview->resize(h*2, h);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulationDialog::refreshBehaviors()
|
void SimulationDialog::refreshBehaviors()
|
||||||
@ -133,7 +134,9 @@ void SimulationDialog::updatePreview()
|
|||||||
{
|
{
|
||||||
int w = ui->mapSizeSpinBox->value();
|
int w = ui->mapSizeSpinBox->value();
|
||||||
int h = w/2;
|
int h = w/2;
|
||||||
QImage preview(w, h, QImage::Format_RGB32);
|
if(m_currentPreview != NULL)
|
||||||
|
delete m_currentPreview;
|
||||||
|
m_currentPreview = new QImage(w, h, QImage::Format_RGB32);
|
||||||
// init pixels
|
// init pixels
|
||||||
if(m_map != NULL)
|
if(m_map != NULL)
|
||||||
{
|
{
|
||||||
@ -142,13 +145,23 @@ void SimulationDialog::updatePreview()
|
|||||||
{
|
{
|
||||||
const Pixel &p = m_map->getPixel(Coord(i, j));
|
const Pixel &p = m_map->getPixel(Coord(i, j));
|
||||||
glm::vec3 color = MapScene::getColor(p.type);
|
glm::vec3 color = MapScene::getColor(p.type);
|
||||||
preview.setPixel(i, j, qRgb(int(color.r*255), int(color.g*255), int(color.b*255)));
|
m_currentPreview->setPixel(i, j, qRgb(int(color.r*255), int(color.g*255), int(color.b*255)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
preview.fill(Qt::black);
|
m_currentPreview->fill(Qt::black);
|
||||||
// update preview
|
// update preview
|
||||||
ui->mapPreview->setPixmap(QPixmap::fromImage(preview));
|
updatePreviewPixmap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimulationDialog::updatePreviewPixmap()
|
||||||
|
{
|
||||||
|
QMargins margins = ui->generatorsGroup->layout()->contentsMargins();
|
||||||
|
int w = ui->generatorsGroup->width() - (margins.left() + margins.right() + 2);
|
||||||
|
QSize size = ui->generatorsGroup->layout()->closestAcceptableSize(ui->mapPreview, QSize(w, w/2));
|
||||||
|
ui->mapPreview->setMinimumWidth(size.width());
|
||||||
|
ui->mapPreview->setMinimumWidth(size.height());
|
||||||
|
ui->mapPreview->setPixmap(QPixmap::fromImage(*m_currentPreview).scaled(size.width(), size.height(), Qt::KeepAspectRatio));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulationDialog::selectBehavior(const QModelIndex &index)
|
void SimulationDialog::selectBehavior(const QModelIndex &index)
|
||||||
|
@ -41,7 +41,10 @@ private:
|
|||||||
std::vector<BehaviorFunction> m_selectedBehaviors;
|
std::vector<BehaviorFunction> m_selectedBehaviors;
|
||||||
MapScene *m_map;
|
MapScene *m_map;
|
||||||
QLibrary *m_currentGeneratorLib;
|
QLibrary *m_currentGeneratorLib;
|
||||||
|
QImage *m_currentPreview;
|
||||||
bool m_availableGenerators;
|
bool m_availableGenerators;
|
||||||
|
|
||||||
|
void updatePreviewPixmap();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sendError(QString, int);
|
void sendError(QString, int);
|
||||||
|
@ -14,23 +14,74 @@
|
|||||||
<string>Dialog</string>
|
<string>Dialog</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="widget" native="true">
|
<widget class="QWidget" name="widget" native="true">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="behaviorsGroup">
|
<widget class="QGroupBox" name="behaviorsGroup">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Pixel behaviors</string>
|
<string>Pixel behaviors</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="1">
|
<property name="leftMargin">
|
||||||
<widget class="QListWidget" name="behaviorsList">
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QListWidget" name="selectedBehaviors">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="selectionMode">
|
<property name="selectionMode">
|
||||||
<enum>QAbstractItemView::NoSelection</enum>
|
<enum>QAbstractItemView::NoSelection</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="selectionBehavior">
|
|
||||||
<enum>QAbstractItemView::SelectRows</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
@ -40,11 +91,20 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="1">
|
||||||
<widget class="QListWidget" name="selectedBehaviors">
|
<widget class="QListWidget" name="behaviorsList">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="selectionMode">
|
<property name="selectionMode">
|
||||||
<enum>QAbstractItemView::NoSelection</enum>
|
<enum>QAbstractItemView::NoSelection</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -52,10 +112,28 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="generatorsGroup">
|
<widget class="QGroupBox" name="generatorsGroup">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>2</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Terrain generators</string>
|
<string>Terrain generators</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
<item row="6" column="2">
|
<item row="6" column="2">
|
||||||
<widget class="QPushButton" name="generateButton">
|
<widget class="QPushButton" name="generateButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -63,24 +141,14 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0" colspan="3">
|
|
||||||
<widget class="QLabel" name="mapPreview">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>this is a preview</string>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" rowspan="4">
|
<item row="2" column="0" rowspan="4">
|
||||||
<widget class="QListWidget" name="generatorsList">
|
<widget class="QListWidget" name="generatorsList">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="selectionBehavior">
|
<property name="selectionBehavior">
|
||||||
<enum>QAbstractItemView::SelectRows</enum>
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -119,6 +187,22 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="7" column="0" rowspan="2" colspan="3">
|
||||||
|
<widget class="QLabel" name="mapPreview">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>this is a preview</string>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user