public override void update(float elapsed) { if ( entity_.info.state != ObjectState.OK || input_ == null || input_.entity_.info.state == ObjectState.DAMAGED || output_ == null || output_.entity_.info.state == ObjectState.DAMAGED ) { return; } int itemIndex = input_.getFirstItem(); GameEntity item = input_.getItem(itemIndex); if (item == null) { currentTime_ = 0; return; } if (!output_.canPlaceItem(item) || output_.getNumItem(item.item) >= output_.numberPerSlot_) { currentTime_ = 0; return; } currentTime_ += elapsed; if (currentTime_ >= processTime_) { currentTime_ = 0; output_.offerItem(Locator.getObjectFactory().createItem(item.item, 1)); if (item.item.number_ > 1) { item.item.number_--; input_.onUpdate(); } else { input_.takeItem(itemIndex); } } if (notify_ != null) { notify_(); } }
private void checkStatus() { InventoryComponent ic = entity_.inventory; for (int index = 0; index < ic.capacity; ++index) { GameEntity item = ic.getItem(index); if (item == null) { continue; } if (item.item.ID_ == Locator.getObjectFactory().orbItem.ID_) { entity_.info.state = ObjectState.OK; return; } } entity_.info.state = ObjectState.DISABLED; }