X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fscript%2Fcommon%2Fc_content.h;h=a6b96c0122913cf5787297b9092d20265ab057e7;hb=21df26984da91143c15587f5a03c98d68c3adc4e;hp=6d1dfe1d5a7d5f34c373ed452fdc2be84e9b1549;hpb=4e1f50035e860a00636ca5d804c267119df99601;p=dragonfireclient.git diff --git a/src/script/common/c_content.h b/src/script/common/c_content.h index 6d1dfe1d5..a6b96c012 100644 --- a/src/script/common/c_content.h +++ b/src/script/common/c_content.h @@ -25,22 +25,28 @@ with this program; if not, write to the Free Software Foundation, Inc., /******************************************************************************/ /******************************************************************************/ -#ifndef C_CONTENT_H_ -#define C_CONTENT_H_ +#pragma once extern "C" { #include } #include -#include #include #include "irrlichttypes_bloated.h" #include "util/string.h" +#include "itemgroup.h" +#include "itemdef.h" +#include "c_types.h" +// We do a explicit path include because by default c_content.h include src/client/hud.h +// prior to the src/hud.h, which is not good on server only build +#include "../../hud.h" + +namespace Json { class Value; } struct MapNode; -class INodeDefManager; +class NodeDefManager; struct PointedThing; struct ItemStack; struct ItemDefinition; @@ -49,102 +55,158 @@ struct ObjectProperties; struct SimpleSoundSpec; struct ServerSoundParams; class Inventory; +class InventoryList; struct NodeBox; struct ContentFeatures; struct TileDef; -class Server; +class IGameDef; struct DigParams; struct HitParams; struct EnumString; struct NoiseParams; -class DecoSchematic; +class Schematic; +class ServerActiveObject; +struct collisionMoveResult; + +extern struct EnumString es_TileAnimationType[]; + +void read_content_features (lua_State *L, ContentFeatures &f, + int index); +void push_content_features (lua_State *L, + const ContentFeatures &c); +void push_nodebox (lua_State *L, + const NodeBox &box); +void push_box (lua_State *L, + const std::vector &box); -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 push_palette (lua_State *L, + const std::vector *palette); + +TileDef read_tiledef (lua_State *L, int index, + u8 drawtype); + +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 ¶ms); +void read_server_sound_params (lua_State *L, int index, + ServerSoundParams ¶ms); -void push_dig_params (lua_State *L,const DigParams ¶ms); -void push_hit_params (lua_State *L,const HitParams ¶ms); +void push_dig_params (lua_State *L, + const DigParams ¶ms); +void push_hit_params (lua_State *L, + const HitParams ¶ms); -ItemStack read_item (lua_State *L, int index, Server* srv); +ItemStack read_item (lua_State *L, int index, IItemDefManager *idef); +struct TileAnimationParams read_animation_definition(lua_State *L, int index); +void push_animation_definition(lua_State *L, struct TileAnimationParams anim); -ToolCapabilities read_tool_capabilities (lua_State *L, - int table); +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, +void read_item_definition (lua_State *L, int index, const ItemDefinition &default_def, + ItemDefinition &def); +void push_item_definition (lua_State *L, + const ItemDefinition &i); +void push_item_definition_full (lua_State *L, + const ItemDefinition &i); + +void read_object_properties (lua_State *L, int index, + ServerActiveObject *sao, + ObjectProperties *prop, + IItemDefManager *idef); +void push_object_properties (lua_State *L, ObjectProperties *prop); +void push_inventory (lua_State *L, + Inventory *inventory); + void push_inventory_list (lua_State *L, - Inventory *inv, - const char *name); -void read_inventory_list (lua_State *L, - int tableindex, - Inventory *inv, - const char *name, - Server* srv, - int forcesize=-1); - -MapNode readnode (lua_State *L, - int index, - INodeDefManager *ndef); -void pushnode (lua_State *L, - const MapNode &n, - INodeDefManager *ndef); + const InventoryList &invlist); +void push_inventory_lists (lua_State *L, + const Inventory &inv); +void read_inventory_list (lua_State *L, int tableindex, + Inventory *inv, const char *name, + IGameDef *gdef, int forcesize=-1); -NodeBox read_nodebox (lua_State *L, int index); +MapNode readnode (lua_State *L, int index, + const NodeDefManager *ndef); +void pushnode (lua_State *L, const MapNode &n, + const NodeDefManager *ndef); -void read_groups (lua_State *L, - int index, - std::map &result); + +void read_groups (lua_State *L, int index, + ItemGroupList &result); + +void push_groups (lua_State *L, + const ItemGroupList &groups); //TODO rename to "read_enum_field" -int getenumfield (lua_State *L, - int table, +int getenumfield (lua_State *L, int table, const char *fieldname, const EnumString *spec, int default_); -u32 getflagsfield (lua_State *L, int table, +bool getflagsfield (lua_State *L, int table, const char *fieldname, - FlagDesc *flagdesc); + FlagDesc *flagdesc, + u32 *flags, u32 *flagmask); + +bool read_flags (lua_State *L, int index, + FlagDesc *flagdesc, + u32 *flags, u32 *flagmask); + +void push_flags_string (lua_State *L, FlagDesc *flagdesc, + u32 flags, u32 flagmask); + +u32 read_flags_table (lua_State *L, int table, + FlagDesc *flagdesc, u32 *flagmask); void push_items (lua_State *L, const std::vector &items); std::vector read_items (lua_State *L, int index, - Server* srv); - -void read_soundspec (lua_State *L, - int index, - SimpleSoundSpec &spec); + IGameDef* gdef); +void push_soundspec (lua_State *L, + const 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); +bool read_noiseparams (lua_State *L, int index, + NoiseParams *np); +void push_noiseparams (lua_State *L, NoiseParams *np); void luaentity_get (lua_State *L,u16 id); -extern struct EnumString es_TileAnimationType[]; +bool push_json_value (lua_State *L, + const Json::Value &value, + int nullindex); +void read_json_value (lua_State *L, Json::Value &root, + int index, u8 recursion = 0); + +/*! + * Pushes a Lua `pointed_thing` to the given Lua stack. + * \param csm If true, a client side pointed thing is pushed + * \param hitpoint If true, the exact pointing location is also pushed + */ +void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm = + false, bool hitpoint = false); + +void push_objectRef (lua_State *L, const u16 id); + +void read_hud_element (lua_State *L, HudElement *elem); + +void push_hud_element (lua_State *L, HudElement *elem); + +bool read_hud_change (lua_State *L, HudElementStat &stat, HudElement *elem, void **value); + +void push_collision_move_result(lua_State *L, const collisionMoveResult &res); -#endif /* C_CONTENT_H_ */ +void push_physics_override (lua_State *L, float speed, float jump, float gravity, bool sneak, bool sneak_glitch, bool new_move);