The Battle for Wesnoth  1.13.10+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
core.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2010 - 2017 by Yurii Chernyi <terraninfo@terraninfo.net>
3  Part of the Battle for Wesnoth Project http://www.wesnoth.org/
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY.
11 
12  See the COPYING file for more details.
13 */
14 
15 #ifndef AI_LUA_CORE_HPP
16 #define AI_LUA_CORE_HPP
17 
18 #include <memory>
19 
20 struct lua_State;
21 class game_lua_kernel;
22 class config;
23 
24 namespace ai {
25 
26 class engine_lua;
28 typedef std::shared_ptr<lua_object_base> lua_object_ptr;
29 
30 /**
31  * Proxy table for the AI context
32  */
34 {
35 private:
37  int num_;
38  int side_;
39  lua_ai_context(lua_State *l, int num, int side) : L(l), num_(num), side_(side)
40  {
41  }
42  static lua_ai_context* create(lua_State *L, char const *code, engine_lua *engine);
43 public:
45  void update_state();
46  void get_persistent_data(config &) const;
47  void set_persistent_data(const config &);
48  void get_arguments(config &) const;
49  void set_arguments(const config &);
50  void push_ai_table();
51  static void init(lua_State *L);
52  friend class ::game_lua_kernel;
53  friend class lua_ai_load;
54 };
55 
57 {
59  static int refcount;
60 public:
62  lua_ai_load(lua_ai_context& ctx, bool read_only);
63  ~lua_ai_load();
64 };
65 
66 /**
67  * Proxy class for calling AI action handlers defined in Lua.
68  */
70 {
71 private:
74  int num_;
75  lua_ai_action_handler(lua_State *l, lua_ai_context &context, int num) : L(l), context_(context),num_(num)
76  {
77  }
78  static lua_ai_action_handler* create(lua_State *L, char const *code, lua_ai_context &context);
79 public:
81  void handle(const config &cfg, bool read_only, lua_object_ptr l_obj);
82  friend class ::game_lua_kernel;
83 };
84 
85 }//of namespace ai
86 
87 #endif
void get_persistent_data(config &) const
Definition: core.cpp:94
lua_ai_context & context_
Definition: core.hpp:73
static lua_ai_context * create(lua_State *L, char const *code, engine_lua *engine)
Definition: core.cpp:1015
void handle(const config &cfg, bool read_only, lua_object_ptr l_obj)
Definition: core.cpp:1138
A small explanation about what's going on here: Each action has access to two game_info objects First...
Definition: actions.cpp:58
void set_arguments(const config &)
Definition: core.cpp:81
void set_persistent_data(const config &)
Definition: core.cpp:107
bool was_readonly
Definition: core.hpp:61
Proxy table for the AI context.
Definition: core.hpp:33
static lua_ai_action_handler * create(lua_State *L, char const *code, lua_ai_context &context)
Definition: core.cpp:1057
lua_ai_load(lua_ai_context &ctx, bool read_only)
Definition: core.cpp:1083
static int refcount
Definition: core.hpp:59
void push_ai_table()
Definition: core.cpp:131
static void init(lua_State *L)
Definition: core.cpp:61
lua_ai_context(lua_State *l, int num, int side)
Definition: core.hpp:39
void get_arguments(config &) const
Definition: core.cpp:68
Proxy class for calling AI action handlers defined in Lua.
Definition: core.hpp:69
lua_ai_action_handler(lua_State *l, lua_ai_context &context, int num)
Definition: core.hpp:75
lua_State * L
Definition: core.hpp:36
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:93
lua_State * L
Definition: core.hpp:58
void update_state()
Definition: core.cpp:1036
std::shared_ptr< lua_object_base > lua_object_ptr
Definition: core.hpp:27