/*
 * Author:          Patrick-Christopher Mattulat
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2022-08-05
 * Changed:         2022-08-05
 *
 * */

#ifndef LS_MATH_VECTOR2_HPP
#define LS_MATH_VECTOR2_HPP

#include <ls-math/core/types/VectorTypes.hpp>
#include <cstdlib>

namespace ls::math::vector
{
  class Vector2
  {
    public:

      Vector2(const ls::math::core::type::vector2_component& _x, const ls::math::core::type::vector2_component& _y);
      ~Vector2() = default;

      // arithmetic operations

      ls::math::vector::Vector2 operator+(Vector2 _vector);
      ls::math::vector::Vector2 operator-(Vector2 _vector);

      // additional functionality

      ls::math::core::type::vector2_component getX();
      ls::math::core::type::vector2_component getY();
      void setX(const ls::math::core::type::vector2_component& _value);
      void setY(const ls::math::core::type::vector2_component& _value);

    private:

      ls::math::core::type::vector2_components components{};
  };
}

#endif
