Files
Lab9_UNIX/core/Figure.cpp
T
2026-06-05 11:45:04 +03:00

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];
}