Wise&mystical  1.0
Project about Europe
Loading...
Searching...
No Matches
game.cpp
Go to the documentation of this file.
1#include <iostream>
2#include <vector>
3#include <math.h>
4#include "raylib.h"
5#include "menu.h"
6#include "game.h"
7#include "movement.h"
8#include "timer.h"
9#include "animations.h"
10#include "cityOperations.h"
11#include "travelLogic.h"
12#include "quizLogic.h"
13#include "manageActiveText.h"
14
16{
17 int width = 1920;
18 int height = 1080;
19
20 InitWindow(width, height, "Game");
21
22 // Load font variants from the file structure
23 Font comfortaa = LoadFontEx("../resources/font/Comfortaa-Regular.ttf", 25, 0, 250);
24 Font comfortaaScore = LoadFontEx("../resources/font/Comfortaa-Regular.ttf", 32, 0, 250);
25 Font comfortaaTravelPoints = LoadFontEx("../resources/font/Comfortaa-Bold.ttf", 40, 0, 250);
26
27 // Load map components texture from the file structure
28 Texture2D map = LoadTexture("../resources/images/map components/map.png");
29 Texture2D cityMarkers[3] = {
30 LoadTexture("../resources/images/map components/City marker Easy.png"),
31 LoadTexture("../resources/images/map components/City marker Medium.png"),
32 LoadTexture("../resources/images/map components/City marker Hard.png")
33 };
34
35 // Load game GUI components from the file structure
36 Texture2D scoreBoard = LoadTexture("../resources/images/UI components/Score board.png");
37 Texture2D popUpMenu = LoadTexture("../resources/images/UI components/Travel pop-up.png");
38 Texture2D visitedCityWarning = LoadTexture("../resources/images/UI components/City warning.png");
39 Texture2D confirmHover = LoadTexture("../resources/images/UI components/Confirm hover.png");
40 Texture2D denyHover = LoadTexture("../resources/images/UI components/Deny hover.png");
41
42 // Load menu components from the file structure
43 Texture2D menu = LoadTexture("../resources/images/UI components/menu components/menu.png");
44 menuButton menuButtons[3] = {
45 {LoadTexture("../resources/images/UI components/menu components/buttons/play button.png"), LoadTexture("../resources/images/UI components/menu components/hover effects/play button hover.png")},
46 {LoadTexture("../resources/images/UI components/menu components/buttons/about button.png"), LoadTexture("../resources/images/UI components/menu components/hover effects/about button hover.png")},
47 {LoadTexture("../resources/images/UI components/menu components/buttons/quit button.png"), LoadTexture("../resources/images/UI components/menu components/hover effects/quit button hover.png")}
48 };
49
50 // Define menu button hitboxes
51 Circle menuHitboxes[3] = {
52 {Vector2{ 606.5, 142.5 }, 90 },
53 {Vector2{ 450.5, 431.5 }, 90 },
54 {Vector2{ 170.5, 597.5 }, 90 }
55 };
56
57 // Define menu transition animation variables
58 TransitionFrame transition = { Vector2{float(GetScreenWidth() / 2), float(GetScreenHeight() / 2)}, 1 };
59 TransitionFrame* transitionPtr = &transition;
60 bool drawMenuTransition = false;
61 bool* drawMenuTransitionPtr = &drawMenuTransition;
62 bool menuUnloaded = false;
63
64 // Mouse position
65 Vector2 mousePoint = { 0.0f, 0.0f };
66
67 // Camera position
68 float cameraPosX = 0;
69 float* cameraPosXPtr = &cameraPosX;
70 float cameraPosY = 0;
71 float* cameraPosYPtr = &cameraPosY;
72
73 // Declare game camera
74 Camera2D camera = {};
75 camera.offset = { float(width) / 2, float(height) / 2 };
76 camera.target = { cameraPosX, cameraPosY };
77 camera.zoom = 1;
78 camera.rotation = 0;
79
80 // Vector for all cities
81 City cities[40];
82 City* citiArrayPtr = intialiseCitiesArray(cities);
83 citiArrayPtr = cities;
84
85 // Declare screen variable
86 GameScreen currentScreen = MENU;
87 GameScreen* currentScreenPtr = &currentScreen;
88 bool quitButtonPressed = false;
89 bool* quitButtonPressedPtr = &quitButtonPressed;
90
91 // City variables
92 const int cityCounter = 40;
93 int startCityNum = GetRandomValue(0, 39);
94
95 // Active city variables
96 City activeCity = cities[startCityNum];
97 cities[startCityNum].wasVisited = true;
98 City* activeCityPtr = &activeCity;
99
100 // Temporary city variables
101 City tempCity = {};
102 City* tempCityPtr = &tempCity;
103 int index = startCityNum;
104 int* indexPtr = &index;
105
106 // Vector for gameplay path
107 std::vector<LinePoints> conLines;
108 std::vector<LinePoints>* conLinesPtr = &conLines;
109
110 // Varibles for travel process
111 bool searchingNextCity = false;
112 bool* searchingNextCityPtr = &searchingNextCity;
113 bool showPopUpMenu = false;
114 bool* showPopUpMenuPtr = &showPopUpMenu;
115
116 // Define variables for pop-up menu animation
117 PopUpAnimationFrame popUpMenuFrame = { popUpMenu, Vector2{ 1347, 1080 }, 0 };
118 PopUpAnimationFrame* popUpMenuFramePtr = &popUpMenuFrame;
119 Rectangle confirmHitbox = { 1462, 993, 186, 67 };
120 Rectangle denyHitbox = { 1693, 993, 186, 67 };
121
122 // Define variables for active city animation
123 ActiveCityAnimationFrame activeCityAnimationParts[3] = {
124 {5, '+', frame1},
125 {15, '+', frame6},
126 {20, '+', frame10},
127 };
128 ActiveCityAnimationFrame* activeCityAnimationPartsPtr = activeCityAnimationParts;
129
130 // Define variables for quizzes
131 Texture2D activeQuiz = LoadTexture("");
132 Texture2D* activeQuizPtr = &activeQuiz;
133 PopUpAnimationFrame quizAnimationFrame = { activeQuiz, Vector2{1920, 2}, 0 };
134 PopUpAnimationFrame* quizPtr = &quizAnimationFrame;
135 bool activeQuizLoaded = false;
136 bool* activeQuizLoadedPtr = &activeQuizLoaded;
137 bool showQuiz = false;
138 bool* showQuizPtr = &showQuiz;
139 bool nextCityChosen = true;
140 bool* nextCityChosenPtr = &nextCityChosen;
141 bool optionSelected = false;
142 bool* optionSelectedPtr = &optionSelected;
143 Option options[4] = {
144 {{1034, 800, 740, 51}, LoadTexture("../resources/images/UI components/option hover/option a hover.png"), LoadTexture("../resources/images/UI components/option indicators/Right answer a.png"), LoadTexture("../resources/images/UI components/option indicators/Wrong answer a.png")},
145 {{1034, 867, 740, 51}, LoadTexture("../resources/images/UI components/option hover/option b hover.png"), LoadTexture("../resources/images/UI components/option indicators/Right answer b.png"), LoadTexture("../resources/images/UI components/option indicators/Wrong answer b.png")},
146 {{1034, 934, 740, 51}, LoadTexture("../resources/images/UI components/option hover/option c hover.png"), LoadTexture("../resources/images/UI components/option indicators/Right answer c.png"), LoadTexture("../resources/images/UI components/option indicators/Wrong answer c.png")},
147 {{1034, 1001, 740, 51}, LoadTexture("../resources/images/UI components/option hover/option d hover.png"), LoadTexture("../resources/images/UI components/option indicators/Right answer d.png"), LoadTexture("../resources/images/UI components/option indicators/Wrong answer d.png")}
148 };
149
150 // Initial quiz timer
151 bool intialTimerStarted = false;
152 float freeTime = 1.8;
153 Timer freeTimeTimer = { 0 };
154 Timer* freeTimeTimerPtr = &freeTimeTimer;
155
156 // Define variables for warning pop up animation
157 PopUpAnimationFrame warningAnimationFrame = { visitedCityWarning, Vector2{ 936, 1080 }, 0 };
158 PopUpAnimationFrame* warningAnimationFramePtr = &warningAnimationFrame;
159 bool wariningVisible = false;
160 bool* warningVisiblePtr = &wariningVisible;
161
162 // Variables for warning timer
163 float warningScreentime = 2.5f;
164 float* warningScreentimePtr = &warningScreentime;
165 Timer warningTimer = { 0 };
166 Timer* warningTimerPtr = &warningTimer;
167
168 // Define active text variables
169 std::string popUpText = "";
170 int score = 0;
171 int* scorePtr = &score;
172 int bonus = 0;
173 int* bonusPtr = &bonus;
174 int travelPoints = 40;
175 int* travelPointsPtr = &travelPoints;
176
177 // Define variables for score count up
178 int startNum = 0;
179 int* startNumPtr = &startNum;
180 int endNum = 0;
181 int* endNumPtr = &endNum;
182 int countUpstep = 0;
183 int* countUpstepPtr = &countUpstep;
184 bool countUpDone = true;
185 bool* countUpDonePtr = &countUpDone;
186
187 // Set initail camera target
188 setInitialCameraPos(cameraPosXPtr, cameraPosYPtr, startCityNum);
189
190 // Start initial free timer countdown
191 StartTimer(&freeTimeTimer, freeTime);
192
193 // Put the game into fullscreen mode
194 /*ToggleFullscreen();*/
195
196 while (!WindowShouldClose())
197 {
198 // Switch between gamemodes for drawing
199 switch (currentScreen)
200 {
201 case MENU:
202 {
203 hangleMenuInput(menuHitboxes, transitionPtr, quitButtonPressedPtr, drawMenuTransitionPtr);
204 } break;
205
206 case GAMEPLAY:
207 {
208 if (transition.radius <= 10 && !intialTimerStarted)
209 {
210 // Start initial free timer countdown
211 StartTimer(&freeTimeTimer, freeTime);
212 intialTimerStarted = true;
213 }
214
215 // Unload menu when it's not needed
216 if (currentScreen == GAMEPLAY && !menuUnloaded)
217 {
218 for (int i = 0; i < 3; i++)
219 {
220 UnloadTexture(menuButtons[i].button);
221 UnloadTexture(menuButtons[i].hoverEffect);
222 }
223
224 UnloadTexture(menu);
225 menuUnloaded = true;
226 }
227
228 // Update target
229 mousePoint = GetScreenToWorld2D({ GetMousePosition().x, GetMousePosition().y }, camera);
230 camera.target = { *cameraPosXPtr, *cameraPosYPtr };
231
232 // Update the camera's position based on keyboard input
233 updateCameraPos(cameraPosXPtr, cameraPosYPtr);
234
235 // Travel to next selected city (if possible)
236 if (quizAnimationFrame.pos.x == 1920 && !showQuiz)
237 {
238 travelToNextCity(mousePoint, citiArrayPtr, activeCity, tempCityPtr, searchingNextCityPtr, showPopUpMenuPtr, cityCounter, indexPtr);
239 }
240
241 // Update city travel cost and bonus
242 updateCityTravelCostAndBonus(cities, activeCity, cityCounter);
243
244 // Handle mouse input for the pop-up
245 handlePopUpInput(citiArrayPtr, activeCityPtr, tempCityPtr, popUpMenuFrame, confirmHitbox, denyHitbox, conLinesPtr, searchingNextCityPtr, showPopUpMenuPtr, nextCityChosenPtr, indexPtr, travelPointsPtr, bonusPtr);
246
247 // Update count up sequence
248 updateScoreCountUp(countUpDonePtr, startNumPtr, endNumPtr, countUpstep);
249
250 // Manage warning animation
251 manageWarningAnimation(mousePoint, cities, activeCity, warningAnimationFramePtr, popUpMenuFrame, warningTimerPtr, warningScreentimePtr, warningVisiblePtr, showPopUpMenu);
252
253 // Update initial free timer countdown
254 UpdateTimer(&freeTimeTimer);
255
256 if (nextCityChosen)
257 {
258 // Manage quiz texture loading
259 if (!activeQuizLoaded && popUpMenuFrame.pos.y == 1080 && !showPopUpMenu && TimerDone(&freeTimeTimer))
260 {
261 activeQuiz = LoadTexture(activeCity.textureFilePath);
262 activeQuizLoaded = true;
263 showQuiz = true;
264 }
265
266 //Manage quiz texture unloading
267 if (quizAnimationFrame.pos.x == 1920 && !showQuiz && !searchingNextCity)
268 {
269 searchingNextCity = true;
270 UnloadTexture(activeQuiz);
271 activeQuizLoaded = false;
272 }
273
274 // Handle mouse input relative to the quiz optiopns
275 handleQuizInput(activeCity, options, showQuizPtr, optionSelectedPtr, scorePtr, startNumPtr, endNumPtr, countUpstepPtr, countUpDonePtr, bonusPtr);
276
277 // Reset the selected option check
278 if (quizAnimationFrame.pos.x == 1920)
279 {
280 optionSelected = false;
281 }
282 }
283 } break;
284
285 default: break;
286 }
287
288 BeginDrawing();
289
290 // Set background color for the framebuffer
292
293 // Switch gamemode
294 if (transitionPtr->radius >= 1120)
295 {
296 currentScreen = GAMEPLAY;
297 quitButtonPressed = false;
298 }
299
300 // Switch between gamemodes for drawing
301 switch (currentScreen)
302 {
303 case MENU:
304 {
305 DrawTexture(menu, 0, 0, RAYWHITE);
306
307 drawMenuButtons(menuHitboxes, menuButtons);
308
309 } break;
310
311 case GAMEPLAY:
312 {
313 // Begin 2D mode
314 BeginMode2D(camera);
315
316 // Draw the map on the screen
317 DrawTextureEx(map, Vector2{ 0,0 }, 0, 1, mapColor);
318
319 // Draw travel pathway
320 for (LinePoints& n : conLines)
321 {
322 // Draw line outer layer
323 DrawLineEx(n.startPoint, n.endPoint, 10, WHITE);
324
325 // Draw line inner layer
326 DrawLineEx(n.startPoint, n.endPoint, 7, lineColor);
327 }
328
329 // Mark the current active city mark
330 drawActiveCityAnimation(activeCityAnimationPartsPtr, activeCity);
331
332 // Draw city markers based of distance from active city
333 drawCityMarkers(citiArrayPtr, activeCity, cityMarkers, cityCounter);
334
335 // Draw city names
336 drawCityNames(citiArrayPtr, 40, comfortaa);
337
338 // End 2D mode
339 EndMode2D();
340
341 // Draw score board
342 DrawTexture(scoreBoard, -2, 2, RAYWHITE);
343
344 // Check for score count up
345 if (countUpDone)
346 {
347 // Draw normal score
348 DrawTextEx(comfortaaScore, TextFormat("%i", score), Vector2{ 86,31 }, 32, 1, WHITE);
349 }
350 else if (!countUpDone)
351 {
352 // Draw count up with updated value
353 DrawTextEx(comfortaaScore, TextFormat("%i", startNum), Vector2{ 86,31 }, 32, 1, WHITE);
354 }
355
356 // Draw active city name
357 DrawTextEx(comfortaaScore, activeCity.name.c_str(), Vector2{ 86, 108 }, 32, 1, WHITE);
358
359 // Draw visited cities counter
360 DrawTextEx(comfortaaScore, TextFormat("%i / 40", conLines.size() + 1), Vector2{ 86, 180 }, 32, 1, WHITE);
361
362 // Draw travel points count
363 drawTravelPointsCount(comfortaaTravelPoints, travelPoints);
364
365 // Draw pop-up menu animation across different states
366 drawPopUpAnimationBottom(popUpMenuFramePtr, 913, showPopUpMenu);
367
368 // Draw popUp buttons hover effect
369 drawPopUpMenuHover(confirmHitbox, denyHitbox, confirmHover, denyHover, popUpMenuFramePtr);
370
371 // Update pop-up menu active text
372 if (popUpMenuFrame.pos.y == 1080 || popUpMenuFrame.pos.y == 913)
373 {
374 popUpText = updatePopUpActiveText(popUpText, activeCity, tempCity, popUpMenuFrame);
375 }
376
377 // Draw pop-up menu active text
378 DrawTextEx(comfortaa, popUpText.c_str(), Vector2{ 1427, popUpMenuFrame.pos.y + float(19) }, 25, 1, WHITE);
379
380 // Draw warning animation across its different states
381 drawPopUpAnimationBottom(warningAnimationFramePtr, 990, wariningVisible);
382
383 // Manage quiz texture loading, unloading and drawing
384 if (nextCityChosen)
385 {
386 // Make animation 5 times faster
387 for (int i = 0; i < 5; i++)
388 {
389 // Draw pop-up animation side across different states
390 drawPopUpAnimationSide(quizPtr, activeQuiz, showQuiz);
391 }
392
393 if (!optionSelected)
394 {
395 // Draw quiz options hover effect
396 drawQuizOptionsHover(options, quizAnimationFrame, index);
397 }
398
399 // Draw option indicators to show if the selected option was true or false
400 drawOptionIndicators(activeCity, options, quizAnimationFrame, optionSelected, index);
401 }
402
403 } break;
404
405 default: break;
406 }
407
408 // Draw transition animation
409 for (int i = 0; i < 10; i++)
410 {
411 drawTransition(transitionPtr, drawMenuTransitionPtr);
412 }
413
414 EndDrawing();
415
416 // Close game if quit button is pressed
417 if (quitButtonPressed && transition.radius == 0)
418 {
419 CloseWindow();
420 }
421 }
422}
void manageWarningAnimation(Vector2 mousePoint, City cities[40], City activeCity, PopUpAnimationFrame *warningAnimationFramePtr, PopUpAnimationFrame popUpMenuFrame, Timer *warningTimerPtr, float *warningScreentimePtr, bool *wariningVisiblePtr, bool showPopUpMenu)
Manage warning animation.
Definition: animations.cpp:237
void drawQuizOptionsHover(Option options[4], PopUpAnimationFrame quizAnimationFrame, int index)
Draw quiz options hover effect.
Definition: animations.cpp:335
void drawOptionIndicators(City activeCity, Option options[4], PopUpAnimationFrame quizAnimationFrame, bool optionSelected, int index)
Draw option indicators to show if the selected option was true or false.
Definition: animations.cpp:355
void drawPopUpMenuHover(Rectangle confirmHitbox, Rectangle denyHitbox, Texture2D confirmHover, Texture2D denyHover, PopUpAnimationFrame *popUpAnimationFramePtr)
Draw popUp buttons hover effect.
Definition: animations.cpp:214
void drawPopUpAnimationBottom(PopUpAnimationFrame *componentPtr, float endY, bool showComponent)
Draw pop-up animation across its different states.
Definition: animations.cpp:97
void drawActiveCityAnimation(ActiveCityAnimationFrame *activeCityAnimationParts, City activeCity)
Draw active city animation.
Definition: animations.cpp:12
void drawPopUpAnimationSide(PopUpAnimationFrame *quizPtr, Texture2D texture, bool showQuiz)
Draw pop-up animation side.
Definition: animations.cpp:156
#define frame6
Definition: animations.h:15
#define frame10
Definition: animations.h:19
#define frame1
Define active city animation colors.
Definition: animations.h:10
City * intialiseCitiesArray(City cities[40])
Initialise cities.
void updateCityTravelCostAndBonus(City *cities, City activeCity, int citiesCounter)
Update city travel cost and bonus.
void drawCityMarkers(City *cities, City activeCity, Texture2D markers[3], int citiesCounter)
Draw city markers based of distance from active city.
void drawCityNames(City *cities, int citiesCounter, Font comfortaaRegular)
Draw city marks on the map.
void startGame()
Definition: game.cpp:15
#define mapBackgroundColor
Definition: game.h:7
#define mapColor
Definition: game.h:10
GameScreen
Definition: game.h:4
@ MENU
Definition: game.h:4
@ GAMEPLAY
Definition: game.h:4
void drawTravelPointsCount(Font comfortaaTravelPoints, int travelPoints)
Draw travel points count.
void updateScoreCountUp(bool *countUpDone, int *startNum, int *endNum, int countUpstep)
Update score count up sequence.
std::string updatePopUpActiveText(std::string text, City activeCity, City tempCity, PopUpAnimationFrame popUpMenuFrame)
Update the pop-up active text.
void hangleMenuInput(Circle menuHitboxes[3], TransitionFrame *transitionPtr, bool *quitButtonPressedPtr, bool *drawMenuTransitionPtr)
Handle menu input.
Definition: menu.cpp:51
void drawMenuButtons(Circle menuHitboxes[3], menuButton menuButtons[3])
Draw menu buttons.
Definition: menu.cpp:8
void drawTransition(TransitionFrame *transitionPtr, bool *drawMenuTransitionPtr)
Draw transition animation.
Definition: menu.cpp:79
void updateCameraPos(float *xCoordinate, float *yCoordinate)
Update camera position.
Definition: movement.cpp:77
void setInitialCameraPos(float *cameraPosXPtr, float *cameraPosYPtr, int num)
Set the camera's intial positon based on the starter city's index.
Definition: movement.cpp:7
void handleQuizInput(City activeCity, Option options[4], bool *showQuizPtr, bool *optionSelectedPtr, int *scorePtr, int *startNumPtr, int *endNumPtr, int *countUpstepPtr, bool *countUpDonePtr, int *bonusPtr)
Handle mouse input relative to the quiz options.
Definition: quizLogic.cpp:10
RLAPI const char * TextFormat(const char *text,...)
Definition: rtext.c:1278
RLAPI void InitWindow(int width, int height, const char *title)
Definition: rcore.c:723
RLAPI void BeginMode2D(Camera2D camera)
Definition: rcore.c:2120
RLAPI void CloseWindow(void)
Definition: rcore.c:926
RLAPI bool WindowShouldClose(void)
Definition: rcore.c:1074
#define RAYWHITE
Definition: raylib.h:174
RLAPI void ClearBackground(Color color)
Definition: rcore.c:1985
RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int glyphCount)
Definition: rtext.c:345
RLAPI Texture2D LoadTexture(const char *fileName)
Definition: rtextures.c:2874
RLAPI void BeginDrawing(void)
Definition: rcore.c:1992
RLAPI void UnloadTexture(Texture2D texture)
Definition: rtextures.c:3034
RLAPI void EndDrawing(void)
Definition: rcore.c:2009
#define WHITE
Definition: raylib.h:170
RLAPI int GetScreenWidth(void)
Definition: rcore.c:1617
RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color)
Definition: rshapes.c:145
RLAPI Vector2 GetScreenToWorld2D(Vector2 position, Camera2D camera)
Definition: rcore.c:2666
RLAPI Vector2 GetMousePosition(void)
Definition: rcore.c:3761
RLAPI int GetScreenHeight(void)
Definition: rcore.c:1623
RLAPI int GetRandomValue(int min, int max)
Definition: rcore.c:2779
RLAPI void EndMode2D(void)
Definition: rcore.c:2134
RLAPI void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint)
Definition: rtext.c:1024
RLAPI void DrawTexture(Texture2D texture, int posX, int posY, Color tint)
Definition: rtextures.c:3183
RLAPI void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint)
Definition: rtextures.c:3195
Define Active city animation frame struct.
Definition: animations.h:24
float rotation
Definition: raylib.h:313
Vector2 offset
Definition: raylib.h:311
Vector2 target
Definition: raylib.h:312
float zoom
Definition: raylib.h:314
Define Circle.
Definition: menu.h:17
Initialise cities.
Definition: cityOperations.h:8
const char * textureFilePath
bool wasVisited
std::string name
Definition: raylib.h:289
Define Pop up animation frame.
Definition: animations.h:39
Definition: timer.h:5
float radius
Definition: menu.h:32
float x
Definition: physac.h:130
float y
Definition: physac.h:131
Definition: menu.h:7
void StartTimer(Timer *timer, float lifetime)
Start or restart a timer with a specific lifetime.
Definition: timer.cpp:7
void UpdateTimer(Timer *timer)
Update a timer with the current frame time.
Definition: timer.cpp:18
bool TimerDone(Timer *timer)
Check if a timer is done.
Definition: timer.cpp:30
void travelToNextCity(Vector2 mousePoint, City *cities, City activeCity, City *tempCity, bool *searchingNextCity, bool *showPopUpMenu, int citiesCounter, int *indexPtr)
Travel to next selected city (if possible).
Definition: travelLogic.cpp:11
void handlePopUpInput(City *cities, City *activeCity, City *tempCity, PopUpAnimationFrame popUpFrame, Rectangle confirmHitbox, Rectangle denyHitbox, std::vector< LinePoints > *conLinesPtr, bool *searchingNextCity, bool *showPopUpMenu, bool *nextCityChosenPtr, int *indexPtr, int *travelPointsPtr, int *bonusPtr)
Handle mouse input for the pop-up.
Definition: travelLogic.cpp:44
#define lineColor
Definition: travelLogic.h:8