<?php
/**
 * @package Hafenstudios\Wellenbrecher
 */

namespace Hafenstudios\Wellenbrecher\Engine;

defined( 'ABSPATH' ) || exit;

/**
 * Ergebnis einer einzelnen Regel: Punkte (positiv, negativ oder 0 = kein
 * Treffer) plus Begruendungs-Key fuer den Score-Breakdown.
 */
class RuleResult {

	/**
	 * @param int    $points Punkte (0 = kein Treffer).
	 * @param string $reason Begruendungs-Key (Konvention: Regel-ID).
	 */
	public function __construct(
		public readonly int $points,
		public readonly string $reason
	) {
	}

	/**
	 * Kein Treffer.
	 *
	 * @param string $reason Begruendungs-Key.
	 * @return RuleResult
	 */
	public static function none( string $reason = '' ): RuleResult {
		return new self( 0, $reason );
	}

	/**
	 * Hat die Regel Punkte vergeben?
	 *
	 * @return bool
	 */
	public function hit(): bool {
		return 0 !== $this->points;
	}
}
