client/EterLib/GrpColorInstance.cpp

66 lines
1.2 KiB
C++

#include "StdAfx.h"
#include "GrpColorInstance.h"
#include "../eterBase/Timer.h"
CGraphicColorInstance::CGraphicColorInstance()
{
m_baseTime=0;
m_blendTime=0;
}
CGraphicColorInstance::~CGraphicColorInstance()
{
}
void CGraphicColorInstance::Clear()
{
m_srcColor.Clear();
m_dstColor.Clear();
m_curColor.Clear();
m_baseTime=0;
m_blendTime=0;
}
void CGraphicColorInstance::SetColorReference(const CGraphicColor & c_rSrcColor)
{
m_srcColor = c_rSrcColor;
m_dstColor = c_rSrcColor;
m_curColor = c_rSrcColor;
}
void CGraphicColorInstance::BlendColorReference(DWORD blendTime, const CGraphicColor& c_rDstColor)
{
m_baseTime = GetCurrentTime();
m_blendTime = blendTime;
m_srcColor = m_curColor;
m_dstColor = c_rDstColor;
}
void CGraphicColorInstance::Update()
{
DWORD curTime = GetCurrentTime();
DWORD elapsedTime = curTime - m_baseTime;
if (elapsedTime < m_blendTime)
{
m_curColor.Blend(elapsedTime/float(m_blendTime), m_srcColor, m_dstColor);
}
else
{
m_curColor=m_dstColor;
}
}
DWORD CGraphicColorInstance::GetCurrentTime()
{
return CTimer::Instance().GetCurrentMillisecond();
}
const CGraphicColor& CGraphicColorInstance::GetCurrentColorReference() const
{
return m_curColor;
}