Horizon
tool_route_track_interactive.hpp
1 #pragma once
2 #include "core.hpp"
3 #include <deque>
4 #include <memory>
5 #include <set>
6 
7 namespace PNS {
8 class ROUTER;
9 class PNS_HORIZON_IFACE;
10 class ITEM;
11 } // namespace PNS
12 
13 namespace horizon {
14 class ToolWrapper;
15 class Board;
17  friend ToolWrapper;
18 
19 public:
20  ToolRouteTrackInteractive(Core *c, ToolID tid);
21  ToolResponse begin(const ToolArgs &args) override;
22  ToolResponse update(const ToolArgs &args) override;
23  bool can_begin() override;
24  bool is_specific() override;
25  bool handles_esc() override
26  {
27  return true;
28  }
30 
31 private:
32  PNS::ROUTER *router = nullptr;
33  PNS::PNS_HORIZON_IFACE *iface = nullptr;
34  class CanvasGL *canvas = nullptr;
35  ToolWrapper *wrapper = nullptr;
36 
37  enum class State { START, ROUTING };
38  State state = State::START;
39 
40  Board *board = nullptr;
41  class BoardRules *rules = nullptr;
42  bool shove = false;
43 
44  void update_tip();
45  class Track *get_track(const std::set<SelectableRef> &sel);
46 };
47 } // namespace horizon
Definition: track.hpp:17
This is what a Tool receives when the user did something.
Definition: core.hpp:108
Definition: tool_route_track_interactive.cpp:15
Definition: canvas_gl.hpp:10
Definition: board.hpp:28
Definition: board_rules.hpp:18
Definition: pns_horizon_iface.hpp:76
bool handles_esc() override
Definition: tool_route_track_interactive.hpp:25
Definition: pns_router.h:109
Where Tools and and documents meet.
Definition: core.hpp:249
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: core.hpp:126
Definition: block.cpp:7
Definition: tool_route_track_interactive.hpp:16
Common interface for all Tools.
Definition: core.hpp:170
Definition: pns_algo_base.cpp:26