Skip to content

Commit

Permalink
feat: successfully transfer inventory to dummy
Browse files Browse the repository at this point in the history
  • Loading branch information
RobbeBryssinck committed Jan 29, 2022
1 parent b9751bf commit 2695ed0
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 23 deletions.
16 changes: 2 additions & 14 deletions Code/client/Games/Skyrim/Actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -366,10 +366,6 @@ Container Actor::GetFullContainer() const noexcept
fullContainer.Entries.insert(fullContainer.Entries.end(), minimizedExtraContainer.Entries.begin(),
minimizedExtraContainer.Entries.end());

std::remove_if(fullContainer.Entries.begin(), fullContainer.Entries.end(), [](Container::Entry entry) {
return entry.Count == 0;
});

spdlog::info("fullContainer count after: {}", fullContainer.Entries.size());

// TODO: doesn't filter all duplicates?
Expand All @@ -380,10 +376,6 @@ void Actor::SetFullContainer(Container& acContainer) noexcept
{
RemoveAllItems();

std::sort(acContainer.Entries.begin(), acContainer.Entries.end(), [](Container::Entry lhs, Container::Entry rhs) {
return lhs.Count < rhs.Count;
});

Container currentContainer = GetFullContainer();
for (auto currentEntry : currentContainer.Entries)
{
Expand All @@ -394,7 +386,6 @@ void Actor::SetFullContainer(Container& acContainer) noexcept
if (duplicate != std::end(acContainer.Entries))
{
duplicate->Count -= currentEntry.Count;
continue;
}
else
{
Expand All @@ -404,13 +395,10 @@ void Actor::SetFullContainer(Container& acContainer) noexcept
}
}

std::remove_if(acContainer.Entries.begin(), acContainer.Entries.end(), [](Container::Entry entry) {
return entry.Count == 0;
});

for (const Container::Entry& entry : acContainer.Entries)
{
AddItem(entry);
if (entry.Count != 0)
AddItem(entry);
}
}

Expand Down
6 changes: 3 additions & 3 deletions Code/client/Services/Debug/TestService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ void __declspec(noinline) TestService::PlaceActorInWorld() noexcept

auto pActor = Actor::Create(pPlayerBaseForm);

pActor->SetInventory(PlayerCharacter::Get()->GetInventory());
auto container = PlayerCharacter::Get()->GetFullContainer();
spdlog::info("Container size: {}", container.Entries.size());
pActor->SetFullContainer(container);

m_actors.emplace_back(pActor);
}
Expand All @@ -75,8 +77,6 @@ void TestService::OnUpdate(const UpdateEvent& acUpdateEvent) noexcept
static std::atomic<bool> s_f8Pressed = false;
static std::atomic<bool> s_f7Pressed = false;

RunDiff();

if (GetAsyncKeyState(VK_F7))
{
if (!s_f7Pressed)
Expand Down
4 changes: 2 additions & 2 deletions Code/client/Services/TestService.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
#pragma once

#include <Actor.h>

struct World;
struct ImguiService;
struct UpdateEvent;

struct TransportService;
struct BSAnimationGraphManager;

struct Actor;
struct TestService
{
TestService(entt::dispatcher& aDispatcher, World& aWorld, TransportService& aTransport, ImguiService& aImguiService);
Expand All @@ -24,7 +25,6 @@ struct TestService
private:

void PlaceActorInWorld() noexcept;
void RunDiff();

void DrawComponentDebugView();
void DrawPlayerDebugView();
Expand Down
23 changes: 19 additions & 4 deletions Code/encoding/Structs/Container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ void Container::Entry::Serialize(TiltedPhoques::Buffer::Writer& aWriter) const n
Serialization::WriteFloat(aWriter, ExtraCharge);
ExtraEnchantId.Serialize(aWriter);
Serialization::WriteVarInt(aWriter, ExtraEnchantCharge);
Serialization::WriteBool(aWriter, ExtraEnchantRemoveUnequip);
Serialization::WriteFloat(aWriter, ExtraHealth);
ExtraPoisonId.Serialize(aWriter);
Serialization::WriteVarInt(aWriter, ExtraPoisonCount);
Serialization::WriteVarInt(aWriter, ExtraSoulLevel);
Serialization::WriteString(aWriter, ExtraTextDisplayName);

Serialization::WriteBool(aWriter, ExtraEnchantRemoveUnequip);
Serialization::WriteBool(aWriter, ExtraWorn);
Serialization::WriteBool(aWriter, ExtraWornLeft);
}
Expand All @@ -27,12 +28,13 @@ void Container::Entry::Deserialize(TiltedPhoques::Buffer::Reader& aReader) noexc
ExtraCharge = Serialization::ReadFloat(aReader);
ExtraEnchantId.Deserialize(aReader);
ExtraEnchantCharge = Serialization::ReadVarInt(aReader) & 0xFFFF;
ExtraEnchantRemoveUnequip = Serialization::ReadBool(aReader);
ExtraHealth = Serialization::ReadFloat(aReader);
ExtraPoisonId.Deserialize(aReader);
ExtraPoisonCount = Serialization::ReadVarInt(aReader) & 0xFFFFFFFF;
ExtraSoulLevel = Serialization::ReadVarInt(aReader) & 0xFFFFFFFF;
ExtraTextDisplayName = Serialization::ReadString(aReader);

ExtraEnchantRemoveUnequip = Serialization::ReadBool(aReader);
ExtraWorn = Serialization::ReadBool(aReader);
ExtraWornLeft = Serialization::ReadBool(aReader);
}
Expand All @@ -47,10 +49,23 @@ bool Container::operator!=(const Container& acRhs) const noexcept
return !this->operator==(acRhs);
}

bool Container::Entry::operator==(const Container::Entry& acRhs) const noexcept
{
return BaseId == acRhs.BaseId &&
Count == acRhs.Count &&
ExtraTextDisplayName == acRhs.ExtraTextDisplayName &&
IsExtraDataEquals(acRhs);
}

bool Container::Entry::operator!=(const Container::Entry& acRhs) const noexcept
{
return !this->operator==(acRhs);
}

void Container::Serialize(TiltedPhoques::Buffer::Writer& aWriter) const noexcept
{
Serialization::WriteVarInt(aWriter, Entries.size());
for (auto& entry : Entries)
for (const Entry& entry : Entries)
{
entry.Serialize(aWriter);
}
Expand All @@ -59,7 +74,7 @@ void Container::Serialize(TiltedPhoques::Buffer::Writer& aWriter) const noexcept
void Container::Deserialize(TiltedPhoques::Buffer::Reader& aReader) noexcept
{
uint32_t count = Serialization::ReadVarInt(aReader) & 0xFFFFFFFF;
for (int i = 0; i < count; i++)
for (uint32_t i = 0; i < count; i++)
{
Entry entry;
entry.Deserialize(aReader);
Expand Down
3 changes: 3 additions & 0 deletions Code/encoding/Structs/Container.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ struct Container
bool ExtraWorn{};
bool ExtraWornLeft{};

bool operator==(const Entry& acRhs) const noexcept;
bool operator!=(const Entry& acRhs) const noexcept;

void Serialize(TiltedPhoques::Buffer::Writer& aWriter) const noexcept;
void Deserialize(TiltedPhoques::Buffer::Reader& aReader) noexcept;

Expand Down

0 comments on commit 2695ed0

Please sign in to comment.