summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game.cpp3
-rw-r--r--src/game.h7
-rw-r--r--src/main.cpp10
-rw-r--r--src/script_system.cpp29
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
3int Game::emplaceSprite() { 3int 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
6ScriptSystem::ScriptSystem(Game& game) : game_(game) { 7ScriptSystem::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