mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
[Strings] Add more number formatters (#2873)
* [Strings] Add more number formatters # Notes - Adds `Strings::ToUnsignedInt` for `uint32` support. - Adds `Strings::ToBigInt` for `int64` support. - Adds `Strings::ToUnsignedBigInt` for `uint64` support. - Adds `Strings::ToFloat` for `float` support. - Replaces all `std::stoi` references with `Strings::ToInt`. - Replaces all `atoi` references with `Strings::ToInt`. - Replaces all `std::stoul` references with `Strings::ToUnsignedInt`. - Replaces all `atoul` references with `Strings::ToUnsignedInt`. - Replaces all `std::stoll` references with `Strings::ToBigInt`. - Replaces all `atoll` references with `Strings::ToBigInt`. - Replaces all `std::stoull` references with `Strings::ToUnsignedBigInt`. - Replaces all `atoull` references with `Strings::ToUnsignedBigInt`. - Replaces all `std::stof` references with `Strings::ToFloat`. * [Strings] Add more number formatters - Adds `Strings::ToUnsignedInt` for `uint32` support. - Adds `Strings::ToBigInt` for `int64` support. - Adds `Strings::ToUnsignedBigInt` for `uint64` support. - Adds `Strings::ToFloat` for `float` support. - Replaces all `std::stoi` references with `Strings::ToInt`. - Replaces all `atoi` references with `Strings::ToInt`. - Replaces all `std::stoul` references with `Strings::ToUnsignedInt`. - Replaces all `atoul` references with `Strings::ToUnsignedInt`. - Replaces all `std::stoll` references with `Strings::ToBigInt`. - Replaces all `atoll` references with `Strings::ToBigInt`. - Replaces all `std::stoull` references with `Strings::ToUnsignedBigInt`. - Replaces all `atoull` references with `Strings::ToUnsignedBigInt`. - Replaces all `std::stof` references with `Strings::ToFloat`. * Rebase cleanup * Changes/benchmarks/tests --------- Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
@@ -19,8 +19,8 @@ Fear Pathing generation utility.
|
||||
|
||||
bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &db_paths, list<PathNode*> &end_points) {
|
||||
char query[512];
|
||||
|
||||
sprintf(query,
|
||||
|
||||
sprintf(query,
|
||||
"SELECT x,y,z,gridid FROM grid_entries,zone "
|
||||
"WHERE zone.zoneidnumber=zoneid AND short_name='%s' "
|
||||
"ORDER BY gridid,number", zone);
|
||||
@@ -28,21 +28,21 @@ bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &
|
||||
printf("Unable to query: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_RES *res = mysql_store_result(m);
|
||||
if(res == NULL) {
|
||||
printf("Unable to store res: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
||||
PathNode *cur = NULL, *last = NULL, *first = NULL;
|
||||
PathGraph *g = NULL;
|
||||
int cur_g = -1,last_g = -1;
|
||||
|
||||
|
||||
// int lid = 0;
|
||||
|
||||
|
||||
while((row = mysql_fetch_row(res))) {
|
||||
last = cur;
|
||||
cur = new PathNode;
|
||||
@@ -50,7 +50,7 @@ bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &
|
||||
cur->x = atof(row[0]);
|
||||
cur->y = atof(row[1]);
|
||||
cur->z = atof(row[2]);
|
||||
cur_g = atoi(row[3]);
|
||||
cur_g = Strings::ToInt(row[3]);
|
||||
if(cur_g != last_g) {
|
||||
if(g != NULL) {
|
||||
//if we have a first and last node for this path
|
||||
@@ -70,15 +70,15 @@ bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &
|
||||
last_g = cur_g;
|
||||
last = NULL;
|
||||
}
|
||||
|
||||
|
||||
g->nodes.push_back(cur);
|
||||
|
||||
|
||||
#ifdef LINK_PATH_ENDPOINTS
|
||||
//this is a begining point
|
||||
if(last == NULL)
|
||||
end_points.push_back(cur);
|
||||
#endif
|
||||
|
||||
|
||||
if(last != NULL) {
|
||||
#ifdef SPLIT_INVALID_PATHS
|
||||
if(CheckLOS(map, last, cur)) {
|
||||
@@ -93,7 +93,7 @@ bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//handle the last active path
|
||||
if(g != NULL) {
|
||||
if(first != NULL && cur->Dist2(first) < ENDPOINT_CONNECT_MAX_DISTANCE*ENDPOINT_CONNECT_MAX_DISTANCE) {
|
||||
@@ -102,7 +102,7 @@ bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &
|
||||
}
|
||||
db_paths.push_back(g);
|
||||
}
|
||||
|
||||
|
||||
mysql_free_result(res);
|
||||
return(true);
|
||||
}
|
||||
@@ -110,25 +110,25 @@ bool load_paths_from_db(MYSQL *m, Map *map, const char *zone, list<PathGraph*> &
|
||||
|
||||
bool load_spawns_from_db(MYSQL *m, const char *zone, list<PathNode*> &db_spawns) {
|
||||
char query[512];
|
||||
|
||||
sprintf(query,
|
||||
|
||||
sprintf(query,
|
||||
"SELECT x,y,z FROM spawn2 "
|
||||
"WHERE zone='%s'", zone);
|
||||
if(mysql_query(m, query) != 0) {
|
||||
printf("Unable to query: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_RES *res = mysql_store_result(m);
|
||||
if(res == NULL) {
|
||||
printf("Unable to store res: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
||||
PathNode *cur = NULL;
|
||||
|
||||
|
||||
while((row = mysql_fetch_row(res))) {
|
||||
cur = new PathNode;
|
||||
cur->x = atof(row[0]);
|
||||
@@ -136,34 +136,34 @@ bool load_spawns_from_db(MYSQL *m, const char *zone, list<PathNode*> &db_spawns)
|
||||
cur->z = atof(row[2]);
|
||||
db_spawns.push_back(cur);
|
||||
}
|
||||
|
||||
|
||||
mysql_free_result(res);
|
||||
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
||||
bool load_doors_from_db(MYSQL *m, const char *zone, list<PathNode*> &db_spawns) {
|
||||
char query[512];
|
||||
|
||||
sprintf(query,
|
||||
|
||||
sprintf(query,
|
||||
"SELECT pos_x,pos_y,pos_z FROM doors "
|
||||
"WHERE zone='%s'", zone);
|
||||
if(mysql_query(m, query) != 0) {
|
||||
printf("Unable to query: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_RES *res = mysql_store_result(m);
|
||||
if(res == NULL) {
|
||||
printf("Unable to store res: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
||||
PathNode *cur = NULL;
|
||||
|
||||
|
||||
while((row = mysql_fetch_row(res))) {
|
||||
cur = new PathNode;
|
||||
cur->x = atof(row[0]);
|
||||
@@ -173,54 +173,54 @@ bool load_doors_from_db(MYSQL *m, const char *zone, list<PathNode*> &db_spawns)
|
||||
//doors, not the edge of them which I assume these points are
|
||||
db_spawns.push_back(cur);
|
||||
}
|
||||
|
||||
|
||||
mysql_free_result(res);
|
||||
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
||||
bool load_hints_from_db(MYSQL *m, const char *zone, list<PathNode*> &db_spawns) {
|
||||
char query[512];
|
||||
|
||||
sprintf(query,
|
||||
|
||||
sprintf(query,
|
||||
"SELECT x,y,z,forced,disjoint FROM fear_hints "
|
||||
"WHERE zone='%s'", zone);
|
||||
if(mysql_query(m, query) != 0) {
|
||||
printf("Unable to query: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_RES *res = mysql_store_result(m);
|
||||
if(res == NULL) {
|
||||
printf("Unable to store res: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
||||
PathNode *cur = NULL;
|
||||
|
||||
|
||||
while((row = mysql_fetch_row(res))) {
|
||||
cur = new PathNode;
|
||||
cur->x = atof(row[0]);
|
||||
cur->y = atof(row[1]);
|
||||
cur->z = atof(row[2]);
|
||||
cur->forced = atoi(row[3])?true:false;
|
||||
cur->disjoint = atoi(row[4])?true:false;
|
||||
cur->forced = Strings::ToInt(row[3])?true:false;
|
||||
cur->disjoint = Strings::ToInt(row[4])?true:false;
|
||||
db_spawns.push_back(cur);
|
||||
}
|
||||
|
||||
|
||||
mysql_free_result(res);
|
||||
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
||||
bool load_settings_from_db(MYSQL *m, const char *zone) {
|
||||
char query[512];
|
||||
|
||||
sprintf(query,
|
||||
|
||||
sprintf(query,
|
||||
"SELECT use_doors, min_fix_z, max_fear_distance, image_scale, split_invalid_paths,"
|
||||
" link_path_endpoints, end_distance, split_long_min, split_long_step, same_dist, node_combine_dist,"
|
||||
" grid_combine_dist, close_all_los, cross_count, cross_min_length, cross_max_z_diff, cross_combine_dist,"
|
||||
@@ -231,46 +231,46 @@ bool load_settings_from_db(MYSQL *m, const char *zone) {
|
||||
// printf("Unable to query: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_RES *res = mysql_store_result(m);
|
||||
if(res == NULL) {
|
||||
// printf("Unable to store res: %s\n", mysql_error(m));
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
||||
int r = 0;
|
||||
if((row = mysql_fetch_row(res))) {
|
||||
INCLUDE_DOORS = atoi(row[r++])?true:false;
|
||||
INCLUDE_DOORS = Strings::ToInt(row[r++])?true:false;
|
||||
MIN_FIX_Z = atof(row[r++]);
|
||||
FEAR_MAXIMUM_DISTANCE = atof(row[r++]);
|
||||
IMAGE_SCALE = atoi(row[r++]);
|
||||
SPLIT_INVALID_PATHS = atoi(row[r++])?true:false;
|
||||
LINK_PATH_ENDPOINTS = atoi(row[r++])?true:false;
|
||||
IMAGE_SCALE = Strings::ToInt(row[r++]);
|
||||
SPLIT_INVALID_PATHS = Strings::ToInt(row[r++])?true:false;
|
||||
LINK_PATH_ENDPOINTS = Strings::ToInt(row[r++])?true:false;
|
||||
ENDPOINT_CONNECT_MAX_DISTANCE = atof(row[r++]);
|
||||
SPLIT_LINE_LENGTH = atof(row[r++]);
|
||||
SPLIT_LINE_INTERVAL = atof(row[r++]);
|
||||
CLOSE_ENOUGH = atof(row[r++]);
|
||||
CLOSE_ENOUGH_COMBINE = atof(row[r++]);
|
||||
MERGE_MIN_SECOND_DIST = atof(row[r++]);
|
||||
COMBINE_CHECK_ALL_LOS = atoi(row[r++])?true:false;
|
||||
CROSS_REDUCE_COUNT = atoi(row[r++]);
|
||||
COMBINE_CHECK_ALL_LOS = Strings::ToInt(row[r++])?true:false;
|
||||
CROSS_REDUCE_COUNT = Strings::ToInt(row[r++]);
|
||||
CROSS_MIN_LENGTH = atof(row[r++]);
|
||||
CROSS_MAX_Z_DIFF = atof(row[r++]);
|
||||
CLOSE_ENOUGH_CROSS = atof(row[r++]);
|
||||
|
||||
|
||||
SPAWN_MIN_SECOND_DIST = atof(row[r++]);
|
||||
MAX_LINK_SPAWN_DIST = atof(row[r++]);
|
||||
int sc = atoi(row[r++]);
|
||||
int sc = Strings::ToInt(row[r++]);
|
||||
SPAWN_LINK_TWICE = sc >= 2?true:false;
|
||||
SPAWN_LINK_THRICE = sc >= 3?true:false;
|
||||
mysql_free_result(res);
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
||||
mysql_free_result(res);
|
||||
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user