/** * @param ItemRawData $item * * @return string */ public function proficiency(ItemRawData $item) { $map = $this->getApp()['item.skyforge.service']->getQualityMap(); if (!empty($map[$item->getLevel()]) && !empty($map[$item->getLevel()][$item->getQuality()])) { $proficiency = $map[$item->getLevel()][$item->getQuality()]; } else { $proficiency = $item->getLevel() . ' lvl'; } return $proficiency; }
/** * @param \stdClass $slot * * @return ItemRawData */ private function createItem($slot) { $item = $this->itemCollection->findOneByName($slot->name); if (!$item) { throw new \InvalidArgumentException(sprintf("No item with name '%s' in data base", $slot->name)); } $data = new ItemRawData(); $data->setItem($item)->setPrestige($slot->prestige)->setLevel($slot->level)->setQuality($slot->quality)->setResourceId($slot->resourceId); if (!empty($slot->innateStats)) { $props = array(); foreach ($slot->innateStats as $el) { $props[$el->properties->name] = $el->properties->value; } foreach ($slot->acquiredStats as $el) { $props[$el->properties->name] = $el->properties->value; } $propString = serialize($props); if (strlen($propString) > 255) { throw new RuntimeException(sprintf("Properties string '%s' is longer then 255 chars", $propString)); } $data->setPropertiesString($propString); } if (!empty($slot->talents)) { $talents = array(); foreach ($slot->talents as $talent) { $talents[] = $talent; } $talentsString = serialize($talents); if (strlen($talentsString) > 1024) { throw new RuntimeException(sprintf("Talents string '%s' is longer then 1024 chars", $talentsString)); } $data->setTalentsString($talentsString); } return $data; }