@@ -73,7 +73,8 @@ vec2<double> TracksGame::NormalizeLongLat(double lon, double lat){
7373 // Helper to convert (longitude, latitude) to normalized coords
7474 //
7575 // Top-left map corner is ~1 degree NW of Atlin (-133.7, 59.6).
76- double x = (lon - (-134.7 )) / (134.7 - 109.0 ); // 0 at west, 1 at east
76+ // double x = (lon - (-134.7)) / (134.7 - 109.0); // 0 at west, 1 at east
77+ double x = (lon - (-133.2 )) / (133.2 - 109.0 ); // 0 at west, 1 at east
7778 double y = (lat - 47.4 ) / (60.6 - 47.4 ); // 0 at south, 1 at north
7879 return {x, y};
7980}
@@ -83,57 +84,59 @@ void TracksGame::InitializeCities(){
8384 // Position cities.
8485 //
8586 // Note: y is inverted during rendering (1-y) since screen y increases downward
87+ //
88+ // Note: the position of cites and towns are tweaked below to avoid crowding.
8689
8790 cities.clear ();
8891
8992 // British Columbia - Coast
9093 cities.push_back ({" Vancouver" , NormalizeLongLat (-123.1 , 49.3 )}); // ~49.3°N, 123.1°W
91- cities.push_back ({" Whistler" , NormalizeLongLat (-123.1 , 50.1 )}); // ~50.1°N, 123.1°W
94+ cities.push_back ({" Whistler" , NormalizeLongLat (-123.1 - 0.2 , 50.1 + 0.3 )}); // ~50.1°N, 123.1°W
9295 cities.push_back ({" Victoria" , NormalizeLongLat (-123.4 , 48.4 )}); // ~48.4°N, 123.4°W
93- cities.push_back ({" Nanaimo" , NormalizeLongLat (-123.9 , 49.2 )}); // ~49.2°N, 123.9°W
96+ cities.push_back ({" Nanaimo" , NormalizeLongLat (-123.9 - 0.8 , 49.2 )}); // ~49.2°N, 123.9°W
9497 cities.push_back ({" Prince Rupert" , NormalizeLongLat (-130.3 , 54.3 )}); // ~54.3°N, 130.3°W
9598 cities.push_back ({" Smithers" , NormalizeLongLat (-127.2 , 54.8 )}); // ~54.8°N, 127.2°W
9699
97100 // British Columbia - Interior
98- cities.push_back ({" Kamloops" , NormalizeLongLat (-120.3 , 50.7 )}); // ~50.7°N, 120.3°W
99- cities.push_back ({" Kelowna" , NormalizeLongLat (-119.5 , 49.9 )}); // ~49.9°N, 119.5°W
100- cities.push_back ({" Vernon" , NormalizeLongLat (-119.3 , 50.3 )}); // ~50.3°N, 119.3°W
101- cities.push_back ({" Penticton" , NormalizeLongLat (-119.6 , 49.5 )}); // ~49.5°N, 119.6°W
102- cities.push_back ({" Cranbrook" , NormalizeLongLat (-115.8 , 49.5 )}); // ~49.5°N, 115.8°W
103- cities.push_back ({" Nelson" , NormalizeLongLat (-117.3 , 49.5 )}); // ~49.5°N, 117.3°W
104- cities.push_back ({" Trail" , NormalizeLongLat (-117.7 , 49.1 )}); // ~49.1°N, 117.7°W
101+ cities.push_back ({" Kamloops" , NormalizeLongLat (-120.3 , 50.7 + 0.3 )}); // ~50.7°N, 120.3°W
102+ cities.push_back ({" Kelowna" , NormalizeLongLat (-119.5 - 0.3 , 49.9 )}); // ~49.9°N, 119.5°W
103+ cities.push_back ({" Vernon" , NormalizeLongLat (-119.3 + 0.5 , 50.3 )}); // ~50.3°N, 119.3°W
104+ cities.push_back ({" Penticton" , NormalizeLongLat (-119.6 - 1.0 , 49.5 - 0.3 )}); // ~49.5°N, 119.6°W
105+ cities.push_back ({" Cranbrook" , NormalizeLongLat (-115.8 , 49.5 + 0.3 )}); // ~49.5°N, 115.8°W
106+ cities.push_back ({" Nelson" , NormalizeLongLat (-117.3 , 49.5 - 0.2 )}); // ~49.5°N, 117.3°W
107+ cities.push_back ({" Trail" , NormalizeLongLat (-117.7 - 0.8 , 49.1 )}); // ~49.1°N, 117.7°W
105108 cities.push_back ({" Revelstoke" , NormalizeLongLat (-118.2 , 51.0 )}); // ~51.0°N, 118.2°W
106109
107110 // British Columbia - North
108111 cities.push_back ({" Prince George" , NormalizeLongLat (-122.8 , 53.9 )}); // ~53.9°N, 122.8°W
109112 cities.push_back ({" Quesnel" , NormalizeLongLat (-122.5 , 52.9 )}); // ~52.9°N, 122.5°W
110113 cities.push_back ({" Williams Lake" , NormalizeLongLat (-122.1 , 52.1 )}); // ~52.1°N, 122.1°W
111- cities.push_back ({" Fort St. John" , NormalizeLongLat (-120.8 , 56.2 )}); // ~56.2°N, 120.8°W
112- cities.push_back ({" Dawson Creek" , NormalizeLongLat (-120.2 , 55.8 )}); // ~55.8°N, 120.2°W
114+ cities.push_back ({" Fort St. John" , NormalizeLongLat (-120.8 - 0.3 , 56.2 + 0.5 )}); // ~56.2°N, 120.8°W
115+ cities.push_back ({" Dawson Creek" , NormalizeLongLat (-120.2 , 55.8 - 0.5 )}); // ~55.8°N, 120.2°W
113116 cities.push_back ({" Fort Nelson" , NormalizeLongLat (-122.7 , 58.8 )}); // ~58.8°N, 122.7°W
114- cities.push_back ({" Atlin" , NormalizeLongLat (-133.7 , 59.6 )}); // ~59.6°N, 133.7°W
117+ cities.push_back ({" Atlin" , NormalizeLongLat (-133.7 + 1.5 , 59.6 )}); // ~59.6°N, 133.7°W
115118
116119 // Alberta - South
117120 cities.push_back ({" Calgary" , NormalizeLongLat (-114.1 , 51.0 )}); // ~51.0°N, 114.1°W
118121 cities.push_back ({" Lethbridge" , NormalizeLongLat (-112.8 , 49.7 )}); // ~49.7°N, 112.8°W
119122 cities.push_back ({" Medicine Hat" , NormalizeLongLat (-110.7 , 50.0 )}); // ~50.0°N, 110.7°W
120- cities.push_back ({" Red Deer" , NormalizeLongLat (-113.8 , 52.3 )}); // ~52.3°N, 113.8°W
121- cities.push_back ({" Banff" , NormalizeLongLat (-115.6 , 51.2 )}); // ~51.2°N, 115.6°W
123+ cities.push_back ({" Red Deer" , NormalizeLongLat (-113.8 - 0.4 , 52.3 - 0.2 )}); // ~52.3°N, 113.8°W
124+ cities.push_back ({" Banff" , NormalizeLongLat (-115.6 , 51.2 - 0.3 )}); // ~51.2°N, 115.6°W
122125
123126 // Alberta - Central/North
124127 cities.push_back ({" Edmonton" , NormalizeLongLat (-113.5 , 53.5 )}); // ~53.5°N, 113.5°W
125- cities.push_back ({" Grande Prairie" , NormalizeLongLat (-118.8 , 55.2 )}); // ~55.2°N, 118.8°W
128+ cities.push_back ({" Grande Prairie" , NormalizeLongLat (-118.8 , 55.2 + 0.7 )}); // ~55.2°N, 118.8°W
126129 cities.push_back ({" Fort McMurray" , NormalizeLongLat (-111.4 , 56.7 )}); // ~56.7°N, 111.4°W
127130 cities.push_back ({" Jasper" , NormalizeLongLat (-118.1 , 52.9 )}); // ~52.9°N, 118.1°W
128131 cities.push_back ({" Lloydminster" , NormalizeLongLat (-110.0 , 53.3 )}); // ~53.3°N, 110.0°W
129- cities.push_back ({" Wetaskiwin" , NormalizeLongLat (-113.4 , 53.0 )}); // ~53.0°N, 113.4°W
132+ cities.push_back ({" Wetaskiwin" , NormalizeLongLat (-113.4 + 0.9 , 53.0 - 0.3 )}); // ~53.0°N, 113.4°W
130133
131134 // Additional connection points
132135 cities.push_back ({" Golden" , NormalizeLongLat (-117.0 , 51.3 )}); // ~51.3°N, 117.0°W
133- cities.push_back ({" Fernie" , NormalizeLongLat (-115.1 , 49.5 )}); // ~49.5°N, 115.1°W
134- cities.push_back ({" Hinton" , NormalizeLongLat (-117.6 , 53.4 )}); // ~53.4°N, 117.6°W
135- cities.push_back ({" Whitecourt" , NormalizeLongLat (-115.7 , 54.1 )}); // ~54.1°N, 115.7°W
136- cities.push_back ({" Slave Lake" , NormalizeLongLat (-114.8 , 55.3 )}); // ~55.3°N, 114.8°W
136+ cities.push_back ({" Fernie" , NormalizeLongLat (-115.1 , 49.5 - 0.3 )}); // ~49.5°N, 115.1°W
137+ cities.push_back ({" Hinton" , NormalizeLongLat (-117.6 + 0.5 , 53.4 - 0.2 )}); // ~53.4°N, 117.6°W
138+ cities.push_back ({" Whitecourt" , NormalizeLongLat (-115.7 - 0.3 , 54.1 + 0.3 )}); // ~54.1°N, 115.7°W
139+ cities.push_back ({" Slave Lake" , NormalizeLongLat (-114.8 , 55.3 + 0.3 )}); // ~55.3°N, 114.8°W
137140 cities.push_back ({" High Level" , NormalizeLongLat (-117.1 , 58.5 )}); // ~58.5°N, 117.1°W
138141}
139142
@@ -161,12 +164,12 @@ void TracksGame::InitializeTrackPaths(){
161164 std::vector<conn_def> connections = {
162165 // Vancouver area connections
163166 {" Vancouver" , " Victoria" , 2 , card_color_t ::Blue, false },
164- {" Vancouver" , " Whistler" , 1 , card_color_t ::Black, false },
167+ {" Vancouver" , " Whistler" , 2 , card_color_t ::Black, false },
165168 {" Vancouver" , " Nanaimo" , 1 , card_color_t ::White, false },
166169 {" Victoria" , " Nanaimo" , 2 , card_color_t ::Green, false },
167170 {" Vancouver" , " Kamloops" , 4 , card_color_t ::Red, false },
168171 {" Vancouver" , " Kamloops" , 4 , card_color_t ::Yellow, true },
169- {" Whistler" , " Kamloops" , 6 , card_color_t ::Yellow , false },
172+ {" Whistler" , " Kamloops" , 5 , card_color_t ::Blue , false },
170173
171174 // Interior BC connections
172175 {" Kamloops" , " Kelowna" , 2 , card_color_t ::Orange, false },
@@ -176,7 +179,7 @@ void TracksGame::InitializeTrackPaths(){
176179 {" Penticton" , " Trail" , 3 , card_color_t ::Black, false },
177180 {" Trail" , " Nelson" , 1 , card_color_t ::Red, false },
178181 {" Nelson" , " Cranbrook" , 2 , card_color_t ::Orange, false },
179- {" Cranbrook" , " Fernie" , 2 , card_color_t ::Blue, false },
182+ {" Cranbrook" , " Fernie" , 1 , card_color_t ::Blue, false },
180183
181184 // Central BC
182185 {" Kamloops" , " Revelstoke" , 3 , card_color_t ::Yellow, false },
@@ -193,12 +196,12 @@ void TracksGame::InitializeTrackPaths(){
193196 {" Smithers" , " Prince Rupert" , 3 , card_color_t ::Blue, false },
194197
195198 // Far North BC
196- {" Prince George" , " Dawson Creek" , 5 , card_color_t ::Black , false },
199+ {" Prince George" , " Dawson Creek" , 5 , card_color_t ::Red , false },
197200 {" Dawson Creek" , " Fort St. John" , 1 , card_color_t ::White, false },
198201 {" Fort St. John" , " Fort Nelson" , 4 , card_color_t ::Black, false },
199202 {" Fort Nelson" , " High Level" , 5 , card_color_t ::Orange, false },
200203 {" Atlin" , " Fort Nelson" , 6 , card_color_t ::White, false },
201- {" Atlin" , " Smithers" , 6 , card_color_t ::Orange , false },
204+ {" Atlin" , " Smithers" , 6 , card_color_t ::Yellow , false },
202205
203206 // BC to Alberta main corridors
204207 {" Jasper" , " Hinton" , 1 , card_color_t ::Yellow, false },
@@ -1381,7 +1384,7 @@ bool TracksGame::Display(bool &enabled){
13811384 float closest_y = pos_a.y + t * dy;
13821385 float dist = std::sqrt ((mouse.x - closest_x) * (mouse.x - closest_x) +
13831386 (mouse.y - closest_y) * (mouse.y - closest_y));
1384- if (dist < 15 . 0f ){
1387+ if (dist < mouse_track_hover_dist ){
13851388 hovering = true ;
13861389 hovered_path_idx = static_cast <int >(pi);
13871390
0 commit comments