Exemplo n.º 1
0
void PlayerManager::Update(VideoPtr video, InputPtr input, ShootManagerPtr shootManager, SpritePtr playerSprite, SpritePtr shootSprite)
{
	static Vector2 hitPos, releasePos;
	static int turn = 0;
	if (input->GetTouchState(0) == GSKS_HIT)
	{	
		if (IsInArea(GetAbsolutePos(input, video), Rect2Df(GetPlayer(turn)->GetPos(), playerSprite->GetRect().size), Vector2(0.5f, 0.5f), video))
		{
			hitPos = input->GetTouchPos(0, video);
		}
		else
		{
			hitPos = GS_NO_TOUCH;
		}
	}
	if (input->GetTouchState(0) == GSKS_DOWN)
	{
		releasePos = hitPos - input->GetTouchPos(0, video);
	}
	if (input->GetTouchState(0) == GSKS_RELEASE && hitPos != GS_NO_TOUCH)
	{
		{
			Vector2 pos = m_simulator->GetPosition(GetPlayer(turn)->GetBodyId());
			shootManager->Shoot(pos, turn, releasePos);
			turn = !turn;
		}
	}
	if (hitPos == GS_NO_TOUCH)
	{
		video->MoveCamera(input->GetTouchMove(0) * -1);
	}
}
Exemplo n.º 2
0
void TouchButton::UpdateButton(VideoPtr video, InputPtr input, AudioPtr audio, SpriteResourceManager& spr, AudioResourceManager& aud)
{
	SpritePtr sprite = spr.GetSprite(video, m_buttonSprite);
	const Vector2 frameSize(GetButtonSize(sprite));
	const Vector2 currentTouch(input->GetTouchPos(0, video));
	if (input->GetTouchState(0) == GSKS_HIT && currentTouch != GS_NO_TOUCH)
		m_hitPos = currentTouch;

	if (m_status == SACTIVATED)
	{
		m_status = ACTIVATED;
	}

	if (currentTouch != GS_NO_TOUCH)
	{
		m_lastTouch = currentTouch;
		if (IsInArea(currentTouch, Rect2Df(m_pos, frameSize), m_origin) && IsInArea(m_hitPos, Rect2Df(m_pos, frameSize), m_origin))
		{
			m_status = PRESSED;
		}
		else
		{
			m_status = IDLE;
		}
	}

	if (input->GetTouchState(0) == GSKS_RELEASE)
	{
		if (IsInArea(m_lastTouch, Rect2Df(m_pos, frameSize), m_origin) && IsInArea(m_hitPos, Rect2Df(m_pos, frameSize), m_origin))
		{
			m_status = SACTIVATED;
			if (m_soundEffect != GS_L(""))
			{
				aud.GetSample(audio, m_soundEffect)->Play();
			}
		}
	}
}