From 38cde0d5711097bd2acef1fef8d3db0f6991df0d Mon Sep 17 00:00:00 2001 From: Anselme Date: Thu, 2 Jun 2016 17:41:46 +0200 Subject: [PATCH] first iteration of interface refactoring --- rc/pause.png | Bin 0 -> 1848 bytes rc/play.png | Bin 0 -> 2060 bytes rc/step.png | Bin 0 -> 2982 bytes rc/stop.png | Bin 0 -> 2145 bytes resources.qrc | 4 + src/behavior.h | 4 +- src/dude.cpp | 2 + src/dude.h | 9 +- src/mainwindow.cpp | 4 +- src/mainwindow.ui | 418 +++++++++++++++++++++++---------------------- 10 files changed, 225 insertions(+), 216 deletions(-) create mode 100644 rc/pause.png create mode 100644 rc/play.png create mode 100644 rc/step.png create mode 100644 rc/stop.png diff --git a/rc/pause.png b/rc/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..f01977a1f71e2bdf62167cd8f8c58d5fe9997921 GIT binary patch literal 1848 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 q$a2XxFLif!8JS#0`e44LJ-9g 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 literal 0 HcmV?d00001 diff --git a/rc/stop.png b/rc/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..0600ab537a71d428d43a6a65a529f5d37fee7f7f GIT binary patch literal 2145 zcmV-n2%h(eP)D`to*ZjFJBS9w0yPIh{olK3!iZ%y`LWh7jFuMxdo5*_vnjHK0bMH0KWbHho62tIyTF$ljL=ZpJ6Hz z|GO~2`Y)+}kQyK7ps+~-B+f@_iNpMiVIb*e1Oc!o{o&!4Uw{7RH=oHi`?A{taJlZk zI=@)~eXtmnHc#n>DXd@g7y#gL)5AR)=Zau(4pMk`0)F^p!d}0|+rN(piZc%a02u>V z3mBVOM13aKLD5RncM41>jf?k~0-&We1Yj54)*7%i07C3HZ|#)Udb0zSNjVs$V6Yxj zqI%(8!is|Rq5h^_JUjqojRzny05$7XESLDTekZaOhlhIJ005W@)|} zC=*e2jTm5TV1ZQ@C<|edsuDrvYFCSmQq-0GZTxBTI4tq>Qpm!P+ufG>Hbe z8%YXaX}r zD~3=2NDFD#H41~)0*0q4Ye}JNX>XAU1wox`u$CRFd(7Si+Jr$HgpdoVZ6W>TybnNA zp`6qYGl0$22f2<|Zcq+0`v_pTZjG&L`+`g4bQY?ILlKoxs`8rI*8&DDL@-o?mMfbs zRdmR*KP6f;Q!Ld|<6Ll&rO6x{A`Ji#6BrP~AY}|lDmE(XL{YeCrk}tC!OeS%L7&(F zeGj_30biqq2AI$fpv^TvO{nGy8O-$(U1IPd&y zC~oq~FR3LQu)YUYE8y7?@c38Y?1gv7D0-$FS`+AOo35}Afe0Zcw_dL7T<-Z5nG-~n zgA2GG=zHMi2Dmr_-o64}JOiFT1@2eCat}B-98QDATFCiRDBCqEhm8R&1qN)Qd!-|+ znPbeDv)^0;R~Nwbx%cb0uYij;z|}c$edXD)w-4+c)MAtuNC|21q5%NHAqnD~qP4J< zm9{qY6paB^cfh;XUbxQR_>Es(0=HMddhHn?y?=NAUc+=+~a|B3bKAb)CeiHK>#r+2NOj9;5AmZrK0; zGJf+WI{|_Ndgo7i;e!8O0_SJI+hFCJOTRcaff4H9!(`Dx)aGK^JLsXLC(n@u;s&Yl zC3^!AT;1OEIKMMM5UKS&aDV5mdwUJsU3*`?xd5CSvomA7|4w|$DH_Z4pjspaK;J9+ zXgF@S3&1vD!0D4ep5W!XPlvGNod1bsD3Rar{-I(ADjSTV6{|)`!N@nBup>ql6?$Eu zzl12TXaIm)tyd7|H`^^oDr#RO@}OwL0@I>LpnO}`51QIC1y3X+ih4(DK#P6=EtZ7t z&PM{NW=kV0vNeJVqE$P^9~dCh=f!uFA*^jAg4X)*!d#BS2?Hn8a!2l#4Iqbvq@95>j1k>>+#&5p<;FJo5-k~y9ZSmBQlMa`Fu`B zV2o`O2EiR*d-Vl{%(A(EPDoM+g~$?`q_`o)fC2z|Du*#S>P(|*&_)0_3sIQ5KoTA^ z=Z%{iTmS{3%NVfDsZ|8im`2s0HC|jceX~$xyZHolRht8#Du$5(e$pL6)o+4{>?GS!xVKYv}&ObY3hkXN_J~#k`?+y&@Tfjkt(k6$Do7QIm8mCebMMhYJ zm_S4j0uht=j#{9&g^+}KIuQ3DVFD;j7#m6~L_&lEBJ<0F9Cp|4+FiSAckQm-wdwj7 XSHI+J8l&e_00000NkvXXu0mjf`!~jX literal 0 HcmV?d00001 diff --git a/resources.qrc b/resources.qrc index 9ba8ca0..b68b2c3 100644 --- a/resources.qrc +++ b/resources.qrc @@ -39,6 +39,10 @@ rc/radio_unchecked_disabled.png rc/radio_unchecked_focus.png rc/radio_unchecked.png + rc/play.png + rc/step.png + rc/stop.png + rc/pause.png rc/PixelWars.png diff --git a/src/behavior.h b/src/behavior.h index 67bdb7f..298e943 100644 --- a/src/behavior.h +++ b/src/behavior.h @@ -38,16 +38,16 @@ struct Action COMMUNICATE }; + Com com_data; Type type; Dir dir; - Com com_data; }; struct Info { virtual bool getSuccess() const = 0; virtual PixelType getInventory() const = 0; - virtual const Com& getCom() const = 0; + virtual const Com* getCom() const = 0; virtual PixelType getNear(Dir d) const = 0; virtual int getInfo(Dir d) const = 0; }; diff --git a/src/dude.cpp b/src/dude.cpp index c25e4b9..7bc0b4c 100644 --- a/src/dude.cpp +++ b/src/dude.cpp @@ -37,6 +37,7 @@ void Dude::move(Dir d) void Dude::receiveComData(Dir dir, const char *data) { + m_receivedComData = true; m_com_data.flag = dir; memcpy(m_com_data.data, data, COM_SIZE); } @@ -44,6 +45,7 @@ void Dude::receiveComData(Dir dir, const char *data) void Dude::update(BehaviorFunction func) { func(&m_action, m_memory, (Info*)this); + m_receivedComData = false; } PixelType Dude::getNear(Dir d) const diff --git a/src/dude.h b/src/dude.h index 03124c2..48e8dc4 100644 --- a/src/dude.h +++ b/src/dude.h @@ -6,17 +6,18 @@ class Dude : public Info { private: + Action m_action; // action containing output com data + Com m_com_data; // input com data Coord m_pos; + char m_memory[DUDE_MEMORY_SIZE]; Map *p_map; int m_team; bool m_dead; bool m_success; + bool m_receivedComData; PixelType m_inventory; PixelType m_under; int m_underResCount; - char m_memory[DUDE_MEMORY_SIZE]; - Action m_action; // action containing output com data - Com m_com_data; // input com data public: Dude(const Coord &_pos, Map *_map, int &_team); @@ -32,7 +33,7 @@ public: virtual bool getSuccess() const { return m_success; } virtual PixelType getInventory() const { return m_inventory; } - virtual const Com& getCom() const { return m_com_data; } + virtual const Com* getCom() const { return m_receivedComData ? &m_com_data : nullptr; } virtual PixelType getNear(Dir d) const; virtual int getInfo(Dir d) const; }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 870f2bc..5d97d15 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -11,7 +11,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), p_simu(NULL), - m_simSpeed(500), m_simSpeedChanged(false), m_paused(false) { @@ -27,6 +26,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->flatSphereSlider, SIGNAL(valueChanged(int)), ui->drawWidget, SLOT(repaint())); connect(ui->surfaceRatioSlider, SIGNAL(valueChanged(int)), ui->drawWidget, SLOT(repaint())); connect(ui->pauseButton, SIGNAL(toggled(bool)), this, SLOT(pauseSimu(bool))); + changeSimSpeed(ui->simSpeedSlider->value()); } MainWindow::~MainWindow() @@ -55,7 +55,7 @@ void MainWindow::openSimuDialog() void MainWindow::changeSimSpeed(int newSpeed) { m_simSpeedChanged = true; - m_simSpeed = ui->simSpeedSlider->maximum()-newSpeed; + m_simSpeed = ui->simSpeedSlider->maximum()+20-newSpeed; } void MainWindow::updateSimu() diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 44dbc5e..f6de0ff 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -60,217 +60,232 @@ - - 0 - - 0 + 9 - 0 + 9 - 0 + 9 - 0 + 9 - - - 0 - - - - - 0 - 0 - 260 - 346 - + + + + 5 - - Settings - - - - - - Spherical / Flat - - - - - - - true - - - Qt::LeftToRight - - - 100 - - + + 5 + + + 5 + + + 5 + + + 8 + + + + + Simulation Speed + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Advanced + + + false + + + true + + + 5 - + 5 - - Qt::Horizontal + + 5 - - QSlider::TicksBelow + + 5 - - 10 - - - - - - - surface ratio - - - - - - - true - - - 0 - - - 100 - - - 10 - - - 10 - - - 50 - - - Qt::Horizontal - - - QSlider::TicksBelow - - - 10 - - - - - - - Simulation Speed - - - - - - - true - - - 100 - - - 2000 - - - 100 - - - 100 - - - 2000 - - - 2000 - - - Qt::Horizontal - - - false - - - false - - - QSlider::TicksBelow - - - 100 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 0 - 0 - 260 - 346 - - - - Stats - - - - - - Date - - - - - - - 0 - - - - - - - Population - - - - - - - 0 - - - - - + + + + Spherical / Flat + + + + + + + true + + + Qt::LeftToRight + + + 100 + + + 5 + + + 5 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 10 + + + + + + + surface ratio + + + + + + + true + + + 0 + + + 100 + + + 10 + + + 10 + + + 50 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 10 + + + + + + + + + + 0 + + + + + + + true + + + 0 + + + 980 + + + 10 + + + 10 + + + 980 + + + 980 + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 100 + + + + + + + 0 + + + + + + + Population + + + + + + + Date + + + + + + + Qt::Horizontal + + + + @@ -301,19 +316,6 @@ - - - - false - - - Qt::NoFocus - - - STOP - - -