| 67 | } |
| 68 | |
| 69 | bool LevelCell::init(GJGameLevel* level) { |
| 70 | _layer = Layer::create(); |
| 71 | addChild(_layer); |
| 72 | |
| 73 | Vec2 size = { 356, 90 }; |
| 74 | setContentSize(size); |
| 75 | |
| 76 | Vec2 difficultySpritePos = { 26, size.height / 2 }; |
| 77 | std::string bigFontStr = GameToolbox::getTextureString("bigFont.fnt"); |
| 78 | bool isDailyOrWeekly = false; |
| 79 | |
| 80 | |
| 81 | float coinYPos; |
| 82 | |
| 83 | if (level->_stars && level->_coins) |
| 84 | { |
| 85 | difficultySpritePos += {0, 14}; |
| 86 | coinYPos = -45.5; |
| 87 | } |
| 88 | else if (level->_coins || level->_stars) |
| 89 | { |
| 90 | difficultySpritePos += {0, 5}; |
| 91 | coinYPos = -31.5; |
| 92 | } |
| 93 | |
| 94 | if (isDailyOrWeekly) |
| 95 | { |
| 96 | difficultySpritePos += {0, 10}; |
| 97 | coinYPos = -60; |
| 98 | } |
| 99 | |
| 100 | |
| 101 | // Difficulty sprite |
| 102 | if (level->_epic == 1) |
| 103 | { |
| 104 | Sprite* epicSprite = Sprite::createWithSpriteFrameName("GJ_epicCoin_001.png"); |
| 105 | epicSprite->setPosition(difficultySpritePos); |
| 106 | _layer->addChild(epicSprite, 2); |
| 107 | } |
| 108 | else if (level->_featureScore > 0) |
| 109 | { |
| 110 | Sprite* featureScore = Sprite::createWithSpriteFrameName("GJ_featuredCoin_001.png"); |
| 111 | featureScore->setPosition(difficultySpritePos); |
| 112 | _layer->addChild(featureScore, 2); |
| 113 | } |
| 114 | |
| 115 | Sprite* diffSprite = Sprite::createWithSpriteFrameName(GJGameLevel::getDifficultySprite(level)); |
| 116 | diffSprite->setPosition(difficultySpritePos); |
| 117 | _layer->addChild(diffSprite, 2); |
| 118 | |
| 119 | |
| 120 | // Stars |
| 121 | if (level->_stars > 0) { |
| 122 | Sprite* starSprite = Sprite::createWithSpriteFrameName("star_small01_001.png"); |
| 123 | starSprite->setPosition(difficultySpritePos + ax::Vec2(8, -30)); |
| 124 | _layer->addChild(starSprite); |
| 125 | |
| 126 | Label* starLabel = Label::createWithBMFont(bigFontStr, fmt::format("{}", level->_stars)); |