46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#include "Level.hpp"
|
|
|
|
Level::Level(Level* levelName, char* spritesheetPath, C3D_RenderTarget* top, C3D_RenderTarget* bottom) : level(levelName), top(top), bottom(bottom) {
|
|
this->spritesheet = C2D_SpriteSheetLoad(spritesheetPath);
|
|
size_t numImages = C2D_SpriteSheetCount(spritesheet);
|
|
|
|
for (size_t i = 0; i < numImages; i++) {
|
|
Sprite* thisSprite = &sprites[i];
|
|
float x = SCREEN_WIDTH / 2;
|
|
float y = SCREEN_HEIGHT / 2;
|
|
|
|
C2D_SpriteFromSheet(&thisSprite->spr, spritesheet, i);
|
|
C2D_SpriteSetCenter(&thisSprite->spr, 0.5f, 0.5f);
|
|
thisSprite->setPosition(x, y);
|
|
}
|
|
}
|
|
|
|
void Level::run() {
|
|
if (!hasBeenSetup) {
|
|
level->setup();
|
|
this->hasBeenSetup = true;
|
|
}
|
|
level->update();
|
|
|
|
C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
|
|
C2D_TargetClear(top, C3D_CLEAR_COLOR);
|
|
C2D_SceneBegin(top);
|
|
level->drawTop();
|
|
|
|
C2D_TargetClear(bottom, C3D_CLEAR_COLOR);
|
|
C2D_SceneBegin(bottom);
|
|
level->drawBottom();
|
|
C3D_FrameEnd(0);
|
|
}
|
|
|
|
void Level::exit() {
|
|
this->isActive = false;
|
|
}
|
|
|
|
bool Level::active() {
|
|
this->isActive;// && aptMainLoop();
|
|
}
|
|
|
|
void Level::cleanup() {
|
|
C2D_SpriteSheetFree(spritesheet);
|
|
} |