MapAdventureObjectPickupItem.h 1.49 KB
//
//  MapAdventureObjectSlide.h
//  WattsenglishFoodApp
//
//  Created by Katarzyna Kalinowska-Górska on 21/03/2020.
//

#ifndef MapAdventureObjectPickupItem_h
#define MapAdventureObjectPickupItem_h

#include "IMapAdventureObject.h"
#include "AniMapUtils.h"
#include "AniJSONParseUtilsMap.h"

static IMapAdventureObjectEventType IMapAdventureObjectEventTypeItemPickedUp = "IMapAdventureObjectEventTypeItemPickedUp";

class MapAdventureObjectPickupItem : public IMapAdventureObject {
    
public:
    constexpr static char* const ClassName {const_cast<char* const>("MapAdventureObjectPickupItem")};
    
    // init
    MapAdventureObjectPickupItem(const rapidjson::Value& p_mapObjectData, IMapImageObject* p_mapImageObject, bool p_oneTile = false);
    MapAdventureObjectPickupItem(std::string objectName, IMapImageObject* p_mapImageObject, bool p_oneTile = false);
    
    // virtuals
    virtual std::vector<AniMapUtils::TileData> getOccupiedTiles() const  override;
    virtual std::vector<AniMapUtils::TileData> getOccupiedTilesRestrictedByIntersectionPercent(float percent) const;
    virtual std::vector<AniMapUtils::TileData> getEntryTiles() const  override;
    
    virtual void pickUp();
    virtual void reset() override;
    
    virtual void resetOccupiedTileIfNecessary();
    
protected:
    bool m_oneTile { false};
    // only use if single predefined tile
    AniMapUtils::TileData m_occupiedTile {-1,-1};
//    std::vector<MapUtils::TileData> m_occupiedTiles;
};

#endif /* MapAdventureObjectPickupItem_h */