summaryrefslogtreecommitdiff
path: root/src/script/common/c_content.h
blob: fc00ce089e915f7c847d250ccd966b6bc5ef14d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/


/******************************************************************************/
/******************************************************************************/
/* WARNING!!!! do NOT add this header in any include file or any code file    */
/*             not being a script/modapi file!!!!!!!!                         */
/******************************************************************************/
/******************************************************************************/

#ifndef C_CONTENT_H_
#define C_CONTENT_H_

extern "C" {
#include <lua.h>
}

#include <iostream>
#include <map>
#include <vector>

#include "irrlichttypes_bloated.h"
#include "util/string.h"

struct MapNode;
class INodeDefManager;
struct PointedThing;
struct ItemStack;
struct ItemDefinition;
struct ToolCapabilities;
struct ObjectProperties;
struct SimpleSoundSpec;
struct ServerSoundParams;
class Inventory;
struct NodeBox;
struct ContentFeatures;
struct TileDef;
class Server;
struct DigParams;
struct HitParams;
struct EnumString;
struct NoiseParams;
class DecoSchematic;


ContentFeatures    read_content_features         (lua_State *L, int index);
TileDef            read_tiledef                  (lua_State *L, int index);
void               read_soundspec                (lua_State *L, int index,
                                                  SimpleSoundSpec &spec);
NodeBox            read_nodebox                  (lua_State *L, int index);

void               read_server_sound_params      (lua_State *L, int index,
                                                  ServerSoundParams &params);

void          push_dig_params           (lua_State *L,const DigParams &params);
void          push_hit_params           (lua_State *L,const HitParams &params);

ItemStack     read_item                 (lua_State *L, int index, Server* srv);


ToolCapabilities   read_tool_capabilities    (lua_State *L,
                                              int table);
void               push_tool_capabilities    (lua_State *L,
                                              const ToolCapabilities &prop);

ItemDefinition     read_item_definition      (lua_State *L,
                                              int index,
                                              ItemDefinition default_def);
void               read_object_properties    (lua_State *L,
                                              int index,
                                              ObjectProperties *prop);

//TODO fix parameter oreder!
void               push_inventory_list       (Inventory *inv,
                                              const char *name,
                                              lua_State *L);
void               read_inventory_list       (Inventory *inv,
                                              const char *name,
                                              lua_State *L,
                                              int tableindex,
                                              Server* srv,
                                              int forcesize=-1);

MapNode            readnode                  (lua_State *L,
                                              int index,
                                              INodeDefManager *ndef);
void               pushnode                  (lua_State *L,
                                              const MapNode &n,
                                              INodeDefManager *ndef);

NodeBox            read_nodebox              (lua_State *L, int index);

void               read_groups               (lua_State *L,
                                              int index,
                                              std::map<std::string, int> &result);

//TODO rename to "read_enum_field"
int                getenumfield              (lua_State *L,
                                              int table,
                                              const char *fieldname,
                                              const EnumString *spec,
                                              int default_);

u32                getflagsfield             (lua_State *L, int table,
                                              const char *fieldname,
                                              FlagDesc *flagdesc);

void               push_items                (lua_State *L,
                                              const std::vector<ItemStack> &items);

std::vector<ItemStack> read_items            (lua_State *L,
                                              int index,
                                              Server* srv);

void               read_soundspec            (lua_State *L,
                                              int index,
                                              SimpleSoundSpec &spec);


bool               string_to_enum            (const EnumString *spec,
                                              int &result,
                                              const std::string &str);

NoiseParams*       read_noiseparams          (lua_State *L, int index);

bool               read_schematic            (lua_State *L, int index,
                                              DecoSchematic *dschem,
                                              Server *server);

void               luaentity_get             (lua_State *L,u16 id);

extern struct EnumString es_TileAnimationType[];

#endif /* C_CONTENT_H_ */