Fix how address is logged when a wrong password is supplied
[oweals/minetest.git] / src / dungeongen.h
index 4be3df4aa8f05455401cb247b54d3bf1366e948d..4e1201d82df6df757269ec8c61ee145d6da1abd0 100644 (file)
@@ -22,49 +22,57 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "voxel.h"
 #include "noise.h"
+#include "mapgen.h"
 
 #define VMANIP_FLAG_DUNGEON_INSIDE VOXELFLAG_CHECKED1
 #define VMANIP_FLAG_DUNGEON_PRESERVE VOXELFLAG_CHECKED2
 #define VMANIP_FLAG_DUNGEON_UNTOUCHABLE (\
                VMANIP_FLAG_DUNGEON_INSIDE|VMANIP_FLAG_DUNGEON_PRESERVE)
 
-class ManualMapVoxelManipulator;
+class MMVManip;
 class INodeDefManager;
 
-v3s16 rand_ortho_dir(PseudoRandom &random);
+v3s16 rand_ortho_dir(PseudoRandom &random, bool diagonal_dirs);
 v3s16 turn_xz(v3s16 olddir, int t);
 v3s16 random_turn(PseudoRandom &random, v3s16 olddir);
 int dir_to_facedir(v3s16 d);
 
+
+struct DungeonParams {
+       content_t c_water;
+       content_t c_cobble;
+       content_t c_moss;
+       content_t c_stair;
+
+       GenNotifyType notifytype;
+       bool diagonal_dirs;
+       float mossratio;
+       v3s16 holesize;
+       v3s16 roomsize;
+
+       NoiseParams np_rarity;
+       NoiseParams np_wetness;
+       NoiseParams np_density;
+};
+
 class DungeonGen {
 public:
+       MMVManip *vm;
+       Mapgen *mg;
        u32 blockseed;
-       u64 mapseed;
-       ManualMapVoxelManipulator *vmanip;
-       INodeDefManager *ndef;
        PseudoRandom random;
        v3s16 csize;
-       s16 water_level;
-       
-       NoiseParams *np_rarity;
-       NoiseParams *np_wetness;
-       NoiseParams *np_density;
-       
-       content_t cid_water_source;
-       content_t cid_cobble;
-       content_t cid_mossycobble;
-       content_t cid_torch;
-       content_t cid_cobblestair;
-       
+
+       content_t c_torch;
+       DungeonParams dp;
+
        //RoomWalker
        v3s16 m_pos;
        v3s16 m_dir;
 
-       DungeonGen(INodeDefManager *ndef, u64 seed, s16 waterlevel);
-       void generate(ManualMapVoxelManipulator *vm, u32 bseed,
-                                 v3s16 full_node_min, v3s16 full_node_max);
-       //void generate(v3s16 full_node_min, v3s16 full_node_max, u32 bseed);
-       
+       DungeonGen(Mapgen *mg, DungeonParams *dparams);
+       void generate(u32 bseed, v3s16 full_node_min, v3s16 full_node_max);
+
        void makeDungeon(v3s16 start_padding);
        void makeRoom(v3s16 roomsize, v3s16 roomplace);
        void makeCorridor(v3s16 doorplace, v3s16 doordir,
@@ -76,53 +84,15 @@ public:
        bool findPlaceForDoor(v3s16 &result_place, v3s16 &result_dir);
        bool findPlaceForRoomDoor(v3s16 roomsize, v3s16 &result_doorplace,
                        v3s16 &result_doordir, v3s16 &result_roomplace);
-                       
-       void randomizeDir()
-       {
-               m_dir = rand_ortho_dir(random);
-       }
-};
-
-class RoomWalker
-{
-public:
-
-       RoomWalker(VoxelManipulator &vmanip_, v3s16 pos, PseudoRandom &random,
-                       INodeDefManager *ndef):
-                       vmanip(vmanip_),
-                       m_pos(pos),
-                       m_random(random),
-                       m_ndef(ndef)
-       {
-               randomizeDir();
-       }
 
        void randomizeDir()
        {
-               m_dir = rand_ortho_dir(m_random);
+               m_dir = rand_ortho_dir(random, dp.diagonal_dirs);
        }
-
-       void setPos(v3s16 pos)
-       {
-               m_pos = pos;
-       }
-
-       void setDir(v3s16 dir)
-       {
-               m_dir = dir;
-       }
-
-       //bool findPlaceForDoor(v3s16 &result_place, v3s16 &result_dir);
-       //bool findPlaceForRoomDoor(v3s16 roomsize, v3s16 &result_doorplace,
-       //              v3s16 &result_doordir, v3s16 &result_roomplace);
-
-private:
-       VoxelManipulator &vmanip;
-       v3s16 m_pos;
-       v3s16 m_dir;
-       PseudoRandom &m_random;
-       INodeDefManager *m_ndef;
 };
 
+extern NoiseParams nparams_dungeon_rarity;
+extern NoiseParams nparams_dungeon_wetness;
+extern NoiseParams nparams_dungeon_density;
 
 #endif