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 | ||