#pragma once

#include "Ship/Cargo.h"

#include <Core/TimeObserver.h>
#include <memory>
#include <string>
#include <random>
#include <vector>

class Store : public TimeObserver {
public:
    explicit Store(std::vector<std::unique_ptr<Cargo>>&& cargos);

    // Override from TimeObserver
    void nextDay() override;

    size_t getTotalPrice() const;
    std::vector<std::string> getCargosName() const;
    void printCargo() const;

private:
    static std::random_device _rd;
    std::mt19937 _seed;
    std::vector<std::unique_ptr<Cargo>> _cargoes;
};
