#include <Milestone/BrickByBrickMilestone/BrickByBrickMilestone.hpp>
#include <Milestone/MetalWorkingMilestone/MetalWorkingMilestone.hpp>
#include <Milestone/NavigationMilestone/NavigationMilestone.hpp>
#include <Milestone/CarpentryMilestone/CarpentryMilestone.hpp>
#include <GraphicsContext/GraphicsContext.hpp>
#include <Color/Color.hpp>

const std::string NavigationMilestone::ID = "main:Navigation";

NavigationMilestone::NavigationMilestone() :
    Milestone(
        Material::paperSheet,
        Material::paperMap,
        "Navigation"
    )
{
    addAchievement(
        CarvedMap,
        Material::carvedMap,
        Material::carvedMap,
        "Use a carved map",
        "*Collect {block|main:planks|1} and {item|main:stick|8}.\n"
        "*{action|Construct} the {item|main:carvedMap}.\n"
        "@constructTable|main:carvedMap|1|main:planks|1|main:stick|8\n"
        "*Open your inventory.\n"
        "*Place the {item|main:carvedMap} in an {equipmentSlot} to {action|equip} it.\n"
        "*You'll now see a simple mini-map and you can open a larger map.\n",
        Dependency{CarpentryMilestone::ID, CarpentryMilestone::ConstructTable}
    );

    addAchievement(
        Compass,
        Material::compass,
        Material::compass,
        "Make a compass",
        "*Collect {item|main:ironIngot|1} and {item|main:nickelIngot|1}.\n"
        "*{action|Construct} the {item|main:compass}.\n"
        "@constructTable|main:compass|1|main:ironIngot|1|main:nickelIngot|1\n",
        Dependency{MetalWorkingMilestone::ID, MetalWorkingMilestone::MineIron},
        Dependency{MetalWorkingMilestone::ID, MetalWorkingMilestone::MineNickel}
    );

    addAchievement(
        PaperMap,
        Material::paperMap,
        Material::paperMap,
        "Make a paper map",
        "*Collect {item|main:paperSheet|1}, {item|main:compass|1} and {item|main:greenDye|4}.\n"
        "*{action|Construct} the {item|main:paperMap}.\n"
        "@constructTable|main:paperMap|1|main:paperSheet|1|main:compass|1|main:greenDye|4\n"
        "*Open your inventory.\n"
        "*Place the {item|main:paperMap} in an {equipmentSlot} to {action|equip} it.\n"
        "*You'll now see a simple mini-map and you can open a larger map.\n"
        "*You'll also be able to place pins on the map and name them.\n",
        Dependency{CarpentryMilestone::ID, CarpentryMilestone::MakePaper},
        Dependency{ID, Compass},
        Dependency{BrickByBrickMilestone::ID, BrickByBrickMilestone::MakeGreenDye}
    );
}