load($file)) throw new InvalidArgumentException('Cannot load file ' . htmlspecialchars($file) . ''); $this->XML = $XML; $_tmp_vocations = array(); foreach($XML->getElementsByTagName('vocation') as $vocation) { if($vocation->hasAttribute('id') && $vocation->hasAttribute('name')) { $vocationData = array(); $vocationData['id'] = $vocation->getAttribute('id'); $vocationData['name'] = $vocation->getAttribute('name'); if($vocation->hasAttribute('fromvoc')) $vocationData['fromvoc'] = $vocation->getAttribute('fromvoc'); else $vocationData['fromvoc'] = $vocationData['id']; if($vocation->hasAttribute('manamultiplier')) $vocationData['manamultiplier'] = $vocation->getAttribute('manamultiplier'); else $vocationData['manamultiplier'] = 1; if($vocation->hasAttribute('gainhp')) $vocationData['gainhp'] = $vocation->getAttribute('gainhp'); else $vocationData['gainhp'] = 0; if($vocation->hasAttribute('gainmana')) $vocationData['gainmana'] = $vocation->getAttribute('gainmana'); else $vocationData['gainmana'] = 0; if($vocation->hasAttribute('gaincap')) $vocationData['gaincap'] = $vocation->getAttribute('gaincap'); else $vocationData['gaincap'] = 0; if($vocation->hasAttribute('gainhpticks')) $vocationData['gainhpticks'] = $vocation->getAttribute('gainhpticks'); else $vocationData['gainhpticks'] = 1; if($vocation->hasAttribute('gainhpamount')) $vocationData['gainhpamount'] = $vocation->getAttribute('gainhpamount'); else $vocationData['gainhpamount'] = 0; if($vocation->hasAttribute('gainmanaticks')) $vocationData['gainmanaticks'] = $vocation->getAttribute('gainmanaticks'); else $vocationData['gainmanaticks'] = 1; if($vocation->hasAttribute('gainmanaamount')) $vocationData['gainmanaamount'] = $vocation->getAttribute('gainmanaamount'); else $vocationData['gainmanaamount'] = 0; if($vocation->hasAttribute('gainsoulticks')) $vocationData['gainsoulticks'] = $vocation->getAttribute('gainsoulticks'); else $vocationData['gainsoulticks'] = 1; if($vocation->hasAttribute('attackspeed')) $vocationData['attackspeed'] = $vocation->getAttribute('attackspeed'); else $vocationData['attackspeed'] = 2000; $_tmp_vocations[$vocation->getAttribute('id')] = $vocationData; } else throw new RuntimeException('Cannot load vocation. id or/and name parameter is missing'); } foreach($_tmp_vocations as $_tmp_vocation) { $this->vocations[$_tmp_vocation['id']] = new Vocation($_tmp_vocation); } } /* * Get vocation */ public function getVocation($voc_id) { if(isset($this->vocations[$voc_id])) return $this->vocations[$voc_id]; return false; } /* * Get vocation name without getting vocation */ public function getVocationName($voc_id) { if($vocs = self::getVocation($voc_id)) return $vocs->getName(); return 'vocation does not exist'; } public function current(): mixed { return $this->vocations[$this->iterator]; } public function rewind(): void { $this->iterator = 0; } public function next(): void { ++$this->iterator; } public function key(): mixed { return $this->iterator; } public function valid(): bool { return isset($this->vocations[$this->iterator]); } public function count(): int { return count($this->vocations); } }