Animate items entering building input ports
This commit is contained in:
@@ -96,6 +96,31 @@ struct Building
|
||||
return count;
|
||||
}
|
||||
|
||||
// Items currently travelling inward on each input port's virtual input belt
|
||||
// (REQ-MAT-INPUT-INTAKE); one lane per input port, parallel to inputPorts. Each
|
||||
// lane holds slots at progress [0.0, 0.5], front (highest progress) first. An
|
||||
// in-transit item has reserved a slot in its per-material input buffer but is
|
||||
// not yet consumable — it enters the buffer only on reaching progress 0.5.
|
||||
std::vector<std::vector<BeltItemSlot>> incomingItems;
|
||||
|
||||
// Buffered plus in-transit count of one input material. The acceptance/space
|
||||
// test (REQ-MAT-INPUT-PORTS, REQ-MAT-INPUT-INTAKE) counts in-transit items, so
|
||||
// buffered + reserved never exceeds the material's cap (REQ-MAT-INPUT-BUFFER).
|
||||
int pendingInputCount(const ItemType& type) const
|
||||
{
|
||||
int count = 0;
|
||||
const std::map<ItemType, int>::const_iterator it = inputBuffer.counts.find(type);
|
||||
if (it != inputBuffer.counts.end()) { count = it->second; }
|
||||
for (const std::vector<BeltItemSlot>& lane : incomingItems)
|
||||
{
|
||||
for (const BeltItemSlot& slot : lane)
|
||||
{
|
||||
if (slot.item.type == type) { ++count; }
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
// Pre-computed from surface mask at placement; in absolute world coordinates.
|
||||
std::vector<QPoint> bodyCells;
|
||||
std::vector<Port> outputPorts;
|
||||
|
||||
Reference in New Issue
Block a user