forked from ChaiScript/Spiced
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathchaiscript_bindings.cpp
More file actions
118 lines (96 loc) · 4.7 KB
/
Copy pathchaiscript_bindings.cpp
File metadata and controls
118 lines (96 loc) · 4.7 KB
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
#include "game.hpp"
#include "map.hpp"
#include "game_event.hpp"
#include "ChaiScript/include/chaiscript/chaiscript.hpp"
#define ADD_FUN(Class, Name) module->add(chaiscript::fun(&Class::Name), #Name )
std::shared_ptr<chaiscript::Module> create_chaiscript_bindings()
{
auto module = std::make_shared<chaiscript::Module>();
module->add(chaiscript::vector_conversion<std::vector<Tile_Defaults>>());
module->add(chaiscript::vector_conversion<std::vector<Answer>>());
module->add(chaiscript::vector_conversion<std::vector<Question>>());
module->add(chaiscript::vector_conversion<std::vector<Object_Action>>());
module->add(chaiscript::vector_conversion<std::vector<Game_Action>>());
module->add(chaiscript::user_type<Game>(), "Game");
ADD_FUN(Game, get_texture);
ADD_FUN(Game, get_font);
ADD_FUN(Game, teleport_to);
ADD_FUN(Game, teleport_to_tile);
ADD_FUN(Game, set_avatar);
ADD_FUN(Game, add_map);
ADD_FUN(Game, add_start_action);
ADD_FUN(Game, add_queued_action);
ADD_FUN(Game, show_message_box);
ADD_FUN(Game, show_object_interaction_menu);
ADD_FUN(Game, show_selection_menu);
module->add(
chaiscript::fun([](Game &t_game, const float t_game_time, const float t_simulation_time, const std::vector<Game_Action> &t_selections)
{
t_game.show_selection_menu(t_game_time, t_simulation_time, t_selections);
}), "show_selection_menu");
ADD_FUN(Game, show_conversation);
ADD_FUN(Game, has_pending_events);
ADD_FUN(Game, get_current_event);
ADD_FUN(Game, update);
ADD_FUN(Game, draw);
ADD_FUN(Game, get_avatar_position);
ADD_FUN(Game, enter_map);
ADD_FUN(Game, has_current_map);
ADD_FUN(Game, get_current_map);
ADD_FUN(Game, start);
ADD_FUN(Game, set_flag);
ADD_FUN(Game, get_flag);
ADD_FUN(Game, set_value);
ADD_FUN(Game, get_value);
ADD_FUN(Game, set_rotate);
ADD_FUN(Game, set_zoom);
ADD_FUN(Game, rotate);
ADD_FUN(Game, zoom);
module->add(chaiscript::fun(&Game::get_input_direction_vector), "get_input_direction_vector");
module->add(chaiscript::user_type<Answer>(), "Answer");
module->add(chaiscript::constructor<Answer (std::string, std::string)>(), "Answer");
module->add(chaiscript::user_type<Question>(), "Question");
module->add(chaiscript::constructor<
Question (std::string, std::vector<Answer>,
std::function<bool (const float, const float, Game &, Object &)>,
std::function<void (const float, const float, Game &, Object &)>)>(), "Question");
module->add(chaiscript::user_type<Conversation>(), "Conversation");
module->add(chaiscript::constructor<Conversation(std::vector<Question>)>(), "Conversation");
module->add(chaiscript::user_type<Game_Action>(), "Game_Action");
module->add(chaiscript::constructor<Game_Action(std::string, std::function<void (const float, const float, Game &)>)>(), "Game_Action");
ADD_FUN(Game_Action, description);
ADD_FUN(Game_Action, action);
module->add(chaiscript::user_type<Object_Action>(), "Object_Action");
module->add(chaiscript::constructor<Object_Action(std::string, std::function<void (const float, const float, Game &, Object &)>)>(), "Object_Action");
ADD_FUN(Object_Action, description);
ADD_FUN(Object_Action, action);
module->add(chaiscript::user_type<Object>(), "Game_Object");
module->add(chaiscript::constructor<Object(std::string, Tileset, const int, const bool,
std::function<void (const float, const float, Game &, Object &, sf::Sprite &)> ,
std::function<std::vector<Object_Action> (const float, const float, Game &, Object &)> )>(), "Game_Object");
ADD_FUN(Object, update);
ADD_FUN(Object, get_actions);
ADD_FUN(Object, do_collision);
ADD_FUN(Object, set_position);
module->add(chaiscript::constructor<Tile_Properties(bool)>(), "Tile_Properties");
module->add(chaiscript::constructor<Tile_Properties(bool, std::function<void (float, float)>)>(), "Tile_Properties");
ADD_FUN(Tile_Properties, do_movement_action);
ADD_FUN(Tile_Properties, passable);
ADD_FUN(Tile_Properties, movement_action);
module->add(chaiscript::constructor<Tile_Defaults(const int, Tile_Properties)>(), "Tile_Defaults");
module->add(chaiscript::constructor<Tile_Map(Game &, const std::string &, std::vector<Tile_Defaults>)>(), "Tile_Map");
ADD_FUN(Tile_Map, add_enter_action);
ADD_FUN(Tile_Map, enter);
ADD_FUN(Tile_Map, dimensions_in_pixels);
ADD_FUN(Tile_Map, add_object);
ADD_FUN(Tile_Map, get_bounding_box);
ADD_FUN(Tile_Map, test_move);
ADD_FUN(Tile_Map, get_collisions);
ADD_FUN(Tile_Map, adjust_move);
ADD_FUN(Tile_Map, do_move);
ADD_FUN(Tile_Map, update);
ADD_FUN(Tile_Map, set_collision_action);
ADD_FUN(Tile_Map, set_action_generator);
module->add(chaiscript::type_conversion<std::string, sf::String>());
return module;
}