Actor::Actor(Vector2 position, GameManager & manager, Vector2 spd, std::unordered_map<std::string, std::shared_ptr<SpriteSheet>>& sprites, const std::string&& startSprite, SpriteSheet::XAxisDirection startXDirection, SpriteSheet::YAxisDirection startYDirection) :_curKinematic{ position, spd }, _prevKinematic{ position, spd }, _health(100), _mgr(&manager), _gameScreen(std::dynamic_pointer_cast<GameScreen>(manager.GetCurrentScreen())), _isVisible(true), _isDestroyed(false), _startXDir(startXDirection), _startYDir(startYDirection), _spriteXDir(startXDirection), _spriteYDir(startYDirection), _colourMod{255, 255, 255, 255} { // Copy the list of sprites _sprites = sprites; _currentSpriteSheet = startSprite; _aabb = AABB(_sprites[startSprite]->GetFrameWidth(), _sprites[startSprite]->GetFrameHeight(), *this); _sprites[_currentSpriteSheet]->SetXAxisDirection(_spriteXDir); _sprites[_currentSpriteSheet]->SetYAxisDirection(_spriteYDir); _sprites[_currentSpriteSheet]->Start(); }