/
yaseeeeechka
/
CenterControl
Обзор
Документация
Войти
/
yaseeeeechka
/
CenterControl
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
CenterControl_TCP/include/server/UnitState.h
79 строк
2 KB
Yaroslava
New structure of Repo. TCP impl
11 дек 2025, 21:12
11 дек 2025, 21:12
6fdf9d7
Код
Авторство
О чём код?
#ifndef CENTERCONTROL_UNITSTATE_H #define CENTERCONTROL_UNITSTATE_H enum class SpawnLocation : int { Bottom = 0, Left, Top, Right }; class UnitState { public: explicit UnitState(const SpawnLocation &spawn_location) { switch (spawn_location) { case SpawnLocation::Bottom: { x_ = kFieldWidth * 0.5; y_ = kFieldHeight - kHeightUpToBottom - 5.0f; break; } case SpawnLocation::Left: { break; } case SpawnLocation::Top: { x_ = kFieldWidth * 0.5; y_ = kFieldHeight - 5.0f; break; } case SpawnLocation::Right: { break; } } ClampToBounds(); } void MoveUp() { y_ -= kStepLen; ClampToBounds(); } void MoveDown() { y_ += kStepLen; ClampToBounds(); } void MoveLeft() { x_ -= kStepLen; ClampToBounds(); } void MoveRight() { x_ += kStepLen; ClampToBounds(); } std::string Serialize() const { std::ostringstream oss; oss << "STATE 1\n" << x_ << " " << y_ << "\nEND\n"; return oss.str(); } private: void ClampToBounds() { if (x_ < kMinX) { x_ = kMinX; } else if (x_ > kMaxX) { x_ = kMaxX; } else if (y_ < kMinY) { y_ = kMinY; } else if (y_ > kMaxY) { y_ = kMaxY; } } private: float x_{0}, y_{0}; }; #endif //CENTERCONTROL_UNITSTATE_H