Skip to content
This repository was archived by the owner on Sep 14, 2019. It is now read-only.

Commit 5ecdf0f

Browse files
authored
Merge pull request #82 from Milerius/dev
add new event
2 parents b405d32 + a6eb95e commit 5ecdf0f

File tree

8 files changed

+217
-59
lines changed

8 files changed

+217
-59
lines changed

examples/sfml/game_scene.lua

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
-- To change this template use File | Settings | File Templates.
77
--
88

9+
local entities = {}
10+
911
function update()
1012
--print("nb entities" .. shiva.entity_registry:nb_entities())
1113
end
@@ -20,21 +22,29 @@ end
2022

2123
function leave()
2224
print("leave game scene")
25+
for key, value in pairs(entities) do
26+
shiva.entity_registry:destroy(value)
27+
end
28+
shiva.resource_registry:unload_all_resources("game_scene")
29+
end
30+
31+
function on_after_load_resources(evt)
32+
local id, sprite = shiva.entity_registry:create_game_object_with_sprite()
33+
sprite:set_texture(shiva.resource_registry:get_texture("game_scene/toto"), false)
34+
entities[#entities + 1] = id
35+
shiva.entity_registry:add_layer_1_component(id)
2336
end
2437

2538
function enter()
2639
print("enter game scene")
2740
shiva.resource_registry:load_all_resources("game_scene")
2841
print("should be here")
29-
30-
--local id, sprite = shiva.entity_registry:create_game_object_with_sprite()
31-
--sprite:set_texture(shiva.resource_registry:get_texture("game_scene/toto"), false)
32-
--shiva.entity_registry:add_layer_1_component(id)
3342
end
3443

3544
return {
3645
on_key_released = on_key_released,
3746
on_key_pressed = on_key_pressed,
47+
on_after_load_resources = on_after_load_resources,
3848
leave = leave,
3949
enter = enter,
4050
update = update,

modules/event/CMakeSources.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ set(MODULE_PUBLIC_HEADERS
88
"${MODULE_PATH}/start_game.hpp"
99
"${MODULE_PATH}/key_pressed.hpp"
1010
"${MODULE_PATH}/after_load_systems_plugins.hpp"
11+
"${MODULE_PATH}/after_load_resources.hpp"
1112
"${MODULE_PATH}/all.hpp"
1213
)
1314

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//
2+
// Created by roman Sztergbaum on 21/07/2018.
3+
//
4+
5+
#pragma once
6+
7+
#include <shiva/reflection/reflection.hpp>
8+
9+
namespace shiva::event
10+
{
11+
struct after_load_resources
12+
{
13+
reflect_class(after_load_resources)
14+
15+
static constexpr auto reflected_functions() noexcept
16+
{
17+
return meta::makeMap();
18+
}
19+
20+
static constexpr auto reflected_members() noexcept
21+
{
22+
return meta::makeMap();
23+
}
24+
};
25+
}

modules/event/shiva/event/all.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
#include <shiva/event/start_game.hpp>
1212
#include <shiva/event/key_released.hpp>
1313
#include <shiva/event/key_pressed.hpp>
14+
#include <shiva/event/after_load_resources.hpp>
1415

1516
#include <shiva/meta/list.hpp>
1617

18+
1719
namespace shiva::event
1820
{
1921
template <typename T>
@@ -32,6 +34,7 @@ namespace shiva::event
3234
quit_game,
3335
start_game,
3436
key_pressed,
35-
key_released>;
37+
key_released,
38+
after_load_resources>;
3639
}
3740

modules/scenes/shiva/scenes/scenes_system.lua

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ end
5151

5252
function __destructor__()
5353
print("scene manager destructor")
54+
if current_scene.leave ~= nil then
55+
current_scene.leave()
56+
else
57+
print("current scene doesn't have leave callback")
58+
end
5459
end
5560

5661
function internal_update()
@@ -75,6 +80,14 @@ function internal_key_released(evt)
7580
end
7681
end
7782

83+
function internal_after_load_resources(evt)
84+
if current_scene.on_after_load_resources ~= nil then
85+
current_scene.on_after_load_resources(evt)
86+
else
87+
print("current scene doesn't have on_after_load_resources callback")
88+
end
89+
end
90+
7891
function internal_change_scene(scene_name)
7992
if scenes_table[scene_name] ~= nil then
8093
current_scene.leave()
@@ -88,6 +101,7 @@ scenes_system_table = {
88101
update = internal_update,
89102
on_key_pressed = internal_key_pressed,
90103
on_key_released = internal_key_released,
104+
on_after_load_resources = internal_after_load_resources,
91105
on_construct = __constructor__,
92106
on_destruct = __destructor__,
93107
current_system_type = system_type.logic_update

0 commit comments

Comments
 (0)