Convert guild_db to unordered_map (#7612)

* Refactor guild db to STL container

* Split up struct guild and MapGuild/CharGuild
This commit is contained in:
Vincent Stumpf
2023-06-16 19:42:55 -07:00
committed by GitHub
parent 39cdaa6b84
commit 833966f47b
21 changed files with 962 additions and 1016 deletions

View File

@@ -684,7 +684,7 @@ int mob_once_spawn(map_session_data* sd, int16 m, int16 x, int16 y, const char*
if (mob_id == MOBID_EMPERIUM)
{
std::shared_ptr<guild_castle> gc = castle_db.mapindex2gc(map_getmapdata(m)->index);
struct guild* g = (gc) ? guild_search(gc->guild_id) : nullptr;
auto g = (gc) ? guild_search(gc->guild_id) : nullptr;
if (gc)
{
md->guardian_data = (struct guardian_data*)aCalloc(1, sizeof(struct guardian_data));
@@ -694,8 +694,8 @@ int mob_once_spawn(map_session_data* sd, int16 m, int16 x, int16 y, const char*
md->guardian_data->guild_id = gc->guild_id;
if (g)
{
md->guardian_data->emblem_id = g->emblem_id;
memcpy(md->guardian_data->guild_name, g->name, NAME_LENGTH);
md->guardian_data->emblem_id = g->guild.emblem_id;
memcpy(md->guardian_data->guild_name, g->guild.name, NAME_LENGTH);
}
else if (gc->guild_id) // Guild is not yet available, retry after the configured timespan.
add_timer(gettick() + battle_config.mob_respawn_time,mob_spawn_guardian_sub,md->bl.id,md->guardian_data->guild_id);
@@ -774,7 +774,6 @@ static TIMER_FUNC(mob_spawn_guardian_sub){
//Needed because the guild_data may not be available at guardian spawn time.
struct block_list* bl = map_id2bl(id);
struct mob_data* md;
struct guild* g;
int guardup_lv;
if (bl == nullptr) //It is possible mob was already removed from map when the castle has no owner. [Skotlex]
@@ -788,7 +787,7 @@ static TIMER_FUNC(mob_spawn_guardian_sub){
md = (struct mob_data*)bl;
nullpo_ret(md->guardian_data);
g = guild_search((int)data);
auto g = guild_search((int)data);
if (g == nullptr)
{ //Liberate castle, if the guild is not found this is an error! [Skotlex]
@@ -808,9 +807,9 @@ static TIMER_FUNC(mob_spawn_guardian_sub){
}
return 0;
}
guardup_lv = guild_checkskill(g,GD_GUARDUP);
md->guardian_data->emblem_id = g->emblem_id;
memcpy(md->guardian_data->guild_name, g->name, NAME_LENGTH);
guardup_lv = guild_checkskill(g->guild, GD_GUARDUP);
md->guardian_data->emblem_id = g->guild.emblem_id;
memcpy(md->guardian_data->guild_name, g->guild.name, NAME_LENGTH);
md->guardian_data->guardup_lv = guardup_lv;
if( guardup_lv )
status_calc_mob(md, SCO_NONE); //Give bonuses.
@@ -824,7 +823,7 @@ int mob_spawn_guardian(const char* mapname, int16 x, int16 y, const char* mobnam
{
struct mob_data *md=nullptr;
struct spawn_data data;
struct guild *g=nullptr;
std::shared_ptr<MapGuild> g = nullptr;
int16 m;
memset(&data, 0, sizeof(struct spawn_data)); //fixme
data.num = 1;
@@ -913,9 +912,9 @@ int mob_spawn_guardian(const char* mapname, int16 x, int16 y, const char* mobnam
}
if (g)
{
md->guardian_data->emblem_id = g->emblem_id;
memcpy (md->guardian_data->guild_name, g->name, NAME_LENGTH);
md->guardian_data->guardup_lv = guild_checkskill(g,GD_GUARDUP);
md->guardian_data->emblem_id = g->guild.emblem_id;
memcpy (md->guardian_data->guild_name, g->guild.name, NAME_LENGTH);
md->guardian_data->guardup_lv = guild_checkskill(g->guild,GD_GUARDUP);
} else if (md->guardian_data->guild_id)
add_timer(gettick() + battle_config.mob_respawn_time,mob_spawn_guardian_sub,md->bl.id,md->guardian_data->guild_id);
mob_spawn(md);
@@ -3212,7 +3211,6 @@ void mob_revive(struct mob_data *md, unsigned int hp)
int mob_guardian_guildchange(struct mob_data *md)
{
struct guild *g;
nullpo_ret(md);
if (!md->guardian_data)
@@ -3233,7 +3231,7 @@ int mob_guardian_guildchange(struct mob_data *md)
return 0;
}
g = guild_search(md->guardian_data->castle->guild_id);
auto g = guild_search(md->guardian_data->castle->guild_id);
if (g == NULL)
{ //Properly remove guardian info from Castle data.
ShowError("mob_guardian_guildchange: New Guild (id %d) does not exists!\n", md->guardian_data->guild_id);
@@ -3243,10 +3241,10 @@ int mob_guardian_guildchange(struct mob_data *md)
return 0;
}
md->guardian_data->guild_id = g->guild_id;
md->guardian_data->emblem_id = g->emblem_id;
md->guardian_data->guardup_lv = guild_checkskill(g,GD_GUARDUP);
memcpy(md->guardian_data->guild_name, g->name, NAME_LENGTH);
md->guardian_data->guild_id = g->guild.guild_id;
md->guardian_data->emblem_id = g->guild.emblem_id;
md->guardian_data->guardup_lv = guild_checkskill(g->guild, GD_GUARDUP);
memcpy(md->guardian_data->guild_name, g->guild.name, NAME_LENGTH);
return 1;
}