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 class MEANDER_PLACER_BASE;
12 } // namespace PNS
13 
14 namespace horizon {
15 class ToolWrapper;
16 class Board;
18  friend ToolWrapper;
19 
20 public:
21  ToolRouteTrackInteractive(Core *c, ToolID tid);
22  ToolResponse begin(const ToolArgs &args) override;
23  ToolResponse update(const ToolArgs &args) override;
24  bool can_begin() override;
25  bool is_specific() override;
26  bool handles_esc() override
27  {
28  return true;
29  }
31 
32 private:
33  PNS::ROUTER *router = nullptr;
34  PNS::PNS_HORIZON_IFACE *iface = nullptr;
35  PNS::MEANDER_PLACER_BASE *meander_placer = nullptr;
36  class CanvasGL *canvas = nullptr;
37  ToolWrapper *wrapper = nullptr;
38 
39  enum class State { START, ROUTING };
40  State state = State::START;
41 
42  Board *board = nullptr;
43  class BoardRules *rules = nullptr;
44  bool shove = false;
45 
46  void update_tip();
47  class Track *get_track(const std::set<SelectableRef> &sel);
48  bool is_tune() const;
49 };
50 } // namespace horizon
horizon::ToolWrapper
Definition: tool_route_track_interactive.cpp:16
horizon::ToolRouteTrackInteractive::update
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition: tool_route_track_interactive.cpp:562
horizon::ToolRouteTrackInteractive::can_begin
bool can_begin() override
Definition: tool_route_track_interactive.cpp:53
PNS::ROUTER
Definition: pns_router.h:109
horizon::ToolRouteTrackInteractive::begin
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition: tool_route_track_interactive.cpp:101
horizon::CanvasGL
Definition: canvas_gl.hpp:15
PNS::MEANDER_PLACER_BASE
Class MEANDER_PLACER_BASE.
Definition: pns_meander_placer_base.h:48
horizon::Core
Where Tools and and documents meet.
Definition: core.hpp:240
horizon::ToolRouteTrackInteractive::is_specific
bool is_specific() override
Definition: tool_route_track_interactive.cpp:80
horizon::ToolRouteTrackInteractive
Definition: tool_route_track_interactive.hpp:17
horizon::ToolBase
Common interface for all Tools.
Definition: core.hpp:141
horizon::ToolResponse
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: core.hpp:52
horizon::ToolArgs
This is what a Tool receives when the user did something.
Definition: core.hpp:26
PNS::PNS_HORIZON_IFACE
Definition: pns_horizon_iface.hpp:65
horizon::ToolRouteTrackInteractive::handles_esc
bool handles_esc() override
Definition: tool_route_track_interactive.hpp:26