#include "engine/platform/asset_file.h"

namespace eng {

AssetFile::AssetFile() = default;

AssetFile::~AssetFile() = default;

bool AssetFile::Open(const std::string& file_name,
                     const std::string& root_path) {
  std::string full_path = root_path + "assets/" + file_name;
  file_.reset(fopen(full_path.c_str(), "rb"));
  return !!file_;
}

void AssetFile::Close() {
  file_.reset();
}

size_t AssetFile::GetSize() {
  size_t size = 0;

  if (file_) {
    if (!fseek(file_.get(), 0, SEEK_END)) {
      size = ftell(file_.get());
      rewind(file_.get());
    }
  }

  return size;
}

size_t AssetFile::Read(char* data, size_t size) {
  if (file_)
    return fread(data, 1, size, file_.get());

  return 0;
}

}  // namespace eng
