void Rekd2D::Core::RunnableWindow::Render(unsigned int time)
{
	m_DefaultShader->Bind();
	MouseState state = Mouse::GetState();
	KeyboardState ks = Keyboard::GetState();
	bool hit = false;
	for (std::vector<IComponent*>::iterator it = m_Components.begin(); it != m_Components.end(); ++it)
	{
		if ((*it)->GetBounds().Collides(Vector2F(state.X, state.Y)))
		{
			if (!state.MouseButtons[1] && m_OldState.MouseButtons[1])
			{
				(*it)->Click(1);
				if ((ComponentFlag::Focusable & (*it)->GetFlags()) == ComponentFlag::Focusable)
				{
					Unfocus();
					(*it)->SetFlag(ComponentFlag::Focusable, 1);
				}
				else hit = true;
			}
		}
		if ((ComponentFlag::Pushable & (*it)->GetFlags()) == ComponentFlag::Pushable) (*it)->SetFlag(ComponentFlag::Pushable, (*it)->GetBounds().Collides(Vector2F(state.X, state.Y)) && state.MouseButtons[1]);
		if ((ComponentFlag::Hoverable & (*it)->GetFlags()) == ComponentFlag::Hoverable) (*it)->SetFlag(ComponentFlag::Hoverable, (*it)->GetBounds().Collides(Vector2F(state.X, state.Y)));
		if ((ComponentFlag::HookKeyboard & (*it)->GetFlags()) == ComponentFlag::HookKeyboard)
		{
			(*it)->OnKeyboard(ks, m_OldKeyState);
		}
		(*it)->Render(m_Renderer);
	}
	if (hit) Unfocus();
	m_OldKeyState = ks;
	m_OldState = state;
}
Exemple #2
0
// TODO: cleanup
LinkedInputResponseType LinkedOptionsMenu::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI, LinkedOptionsMenu *&pFocusedMenu )
{
	LinkedInputResponseType resp;

	if ( MenuI.button == MENU_BUTTON_LEFT )
	{
		pFocusedMenu = this;
		resp = MoveRow( -1 );
		if ( resp == LIRT_FORWARDED_PREV )
		{
			Unfocus();
			LinkedOptionsMenu *pMenu = GetPrevMenu();
			pMenu->Focus();
			pMenu->SetChoiceIndex( pMenu->GetChoiceCount()-1 );
			pFocusedMenu = pMenu;
		}
		return resp;
	}
	else if ( MenuI.button == MENU_BUTTON_RIGHT )
	{
		pFocusedMenu = this;
		resp = MoveRow( 1 );
		if ( resp == LIRT_FORWARDED_NEXT )
		{
			Unfocus();
			LinkedOptionsMenu *pMenu = GetNextMenu();
			pMenu->Focus();
			pMenu->SetChoiceIndex( 0 );
			pFocusedMenu = pMenu;
		}
		return resp;
	}
	else if ( MenuI.button == MENU_BUTTON_SELECT )
	{
		Unfocus();
		LinkedOptionsMenu *pMenu = GetNextMenu();
		pMenu->Focus();
		pFocusedMenu = pMenu;
		if ( pMenu == this )
			return LIRT_STOP;
		else
		{
			m_SoundSwitchMenu.Play();
			return LIRT_FORWARDED_NEXT;
		}
	}
	return LIRT_INVALID;
}
Exemple #3
0
void CheckboxComponent::CheckMouseCollision()
{
	Vector2f diff = g_input->GetMousePosition() - m_object->GetGlobalPos();
	float alpha = -m_object->GetGlobalRotation() * (float)PI / 180.f;
	Vector2f rotatedDiff = Vector2f(diff.x * cos(alpha) - diff.y * sin(alpha), diff.x * sin(alpha) + diff.y * cos(alpha));

	if (rotatedDiff.x >= 0 &&
		rotatedDiff.y >= 0 &&

		rotatedDiff.x <= m_size.x &&
		rotatedDiff.y <= m_size.y)
	{
		Focus();
		if (g_input->WasPressedThisTurn(MOUSE_LEFT))
		{
			if (m_selected)
			{
				UnSelect();
			}
			else
			{
				Select();
			}
		}
	}
	else
	{
		Unfocus();
	}
}
Exemple #4
0
LinkedOptionsMenu* LinkedOptionsMenu::SwitchToPrevMenu()
{
	LinkedOptionsMenu *pRet = GetPrevMenu();
	Unfocus();
	pRet->Focus();
	m_SoundSwitchMenu.Play();
	return pRet;
}
Exemple #5
0
void TextEntry::OnRawMouseDown(MouseButtonEvent *e)
{
	if (!m_justFocused)
		Unfocus();
}