Refactor to use objects for terrain/mod creation, added coin modifier
This commit is contained in:
+12
-2
@@ -112,6 +112,7 @@ void loadMap( std::shared_ptr< SDLPP::Scene > &scene,
|
||||
}
|
||||
bool destructible = false;
|
||||
bool removeCollisions = false;
|
||||
int coinCount = 0;
|
||||
if ( !editor &&
|
||||
block.getModifierId() == DESTRUCTIBLE_MODIFIER_ID ) {
|
||||
destructible = true;
|
||||
@@ -121,11 +122,18 @@ void loadMap( std::shared_ptr< SDLPP::Scene > &scene,
|
||||
destructible = false;
|
||||
removeCollisions = true;
|
||||
}
|
||||
if ( !editor &&
|
||||
block.getModifierId() == COIN_MODIFIER_ID ) {
|
||||
coinCount = block.getModifierData();
|
||||
}
|
||||
// TODO add modifiers to createTerrainBlock
|
||||
if(block.getTerrainId() != 0) {
|
||||
auto obj = createTerrainBlock(
|
||||
block.getTerrainId(), block.getTerrainType(),
|
||||
renderer, i, j, destructible, editor );
|
||||
if(obj == nullptr)
|
||||
continue;
|
||||
obj->setCoinCount(coinCount);
|
||||
if(removeCollisions) {
|
||||
obj->removeCollisions();
|
||||
}
|
||||
@@ -141,7 +149,7 @@ void loadMap( std::shared_ptr< SDLPP::Scene > &scene,
|
||||
if ( editor ) {
|
||||
scene->addObject( createMario(
|
||||
block.getCharacterType(),
|
||||
renderer, i, j ) );
|
||||
renderer, i, j, true ) );
|
||||
mario =
|
||||
scene->getObject( scene->getObjects().size() - 1 );
|
||||
} else {
|
||||
@@ -154,7 +162,9 @@ void loadMap( std::shared_ptr< SDLPP::Scene > &scene,
|
||||
// TODO createModifierBlock with data
|
||||
auto mod = createTerrainBlock(
|
||||
block.getModifierId(), LandType::OVERWORLD, renderer, i, j,
|
||||
g_translucent_mod_texture, false, editor );
|
||||
false, editor );
|
||||
mod->setData(block.getModifierData());
|
||||
mod->setTextureKeepSRC(g_translucent_mod_texture);
|
||||
mod->getCollisions()[0]->setId( EDITOR_TERRAIN_ID );
|
||||
dynamic_cast< MarioBlock * >( mod.get() )->setTerrain( false );
|
||||
scene->addObject( mod );
|
||||
|
||||
Reference in New Issue
Block a user