#pragma once #include #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 ItemsInChute{}; }; public: Chute() = default; Chute(Vector2i position, const Vector& chuteLinks) : Data{static_cast(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 Data{}; };