ajout de billot de bois
This commit is contained in:
parent
79013fe5d1
commit
3118f71b9c
@ -36,7 +36,7 @@ Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y
|
|||||||
float height = simplex.eval(xnoiz, ynoiz) * 50.f;// +1.f;
|
float height = simplex.eval(xnoiz, ynoiz) * 50.f;// +1.f;
|
||||||
for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) {
|
for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) {
|
||||||
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||||
SetBlock(ix, iy, iz, BTYPE_GRASS, nullptr);
|
SetBlock(ix, iy, iz, BTYPE_GREENGRASS, nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Lacs"
|
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Lacs"
|
||||||
@ -46,6 +46,37 @@ Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y
|
|||||||
SetBlock(ix, iy, iz, BTYPE_ICE, nullptr);
|
SetBlock(ix, iy, iz, BTYPE_ICE, nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int rnd = rand() % 15;
|
||||||
|
if (rnd == 4)
|
||||||
|
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // structure
|
||||||
|
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||||
|
for (int iy = 0; iy < 14; ++iy) {
|
||||||
|
if (ix == 3)
|
||||||
|
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||||
|
Structure(ix, iy, iz, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (rnd == 3)
|
||||||
|
for (int ix = 0; ix < CHUNK_SIZE_Z; ++ix) // structure
|
||||||
|
for (int iz = 0; iz < CHUNK_SIZE_X; ++iz) {
|
||||||
|
for (int iy = 0; iy < 14; ++iy) {
|
||||||
|
if (iz == 4)
|
||||||
|
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||||
|
Structure(ix, iy, iz, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (rnd == 6)
|
||||||
|
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // structure
|
||||||
|
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||||
|
for (int iy = 0; iy < 14; ++iy) {
|
||||||
|
if (ix == 3)
|
||||||
|
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||||
|
Structure(ix, iy, iz, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Arbres"
|
//for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Arbres"
|
||||||
// for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
// for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||||
// float xnoiz, ynoiz;
|
// float xnoiz, ynoiz;
|
||||||
@ -61,8 +92,8 @@ Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y
|
|||||||
// break;
|
// break;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
/* }
|
/* }
|
||||||
else {
|
else {
|
||||||
input.seekg(0, std::ios_base::end);
|
input.seekg(0, std::ios_base::end);
|
||||||
int size = input.tellg();
|
int size = input.tellg();
|
||||||
input.seekg(0, std::ios_base::beg);
|
input.seekg(0, std::ios_base::beg);
|
||||||
@ -75,7 +106,7 @@ Chunk::Chunk(unsigned int x, unsigned int y, int64_t seed) : m_posX(x), m_posY(y
|
|||||||
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz)
|
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz)
|
||||||
for (int iy = 0; iy < CHUNK_SIZE_Y; ++iy)
|
for (int iy = 0; iy < CHUNK_SIZE_Y; ++iy)
|
||||||
m_blocks.Set(ix, iy, iz, data[ix + (iz * CHUNK_SIZE_X) + (iy * CHUNK_SIZE_Z * CHUNK_SIZE_X)]);
|
m_blocks.Set(ix, iy, iz, data[ix + (iz * CHUNK_SIZE_X) + (iy * CHUNK_SIZE_Z * CHUNK_SIZE_X)]);
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
Chunk::~Chunk() {
|
Chunk::~Chunk() {
|
||||||
@ -140,3 +171,31 @@ void Chunk::MakeClean() { m_isDirty = false; }
|
|||||||
|
|
||||||
void Chunk::MakeModified() { m_isModified = true; }
|
void Chunk::MakeModified() { m_isModified = true; }
|
||||||
|
|
||||||
|
|
||||||
|
void Chunk::Structure(int x, int y, int z,int height)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < height; i++)
|
||||||
|
{
|
||||||
|
SetBlock(x, i + y, z, BTYPE_GRASS, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -28,6 +28,7 @@ class Chunk {
|
|||||||
void CheckNeighbors(unsigned int x, unsigned int z, World* world);
|
void CheckNeighbors(unsigned int x, unsigned int z, World* world);
|
||||||
void GetPosition(unsigned int& x, unsigned int& y) const;
|
void GetPosition(unsigned int& x, unsigned int& y) const;
|
||||||
|
|
||||||
|
void Structure(int x, int y, int z, int height);
|
||||||
bool IsDirty() const;
|
bool IsDirty() const;
|
||||||
void MakeDirty();
|
void MakeDirty();
|
||||||
void MakeClean();
|
void MakeClean();
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
#define BUFFER_LENGTH 150
|
#define BUFFER_LENGTH 150
|
||||||
|
|
||||||
#define CHUNK_SIZE_X 4
|
#define CHUNK_SIZE_X 6
|
||||||
#define CHUNK_SIZE_Y 64
|
#define CHUNK_SIZE_Y 64
|
||||||
#define CHUNK_SIZE_Z 4
|
#define CHUNK_SIZE_Z 6
|
||||||
#define MAX_SELECTION_DISTANCE 5
|
#define MAX_SELECTION_DISTANCE 5
|
||||||
#define SEED 0
|
#define SEED 0
|
||||||
#define COUNTDOWN 300
|
#define COUNTDOWN 300
|
||||||
@ -34,7 +34,7 @@
|
|||||||
#define BULLET_TIME .1
|
#define BULLET_TIME .1
|
||||||
|
|
||||||
typedef uint8_t BlockType;
|
typedef uint8_t BlockType;
|
||||||
enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST };
|
enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_GREENGRASS, BTYPE_LAST };
|
||||||
typedef uint64_t Timestamp;
|
typedef uint64_t Timestamp;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -398,6 +398,7 @@ void Engine::LoadResource() {
|
|||||||
TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png");
|
TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png");
|
||||||
TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png");
|
TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png");
|
||||||
TextureAtlas::TextureIndex texMetalIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "dirt.png");
|
TextureAtlas::TextureIndex texMetalIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "dirt.png");
|
||||||
|
TextureAtlas::TextureIndex texGreenGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "greengrass.png");
|
||||||
|
|
||||||
if (!m_textureAtlas.Generate(TEXTURE_SIZE, false)) {
|
if (!m_textureAtlas.Generate(TEXTURE_SIZE, false)) {
|
||||||
std::cout << " Unable to generate texture atlas ..." << std::endl;
|
std::cout << " Unable to generate texture atlas ..." << std::endl;
|
||||||
@ -413,7 +414,8 @@ void Engine::LoadResource() {
|
|||||||
m_blockinfo[BTYPE_METAL] = new BlockInfo(BTYPE_METAL, "Metal", u, v, s, 1);
|
m_blockinfo[BTYPE_METAL] = new BlockInfo(BTYPE_METAL, "Metal", u, v, s, 1);
|
||||||
m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s);
|
m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s);
|
||||||
m_blockinfo[BTYPE_ICE] = new BlockInfo(BTYPE_ICE, "Ice", u, v, s, 1);
|
m_blockinfo[BTYPE_ICE] = new BlockInfo(BTYPE_ICE, "Ice", u, v, s, 1);
|
||||||
|
m_textureAtlas.TextureIndexToCoord(texGreenGrassIndex, u, v, s, s);
|
||||||
|
m_blockinfo[BTYPE_GREENGRASS] = new BlockInfo(BTYPE_GREENGRASS, "GreenGrass", u, v, s, 1);
|
||||||
std::cout << " Loading and compiling shaders ..." << std::endl;
|
std::cout << " Loading and compiling shaders ..." << std::endl;
|
||||||
if (!m_shader01.Load(SHADER_PATH "shader01.vert", SHADER_PATH "shader01.frag", true)) {
|
if (!m_shader01.Load(SHADER_PATH "shader01.vert", SHADER_PATH "shader01.frag", true)) {
|
||||||
std::cout << " Failed to load shader " << std::endl;
|
std::cout << " Failed to load shader " << std::endl;
|
||||||
@ -441,6 +443,7 @@ void Engine::SystemNotification(std::string systemLog) {
|
|||||||
|
|
||||||
DisplayNotification(message);
|
DisplayNotification(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::KillNotification(Player killer, Player killed) {
|
void Engine::KillNotification(Player killer, Player killed) {
|
||||||
std::string message = "";
|
std::string message = "";
|
||||||
|
|
||||||
@ -1023,11 +1026,14 @@ void Engine::Render(float elapsedTime) {
|
|||||||
m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation
|
m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation
|
||||||
// (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!).
|
// (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!).
|
||||||
|
|
||||||
|
if (m_key1) bloc++;
|
||||||
|
else if (m_key2) bloc--;
|
||||||
|
|
||||||
if (m_mouseWU) bloc++;
|
if (m_mouseWU) bloc++;
|
||||||
else if (m_mouseWD) bloc--;
|
else if (m_mouseWD) bloc--;
|
||||||
if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1;
|
if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1;
|
||||||
else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST <20>quipe l'arme.
|
else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST <20>quipe l'arme.
|
||||||
m_mouseWU = m_mouseWD = false;
|
m_mouseWU = m_mouseWD = m_key1 = m_key2 = false;
|
||||||
|
|
||||||
if (m_mouseL) {
|
if (m_mouseL) {
|
||||||
if (bloc != BTYPE_LAST)
|
if (bloc != BTYPE_LAST)
|
||||||
@ -1200,6 +1206,10 @@ void Engine::KeyPressEvent(unsigned char key) {
|
|||||||
break;
|
break;
|
||||||
case 24: // Y - Ignorer
|
case 24: // Y - Ignorer
|
||||||
break;
|
break;
|
||||||
|
case 27: // 1
|
||||||
|
break;
|
||||||
|
case 28: // 2
|
||||||
|
break;
|
||||||
case 255: // Fn - Ignorer
|
case 255: // Fn - Ignorer
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1274,6 +1284,12 @@ void Engine::KeyReleaseEvent(unsigned char key) {
|
|||||||
else
|
else
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
break;
|
break;
|
||||||
|
case 27: // 1
|
||||||
|
m_key1 = true;
|
||||||
|
break;
|
||||||
|
case 28: // 2
|
||||||
|
m_key2 = true;
|
||||||
|
break;
|
||||||
case 57: // Espace - Stop sauter
|
case 57: // Espace - Stop sauter
|
||||||
m_keySpace = false;
|
m_keySpace = false;
|
||||||
break;
|
break;
|
||||||
@ -1394,3 +1410,5 @@ bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool use
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,6 +58,9 @@ private:
|
|||||||
void DrawHud(float elapsedTime, BlockType bloc);
|
void DrawHud(float elapsedTime, BlockType bloc);
|
||||||
void PrintText(float x, float y, const std::string& t, float charSizeMultiplier = 1.0f);
|
void PrintText(float x, float y, const std::string& t, float charSizeMultiplier = 1.0f);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Connector m_conn;
|
Connector m_conn;
|
||||||
Shader m_shader01;
|
Shader m_shader01;
|
||||||
BlockInfo* m_blockinfo[BTYPE_LAST];
|
BlockInfo* m_blockinfo[BTYPE_LAST];
|
||||||
@ -123,6 +126,8 @@ private:
|
|||||||
bool m_soloMultiChoiceMade = false;
|
bool m_soloMultiChoiceMade = false;
|
||||||
bool m_stopcountdown = false;
|
bool m_stopcountdown = false;
|
||||||
|
|
||||||
|
bool m_key1 = false;
|
||||||
|
bool m_key2 = false;
|
||||||
bool m_keyK = false;
|
bool m_keyK = false;
|
||||||
bool m_keyL = false;
|
bool m_keyL = false;
|
||||||
bool m_keyW = false;
|
bool m_keyW = false;
|
||||||
|
BIN
SQCSim2021/media/textures/greengrass.png
Normal file
BIN
SQCSim2021/media/textures/greengrass.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 MiB |
Loading…
Reference in New Issue
Block a user