[Cleanup] Cleanup #door Command. (#2783)

* [Cleanup] Cleanup #door Command.

# Notes
- Resolves an issue with `.1` versus `0.1`.
- Resolves an issue with updating a pre-existing door.
- Adds `heading` to the update/insert.

* Update doors.cpp
This commit is contained in:
Alex King 2023-01-24 17:37:21 -05:00 committed by GitHub
parent 08c8393988
commit bf39a0540c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 75 additions and 76 deletions

View File

@ -802,20 +802,75 @@ void Doors::CreateDatabaseEntry()
return;
}
content_db.InsertDoor(
GetDoorDBID(),
GetDoorID(),
GetDoorName(),
m_position,
GetOpenType(),
static_cast<uint16>(GetGuildID()),
GetLockpick(),
GetKeyItem(),
static_cast<uint8>(GetDoorParam()),
static_cast<uint8>(GetInvertState()),
GetIncline(),
GetSize()
const auto& l = DoorsRepository::GetWhere(
content_db,
fmt::format(
"zone = '{}' AND doorid = {}",
zone->GetShortName(),
GetDoorID()
)
);
if (!l.empty()) {
auto e = l[0];
e.name = GetDoorName();
e.pos_x = GetX();
e.pos_y = GetY();
e.pos_z = GetZ();
e.heading = GetHeading();
e.opentype = GetOpenType();
e.guild = static_cast<uint16>(GetGuildID());
e.lockpick = GetLockpick();
e.keyitem = GetKeyItem();
e.door_param = static_cast<uint8>(GetDoorParam());
e.invert_state = static_cast<uint8>(GetInvertState());
e.incline = GetIncline();
e.size = GetSize();
auto updated = DoorsRepository::UpdateOne(content_db, e);
if (!updated) {
LogError(
"Failed to update door in Zone [{}] Version [{}] Database ID [{}] ID [{}]",
zone->GetShortName(),
zone->GetInstanceVersion(),
GetDoorDBID(),
GetDoorID()
);
}
return;
}
auto e = DoorsRepository::NewEntity();
e.id = GetDoorDBID();
e.doorid = GetDoorID();
e.zone = zone->GetShortName();
e.version = zone->GetInstanceVersion();
e.name = GetDoorName();
e.pos_x = GetX();
e.pos_y = GetY();
e.pos_z = GetZ();
e.heading = GetHeading();
e.opentype = GetOpenType();
e.guild = static_cast<uint16>(GetGuildID());
e.lockpick = GetLockpick();
e.keyitem = GetKeyItem();
e.door_param = static_cast<uint8>(GetDoorParam());
e.invert_state = static_cast<uint8>(GetInvertState());
e.incline = GetIncline();
e.size = GetSize();
const auto& n = DoorsRepository::InsertOne(content_db, e);
if (!n.id) {
LogError(
"Failed to create door in Zone [{}] Version [{}] Database ID [{}] ID [{}]",
zone->GetShortName(),
zone->GetInstanceVersion(),
GetDoorDBID(),
GetDoorID()
);
}
}
float Doors::GetX()
@ -832,3 +887,8 @@ float Doors::GetZ()
{
return m_position.z;
}
float Doors::GetHeading()
{
return m_position.w;
}

View File

@ -65,6 +65,7 @@ public:
float GetX();
float GetY();
float GetZ();
float GetHeading();
private:

View File

@ -187,7 +187,7 @@ void DoorManipulation::CommandHandler(Client *c, const Seperator *sep)
std::vector<std::string> set_size_options_negative;
std::vector<std::string> xyz_values = {
".1", "1", "5", "10", "25", "50", "100"
"0.1", "1", "5", "10", "25", "50", "100"
};
// build positive options x/y/z

View File

@ -3075,53 +3075,6 @@ void ZoneDatabase::QGlobalPurge()
database.QueryDatabase(query);
}
void ZoneDatabase::InsertDoor(
uint32 database_id,
uint8 id,
std::string name,
const glm::vec4 &position,
uint8 open_type,
uint16 guild_id,
uint32 lockpick,
uint32 key_item_id,
uint8 door_param,
uint8 invert,
int incline,
uint16 size,
bool disable_timer
) {
auto e = DoorsRepository::NewEntity();
e.id = database_id;
e.doorid = id;
e.zone = zone->GetShortName();
e.version = zone->GetInstanceVersion();
e.name = name;
e.pos_x = position.x;
e.pos_y = position.y;
e.pos_z = position.z;
e.opentype = open_type;
e.guild = guild_id;
e.lockpick = lockpick;
e.keyitem = key_item_id;
e.disable_timer = static_cast<int8_t>(disable_timer);
e.door_param = door_param;
e.invert_state = invert;
e.incline = incline;
e.size = size;
const auto& n = DoorsRepository::InsertOne(*this, e);
if (!n.id) {
LogError(
"Failed to create door in Zone [{}] Version [{}] Database ID [{}] ID [{}]",
zone->GetShortName(),
zone->GetInstanceVersion(),
database_id,
id
);
}
}
void ZoneDatabase::LoadAltCurrencyValues(uint32 char_id, std::map<uint32, uint32> &currency) {
std::string query = StringFormat("SELECT currency_id, amount "

View File

@ -570,21 +570,6 @@ public:
std::vector<DoorsRepository::Doors> LoadDoors(const std::string& zone_name, int16 version);
uint32 GetDoorsCountPlusOne();
int GetDoorsDBCountPlusOne(std::string zone_short_name, int16 version);
void InsertDoor(
uint32 database_id,
uint8 id,
std::string name,
const glm::vec4 &position,
uint8 open_type,
uint16 guild_id,
uint32 ockpick,
uint32 key_item_id,
uint8 door_param,
uint8 invert,
int incline,
uint16 size,
bool disable_timer = false
);
/* Blocked Spells */
int32 GetBlockedSpellsCount(uint32 zoneid);