implement 4 items on belt tile

This commit is contained in:
2026-05-01 21:19:07 +02:00
parent 0ce7cd7ae8
commit b30addab3d
3 changed files with 204 additions and 243 deletions

View File

@@ -123,8 +123,8 @@ private:
struct BeltTile
{
Rotation direction;
std::optional<BeltItemSlot> front; // higher progress; closer to output
std::optional<BeltItemSlot> back; // lower progress; closer to input
// front (highest progress) at index 0; back (just entered) at end. Max 4.
std::vector<BeltItemSlot> itemSlots;
};
struct SplitterTile
@@ -134,8 +134,9 @@ private:
std::vector<ItemType> filterA; // empty = accept all
std::vector<ItemType> filterB;
bool nextOutputIsA; // alternation state
std::optional<BeltItemSlot> back; // progress [0, 0.5]; entering from input belt
Rotation backDir; // direction of the feeding belt (for animation)
// Unassigned items: [0] = routing candidate (higher progress, caps at 0.5). Max 2.
std::vector<BeltItemSlot> back;
std::vector<Rotation> backDir; // feeding belt direction, parallel to back
std::optional<BeltItemSlot> frontA; // progress [0, 1]; routed to outputA
std::optional<BeltItemSlot> frontB; // progress [0, 1]; routed to outputB
};
@@ -144,15 +145,15 @@ private:
{
Rotation direction;
int maxDistance;
std::optional<BeltItemSlot> front;
std::optional<BeltItemSlot> back;
// front (highest progress) at index 0; back at end. Max 4.
std::vector<BeltItemSlot> itemSlots;
};
struct TunnelExitTile
{
Rotation direction;
std::optional<BeltItemSlot> front;
std::optional<BeltItemSlot> back;
// front (highest progress) at index 0; back at end. Max 4.
std::vector<BeltItemSlot> itemSlots;
};
struct TunnelTransitItem