items; } /** * Returns the Inventory from the session. * Implements the singleton pattern. * * @return Inventory the Inventory object */ public static function get() { if(!self::created()) { $_SESSION["inventory"] = new Inventory(); } return $_SESSION["inventory"]; } /** * Adds an Item object to the Inventory, incrementing the Item's count if it was already present. * * @param Item $item Item to add to the Inventory * @return array Item and Item's count */ private function _addItem($item) { foreach($this->items as $k => $object){ if($object[0] == $item){ $this->items[$k][1]++; return $this->items[$k]; } } $tab = array($item,1); $this->items[] = $tab; return $tab; } /** * Adds an Item object to the singleton's Inventory from session. * * @param Item $item Item to add to the Inventory * @return array Item and Item's count */ public static function addItem($item) { $inv = self::get(); $tab = $inv->_addItem($item); return $tab; } private function _removeItem($item) { foreach($this->items as $k => $object) { if($object[0] == $item) { unset($this->items[$k]); return; } } } public static function removeItem($item) { $inv = self::get(); $inv->_removeItem($item); } private function _useItem($item) { foreach($this->items as $k => $object){ if($object[0] == $item) { $nb = $this->items[$k][1]; if($nb > 0) { $this->items[$k][0]->consume(); $this->items[$k][1]--; } if($nb-1 <= 0) $this->_removeItem($item); return array($object[0], $nb-1); } } return false; } public static function useItem($item) { $inv = self::get(); $it = $inv->_useItem($item); return $it; } public function addToXML($root) { foreach($this->items as $item) $item[0]->addToXML($root, $item[1]); } } ?>