diff --git a/main/waypoints b/main/waypoints index 0c0a235..9bf825c 160000 --- a/main/waypoints +++ b/main/waypoints @@ -1 +1 @@ -Subproject commit 0c0a2358f6e216faae6681eda451d206897f03a4 +Subproject commit 9bf825ca5a80de67a924fe8f1ace2b6cefccae3f diff --git a/main_shared/maps/mp/bots/_bot_http.gsc b/main_shared/maps/mp/bots/_bot_http.gsc index 0c7b1bf..fb471a4 100644 --- a/main_shared/maps/mp/bots/_bot_http.gsc +++ b/main_shared/maps/mp/bots/_bot_http.gsc @@ -1,13 +1,50 @@ +/* + _bot_http + Author: INeedGames + Date: 12/16/2020 + The HTTP module +*/ + +#include maps\mp\bots\_bot_utility; + +/* + Will attempt to retreive waypoints from the internet +*/ getRemoteWaypoints(mapname) { - println("MAP"); -} - -getRemoteVersion() -{ - println("VERSION"); + url = "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/" + mapname + "_wp.csv"; + filename = "waypoints/" + mapname + "_wp.csv"; + + println("Attempting to get remote waypoints from " + url); + res = getLinesFromUrl(url, filename); + + if (!res.lines.size) + return; + + waypointCount = int(res.lines[0]); + + waypoints = []; + println("Loading remote waypoints..."); + + for (i = 1; i <= waypointCount; i++) + { + tokens = tokenizeLine(res.lines[i], ","); + + waypoint = parseTokensIntoWaypoint(tokens); + + waypoints[i-1] = waypoint; + } + + if (waypoints.size) + { + level.waypoints = waypoints; + println("Loaded " + waypoints.size + " waypoints from remote."); + } } +/* + Does the version check, if we are up too date +*/ doVersionCheck() { remoteVersion = getRemoteVersion(); @@ -28,3 +65,71 @@ doVersionCheck() println("You are on the latest version of Bot Warfare!"); return true; } + +/* + Returns the version of bot warfare found on the internet +*/ +getRemoteVersion() +{ +#if isSyscallDefined HTTPS_GetString + data = HTTPS_GetString( "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/version.txt" ); +#else + data = undefined; +#endif + + if (!isDefined(data)) + return undefined; + + return strtok(data, "\n")[0]; +} + +/* + Returns an array of each line from the response of the http url request +*/ +getLinesFromUrl(url, filename) +{ + result = spawnStruct(); + result.lines = []; + +#if isSyscallDefined HTTPS_GetString + data = HTTPS_GetString( url ); +#else + data = undefined; +#endif + + if (!isDefined(data)) + return result; + + fd = FS_FOpen(filename, "write"); + + line = ""; + for (i=0;i 0) + { + if (!FS_WriteLine(fd, line)) + { + FS_FClose(fd); + fd = 0; + } + } + + line = ""; + continue; + } + + line += c; + } + result.lines[result.lines.size] = line; + + if (fd > 0) + FS_FClose(fd); + + return result; +} diff --git a/main_shared/maps/mp/bots/_bot_utility.gsc b/main_shared/maps/mp/bots/_bot_utility.gsc index 53194f6..b668b19 100644 --- a/main_shared/maps/mp/bots/_bot_utility.gsc +++ b/main_shared/maps/mp/bots/_bot_utility.gsc @@ -952,6 +952,9 @@ readWpsFromFile(mapname) for (i = 1; i <= waypointCount; i++) { line = FS_ReadLine(csv); + if (!isDefined(line) || line == "") + continue; + tokens = tokenizeLine(line, ","); waypoint = parseTokensIntoWaypoint(tokens);