diff options
author | Treeki <treeki@gmail.com> | 2012-07-25 14:10:39 +0200 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2012-07-25 14:10:39 +0200 |
commit | 6895c831ad320c14b01ccabe1c8adcec354e3f9f (patch) | |
tree | a47ec4a7b2ce494c668771975e4880ada1d3557c /src/koopatlas/mapdata.cpp | |
parent | 0d20c172706178e5df2d426fcf5cb1b7ae85c225 (diff) | |
download | kamek-6895c831ad320c14b01ccabe1c8adcec354e3f9f.tar.gz kamek-6895c831ad320c14b01ccabe1c8adcec354e3f9f.zip |
lots more work completed, basic unlocks workingfreeform-unlocks
Diffstat (limited to '')
-rw-r--r-- | src/koopatlas/mapdata.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/koopatlas/mapdata.cpp b/src/koopatlas/mapdata.cpp index 650f1e3..63fd0b7 100644 --- a/src/koopatlas/mapdata.cpp +++ b/src/koopatlas/mapdata.cpp @@ -2,17 +2,31 @@ // HELPER FUNCTIONS -dKPPath_s *dKPNode_s::getOppositeExitTo(dKPPath_s *path) { +dKPPath_s *dKPNode_s::getOppositeExitTo(dKPPath_s *path, bool mustBeAvailable) { for (int i = 0; i < 4; i++) { dKPPath_s *check = exits[i]; - if (check != 0 && check != path) + if (check != 0 && check != path) { + if (mustBeAvailable && !check->isAvailable) + continue; + return check; + } } return 0; } +int dKPNode_s::getExitCount(bool mustBeAvailable) { + int ct = 0; + + for (int i = 0; i < 4; i++) + if (exits[i] && (mustBeAvailable ? exits[i]->isAvailable : true)) + ct++; + + return ct; +} + bool dKPNode_s::isUnlocked() { for (int i = 0; i < 4; i++) if (exits[i]) @@ -89,6 +103,20 @@ void dKPNode_s::setupNodeExtra() { this->extra->mallocator.unlink(); } +void dKPNode_s::setLayerAlpha(u8 alpha) { + if (tileLayer) + tileLayer->alpha = alpha; + if (doodadLayer) + doodadLayer->alpha = alpha; +} + +void dKPPath_s::setLayerAlpha(u8 alpha) { + if (tileLayer) + tileLayer->alpha = alpha; + if (doodadLayer) + doodadLayer->alpha = alpha; +} + int dKPLayer_s::findNodeID(dKPNode_s *node) { for (int i = 0; i < nodeCount; i++) if (nodes[i] == node) |