Exemplo n.º 1
0
	void IComponent::OnUpdate(uint32 timePassed) {
		if (m_fadeActive) {
			if (m_fadeTimePassed < m_fadeTime) {
				float fadeTime = static_cast<float>(m_fadeTime);
				float fadeTimePassed = static_cast<float>(m_fadeTimePassed);
				D3DXCOLOR colorChange = ((m_fadeTo - m_fadeSrc) * 1000.0f) / fadeTime;
				SetColorMod((colorChange * fadeTimePassed) / 1000.0f + m_fadeSrc);
			}
			else {
				m_fadeActive = false;
				SetColorMod(m_fadeTo);
			}

			m_isVisible = (m_colorMod.a > 0.0f);
			m_fadeTimePassed += timePassed;
		}

		if (m_moveActive) {
			if (m_moveTimePassed < m_moveTime) {
				Utils::Vector2 position;
				position.x = floor(((m_moveTo.x - m_moveSrc.x) * 1000.0f) / m_moveTime * m_moveTimePassed / 1000.0f + m_moveSrc.x);
				position.y = floor(((m_moveTo.y - m_moveSrc.y) * 1000.0f) / m_moveTime * m_moveTimePassed / 1000.0f + m_moveSrc.y);
				SetPosition(position);
			}
			else {
				m_moveActive = false;
				SetPosition(m_moveTo);
			}

			m_moveTimePassed += timePassed;
		}
	}
Exemplo n.º 2
0
void ResourceManager::AddSurfaceWithTransparencyAndTint(std::string key,
                                                        std::string file_path,
                                                        SDL_Color alpha,
                                                        SDL_Color tint) {
  auto surface = std::make_shared<SDL2pp::Surface>(SDL2pp::Surface(file_path));
  surface->SetBlendMode(SDL_BLENDMODE_NONE);
  surface->SetColorKey(true, SDL_MapRGB(&surface->Lock().GetFormat(), alpha.r,
                                        alpha.g, alpha.b));
  surface->SetColorMod(tint.r, tint.g, tint.b);
  surface->SetAlphaMod(205);
  surfaces_[key] = surface;
}