Скачиваний:
0
Добавлен:
16.04.2026
Размер:
1.83 Кб
Скачать
#include "Level.h"

#include <fstream>

#include "settings.h"
#include "Engine.h"

Level::Level()
{
	//Default NULL map
	for (int i{}; i < LVL_HEIGHT; i++)
	{
		for (int j{}; j < LVL_WIDTH; j++)
		{
			levelMatrix[i][j] = 0;
		}
	}

	// Load map from file
	std::ifstream lvlfile("lvl.txt");

	if (lvlfile.is_open())
	{
		for (int i{}; i < LVL_HEIGHT; i++)
		{
			for (int j{}; j < LVL_WIDTH; j++)
			{
				lvlfile >> levelMatrix[i][j];
			}
		}
	}

	lvlfile.close();
}

Level::~Level()
{
	tileSetImg->Release();
}

void Level::Draw(ID2D1HwndRenderTarget* mRenderTarget)
{
	// Loads images
	if (tileSetImg == NULL)
	{
		tileSetImg = engine->LoadImageW(L"mazetileset.png");
	}

	// Draw level tiles
	for (int i{}; i < LVL_HEIGHT; i++)
	{
		for (int j{}; j < LVL_WIDTH; j++)
		{
			if ((j + 1) * TILE_WIDTH >= Engine::offset && j * TILE_WIDTH < Engine::offset + X_RES)
			{
				if (levelMatrix[i][j] != 0)
				{
					D2D1_RECT_F rectangle1 = D2D1::RectF(
						j * TILE_WIDTH - Engine::offset, i * TILE_WIDTH,
						(j + 1) * TILE_WIDTH - Engine::offset + 1, (i + 1) * TILE_WIDTH
					);

					int posX = levelMatrix[i][j] % 7;
					int posY = levelMatrix[i][j] / 7;

					D2D1_RECT_F rectangle2 = D2D1::RectF(
						posX * TILE_WIDTH, posY * TILE_WIDTH,
						posX * TILE_WIDTH + TILE_WIDTH - 1, posY * TILE_WIDTH + TILE_WIDTH - 1
					);

					mRenderTarget->DrawBitmap(
						tileSetImg,
						rectangle1,
						1.0f,
						D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR,
						rectangle2);
				}
			}
		}
	}
}

Point2D Level::getStartPoint()
{
	Point2D tmp;
	
	for (int i{}; i < LVL_HEIGHT; i++)
	{
		for (int j{}; j < LVL_WIDTH; j++)
		{
			if (levelMatrix[i][j] == 3)
			{
				tmp.x = i;
				tmp.y = j;
			}
		}
	}

	return tmp;
}
Соседние файлы в папке 6