initialize the lua kernel earlier
This allows user defined [effect]s to be used in [unit]s in [side], previously those units were created before custom effects were available,
This commit is contained in:
parent
3dba60bcd7
commit
9cc80973f8
3 changed files with 10 additions and 13 deletions
|
@ -42,13 +42,13 @@ static lg::log_domain log_engine("engine");
|
|||
#define LOG_NG LOG_STREAM(info, log_engine)
|
||||
#define DBG_NG LOG_STREAM(debug, log_engine)
|
||||
|
||||
game_state::game_state(const config & level, play_controller &, const tdata_cache & tdata) :
|
||||
game_state::game_state(const config & level, play_controller & pc, const tdata_cache & tdata) :
|
||||
gamedata_(level),
|
||||
board_(tdata, level),
|
||||
tod_manager_(level),
|
||||
pathfind_manager_(),
|
||||
pathfind_manager_(new pathfind::manager(level)),
|
||||
reports_(new reports()),
|
||||
lua_kernel_(),
|
||||
lua_kernel_(new game_lua_kernel(nullptr, *this, pc, *reports_)),
|
||||
events_manager_(new game_events::manager()),
|
||||
//TODO: this construct units (in dimiss undo action) but resrouces:: are not available yet,
|
||||
// so we might want to move the innitialisation of undo_stack_ to game_state::init
|
||||
|
@ -197,6 +197,9 @@ void game_state::init(const config& level, play_controller & pc)
|
|||
build_team_stage_one(tb_ptr);
|
||||
team_builders.push_back(tb_ptr);
|
||||
}
|
||||
//Initilize the lua kernel before the units are created.
|
||||
lua_kernel_->initialize(level);
|
||||
|
||||
{
|
||||
//sync traits of start units and the random start time.
|
||||
random_new::set_random_determinstic deterministic(gamedata_.rng());
|
||||
|
@ -215,10 +218,6 @@ void game_state::init(const config& level, play_controller & pc)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
pathfind_manager_.reset(new pathfind::manager(level));
|
||||
|
||||
lua_kernel_.reset(new game_lua_kernel(nullptr, *this, pc, *reports_));
|
||||
}
|
||||
|
||||
void game_state::set_game_display(game_display * gd)
|
||||
|
|
|
@ -228,6 +228,7 @@ void play_controller::init(CVideo& video, const config& level)
|
|||
resources::filter_con = &gamestate();
|
||||
resources::undo_stack = &undo_stack();
|
||||
resources::game_events = gamestate().events_manager_.get();
|
||||
resources::lua_kernel = gamestate().lua_kernel_.get();
|
||||
|
||||
gamestate_->init(level, *this);
|
||||
resources::tunnels = gamestate().pathfind_manager_.get();
|
||||
|
@ -268,7 +269,6 @@ void play_controller::init(CVideo& video, const config& level)
|
|||
// Has to be done before registering any events!
|
||||
gamestate().set_game_display(gui_.get());
|
||||
gui2::tloadscreen::progress("init lua");
|
||||
resources::lua_kernel = gamestate().lua_kernel_.get();
|
||||
|
||||
if(gamestate().first_human_team_ != -1) {
|
||||
gui_->set_team(gamestate().first_human_team_);
|
||||
|
@ -291,7 +291,7 @@ void play_controller::init(CVideo& video, const config& level)
|
|||
gui2::tloadscreen::progress("start game");
|
||||
//loadscreen_manager->reset();
|
||||
gamestate().gamedata_.set_phase(game_data::PRELOAD);
|
||||
gamestate().lua_kernel_->initialize(level);
|
||||
gamestate().lua_kernel_->load_game(level);
|
||||
|
||||
plugins_context_.reset(new plugins_context("Game"));
|
||||
plugins_context_->set_callback("save_game", [this](const config& cfg) { save_game_auto(cfg["filename"]); }, true);
|
||||
|
@ -323,10 +323,10 @@ void play_controller::reset_gamestate(const config& level, int replay_pos)
|
|||
resources::filter_con = &gamestate();
|
||||
resources::undo_stack = &undo_stack();
|
||||
resources::game_events = gamestate().events_manager_.get();
|
||||
resources::lua_kernel = gamestate().lua_kernel_.get();
|
||||
|
||||
gamestate_->init(level, *this);
|
||||
gamestate().set_game_display(gui_.get());
|
||||
resources::lua_kernel = gamestate().lua_kernel_.get();
|
||||
resources::tunnels = gamestate().pathfind_manager_.get();
|
||||
|
||||
gui_->reset_tod_manager(gamestate().tod_manager_);
|
||||
|
@ -334,7 +334,7 @@ void play_controller::reset_gamestate(const config& level, int replay_pos)
|
|||
gui_->change_display_context(&gamestate().board_);
|
||||
saved_game_.get_replay().set_pos(replay_pos);
|
||||
gamestate().gamedata_.set_phase(game_data::PRELOAD);
|
||||
gamestate().lua_kernel_->initialize(level);
|
||||
gamestate().lua_kernel_->load_game(level);
|
||||
}
|
||||
|
||||
void play_controller::init_managers()
|
||||
|
|
|
@ -4370,8 +4370,6 @@ void game_lua_kernel::initialize(const config& level)
|
|||
for (const config &cfg : level_lua_.child_range("lua")) {
|
||||
run_lua_tag(cfg);
|
||||
}
|
||||
|
||||
load_game(level);
|
||||
}
|
||||
|
||||
void game_lua_kernel::set_game_display(game_display * gd) {
|
||||
|
|
Loading…
Add table
Reference in a new issue