['item_id' => int, 'instance_id' => int, 'quantity' => int]] * * @var array */ private static array $itemDeducts = []; /** * 代币扣除数据 * 格式:[coin_type => ['type' => int, 'quantity' => int]] * * @var array */ private static array $coinDeducts = []; /** * 添加物品扣除 * * @param int $itemId 物品ID * @param int $instanceId 物品实例ID * @param int $quantity 扣除数量 * @return void */ public static function addItemDeduct(int $itemId, int $instanceId, int $quantity): void { $key = $itemId . '_' . $instanceId; if (isset(self::$itemDeducts[$key])) { // 如果已存在,累加数量 self::$itemDeducts[$key]['quantity'] += $quantity; } else { // 新增扣除记录 self::$itemDeducts[$key] = [ 'item_id' => $itemId, 'instance_id' => $instanceId, 'quantity' => $quantity, ]; } } /** * 添加代币扣除 * * @param int $coinType 代币类型 * @param int $quantity 扣除数量 * @return void */ public static function addCoinDeduct(int $coinType, int $quantity): void { if (isset(self::$coinDeducts[$coinType])) { // 如果已存在,累加数量 self::$coinDeducts[$coinType]['quantity'] += $quantity; } else { // 新增扣除记录 self::$coinDeducts[$coinType] = [ 'type' => $coinType, 'quantity' => $quantity, ]; } } /** * 获取本次请求的所有扣除数据 * * @return array 扣除数据数组,包含items和coins */ public static function getDeducts(): array { return [ 'items' => array_values(self::$itemDeducts), 'coins' => array_values(self::$coinDeducts), ]; } /** * 清空本次请求的扣除数据 * * @return void */ public static function clearDeducts(): void { self::$itemDeducts = []; self::$coinDeducts = []; } /** * 检查是否有扣除数据 * * @return bool */ public static function hasDeducts(): bool { return !empty(self::$itemDeducts) || !empty(self::$coinDeducts); } /** * 获取物品扣除数据 * * @return array */ public static function getItemDeducts(): array { return array_values(self::$itemDeducts); } /** * 获取代币扣除数据 * * @return array */ public static function getCoinDeducts(): array { return array_values(self::$coinDeducts); } }