diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-03-01 22:19:46 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-03-01 22:19:46 -0500 |
commit | 7fa69be4e88f1fcf057871fec7e4503f50578465 (patch) | |
tree | 70a01aafe4092c29c112f72895494dbfa2033496 /src | |
parent | d8e7d815c197c5477678d835038dc3ff86c2a7e8 (diff) | |
download | tanetane-7fa69be4e88f1fcf057871fec7e4503f50578465.tar.gz tanetane-7fa69be4e88f1fcf057871fec7e4503f50578465.tar.bz2 tanetane-7fa69be4e88f1fcf057871fec7e4503f50578465.zip |
Started writing the Mixolydia scene!
Looking pretty good so far. TODO: direction facing functions have inverted Y coordinate. confusion expression doesn't exist yet. rest of scene.
Diffstat (limited to 'src')
-rw-r--r-- | src/behaviour_system.cpp | 1 | ||||
-rw-r--r-- | src/character_system.cpp | 1 | ||||
-rw-r--r-- | src/direction.h | 17 | ||||
-rw-r--r-- | src/main.cpp | 4 | ||||
-rw-r--r-- | src/script_system.cpp | 7 |
5 files changed, 27 insertions, 3 deletions
diff --git a/src/behaviour_system.cpp b/src/behaviour_system.cpp index 4a194f0..a05912c 100644 --- a/src/behaviour_system.cpp +++ b/src/behaviour_system.cpp | |||
@@ -59,6 +59,7 @@ void BehaviourSystem::tick(double dt) { | |||
59 | 59 | ||
60 | void BehaviourSystem::directSpriteToLocation(int spriteId, vec2i pos, PathfindingOptions options) { | 60 | void BehaviourSystem::directSpriteToLocation(int spriteId, vec2i pos, PathfindingOptions options) { |
61 | Sprite& sprite = game_.getSprite(spriteId); | 61 | Sprite& sprite = game_.getSprite(spriteId); |
62 | sprite.orientable = true; | ||
62 | sprite.behaviourType = BehaviourType::Path; | 63 | sprite.behaviourType = BehaviourType::Path; |
63 | sprite.pathfindingDestination = pos; | 64 | sprite.pathfindingDestination = pos; |
64 | sprite.cardinalDirectionsOnly = pathfindingOptionsContains(options, PathfindingOptions::CardinalDirectionsOnly); | 65 | sprite.cardinalDirectionsOnly = pathfindingOptionsContains(options, PathfindingOptions::CardinalDirectionsOnly); |
diff --git a/src/character_system.cpp b/src/character_system.cpp index 53debb2..48d2a33 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp | |||
@@ -17,6 +17,7 @@ void CharacterSystem::initSprite(int spriteId, int movementSpeed) { | |||
17 | void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { | 17 | void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { |
18 | Sprite& leader = game_.getSprite(leaderId); | 18 | Sprite& leader = game_.getSprite(leaderId); |
19 | Sprite& follower = game_.getSprite(followerId); | 19 | Sprite& follower = game_.getSprite(followerId); |
20 | follower.orientable = false; | ||
20 | 21 | ||
21 | vec2i targetPos = leader.loc; | 22 | vec2i targetPos = leader.loc; |
22 | 23 | ||
diff --git a/src/direction.h b/src/direction.h index 3dd95f9..595693f 100644 --- a/src/direction.h +++ b/src/direction.h | |||
@@ -90,4 +90,21 @@ inline Direction directionFacingPoint(vec2i point) { | |||
90 | } | 90 | } |
91 | } | 91 | } |
92 | 92 | ||
93 | inline Direction cardinalDirectionFacingPoint(vec2i point) { | ||
94 | double theta = atan2(point.y(), point.x()); | ||
95 | theta /= M_PI; | ||
96 | |||
97 | if (theta < -3.0/4.0) { | ||
98 | return Direction::left; | ||
99 | } else if (theta < -1.0/4.0) { | ||
100 | return Direction::down; | ||
101 | } else if (theta < 1.0/4.0) { | ||
102 | return Direction::right; | ||
103 | } else if (theta < 3.0/4.0) { | ||
104 | return Direction::up; | ||
105 | } else { | ||
106 | return Direction::left; | ||
107 | } | ||
108 | } | ||
109 | |||
93 | #endif /* end of include guard: DIRECTION_H_AB66A90E */ | 110 | #endif /* end of include guard: DIRECTION_H_AB66A90E */ |
diff --git a/src/main.cpp b/src/main.cpp index b98c8f1..d0220fc 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
@@ -27,9 +27,9 @@ void loop(Renderer& renderer, std::mt19937& rng) { | |||
27 | game.emplaceSystem<MessageSystem>(); | 27 | game.emplaceSystem<MessageSystem>(); |
28 | game.emplaceSystem<EffectSystem>(); | 28 | game.emplaceSystem<EffectSystem>(); |
29 | 29 | ||
30 | game.loadMap("hallucination_interior"); | 30 | game.loadMap("pink_shell"); |
31 | 31 | ||
32 | vec2i warpLoc = game.getMap().getWarpPoint("debugWarp_rightside"); | 32 | vec2i warpLoc = game.getMap().getWarpPoint("fromOutside"); |
33 | 33 | ||
34 | int lucasSprite = game.emplaceSprite("lucas"); | 34 | int lucasSprite = game.emplaceSprite("lucas"); |
35 | game.getSystem<TransformSystem>().initSprite(lucasSprite, warpLoc); | 35 | game.getSystem<TransformSystem>().initSprite(lucasSprite, warpLoc); |
diff --git a/src/script_system.cpp b/src/script_system.cpp index 931759d..a3686b4 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp | |||
@@ -44,7 +44,10 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
44 | "cantCrouch", &Sprite::cantCrouch, | 44 | "cantCrouch", &Sprite::cantCrouch, |
45 | "bobsWhenNormal", &Sprite::bobsWhenNormal, | 45 | "bobsWhenNormal", &Sprite::bobsWhenNormal, |
46 | "animSlowdown", &Sprite::animSlowdown, | 46 | "animSlowdown", &Sprite::animSlowdown, |
47 | "enclosureZone", &Sprite::enclosureZone); | 47 | "enclosureZone", &Sprite::enclosureZone, |
48 | "movementSpeed", &Sprite::movementSpeed, | ||
49 | "solid", &Sprite::solid, | ||
50 | "behaviourType", &Sprite::behaviourType); | ||
48 | 51 | ||
49 | engine_.new_usertype<MessageSystem>( | 52 | engine_.new_usertype<MessageSystem>( |
50 | "message", | 53 | "message", |
@@ -230,6 +233,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
230 | loadMapScripts(filename); | 233 | loadMapScripts(filename); |
231 | }); | 234 | }); |
232 | 235 | ||
236 | engine_.set_function("cardinalDirectionFacingPoint", &cardinalDirectionFacingPoint); | ||
237 | |||
233 | engine_.script_file("../res/scripts/common.lua"); | 238 | engine_.script_file("../res/scripts/common.lua"); |
234 | } | 239 | } |
235 | 240 | ||