1 /*
2 script/lua_api/l_mapgen.h
3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 */
5 
6 /*
7 This file is part of Freeminer.
8 
9 Freeminer is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13 
14 Freeminer  is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with Freeminer.  If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #ifndef L_MAPGEN_H_
24 #define L_MAPGEN_H_
25 
26 #include "lua_api/l_base.h"
27 
28 class INodeDefManager;
29 class NodeResolver;
30 class DecoSimple;
31 class DecoSchematic;
32 
33 class ModApiMapgen : public ModApiBase {
34 private:
35 	// get_mapgen_object(objectname)
36 	// returns the requested object used during map generation
37 	static int l_get_mapgen_object(lua_State *L);
38 
39 	// set_mapgen_params(params)
40 	// set mapgen parameters
41 	static int l_set_mapgen_params(lua_State *L);
42 
43 	// set_noiseparam_defaults({np1={noise params}, ...})
44 	static int l_set_noiseparam_defaults(lua_State *L);
45 
46 	// set_gen_notify(flagstring)
47 	static int l_set_gen_notify(lua_State *L);
48 
49 	// register_biome({lots of stuff})
50 	static int l_register_biome(lua_State *L);
51 
52 	// register_decoration({lots of stuff})
53 	static int l_register_decoration(lua_State *L);
54 
55 	// register_ore({lots of stuff})
56 	static int l_register_ore(lua_State *L);
57 
58 	// create_schematic(p1, p2, probability_list, filename)
59 	static int l_create_schematic(lua_State *L);
60 
61 	// place_schematic(p, schematic, rotation, replacement)
62 	static int l_place_schematic(lua_State *L);
63 
64 	static bool regDecoSimple(lua_State *L,
65 			NodeResolver *resolver, DecoSimple *deco);
66 	static bool regDecoSchematic(lua_State *L,
67 			INodeDefManager *ndef, DecoSchematic *deco);
68 
69 	static struct EnumString es_BiomeTerrainType[];
70 	static struct EnumString es_DecorationType[];
71 	static struct EnumString es_MapgenObject[];
72 	static struct EnumString es_OreType[];
73 	static struct EnumString es_Rotation[];
74 
75 public:
76 	static void Initialize(lua_State *L, int top);
77 };
78 
79 
80 
81 #endif /* L_MAPGEN_H_ */
82