12 const CalculatorUIState&
state)
noexcept
18 CalculatorUIState&
state,
19 const rules::GameState&
gameState)
noexcept
21 if (!
state.activeFunction)
return false;
27 state.error = result.error();
30 state.result = *result;
35 CalculatorUIState&
state, std::uint8_t
index)
noexcept
40 state.hoveredDeed.reset();
43 state.pressedNumber.reset();
46 switch (*
state.activeFunction)
64 int x,
int y)
noexcept
67 if (!deed)
return false;
68 state.selection.deed = *deed;
69 state.hoveredDeed.reset();
86 int x,
int y)
noexcept
89 if (!player)
return false;
90 state.selection.player = *player;
95 state.pressedNumber =
static_cast<std::uint8_t
>(*player);
107 state.selection.turns = 1;
108 state.pressedNumber = 0;
123 if (property < 0)
return std::nullopt;
124 const int left = 210 + 57 * (
property % 7);
125 const int top = 240 + 45 * (
property / 7);
129 int x,
int y)
noexcept
139 const auto count = std::min<std::size_t>(
167 if (!visible &&
state.visible)
172 state.visible = visible;
180 if (!
state.visible)
return false;
182 const int x =
static_cast<int>(message.numberA);
183 const int y =
static_cast<int>(message.numberB);
191 state.hoveredDeed.reset();
201 state.hoveredFunction.reset();
202 state.activeFunction.reset();
203 state.result.reset();
206 state.pressedNumber.reset();
218 state.visible =
true;
235 if (!
state.activeFunction)
return false;
236 switch (*
state.activeFunction)
std::atomic< float > left
int propertyIndex(int square) noexcept
std::uint8_t PlayerNumber
constexpr std::size_t SquareCount
constexpr PlayerNumber MaxPlayers
bool processCalculatorInput(CalculatorUIState &state, const rules::GameState &gameState, display::Screen2D view, const uimsg::Message &message) noexcept
std::expected< CalculatorResult, std::string > calculate(CalculatorFunction function, const rules::GameState &state, const CalculatorSelection &selection) noexcept
std::optional< Rect > calculatorDeedRect(int square) noexcept
constexpr Rect calculatorTokenRect(rules::PlayerNumber player) noexcept
std::optional< std::uint8_t > calculatorFunctionHit(int x, int y) noexcept
void resetCalculatorUI(CalculatorUIState &state) noexcept
constexpr Rect calculatorFunctionRect(std::uint8_t index) noexcept
void syncCalculatorView(CalculatorUIState &state, display::Screen2D view) noexcept
constexpr Rect calculatorNumberRect(std::uint8_t index) noexcept
std::optional< rules::PlayerNumber > calculatorTokenHit(const rules::GameState &state, int x, int y) noexcept
std::optional< int > calculatorDeedHit(int x, int y) noexcept
constexpr bool contains(int x, int y) const noexcept