working state

This commit is contained in:
EmosewaMC 2022-03-27 23:46:43 -07:00
parent 0a7fd6f79a
commit 0a453e9dca
3 changed files with 78 additions and 23 deletions

View File

@ -1,4 +1,5 @@
#include <CDPropertyEntranceComponentTable.h> #include <CDPropertyEntranceComponentTable.h>
#include <chrono>
#include "PropertyEntranceComponent.h" #include "PropertyEntranceComponent.h"
#include "PropertySelectQueryProperty.h" #include "PropertySelectQueryProperty.h"
#include "RocketLaunchpadControlComponent.h" #include "RocketLaunchpadControlComponent.h"
@ -132,7 +133,7 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity,
orderBy = "p.last_updated"; orderBy = "p.last_updated";
} }
else if (sortMethod == SORT_TYPE_REPUTATION) { else if (sortMethod == SORT_TYPE_REPUTATION) {
orderBy = "p.reputation, p.last_updated"; orderBy = "p.reputation DESC, p.last_updated";
} }
else { else {
orderBy = "p.last_updated"; orderBy = "p.last_updated";
@ -156,13 +157,13 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity,
while (propertyEntry->next()) while (propertyEntry->next())
{ {
const auto propertyId = propertyEntry->getUInt64(1); const auto propertyId = propertyEntry->getUInt64(1);
const auto owner = propertyEntry->getUInt64(2); const auto owner = propertyEntry->getInt(2);
const auto cloneId = propertyEntry->getUInt64(4); const auto cloneId = propertyEntry->getUInt64(4);
const auto name = propertyEntry->getString(5).asStdString(); const auto name = propertyEntry->getString(5).asStdString();
const auto description = propertyEntry->getString(6).asStdString(); const auto description = propertyEntry->getString(6).asStdString();
const auto privacyOption = propertyEntry->getInt(9); const auto privacyOption = propertyEntry->getInt(9);
const auto modApproved = propertyEntry->getBoolean(10); const auto modApproved = propertyEntry->getBoolean(10);
const auto reputation = propertyEntry->getInt(15); const auto reputation = propertyEntry->getInt(14);
PropertySelectQueryProperty entry {}; PropertySelectQueryProperty entry {};
@ -182,7 +183,7 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity,
} }
else else
{ {
entry.IsOwner = owner == entity->GetCharacter()->GetID(); entry.IsOwned = owner == entity->GetCharacter()->GetID();
entry.OwnerName = nameResult->getString(1).asStdString(); entry.OwnerName = nameResult->getString(1).asStdString();
} }
@ -191,17 +192,13 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity,
entry.Name = name; entry.Name = name;
entry.Description = description; entry.Description = description;
} }
else
{
entry.Name = "[Awaiting approval] " + name;
entry.Description = "[Awaiting approval] " + description;
}
// Convert owner char id to LWOOBJID // Convert owner char id to LWOOBJID
LWOOBJID ownerObjId = owner; LWOOBJID ownerObjId = owner;
ownerObjId = GeneralUtils::SetBit(ownerObjId, OBJECT_BIT_CHARACTER); ownerObjId = GeneralUtils::SetBit(ownerObjId, OBJECT_BIT_CHARACTER);
ownerObjId = GeneralUtils::SetBit(ownerObjId, OBJECT_BIT_PERSISTENT); ownerObjId = GeneralUtils::SetBit(ownerObjId, OBJECT_BIT_PERSISTENT);
auto friendCheck = Database::CreatePreppedStmt("SELECT * FROM friends WHERE (player_id = ? AND friend_id = ?) OR (player_id = ? AND friend_id = ?)"); auto friendCheck = Database::CreatePreppedStmt("SELECT best_friend FROM friends WHERE (player_id = ? AND friend_id = ?) OR (player_id = ? AND friend_id = ?)");
friendCheck->setInt64(1, entity->GetObjectID()); friendCheck->setInt64(1, entity->GetObjectID());
friendCheck->setInt64(2, ownerObjId); friendCheck->setInt64(2, ownerObjId);
@ -213,35 +210,93 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity,
// If we got a result than the two players are friends. // If we got a result than the two players are friends.
if (friendResult->next()) { if (friendResult->next()) {
entry.IsFriend = true; entry.IsFriend = true;
if (friendResult->getBoolean(1) == true) {
entry.IsBestFriend = true;
} else {
entry.IsBestFriend = false;
}
} }
else { else {
entry.IsFriend = false; entry.IsFriend = false;
entry.IsBestFriend = false;
} }
// Game::logger->Log("FriendsQuery", "Friend OBJID %lu my OBJID %lu\n", ownerObjId, entity->GetObjectID());
auto isAltQuery = Database::CreatePreppedStmt("SELECT id FROM charinfo where account_id in (SELECT account_id from charinfo WHERE id = ?) AND id = ?;");
isAltQuery->setInt(1, character->GetID());
isAltQuery->setInt(2, owner);
Game::logger->Log("PropertyEntranceComponent", "main character is %i with alt query being %i\n", character->GetID(), owner);
auto isAltQueryResults = isAltQuery->executeQuery();
if (isAltQueryResults->next()) {
entry.IsAlt = true;
} else {
entry.IsAlt = false;
}
delete isAltQuery;
isAltQuery = nullptr;
entry.Reputation = reputation; entry.Reputation = reputation;
entry.CloneId = cloneId; entry.CloneId = cloneId;
entry.IsModeratorApproved = modApproved == true; entry.IsModeratorApproved = modApproved == true;
entry.AccessType = privacyOption; entry.AccessType = privacyOption;
entries.push_back(entry); entries.push_back(entry);
delete nameLookup; delete nameLookup;
} }
delete propertyLookup; delete propertyLookup;
Game::logger->Log("HELLO", "WE GOT TO HERE");
// auto newpropertyLookup = Database::CreatePreppedStmt("SELECT * FROM properties WHERE owner_id = ? AND zone_id = ?");
/* // newpropertyLookup->setInt(1, character->GetID());
const auto entriesSize = entries.size(); // newpropertyLookup->setInt(2, launchpadComponent->GetTargetZone());
if (startIndex != 0 && entriesSize > startIndex) // auto results = propertyLookup->executeQuery();
{
for (size_t i = 0; i < startIndex; i++)
{
entries.erase(entries.begin());
}
}
*/
// PropertySelectQueryProperty entry {};
// entry.CloneId = character->GetPropertyCloneID();
// entry.OwnerName = "";
// entry.Name = "";
// entry.Description = "";
// entry.Reputation = 0;
// entry.IsBestFriend = true;
// entry.IsFriend = true;
// entry.IsModeratorApproved = false;
// entry.IsAlt = true;
// entry.IsOwned = false;
// entry.AccessType = 0;
// // entry.DatePublished = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
// // entry.DatePublished = 0;
// // entry.PerformanceCost = entity->GetObjectID();
// if (results->next()) {
// const auto propertyId = results->getUInt64(1);
// const auto owner = results->getUInt64(2);
// const auto cloneId = results->getUInt64(4);
// const auto name = results->getString(5).asStdString();
// const auto description = results->getString(6).asStdString();
// const auto privacyOption = results->getInt(9);
// const auto modApproved = results->getBoolean(10);
// const auto reputation = results->getInt(14);
// // entry.CloneId = cloneId;
// // entry.OwnerName = character->GetName();
// // entry.Name = name;
// // entry.Description = description;
// // entry.Reputation = reputation;
// // entry.IsBestFriend = true;
// // entry.IsFriend = true;
// entry.IsModeratorApproved = modApproved;
// entry.IsAlt = true;
// entry.IsOwned = true;
// }
// entries.insert(entries.begin(), entry);
propertyQueries[entity->GetObjectID()] = entries; propertyQueries[entity->GetObjectID()] = entries;
GameMessages::SendPropertySelectQuery( GameMessages::SendPropertySelectQuery(

View File

@ -27,7 +27,7 @@ void PropertySelectQueryProperty::Serialize(RakNet::BitStream& stream) const
stream.Write(IsFriend); stream.Write(IsFriend);
stream.Write(IsModeratorApproved); stream.Write(IsModeratorApproved);
stream.Write(IsAlt); stream.Write(IsAlt);
stream.Write(IsOwner); stream.Write(IsOwned);
stream.Write(AccessType); stream.Write(AccessType);
stream.Write(DatePublished); stream.Write(DatePublished);
stream.Write(PerformanceCost); stream.Write(PerformanceCost);

View File

@ -18,7 +18,7 @@ public:
bool IsFriend = false; bool IsFriend = false;
bool IsModeratorApproved = false; bool IsModeratorApproved = false;
bool IsAlt = false; bool IsAlt = false;
bool IsOwner = false; bool IsOwned = false;
uint32_t AccessType = 0; uint32_t AccessType = 0;
uint32_t DatePublished = 0; uint32_t DatePublished = 0;
uint64_t PerformanceCost = 0; uint64_t PerformanceCost = 0;