diff options
| author | art0007i <art0007i@gmail.com> | 2024-09-24 15:11:32 +0200 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2024-09-24 09:38:26 -0400 |
| commit | 738d970d26794db8bb3dcf459c4a787b624910ba (patch) | |
| tree | c5ea9e5eed9ebbab72f5a6cdfc84ca684816001f /src/network_set.cpp | |
| parent | 46f46b4caa0fbaba77ac2b2291d908d3bf81dd28 (diff) | |
| download | lingo-ap-tracker-738d970d26794db8bb3dcf459c4a787b624910ba.tar.gz lingo-ap-tracker-738d970d26794db8bb3dcf459c4a787b624910ba.tar.bz2 lingo-ap-tracker-738d970d26794db8bb3dcf459c4a787b624910ba.zip | |
make paintings 1 directional and add "arrows" the "arrows" are circles because I couldn't figure out how to use the DrawPolygon function...
Diffstat (limited to 'src/network_set.cpp')
| -rw-r--r-- | src/network_set.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
| diff --git a/src/network_set.cpp b/src/network_set.cpp index 2a9e12c..c7639ad 100644 --- a/src/network_set.cpp +++ b/src/network_set.cpp | |||
| @@ -4,9 +4,8 @@ void NetworkSet::Clear() { | |||
| 4 | network_by_item_.clear(); | 4 | network_by_item_.clear(); |
| 5 | } | 5 | } |
| 6 | 6 | ||
| 7 | void NetworkSet::AddLink(int id1, int id2) { | 7 | void NetworkSet::AddLink(int id1, int id2, bool two_way) { |
| 8 | if (id2 > id1) { | 8 | if (two_way && id2 > id1) { |
| 9 | // Make sure id1 < id2 | ||
| 10 | std::swap(id1, id2); | 9 | std::swap(id1, id2); |
| 11 | } | 10 | } |
| 12 | 11 | ||
| @@ -17,13 +16,14 @@ void NetworkSet::AddLink(int id1, int id2) { | |||
| 17 | network_by_item_[id2] = {}; | 16 | network_by_item_[id2] = {}; |
| 18 | } | 17 | } |
| 19 | 18 | ||
| 20 | network_by_item_[id1].insert({id1, id2}); | 19 | NetworkNode node = {id1, id2, two_way}; |
| 21 | network_by_item_[id2].insert({id1, id2}); | 20 | |
| 21 | network_by_item_[id1].insert(node); | ||
| 22 | network_by_item_[id2].insert(node); | ||
| 22 | } | 23 | } |
| 23 | 24 | ||
| 24 | void NetworkSet::AddLinkToNetwork(int network_id, int id1, int id2) { | 25 | void NetworkSet::AddLinkToNetwork(int network_id, int id1, int id2, bool two_way) { |
| 25 | if (id2 > id1) { | 26 | if (two_way && id2 > id1) { |
| 26 | // Make sure id1 < id2 | ||
| 27 | std::swap(id1, id2); | 27 | std::swap(id1, id2); |
| 28 | } | 28 | } |
| 29 | 29 | ||
| @@ -31,13 +31,22 @@ void NetworkSet::AddLinkToNetwork(int network_id, int id1, int id2) { | |||
| 31 | network_by_item_[network_id] = {}; | 31 | network_by_item_[network_id] = {}; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | network_by_item_[network_id].insert({id1, id2}); | 34 | NetworkNode node = {id1, id2, two_way}; |
| 35 | |||
| 36 | network_by_item_[network_id].insert(node); | ||
| 35 | } | 37 | } |
| 36 | 38 | ||
| 37 | bool NetworkSet::IsItemInNetwork(int id) const { | 39 | bool NetworkSet::IsItemInNetwork(int id) const { |
| 38 | return network_by_item_.count(id); | 40 | return network_by_item_.count(id); |
| 39 | } | 41 | } |
| 40 | 42 | ||
| 41 | const std::set<std::pair<int, int>>& NetworkSet::GetNetworkGraph(int id) const { | 43 | const std::set<NetworkNode>& NetworkSet::GetNetworkGraph(int id) const { |
| 42 | return network_by_item_.at(id); | 44 | return network_by_item_.at(id); |
| 43 | } | 45 | } |
| 46 | |||
| 47 | bool NetworkNode::operator<(const NetworkNode& rhs) const { | ||
| 48 | if (entry != rhs.entry) return entry < rhs.entry; | ||
| 49 | if (exit != rhs.exit) return exit < rhs.exit; | ||
| 50 | if (two_way != rhs.two_way) return two_way < rhs.two_way; | ||
| 51 | return false; | ||
| 52 | } \ No newline at end of file | ||
