Skip to content

Commit 37f18a3

Browse files
author
Haley Clark
committed
SDL_Viewer: Tracks: layout/positioning tweaks.
1 parent 522e87f commit 37f18a3

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

src/Challenges/Tracks.cc

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/Challenges/Tracks.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,9 @@ class TracksGame {
265265
static constexpr float slot_width = 16.0f;
266266
static constexpr float slot_height = 10.0f;
267267

268+
// UI interaction constants
269+
static constexpr float mouse_track_hover_dist = 10.0f;
270+
268271
// UI position constants
269272
static constexpr float map_offset_x = 10.0f;
270273
static constexpr float map_offset_y = 10.0f;

0 commit comments

Comments
 (0)