Добавил:
Вуз:
Предмет:
Файл:
#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
