mirror of
https://github.com/ineedbots/iw3_bot_warfare.git
synced 2025-04-20 17:55:42 +00:00
waypoint file loading
This commit is contained in:
parent
ab20b2ea40
commit
eda726f6da
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
load_waypoints();
|
thread load_waypoints();
|
||||||
cac_init_patch();
|
cac_init_patch();
|
||||||
thread hook_callbacks();
|
thread hook_callbacks();
|
||||||
|
|
||||||
|
@ -584,6 +584,92 @@ cac_init_patch()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tokenizeLine(line, tok)
|
||||||
|
{
|
||||||
|
tokens = [];
|
||||||
|
|
||||||
|
token = "";
|
||||||
|
for (i = 0; i < line.size; i++)
|
||||||
|
{
|
||||||
|
c = line[i];
|
||||||
|
|
||||||
|
if (c == tok)
|
||||||
|
{
|
||||||
|
tokens[tokens.size] = token;
|
||||||
|
token = "";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
token += c;
|
||||||
|
}
|
||||||
|
tokens[tokens.size] = token;
|
||||||
|
|
||||||
|
return tokens;
|
||||||
|
}
|
||||||
|
|
||||||
|
parseTokensIntoWaypoint(tokens)
|
||||||
|
{
|
||||||
|
waypoint = spawnStruct();
|
||||||
|
|
||||||
|
orgStr = tokens[0];
|
||||||
|
orgToks = strtok(orgStr, " ");
|
||||||
|
waypoint.origin = (float(orgToks[0]), float(orgToks[1]), float(orgToks[2]));
|
||||||
|
|
||||||
|
childStr = tokens[1];
|
||||||
|
childToks = strtok(childStr, " ");
|
||||||
|
waypoint.childCount = childToks.size;
|
||||||
|
waypoint.children = [];
|
||||||
|
for( j=0; j<childToks.size; j++ )
|
||||||
|
waypoint.children[j] = int(childToks[j]);
|
||||||
|
|
||||||
|
type = tokens[2];
|
||||||
|
waypoint.type = type;
|
||||||
|
|
||||||
|
anglesStr = tokens[3];
|
||||||
|
if (isDefined(anglesStr) && anglesStr != "")
|
||||||
|
{
|
||||||
|
anglesToks = strtok(anglesStr, " ");
|
||||||
|
waypoint.angles = (float(anglesToks[0]), float(anglesToks[1]), float(anglesToks[2]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return waypoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
readWpsFromFile(mapname)
|
||||||
|
{
|
||||||
|
waypoints = [];
|
||||||
|
filename = "waypoints/" + mapname + "_wp.csv";
|
||||||
|
|
||||||
|
if (!FS_TestFile(filename))
|
||||||
|
return waypoints;
|
||||||
|
|
||||||
|
println("Attempting to read waypoints from " + filename);
|
||||||
|
|
||||||
|
csv = FS_FOpen(filename, "read");
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
waypointCount = int(FS_ReadLine(csv));
|
||||||
|
if (waypointCount <= 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
for (i = 1; i <= waypointCount; i++)
|
||||||
|
{
|
||||||
|
line = FS_ReadLine(csv);
|
||||||
|
tokens = tokenizeLine(line, ",");
|
||||||
|
|
||||||
|
waypoint = parseTokensIntoWaypoint(tokens);
|
||||||
|
|
||||||
|
waypoints[i-1] = waypoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
FS_FClose(csv);
|
||||||
|
return waypoints;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Loads the waypoints. Populating everything needed for the waypoints.
|
Loads the waypoints. Populating everything needed for the waypoints.
|
||||||
*/
|
*/
|
||||||
@ -591,8 +677,18 @@ load_waypoints()
|
|||||||
{
|
{
|
||||||
mapname = getDvar("mapname");
|
mapname = getDvar("mapname");
|
||||||
|
|
||||||
|
level.waypointCount = 0;
|
||||||
level.waypoints = [];
|
level.waypoints = [];
|
||||||
|
|
||||||
|
wps = readWpsFromFile(mapname);
|
||||||
|
|
||||||
|
if (wps.size)
|
||||||
|
{
|
||||||
|
level.waypoints = wps;
|
||||||
|
println("Loaded " + wps.size + " waypoints from file.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
switch(mapname)
|
switch(mapname)
|
||||||
{
|
{
|
||||||
case "mp_convoy":
|
case "mp_convoy":
|
||||||
@ -663,6 +759,10 @@ load_waypoints()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (level.waypoints.size)
|
||||||
|
println("Loaded " + level.waypoints.size + " waypoints from script.");
|
||||||
|
}
|
||||||
|
|
||||||
level.waypointCount = level.waypoints.size;
|
level.waypointCount = level.waypoints.size;
|
||||||
|
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
for(i = 0; i < level.waypointCount; i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user