/*
 * ShootOFF - Software for Laser Dry Fire Training
 * Copyright (C) 2016 phrack
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.shootoff.targets;

import com.shootoff.camera.Shot;

/**
 * This class encapsulates the information for a shot that hit a target.
 * 
 * @author phrack
 */
public class Hit {
	private final Target target;
	private final TargetRegion hitRegion;
	private final int impactX, impactY;
	private Shot shot;

	/**
	 * Create a new Hit with coordinates for the shot adjusted to the hit region
	 * 
	 * @param target
	 *            the target that owns the <tt>TargetRegion</tt> that was hit
	 * @param hitRegion
	 *            the <tt>TargetRegion</tt> that was shot
	 * @param impactX
	 *            the x coordinate of the shot adjusted to be relative to the
	 *            hit region (i.e. the origin for the impact is the top left
	 *            corner of the region instead of the top left corner of the
	 *            canvas)
	 * @param impactY
	 *            the y coordinate of the shot adjusted to be relative to the
	 *            hit region
	 */
	public Hit(final Target target, final TargetRegion hitRegion, final int impactX, final int impactY) {
		this.target = target;
		this.hitRegion = hitRegion;
		this.impactX = impactX;
		this.impactY = impactY;

	}

	public Target getTarget() {
		return target;
	}

	public TargetRegion getHitRegion() {
		return hitRegion;
	}

	public int getImpactX() {
		return impactX;
	}

	public int getImpactY() {
		return impactY;
	}
	
	public void setShot(Shot shot) {
		this.shot = shot;
	}
	
	public Shot getShot()
	{
		return shot;
	}
}