You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.8 KiB
C++
86 lines
1.8 KiB
C++
/******************************************************************************
|
|
* File - grid.h
|
|
* Author - Joey Pollack
|
|
* Date - 2022/01/25 (y/m/d)
|
|
* Mod Date - 2022/01/25 (y/m/d)
|
|
* Description - A 2D fixed-size array of data. Size must be set when
|
|
* this container is created and can not be changed later.
|
|
******************************************************************************/
|
|
|
|
#ifndef GRID_H_
|
|
#define GRID_H_
|
|
|
|
#include "types.h"
|
|
|
|
namespace lunarium
|
|
{
|
|
template<typename T>
|
|
class Grid
|
|
{
|
|
public:
|
|
Grid(Sizei size);
|
|
|
|
T* operator[](Point2Di at);
|
|
T GetAt(Point2Di at);
|
|
void SetAt(Point2Di at, T value);
|
|
|
|
void SetAll(T value);
|
|
|
|
private:
|
|
|
|
struct Node
|
|
{
|
|
T Data;
|
|
};
|
|
|
|
Sizei mSize;
|
|
Node** mGrid;
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////
|
|
// IMPLEMENTATION
|
|
////////////////////////////////////////////////////////////
|
|
|
|
template<typename T>
|
|
Grid<T>::Grid(Sizei size)
|
|
: mSize(size)
|
|
{
|
|
mGrid = new Node*[size.Width];
|
|
for (int i = 0; i < size.Width; i++)
|
|
{
|
|
mGrid[i] = new Node[size.Height];
|
|
}
|
|
}
|
|
|
|
template<typename T>
|
|
T* Grid<T>::operator[](Point2Di at)
|
|
{
|
|
return &mGrid[at.X][at.Y].Data;
|
|
}
|
|
|
|
template<typename T>
|
|
T Grid<T>::GetAt(Point2Di at)
|
|
{
|
|
return mGrid[at.X][at.Y].Data;
|
|
}
|
|
|
|
template<typename T>
|
|
void Grid<T>::SetAt(Point2Di at, T value)
|
|
{
|
|
mGrid[at.X][at.Y].Data = value;
|
|
}
|
|
|
|
template<typename T>
|
|
void Grid<T>::SetAll(T value)
|
|
{
|
|
for (int i = 0; i < mSize.Width; i++)
|
|
{
|
|
for (int j = 0; j < mSize.Height; j++)
|
|
{
|
|
mGrid[i][j].Data = value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif GRID_H_ |