From 8933452364e603693a438831bba3bbfc98b91c09 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sat, 2 Jan 2021 21:31:56 +0100 Subject: [PATCH] BotLib: Add a visual line indicator for the link you'll be making. --- src/botlib/way.c | 124 +++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/src/botlib/way.c b/src/botlib/way.c index 6fc0aee8..a83ea6bd 100644 --- a/src/botlib/way.c +++ b/src/botlib/way.c @@ -30,6 +30,10 @@ typedef struct waypoint_s static waypoint_t *g_pWaypoints; static int g_iWaypoints; +static int g_waylink_status; +var int g_way1 = -1; +var int g_way2 = -1; + static void Way_WipeWaypoints(void) { @@ -189,81 +193,75 @@ Way_FindClosestNode(vector vecOrigin) void Way_FlagJump(void) { - static int waylink_status; - static int way1, way2; - - if (waylink_status == 0) { - way1 = Way_FindClosestNode(self.origin); - waylink_status = 1; + if (g_waylink_status == 0) { + g_way1 = Way_FindClosestNode(self.origin); + g_waylink_status = 1; env_message_single(self, "^2Selected first waypoint!\n"); - } else if (waylink_status == 1) { - way2 = Way_FindClosestNode(self.origin); - waylink_status = 0; + } else if (g_waylink_status == 1) { + g_way2 = Way_FindClosestNode(self.origin); + g_waylink_status = 0; - if (way1 != way2) { - for (int b = 0i; b < g_pWaypoints[way1].m_numNeighbours; b++) { - if (g_pWaypoints[way1].m_pNeighbour[b].m_iNode == way2) { - g_pWaypoints[way1].m_pNeighbour[b].m_iFlags |= LF_JUMP; + if (g_way1 != g_way2) { + for (int b = 0i; b < g_pWaypoints[g_way1].m_numNeighbours; b++) { + if (g_pWaypoints[g_way1].m_pNeighbour[b].m_iNode == g_way2) { + g_pWaypoints[g_way1].m_pNeighbour[b].m_iFlags |= LF_JUMP; env_message_single(self, "^2Jump-linked the two points!\n"); } } } else { env_message_single(self, "^1Failed to link, the two points are the same!\n"); } + g_way1 = g_way2 = -1; } } void Way_FlagCrouch(void) { - static int waylink_status; - static int way1, way2; - - if (waylink_status == 0) { - way1 = Way_FindClosestNode(self.origin); - waylink_status = 1; + if (g_waylink_status == 0) { + g_way1 = Way_FindClosestNode(self.origin); + g_waylink_status = 1; env_message_single(self, "^2Selected first waypoint!\n"); - } else if (waylink_status == 1) { - way2 = Way_FindClosestNode(self.origin); - waylink_status = 0; + } else if (g_waylink_status == 1) { + g_way2 = Way_FindClosestNode(self.origin); + g_waylink_status = 0; - if (way1 != way2) { - for (int b = 0i; b < g_pWaypoints[way1].m_numNeighbours; b++) { - if (g_pWaypoints[way1].m_pNeighbour[b].m_iNode == way2) { - g_pWaypoints[way1].m_pNeighbour[b].m_iFlags |= LF_CROUCH; + if (g_way1 != g_way2) { + for (int b = 0i; b < g_pWaypoints[g_way1].m_numNeighbours; b++) { + if (g_pWaypoints[g_way1].m_pNeighbour[b].m_iNode == g_way2) { + g_pWaypoints[g_way1].m_pNeighbour[b].m_iFlags |= LF_CROUCH; env_message_single(self, "^2Crouch-linked the two points!\n"); } } } else { env_message_single(self, "^1Failed to link, the two points are the same!\n"); } + g_way1 = g_way2 = -1; } } void Way_FlagWalk(void) { - static int waylink_status; - static int way1, way2; - - if (waylink_status == 0) { - way1 = Way_FindClosestNode(self.origin); - waylink_status = 1; + if (g_waylink_status == 0) { + g_way1 = Way_FindClosestNode(self.origin); + g_waylink_status = 1; env_message_single(self, "^2Selected first waypoint!\n"); - } else if (waylink_status == 1) { - way2 = Way_FindClosestNode(self.origin); - waylink_status = 0; + } else if (g_waylink_status == 1) { + g_way2 = Way_FindClosestNode(self.origin); + g_waylink_status = 0; - if (way1 != way2) { - for (int b = 0i; b < g_pWaypoints[way1].m_numNeighbours; b++) { - if (g_pWaypoints[way1].m_pNeighbour[b].m_iNode == way2) { - g_pWaypoints[way1].m_pNeighbour[b].m_iFlags |= LF_WALK; + if (g_way1 != g_way2) { + for (int b = 0i; b < g_pWaypoints[g_way1].m_numNeighbours; b++) { + if (g_pWaypoints[g_way1].m_pNeighbour[b].m_iNode == g_way2) { + g_pWaypoints[g_way1].m_pNeighbour[b].m_iFlags |= LF_WALK; env_message_single(self, "^2Walk-linked the two points!\n"); } } } else { env_message_single(self, "^1Failed to link, the two points are the same!\n"); } + g_way1 = g_way2 = -1; } } @@ -362,47 +360,43 @@ Way_ReadFile(string strFile) void Way_ConnectOne(void) { - static int waylink_status; - static int way1, way2; - - if (waylink_status == 0) { - way1 = Way_FindClosestNode(self.origin); - waylink_status = 1; + if (g_waylink_status == 0) { + g_way1 = Way_FindClosestNode(self.origin); + g_waylink_status = 1; env_message_single(self, "^21/2 nodes selected... \n"); - } else if (waylink_status == 1) { - way2 = Way_FindClosestNode(self.origin); - waylink_status = 0; + } else if (g_waylink_status == 1) { + g_way2 = Way_FindClosestNode(self.origin); + g_waylink_status = 0; - if (way1 != way2) { - Way_LinkNodes(&g_pWaypoints[way1], &g_pWaypoints[way2]); + if (g_way1 != g_way2) { + Way_LinkNodes(&g_pWaypoints[g_way1], &g_pWaypoints[g_way2]); env_message_single(self, "^22/2 nodes selected, done!\n"); } else { env_message_single(self, "^1Failed to link, the two points are the same!\n"); } + g_way1 = g_way2 = -1; } } void Way_ConnectTwo(void) { - static int waylink_status; - static int way1, way2; - - if (waylink_status == 0) { - way1 = Way_FindClosestNode(self.origin); - waylink_status = 1; + if (g_waylink_status == 0) { + g_way1 = Way_FindClosestNode(self.origin); + g_waylink_status = 1; env_message_single(self, "^21/2 nodes selected... \n"); - } else if (waylink_status == 1) { - way2 = Way_FindClosestNode(self.origin); - waylink_status = 0; + } else if (g_waylink_status == 1) { + g_way2 = Way_FindClosestNode(self.origin); + g_waylink_status = 0; - if (way1 != way2) { - Way_LinkNodes(&g_pWaypoints[way1], &g_pWaypoints[way2]); - Way_LinkNodes(&g_pWaypoints[way2], &g_pWaypoints[way1]); + if (g_way1 != g_way2) { + Way_LinkNodes(&g_pWaypoints[g_way1], &g_pWaypoints[g_way2]); + Way_LinkNodes(&g_pWaypoints[g_way2], &g_pWaypoints[g_way1]); env_message_single(self, "^22/2 nodes selected, done!\n"); } else { env_message_single(self, "^1Failed to link, the two points are the same!\n"); } + g_way1 = g_way2 = -1; } } @@ -541,6 +535,12 @@ Way_DrawDebugInfo(void) } } + if (g_way1 >= 0) { + R_PolygonVertex(g_pWaypoints[g_way1]->m_vecOrigin, [0,1], [0,1,0], 1); + R_PolygonVertex(self.origin, [1,1], [0,1,0], 1); + R_EndPolygon(); + } + R_BeginPolygon("", 0, 0); for (int i = 0i; i < g_iWaypoints; i++) { vector rgb;