40 lines
714 B
C++
40 lines
714 B
C++
#pragma once
|
|
|
|
#include <deque>
|
|
#include "Types/Item.hpp"
|
|
#include "Util/SharedBuffer.h"
|
|
|
|
struct Chute
|
|
{
|
|
struct ChuteLink
|
|
{
|
|
int8_t RelativeX{};
|
|
int8_t RelativeY{};
|
|
uint16_t Tick{};
|
|
};
|
|
struct ChuteItem
|
|
{
|
|
Item Item{};
|
|
uint16_t ChuteEntered{};
|
|
};
|
|
struct ChuteData
|
|
{
|
|
std::deque<ChuteItem> ItemsInChute{};
|
|
};
|
|
|
|
public:
|
|
Chute() = default;
|
|
Chute(Vector2i position, const Vector<Vector2i>& chuteLinks)
|
|
: Data{static_cast<int>(chuteLinks.size()), ChuteData{}}
|
|
{
|
|
for (int i{}; i < chuteLinks.size(); ++i)
|
|
{
|
|
Data.GetData()[i].RelativeX = position.x - chuteLinks[i].x;
|
|
Data.GetData()[i].RelativeY = position.y - chuteLinks[i].y;
|
|
}
|
|
}
|
|
|
|
|
|
public:
|
|
SharedBuffer<ChuteLink, ChuteData> Data{};
|
|
}; |