summary refs log tree commit diff stats
path: root/src/script_system.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script_system.cpp')
-rw-r--r--src/script_system.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/script_system.cpp b/src/script_system.cpp index 3f89290..08d66d4 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp
@@ -4,6 +4,8 @@
4#include "message_system.h" 4#include "message_system.h"
5#include "animation_system.h" 5#include "animation_system.h"
6#include "character_system.h" 6#include "character_system.h"
7#include "transform_system.h"
8#include "vector.h"
7 9
8ScriptSystem::ScriptSystem(Game& game) : game_(game) { 10ScriptSystem::ScriptSystem(Game& game) : game_(game) {
9 engine_.open_libraries( 11 engine_.open_libraries(
@@ -11,8 +13,14 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) {
11 sol::lib::coroutine, 13 sol::lib::coroutine,
12 sol::lib::math); 14 sol::lib::math);
13 15
16 engine_.new_usertype<vec2i>(
17 "vec2i",
18 "x", [] (const vec2i& v) { return v.x(); },
19 "y", [] (const vec2i& v) { return v.y(); });
20
14 engine_.new_usertype<Sprite>( 21 engine_.new_usertype<Sprite>(
15 "sprite", 22 "sprite",
23 "loc", &Sprite::loc,
16 "dir", &Sprite::dir, 24 "dir", &Sprite::dir,
17 "followers", &Sprite::followers, 25 "followers", &Sprite::followers,
18 "characterState", &Sprite::characterState, 26 "characterState", &Sprite::characterState,
@@ -29,6 +37,7 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) {
29 37
30 engine_.new_usertype<AnimationSystem>( 38 engine_.new_usertype<AnimationSystem>(
31 "animation", 39 "animation",
40 "initSprite", &AnimationSystem::initSprite,
32 "setSpriteAnimation", &AnimationSystem::setSpriteAnimation, 41 "setSpriteAnimation", &AnimationSystem::setSpriteAnimation,
33 "setSpriteDirection", &AnimationSystem::setSpriteDirection); 42 "setSpriteDirection", &AnimationSystem::setSpriteDirection);
34 43
@@ -37,6 +46,12 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) {
37 "startRunning", &CharacterSystem::startRunning, 46 "startRunning", &CharacterSystem::startRunning,
38 "halt", &CharacterSystem::halt); 47 "halt", &CharacterSystem::halt);
39 48
49 engine_.new_usertype<TransformSystem>(
50 "transform",
51 "initSprite", [] (TransformSystem& transform, int spriteId, int x, int y, SpriteLayer layer) {
52 transform.initSprite(spriteId, vec2i{x, y}, layer);
53 });
54
40 engine_.new_usertype<Mixer>( 55 engine_.new_usertype<Mixer>(
41 "mixer", 56 "mixer",
42 "playSound", &Mixer::playSound, 57 "playSound", &Mixer::playSound,
@@ -62,12 +77,30 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) {
62 }); 77 });
63 78
64 engine_.set_function( 79 engine_.set_function(
80 "transform",
81 [&] () -> TransformSystem& {
82 return game_.getSystem<TransformSystem>();
83 });
84
85 engine_.set_function(
65 "mixer", 86 "mixer",
66 [&] () -> Mixer& { 87 [&] () -> Mixer& {
67 return game_.getMixer(); 88 return game_.getMixer();
68 }); 89 });
69 90
70 engine_.set_function( 91 engine_.set_function(
92 "emplaceSprite",
93 [&] (std::string alias) -> int {
94 return game_.emplaceSprite(alias);
95 });
96
97 engine_.set_function(
98 "destroySprite",
99 [&] (int spriteId) {
100 game_.destroySprite(spriteId);
101 });
102
103 engine_.set_function(
71 "getSpriteByAlias", 104 "getSpriteByAlias",
72 [&] (std::string alias) -> int { 105 [&] (std::string alias) -> int {
73 return game_.getSpriteByAlias(alias); 106 return game_.getSpriteByAlias(alias);