﻿#pragma once

#include "Common.h"
#include "ImageManager.h"

// CSVマップの読み込み、当たり判定、スクロール描画を担当する
class Stage
{
public:
    // タイルとマップの大きさ。座標計算の基準として各処理から参照する
    static const int tileSize = 32;
    static const int mapWidth = 40;
    static const int mapHeight = 15;

    // csvPathは実行フォルダを基準にしたパスを渡す
    bool Initialize(const wchar_t* csvPath);
    bool LoadFromCsv(const wchar_t* csvPath);

    bool IsSolidTile(int tileX, int tileY) const;
    bool IsSolidAtRect(const Rect& rect) const;
    bool ResolveHorizontal(Rect& rect, int moveX) const;
    bool ResolveVertical(Rect& rect, int moveY) const;

    // cameraXはワールド座標における画面左端の位置
    void Draw(int cameraX, const ImageManager& images) const;

    Rect GetGoal() const;
    bool IsLoadedFromCsv() const;

private:
    void ClearMap();
    void SetGoalTile(int tileX, int tileY);
    void DrawTile(int screenX, int screenY, const ImageManager& images) const;
    void DrawGoal(int cameraX, const ImageManager& images) const;

private:
    // 読み込んだCSVのタイル情報とゴール位置
    int tiles[mapHeight][mapWidth] = {};
    Rect goal = { 0, 0, tileSize, tileSize };
    bool loadedFromCsv = false;
};

