2020-07-06 19:54:50 +00:00
|
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* Author: lopiu
|
|
|
|
|
* Date: 06.07.2020
|
|
|
|
|
* Time: 22:41
|
|
|
|
|
*/
|
2021-01-28 21:05:34 +00:00
|
|
|
|
|
2020-10-28 20:21:08 +00:00
|
|
|
|
namespace Battles;
|
2021-01-28 21:05:34 +00:00
|
|
|
|
|
|
|
|
|
use Battles\Database\DBPDO;
|
2021-03-11 18:42:36 +00:00
|
|
|
|
use stdClass;
|
2021-01-25 18:01:42 +00:00
|
|
|
|
|
2020-07-06 19:54:50 +00:00
|
|
|
|
class DressedItems
|
|
|
|
|
{
|
2020-07-21 15:03:46 +00:00
|
|
|
|
private $USERID;
|
2020-07-06 19:54:50 +00:00
|
|
|
|
private $dressedItem;
|
2021-01-28 21:05:34 +00:00
|
|
|
|
private static $db;
|
2020-07-06 19:54:50 +00:00
|
|
|
|
|
2020-07-07 09:52:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* DressedItems constructor.
|
2021-01-28 21:05:34 +00:00
|
|
|
|
* @param int $user_id ID игрока.
|
2020-07-07 09:52:54 +00:00
|
|
|
|
*/
|
2021-01-28 21:05:34 +00:00
|
|
|
|
public function __construct(int $user_id)
|
2020-07-20 12:07:49 +00:00
|
|
|
|
{
|
2021-01-28 21:05:34 +00:00
|
|
|
|
self::$db = DBPDO::INIT();
|
2020-07-21 15:03:46 +00:00
|
|
|
|
$this->USERID = $user_id;
|
2020-07-20 12:07:49 +00:00
|
|
|
|
}
|
2020-07-06 20:34:34 +00:00
|
|
|
|
|
2021-01-28 21:05:34 +00:00
|
|
|
|
public static function getDressedItemBySlot($itemSlot, $ownerId)
|
2021-01-25 18:01:42 +00:00
|
|
|
|
{
|
2021-03-10 21:20:56 +00:00
|
|
|
|
return self::$db->fetch('SELECT *, COUNT(1) AS count FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]);
|
2021-01-25 18:01:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
2021-03-11 18:42:36 +00:00
|
|
|
|
public function getItemsInSlots(): stdClass
|
2020-07-22 14:04:15 +00:00
|
|
|
|
{
|
2021-01-31 23:48:53 +00:00
|
|
|
|
$items = self::$db->ofetchALL('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot > 0', $this->USERID);
|
2021-03-11 18:42:36 +00:00
|
|
|
|
$this->dressedItem = new stdClass();
|
2021-03-10 21:20:56 +00:00
|
|
|
|
foreach ($items as $item) {
|
|
|
|
|
$i = $item->dressed_slot;
|
|
|
|
|
$this->dressedItem->$i = $item;
|
2021-01-28 21:05:34 +00:00
|
|
|
|
}
|
|
|
|
|
return $this->dressedItem;
|
2020-07-22 14:04:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-07-22 09:45:41 +00:00
|
|
|
|
/**
|
|
|
|
|
* Снимает с предмета статус одетого на персонажа в определённом слоте персонажа.
|
|
|
|
|
* @param $slot_id - номер слота.
|
|
|
|
|
*/
|
2020-07-21 15:03:46 +00:00
|
|
|
|
public function undressItem($slot_id)
|
|
|
|
|
{
|
2020-07-22 09:45:41 +00:00
|
|
|
|
self::getItemsInSlots();
|
|
|
|
|
// Проверяем, что используется один из 12 слотов и наличие предмета в слоте.
|
2021-03-10 21:20:56 +00:00
|
|
|
|
if (in_array($slot_id, Item::ITEM_TYPES_ALLOWED_IN_SLOTS) && $this->dressedItem->$slot_id) {
|
2021-01-28 21:05:34 +00:00
|
|
|
|
self::$db->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = ? AND owner_id = ?', [$slot_id, $this->USERID]);
|
2020-07-22 14:04:15 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2021-03-11 18:58:38 +00:00
|
|
|
|
public static function undressAllItems($user_id)
|
|
|
|
|
{
|
|
|
|
|
return self::$db->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot BETWEEN 1 AND 12 AND owner_id = ?', $user_id);
|
|
|
|
|
}
|
2020-07-06 19:54:50 +00:00
|
|
|
|
}
|