-FurnaceNodeMetadata::FurnaceNodeMetadata()
-{
- NodeMetadata::registerType(typeId(), create);
-
- m_inventory = new Inventory();
- m_inventory->addList("fuel", 1);
- m_inventory->addList("src", 1);
- m_inventory->addList("dst", 1);
-
- m_step_accumulator = 0;
- m_fuel_totaltime = 0;
- m_fuel_time = 0;
- m_src_totaltime = 0;
- m_src_time = 0;
-}
-FurnaceNodeMetadata::~FurnaceNodeMetadata()
-{
- delete m_inventory;
-}
-u16 FurnaceNodeMetadata::typeId() const
-{
- return CONTENT_FURNACE;
-}
-NodeMetadata* FurnaceNodeMetadata::clone()
-{
- FurnaceNodeMetadata *d = new FurnaceNodeMetadata();
- *d->m_inventory = *m_inventory;
- return d;
-}
-NodeMetadata* FurnaceNodeMetadata::create(std::istream &is)
-{
- FurnaceNodeMetadata *d = new FurnaceNodeMetadata();
- d->m_inventory->deSerialize(is);
- int temp;
- is>>temp;
- d->m_fuel_totaltime = (float)temp/10;
- is>>temp;
- d->m_fuel_time = (float)temp/10;
- return d;
-}
-void FurnaceNodeMetadata::serializeBody(std::ostream &os)
-{
- m_inventory->serialize(os);
- os<<itos(m_fuel_totaltime*10)<<" ";
- os<<itos(m_fuel_time*10)<<" ";
-}
-std::string FurnaceNodeMetadata::infoText()
-{
- //return "Furnace";
- if(m_fuel_time >= m_fuel_totaltime)
- {
- InventoryList *src_list = m_inventory->getList("src");
- assert(src_list);
- InventoryItem *src_item = src_list->getItem(0);
-
- if(src_item)
- return "Furnace is out of fuel";
- else
- return "Furnace is inactive";
- }
- else
- {
- std::string s = "Furnace is active (";
- s += itos(m_fuel_time/m_fuel_totaltime*100);
- s += "%)";
- return s;
- }
-}
-void FurnaceNodeMetadata::inventoryModified()