(string)$items["cost"],"items"=>array()); //TODO: cost is a string? foreach($items as $cat){ // Loop over all categories $category = (string)$cat["name"]; $shop["items"][$category] = array(); foreach($cat as $item){ // Loop over all items inside a category $feats = array(); foreach($item->features[0] as $k => $v) // Reads features $feats[(string)$k] = (string)$v; $shop["items"][$category][] = new Item( (string)$item->name, intval($item->cost), //Note: cost is an int here. (string)$item->icon, (string)$item->description, $feats); } } return $shop; } /** * Gets an Item object from the shop from its name. * * @params string $name the name of the object to search for * @return Item|false the Item object or false if the item was not found */ function getItem($name) { $shop=loadShop(); foreach($shop["items"] as $cat) { foreach($cat as $item){ if($name == $item->name) { return $item; } } } sendError("shop_missing_item"); return false; } /** * Marks the shop as created in the session. * * @return void */ function initShop() { $_SESSION["shop"] = true; } /** * Returns the shop array if it was created. * * @return array shop array as created by loadShop */ function sendShop() { if(!empty($_SESSION["shop"])) return loadShop(); else return false; } /** * Creates the shop in the session and sends it to the client. * Debits the shop's cost from the player's gold. * * @return void */ function buildShop() { $shop=loadShop(); if(!empty($_SESSION["shop"])) { sendError("shop_already_built"); } elseif(debitAccount($shop["cost"])) { initShop(); echo json_encode($shop); } } /** * Debits the item's cost specified as the item POST parameter, adds it to the Inventory and sends it to the client. * * @return void */ function buyItem() { $item = getItem($_POST["item"]); if($item && debitAccount($item->cost)) { $tab = Inventory::addItem($item); echo json_encode($tab); // Sends an array with the Item as first member and count as second. } } /** * Invoke useItem on an item passed as the item POST parameter, sends to the client the updated player stats and the item. * * @return void */ function useItem(){ $item = getItem($_POST["item"]); $it = Inventory::useItem($item); echo json_encode(array("perso" => sendPerso(), "item" => $it)); } ?>