#pragma once #include "interfaces/vector2.hpp" #include /** * A 2D Vector. */ class Vector2 : public IVector2 { public: /** * Creates a 2D vector. */ explicit Vector2(const IVector2Options &options); /** * Returns the X coordinate. */ [[nodiscard]] unsigned int x() const override; /** * Sets the X coordinate. * * @param x A new X coordinate */ void x(unsigned int x) override; /** * Returns the Y coordinate. */ [[nodiscard]] unsigned int y() const override; /** * Sets the Y coordinate. * * @param Y A new Y coordinate */ void y(unsigned int y) override; const IVector2 &operator+=(const IVector2 &vector2) override; const IVector2 &operator-=(const IVector2 &vector2) override; private: unsigned int _x; unsigned int _y; };