diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game.cpp | 3 | ||||
-rw-r--r-- | src/game.h | 7 | ||||
-rw-r--r-- | src/main.cpp | 10 | ||||
-rw-r--r-- | src/script_system.cpp | 29 |
4 files changed, 42 insertions, 7 deletions
diff --git a/src/game.cpp b/src/game.cpp index 4ea7fd2..447b62a 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
@@ -1,8 +1,9 @@ | |||
1 | #include "game.h" | 1 | #include "game.h" |
2 | 2 | ||
3 | int Game::emplaceSprite() { | 3 | int Game::emplaceSprite(std::string alias) { |
4 | int id = sprites_.size(); | 4 | int id = sprites_.size(); |
5 | sprites_.emplace_back(); | 5 | sprites_.emplace_back(); |
6 | spriteIds_.push_back(id); | 6 | spriteIds_.push_back(id); |
7 | spritesByAlias_[alias] = id; | ||
7 | return id; | 8 | return id; |
8 | } | 9 | } |
diff --git a/src/game.h b/src/game.h index 2f1149d..87e23d3 100644 --- a/src/game.h +++ b/src/game.h | |||
@@ -43,7 +43,7 @@ public: | |||
43 | }); | 43 | }); |
44 | } | 44 | } |
45 | 45 | ||
46 | int emplaceSprite(); | 46 | int emplaceSprite(std::string alias); |
47 | 47 | ||
48 | const Sprite& getSprite(int id) const { | 48 | const Sprite& getSprite(int id) const { |
49 | return sprites_.at(id); | 49 | return sprites_.at(id); |
@@ -57,6 +57,10 @@ public: | |||
57 | return spriteIds_; | 57 | return spriteIds_; |
58 | } | 58 | } |
59 | 59 | ||
60 | int getSpriteByAlias(std::string alias) const { | ||
61 | return spritesByAlias_.at(alias); | ||
62 | } | ||
63 | |||
60 | auto spriteView() const { | 64 | auto spriteView() const { |
61 | return ranges::views::transform([&] (int id) -> const Sprite& { | 65 | return ranges::views::transform([&] (int id) -> const Sprite& { |
62 | return sprites_.at(id); | 66 | return sprites_.at(id); |
@@ -85,6 +89,7 @@ private: | |||
85 | 89 | ||
86 | std::vector<int> spriteIds_; | 90 | std::vector<int> spriteIds_; |
87 | std::vector<Sprite> sprites_; | 91 | std::vector<Sprite> sprites_; |
92 | std::map<std::string, int> spritesByAlias_; | ||
88 | std::unique_ptr<Map> map_; | 93 | std::unique_ptr<Map> map_; |
89 | Font font_; | 94 | Font font_; |
90 | }; | 95 | }; |
diff --git a/src/main.cpp b/src/main.cpp index 3ea92ae..c23897b 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
@@ -25,29 +25,29 @@ void loop(Renderer& renderer) { | |||
25 | auto map = std::make_unique<Map>("../res/maps/map1.tmx", renderer); | 25 | auto map = std::make_unique<Map>("../res/maps/map1.tmx", renderer); |
26 | game.setMap(std::move(map)); | 26 | game.setMap(std::move(map)); |
27 | 27 | ||
28 | int lucasSprite = game.emplaceSprite(); | 28 | int lucasSprite = game.emplaceSprite("lucas"); |
29 | game.getSystem<TransformSystem>().initSprite(lucasSprite, {32, 32}); | 29 | game.getSystem<TransformSystem>().initSprite(lucasSprite, {32, 32}); |
30 | game.getSystem<TransformSystem>().setUpCollision(lucasSprite, {-8, -8}, {12, 8}); | 30 | game.getSystem<TransformSystem>().setUpCollision(lucasSprite, {-8, -8}, {12, 8}); |
31 | game.getSystem<AnimationSystem>().initSprite(lucasSprite, "../res/sprites/lucas_anim.txt", renderer); | 31 | game.getSystem<AnimationSystem>().initSprite(lucasSprite, "../res/sprites/lucas_anim.txt", renderer); |
32 | game.getSprite(lucasSprite).controllable = true; | 32 | game.getSprite(lucasSprite).controllable = true; |
33 | game.getSystem<CharacterSystem>().initSprite(lucasSprite); | 33 | game.getSystem<CharacterSystem>().initSprite(lucasSprite); |
34 | 34 | ||
35 | int kumaSprite = game.emplaceSprite(); | 35 | int kumaSprite = game.emplaceSprite("kuma"); |
36 | game.getSystem<TransformSystem>().initSprite(kumaSprite, {32, 32}); | 36 | game.getSystem<TransformSystem>().initSprite(kumaSprite, {32, 32}); |
37 | game.getSystem<AnimationSystem>().initSprite(kumaSprite, "../res/sprites/kuma_anim.txt", renderer); | 37 | game.getSystem<AnimationSystem>().initSprite(kumaSprite, "../res/sprites/kuma_anim.txt", renderer); |
38 | game.getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, kumaSprite); | 38 | game.getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, kumaSprite); |
39 | 39 | ||
40 | int dusterSprite = game.emplaceSprite(); | 40 | int dusterSprite = game.emplaceSprite("duster"); |
41 | game.getSystem<TransformSystem>().initSprite(dusterSprite, {32, 32}); | 41 | game.getSystem<TransformSystem>().initSprite(dusterSprite, {32, 32}); |
42 | game.getSystem<AnimationSystem>().initSprite(dusterSprite, "../res/sprites/duster_anim.txt", renderer); | 42 | game.getSystem<AnimationSystem>().initSprite(dusterSprite, "../res/sprites/duster_anim.txt", renderer); |
43 | game.getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, dusterSprite); | 43 | game.getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, dusterSprite); |
44 | 44 | ||
45 | int boneySprite = game.emplaceSprite(); | 45 | int boneySprite = game.emplaceSprite("boney"); |
46 | game.getSystem<TransformSystem>().initSprite(boneySprite, {32, 32}); | 46 | game.getSystem<TransformSystem>().initSprite(boneySprite, {32, 32}); |
47 | game.getSystem<AnimationSystem>().initSprite(boneySprite, "../res/sprites/boney_anim.txt", renderer); | 47 | game.getSystem<AnimationSystem>().initSprite(boneySprite, "../res/sprites/boney_anim.txt", renderer); |
48 | game.getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, boneySprite); | 48 | game.getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, boneySprite); |
49 | 49 | ||
50 | int flintSprite = game.emplaceSprite(); | 50 | int flintSprite = game.emplaceSprite("flint"); |
51 | game.getSystem<TransformSystem>().initSprite(flintSprite, {35*16, 19*16}); | 51 | game.getSystem<TransformSystem>().initSprite(flintSprite, {35*16, 19*16}); |
52 | game.getSystem<TransformSystem>().setUpCollision(flintSprite, {-8, -8}, {12, 8}); | 52 | game.getSystem<TransformSystem>().setUpCollision(flintSprite, {-8, -8}, {12, 8}); |
53 | game.getSystem<AnimationSystem>().initSprite(flintSprite, "../res/sprites/flint_anim.txt", renderer); | 53 | game.getSystem<AnimationSystem>().initSprite(flintSprite, "../res/sprites/flint_anim.txt", renderer); |
diff --git a/src/script_system.cpp b/src/script_system.cpp index 7f4729b..e2b117a 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <iostream> | 2 | #include <iostream> |
3 | #include "game.h" | 3 | #include "game.h" |
4 | #include "message_system.h" | 4 | #include "message_system.h" |
5 | #include "animation_system.h" | ||
5 | 6 | ||
6 | ScriptSystem::ScriptSystem(Game& game) : game_(game) { | 7 | ScriptSystem::ScriptSystem(Game& game) : game_(game) { |
7 | engine_.open_libraries( | 8 | engine_.open_libraries( |
@@ -15,12 +16,40 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
15 | "hideCutsceneBars", &MessageSystem::hideCutsceneBars, | 16 | "hideCutsceneBars", &MessageSystem::hideCutsceneBars, |
16 | "isMessageActive", sol::property(&MessageSystem::isMessageActive)); | 17 | "isMessageActive", sol::property(&MessageSystem::isMessageActive)); |
17 | 18 | ||
19 | engine_.new_usertype<AnimationSystem>( | ||
20 | "animation", | ||
21 | "setSpriteAnimation", &AnimationSystem::setSpriteAnimation); | ||
22 | |||
23 | engine_.new_usertype<Mixer>( | ||
24 | "mixer", | ||
25 | "playSound", &Mixer::playSound, | ||
26 | "loopSound", &Mixer::loopSound, | ||
27 | "stopChannel", &Mixer::stopChannel); | ||
28 | |||
18 | engine_.set_function( | 29 | engine_.set_function( |
19 | "message", | 30 | "message", |
20 | [&] () -> MessageSystem& { | 31 | [&] () -> MessageSystem& { |
21 | return game_.getSystem<MessageSystem>(); | 32 | return game_.getSystem<MessageSystem>(); |
22 | }); | 33 | }); |
23 | 34 | ||
35 | engine_.set_function( | ||
36 | "animation", | ||
37 | [&] () -> AnimationSystem& { | ||
38 | return game_.getSystem<AnimationSystem>(); | ||
39 | }); | ||
40 | |||
41 | engine_.set_function( | ||
42 | "mixer", | ||
43 | [&] () -> Mixer& { | ||
44 | return game_.getMixer(); | ||
45 | }); | ||
46 | |||
47 | engine_.set_function( | ||
48 | "getSpriteByAlias", | ||
49 | [&] (std::string alias) -> int { | ||
50 | return game_.getSpriteByAlias(alias); | ||
51 | }); | ||
52 | |||
24 | engine_.script_file("../res/scripts/common.lua"); | 53 | engine_.script_file("../res/scripts/common.lua"); |
25 | } | 54 | } |
26 | 55 | ||