From d6027ce0f9f4ff454b74ea4574aa3ea467ecaaeb Mon Sep 17 00:00:00 2001 From: root Date: Wed, 1 Feb 2012 04:25:32 +0200 Subject: [PATCH] [Add] Initial procedural generation stuff. --- Unuk-QT/Makefile | 5 +++-- Unuk-QT/Unuk-QT.pro.user | 2 +- src/Unuk/Player.h | 6 +++--- src/libUnuk/LevelGen/LevelGen.cpp | 34 +++++++++++++++++++++++++++++++ src/libUnuk/LevelGen/LevelGen.h | 1 + 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Unuk-QT/Makefile b/Unuk-QT/Makefile index c949dbb..8b44477 100644 --- a/Unuk-QT/Makefile +++ b/Unuk-QT/Makefile @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: Unuk-QT -# Generated by qmake (2.01a) (Qt 4.7.4) on: Mon Jan 30 01:06:11 2012 +# Generated by qmake (2.01a) (Qt 4.7.4) on: Wed Feb 1 03:55:02 2012 # Project: Unuk-QT.pro # Template: app # Command: /home/kono/QtSDK/Desktop/Qt/474/gcc/bin/qmake -spec ../../../QtSDK/Desktop/Qt/474/gcc/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro @@ -269,7 +269,8 @@ WorldManager.o: ../src/libUnuk/Engine/WorldManager.cpp ../src/libUnuk/Engine/Wor ../src/libUnuk/UI/Bar.h \ ../src/libUnuk/System/Rect.h \ ../src/libUnuk/Engine/AStar.h \ - ../src/libUnuk/Engine/AStarBase.h + ../src/libUnuk/Engine/AStarBase.h \ + ../src/Unuk/Player.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o WorldManager.o ../src/libUnuk/Engine/WorldManager.cpp ParticleEmitter.o: ../src/libUnuk/Engine/ParticleEmitter.cpp ../src/libUnuk/Engine/ParticleEmitter.h \ diff --git a/Unuk-QT/Unuk-QT.pro.user b/Unuk-QT/Unuk-QT.pro.user index 1c2634f..fff99ab 100644 --- a/Unuk-QT/Unuk-QT.pro.user +++ b/Unuk-QT/Unuk-QT.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/src/Unuk/Player.h b/src/Unuk/Player.h index e30cfc4..094246b 100644 --- a/src/Unuk/Player.h +++ b/src/Unuk/Player.h @@ -18,13 +18,13 @@ public: string GetName(void) { return _name; } void SetLevel(int level); - int GetLevel() { return _level; } + int GetLevel(void) { return _level; } void SetExp(int exp); - int GetExp() { return _exp; } + int GetExp(void) { return _exp; } - int GetExpNeeded() { return _expNeeded; } void SetExpNeeded(int expNeeded); + int GetExpNeeded(void) { return _expNeeded; } static const int BASE_EXP_NEEDED; diff --git a/src/libUnuk/LevelGen/LevelGen.cpp b/src/libUnuk/LevelGen/LevelGen.cpp index 1ad3c24..e64d1ed 100644 --- a/src/libUnuk/LevelGen/LevelGen.cpp +++ b/src/libUnuk/LevelGen/LevelGen.cpp @@ -125,6 +125,9 @@ void LevelGen::Load(const string filename) { // levelWidth = x * TILE_WIDTH; levelHeight = y * TILE_HEIGHT; + + // procedural generation + DoMagic(); //character->Load(filename); @@ -204,6 +207,37 @@ void LevelGen::Unload(void) { _entityTextures.Unload(); } +void LevelGen::DoMagic(void) { + int nextEntityGen = 1 + (rand() % 20); + + const char* entityTextures[6] = { + "../Data/Media/Images/Entities/tree.png", + "../Data/Media/Images/Entities/hedge.png", + "../Data/Media/Images/Entities/barrel.png", + "../Data/Media/Images/Entities/closedChest.png", + "../Data/Media/Images/Entities/closedChestMetal.png", + "../Data/Media/Images/Entities/closedChestMetal2.png", + }; + + for(int x = 0; x < TILE_ARRAY_SIZE; x++) { + for(int y = 0; y < TILE_ARRAY_SIZE; y++) { + nextEntityGen--; + if(!_tile[x][y].GetTileSolidity() && nextEntityGen <= 0) { + + int texId = rand() % 5; + _tile[x][y].SetEntityTexture(_entityTextures.AddAlpha(entityTextures[texId])); + + _tile[x][y].SetEntityXY(_tile[x][y].GetTileX() + TILE_WIDTH / 2 - _tile[x][y].GetEntityWidth() / 2, + _tile[x][y].GetTileY() + TILE_HEIGHT / 2 - _tile[x][y].GetEntityHeight() / 2); + + _tile[x][y].SetEntitySolidity(true); + + nextEntityGen = 1 + (rand() % 10); + } + } + } +} + string LevelGen::GetCurrentMap(void) { return _currentMap; } diff --git a/src/libUnuk/LevelGen/LevelGen.h b/src/libUnuk/LevelGen/LevelGen.h index f58b228..799a78a 100644 --- a/src/libUnuk/LevelGen/LevelGen.h +++ b/src/libUnuk/LevelGen/LevelGen.h @@ -47,6 +47,7 @@ public: private: void Unload(void); + void DoMagic(void); string _currentMap; int x;