89 lines
1.3 KiB
C++
89 lines
1.3 KiB
C++
#include "Figure.h"
|
|
|
|
Figure::Figure(Point position)
|
|
:
|
|
m_Position(position)
|
|
{
|
|
}
|
|
|
|
void Figure::update(double dt)
|
|
{
|
|
m_TimeFromLastUpdate += dt;
|
|
|
|
if (m_TimeFromLastUpdate >= m_TimeForUpdate)
|
|
{
|
|
m_TimeFromLastUpdate = 0;
|
|
|
|
++m_Position.y;
|
|
}
|
|
}
|
|
|
|
void Figure::render(PaintDevice& paintDevice)
|
|
{
|
|
for (const Point& point : m_Body[m_CurrentRotate])
|
|
{
|
|
Vector2 v(
|
|
point.x + m_Position.x,
|
|
point.y + m_Position.y
|
|
);
|
|
|
|
paintDevice.set_char(
|
|
v,
|
|
0x25D8
|
|
);
|
|
}
|
|
}
|
|
|
|
void Figure::move_left()
|
|
{
|
|
--m_Position.x;
|
|
}
|
|
|
|
void Figure::move_right()
|
|
{
|
|
++m_Position.x;
|
|
}
|
|
|
|
void Figure::boost()
|
|
{
|
|
m_TimeForUpdate = 50;
|
|
}
|
|
|
|
void Figure::rotate()
|
|
{
|
|
++m_CurrentRotate;
|
|
|
|
if (m_CurrentRotate >= m_Body.size())
|
|
{
|
|
m_CurrentRotate = 0;
|
|
}
|
|
}
|
|
|
|
void Figure::backup()
|
|
{
|
|
m_PositionBackup = m_Position;
|
|
|
|
m_CurrentRotateBackup = m_CurrentRotate;
|
|
}
|
|
|
|
void Figure::restore()
|
|
{
|
|
m_Position = m_PositionBackup;
|
|
|
|
m_CurrentRotate = m_CurrentRotateBackup;
|
|
}
|
|
|
|
Point Figure::get_position() const
|
|
{
|
|
return m_Position;
|
|
}
|
|
|
|
void Figure::set_position(Point position)
|
|
{
|
|
m_Position = position;
|
|
}
|
|
|
|
const std::vector<Point>& Figure::get_body() const
|
|
{
|
|
return m_Body[m_CurrentRotate];
|
|
} |