holesome/src/coordinates/translated_coordinates.h

46 lines
1.2 KiB
C++

//
// Created by max on 27.04.23.
//
#ifndef HOLESOME_TRANSLATED_COORDINATES_H
#define HOLESOME_TRANSLATED_COORDINATES_H
#include <memory>
#include "coordinates.h"
#include "coordinate_transformer.h"
#define INITIAL_WORLD_TO_GRID_FACTOR 0.25f
class TranslatedCoordinates
{
public:
explicit TranslatedCoordinates(WorldCoordinates worldCoordinates);
WorldCoordinates world() const;
IsometricCoordinates isometric() const;
GridCoordinates grid() const;
void set(WorldCoordinates newWorldCoordinates);
void set(const TranslatedCoordinates& newCoordinates);
void set(IsometricCoordinates newIsometricCoordinates);
void move(WorldCoordinates deltaWorldCoordinates);
void move(sf::Vector2f deltaWorldCoordinates);
void setParent(std::shared_ptr<TranslatedCoordinates> parent, WorldCoordinates offset = {0, 0});
private:
WorldCoordinates worldCoordinates;
const float worldToGridFactor = INITIAL_WORLD_TO_GRID_FACTOR;
const std::shared_ptr<CoordinateTransformer> coordTransformer = std::make_shared<CoordinateTransformer>();
std::shared_ptr<TranslatedCoordinates> parent = nullptr;
};
#endif //HOLESOME_TRANSLATED_COORDINATES_H