Skip to content

Commit 2408117

Browse files
committed
evaluator no longer supports boolean states
1 parent d562ebf commit 2408117

File tree

9 files changed

+163
-285
lines changed

9 files changed

+163
-285
lines changed

src/backend/evaluator/evaluator.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ class Evaluator {
9191
void reset();
9292
void setPause(bool pause) { evalConfig.setRunning(!pause); }
9393
bool isPause() const { return !evalConfig.isRunning(); }
94-
void togglePause() { setPause(isPause() ? false : true); }
9594
void addSprint(unsigned int nTicks) { evalConfig.addSprint(nTicks); }
9695
bool isSprinting() const { return evalConfig.getSprintCount() > 0; }
9796
void waitForSprintComplete();
@@ -118,9 +117,7 @@ class Evaluator {
118117
void makeEdit(DifferenceSharedPtr difference, circuit_id_t circuitId);
119118
logic_state_t getState(const Address& address);
120119
std::variant<logic_state_t, std::vector<logic_state_t>> getPinState(const Address& address);
121-
bool getBoolState(const Address& address) { return toBool(getState(address)); };
122120
void setState(const Address& address, logic_state_t state);
123-
void setState(const Address& address, bool state) { setState(address, fromBool(state)); }
124121
circuit_id_t getCircuitId() const { return evalCircuitContainer.getCircuitId(eval_circuit_id_t(0)).value_or(0); }
125122
circuit_id_t getCircuitId(const Address& address) const {
126123
std::shared_lock lk(simMutex);

src/gui/mainWindow/circuitView/circuitViewWidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ CircuitViewWidget::CircuitViewWidget(Environment& environment, Rml::ElementDocum
8282
this->mainWindow.logError("Cant start simulation when there is none");
8383
return;
8484
}
85-
circuitView->getEvaluator()->togglePause();
85+
circuitView->getEvaluator()->setPause(!circuitView->getEvaluator()->isPause());
8686
this->mainWindow.getSimControlsManager()->update();
8787
});
8888
keybindHandler.addListener("Keybinds/Simulation/Step Forward", [this]() {

src/gui/viewportManager/circuitView/events/customEvents.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define customEvents_h
33

44
#include "backend/position/position.h"
5+
#include "backend/evaluator/simulator/logicState.h"
56
#include "util/vec2.h"
67
#include "event.h"
78

@@ -50,13 +51,13 @@ class DeltaXYEvent : public Event {
5051

5152
class StateSetEvent : public Event {
5253
public:
53-
inline StateSetEvent(const std::string& name, const Position& position, bool state) : Event(name), position(position), state(state) { }
54+
inline StateSetEvent(const std::string& name, const Position& position, logic_state_t state) : Event(name), position(position), state(state) { }
5455

5556
inline Position getPosition() const { return position; }
56-
inline bool getState() const { return state; }
57+
inline logic_state_t getState() const { return state; }
5758

5859
private:
59-
bool state;
60+
logic_state_t state;
6061
Position position;
6162
};
6263

src/gui/viewportManager/circuitView/tools/other/logicToucher.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,25 @@ bool LogicToucher::press(const Event* event) {
2828
switch (block->type()) {
2929
case BlockType::CONSTANT_OFF: {
3030
circuit->setType(block->getPosition(), BlockType::CONSTANT_ON);
31-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, true));
31+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::HIGH));
3232
} break;
3333
case BlockType::CONSTANT_ON: {
3434
circuit->setType(block->getPosition(), BlockType::CONSTANT_OFF);
35-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
35+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
3636
} break;
3737
case BlockType::CONSTANT_Z: {
3838
circuit->setType(block->getPosition(), BlockType::CONSTANT_OFF);
39-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
39+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
4040
} break;
4141
case BlockType::CONSTANT_X: {
4242
circuit->setType(block->getPosition(), BlockType::CONSTANT_OFF);
43-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
43+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
4444
} break;
4545
default:
4646
Address address = circuitView->getAddress();
4747
address.addBlockId(clickPosition);
48-
bool state = !evaluator->getBoolState(address);
48+
logic_state_t state = evaluator->getState(address);
49+
state = (state == logic_state_t::HIGH) ? logic_state_t::LOW : logic_state_t::HIGH;
4950
evaluator->setState(address, state);
5051
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, state));
5152
}
@@ -65,8 +66,8 @@ bool LogicToucher::unpress(const Event* event) {
6566
if (block && block->type() == BlockType::BUTTON) {
6667
Address address = circuitView->getAddress();
6768
address.addBlockId(clickPosition);
68-
evaluator->setState(address, false);
69-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
69+
evaluator->setState(address, logic_state_t::LOW);
70+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
7071
}
7172
clicked = false;
7273
return true;
@@ -84,32 +85,33 @@ bool LogicToucher::pointerMove(const Event* event) {
8485
if (block && block->type() == BlockType::BUTTON) {
8586
Address address = circuitView->getAddress();
8687
address.addBlockId(clickPosition);
87-
evaluator->setState(address, false);
88+
evaluator->setState(address, logic_state_t::LOW);
8889
}
8990
clickPosition = lastPointerPosition;
9091
block = circuit->getBlockContainer().getBlock(clickPosition);
9192
if (block) {
9293
switch (block->type()) {
9394
case BlockType::CONSTANT_OFF: {
9495
circuit->setType(block->getPosition(), BlockType::CONSTANT_ON);
95-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, true));
96+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::HIGH));
9697
} break;
9798
case BlockType::CONSTANT_ON: {
9899
circuit->setType(block->getPosition(), BlockType::CONSTANT_OFF);
99-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
100+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
100101
} break;
101102
case BlockType::CONSTANT_Z: {
102103
circuit->setType(block->getPosition(), BlockType::CONSTANT_OFF);
103-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
104+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
104105
} break;
105106
case BlockType::CONSTANT_X: {
106107
circuit->setType(block->getPosition(), BlockType::CONSTANT_OFF);
107-
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, false));
108+
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, logic_state_t::LOW));
108109
} break;
109110
default:
110111
Address address = circuitView->getAddress();
111112
address.addBlockId(clickPosition);
112-
bool state = !evaluator->getBoolState(address);
113+
logic_state_t state = evaluator->getState(address);
114+
state = (state == logic_state_t::HIGH) ? logic_state_t::LOW : logic_state_t::HIGH;
113115
evaluator->setState(address, state);
114116
sendEventToCircuitView(StateSetEvent("CircuitStateSet", clickPosition, state));
115117
}

src/gui/viewportManager/circuitView/tutorial.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void Tutorial::Stop() {
4343
tutorialRunning = false;
4444
}
4545
void Tutorial::checkTutorial(DifferenceSharedPtr, circuit_id_t) { advanceTutorial(); }
46-
void Tutorial::checkTutorialState(Position pos, bool state) { advanceTutorial(); }
46+
void Tutorial::checkTutorialState(Position pos, logic_state_t state) { advanceTutorial(); }
4747

4848
void Tutorial::setTutorial(const std::vector<TutorialStep>& steps) { tutorialSteps = steps; }
4949

src/gui/viewportManager/circuitView/tutorial.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class Tutorial {
5757

5858
private:
5959
void checkTutorial(DifferenceSharedPtr diff, circuit_id_t circuitId);
60-
void checkTutorialState(Position pos, bool state);
60+
void checkTutorialState(Position pos, logic_state_t state);
6161

6262
void runCurrentStep();
6363
bool isCurrentStepComplete() const;

0 commit comments

Comments
 (0)