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()
|
||||
{
|
||||
std::random_shuffle(m_dudes.begin(),m_dudes.end());
|
||||
//TODO FIX : find segfault origin
|
||||
if(!m_dudes.empty()){
|
||||
for (auto dude : m_dudes){
|
||||
auto action = m_teams[dude->getTeam()].update(dude); //get action for this dude from behavior function in team
|
||||
handleAction(action,dude);
|
||||
}
|
||||
std::random_shuffle(m_dudes.begin(), m_dudes.end());
|
||||
for (int i=0; i<m_dudes.size(); ++i){
|
||||
Dude *dude = m_dudes[i];
|
||||
auto action = m_teams[dude->getTeam()].update(dude); //get action for this dude from behavior function in team
|
||||
handleAction(action, dude);
|
||||
}
|
||||
// for each team, spawn dude if condition met
|
||||
for(int i=0; i<m_teams.size(); ++i){
|
||||
|
@ -17,6 +17,7 @@ SimulationDialog::SimulationDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::SimulationDialog),
|
||||
m_map(NULL),
|
||||
m_currentPreview(NULL),
|
||||
m_availableGenerators(true)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
@ -31,13 +32,13 @@ SimulationDialog::SimulationDialog(QWidget *parent) :
|
||||
|
||||
SimulationDialog::~SimulationDialog()
|
||||
{
|
||||
delete m_currentPreview;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void SimulationDialog::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
int h = ui->mapPreview->height();
|
||||
ui->mapPreview->resize(h*2, h);
|
||||
updatePreviewPixmap();
|
||||
}
|
||||
|
||||
void SimulationDialog::refreshBehaviors()
|
||||
@ -133,7 +134,9 @@ void SimulationDialog::updatePreview()
|
||||
{
|
||||
int w = ui->mapSizeSpinBox->value();
|
||||
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
|
||||
if(m_map != NULL)
|
||||
{
|
||||
@ -142,13 +145,23 @@ void SimulationDialog::updatePreview()
|
||||
{
|
||||
const Pixel &p = m_map->getPixel(Coord(i, j));
|
||||
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
|
||||
preview.fill(Qt::black);
|
||||
m_currentPreview->fill(Qt::black);
|
||||
// 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)
|
||||
|
@ -41,7 +41,10 @@ private:
|
||||
std::vector<BehaviorFunction> m_selectedBehaviors;
|
||||
MapScene *m_map;
|
||||
QLibrary *m_currentGeneratorLib;
|
||||
QImage *m_currentPreview;
|
||||
bool m_availableGenerators;
|
||||
|
||||
void updatePreviewPixmap();
|
||||
|
||||
signals:
|
||||
void sendError(QString, int);
|
||||
|
@ -14,23 +14,74 @@
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<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>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<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>
|
||||
<widget class="QGroupBox" name="behaviorsGroup">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>1</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Pixel behaviors</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="1">
|
||||
<widget class="QListWidget" name="behaviorsList">
|
||||
<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="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">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
@ -40,11 +91,20 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QListWidget" name="selectedBehaviors">
|
||||
<item row="0" column="1">
|
||||
<widget class="QListWidget" name="behaviorsList">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@ -52,10 +112,28 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="generatorsGroup">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>2</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Terrain generators</string>
|
||||
</property>
|
||||
<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">
|
||||
<widget class="QPushButton" name="generateButton">
|
||||
<property name="text">
|
||||
@ -63,24 +141,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<widget class="QListWidget" name="generatorsList">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>1</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
@ -119,6 +187,22 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
</item>
|
||||
|
Loading…
x
Reference in New Issue
Block a user