📄 spritehandler.cpp
字号:
/*
========================================================================
Name : SpriteManager.cpp
Author :
Copyright :
Description : Handles the sprite images (bitmaps) for the ingame graphics.
License :
========================================================================
*/
#include "SpriteHandler.h"
using namespace MopoidShared;
CSpriteHandler::CSpriteHandler()
{
}
CSpriteHandler::~CSpriteHandler()
{
// TODO: Delete bitmaps
iSprites.DeleteAll();
}
CSpriteHandler* CSpriteHandler::NewL(RFs& aFs)
{
CSpriteHandler* self = new (ELeave) CSpriteHandler;
CleanupStack::PushL(self);
self->ConstructL(aFs);
CleanupStack::Pop(self);
return self;
}
void CSpriteHandler::SetSpriteSize(const MopoidShared::TSpriteIds aSpriteId,
const TSize& aNewSize)
{
DoSetSpriteSize(aSpriteId, aNewSize);
// For some of the images, the resizing should automatically
// be applied to related graphics as well.
switch (aSpriteId)
{
case ESpritePanel:
{
// Also resize the panel mask
DoSetSpriteSize(ESpritePanelM, aNewSize);
}
break;
case ESpriteBall:
{
// Resize the ball mask as well
DoSetSpriteSize(ESpriteBallM, aNewSize);
}
break;
case ESpriteBrickNormal:
{
// When the size of the normal brick is set,
// also scale all the other bricks.
// Note: bricks currently do not use masks.
DoSetSpriteSize(ESpriteBrickIndestructible,
aNewSize);
DoSetSpriteSize(ESpriteBrickDouble, aNewSize);
DoSetSpriteSize(ESpriteBrickMoving, aNewSize);
DoSetSpriteSize(ESpriteBrickHarderBrick, aNewSize);
DoSetSpriteSize(ESpriteBrickSofterBrick, aNewSize);
}
break;
default:
break;
}
}
void CSpriteHandler::DoSetSpriteSize(const MopoidShared::TSpriteIds aSpriteId,
const TSize& aNewSize)
{
if (iSprites[aSpriteId])
{
// TODO: Set the size of the sprite for the array pos
// specified by the parameter
AknIconUtils::SetSize(iSprites[aSpriteId], aNewSize);
}
}
// -----------------------------------------------------------------------
// Construction leaving function (public)
// -----------------------------------------------------------------------
void CSpriteHandler::ConstructL(RFs& aFs)
{
// TODO: Declare the filename of the mif-file (without the directory)
_LIT(KMifFile, "MopoidGraphics.mif");
// Load sprites
RBuf fileName;
fileName.CleanupClosePushL();
// TODO: uncomment this line
NCommonFunctions::AddResourceDirL(KMifFile, fileName);
// TODO: Load panel
iSprites[ESpritePanel] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsPanel);
iSprites[ESpritePanelM] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsPanel_mask);
// TODO: Load ball
iSprites[ESpriteBall] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBall);
iSprites[ESpriteBallM] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBall_mask);
// TODO: Load bricks
iSprites[ESpriteBrickNormal] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBrick_green);
iSprites[ESpriteBrickIndestructible] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBrick_brown);
iSprites[ESpriteBrickDouble] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBrick_yellow);
iSprites[ESpriteBrickMoving] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBrick_red);
iSprites[ESpriteBrickHarderBrick] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBrick_violet);
iSprites[ESpriteBrickSofterBrick] = AknIconUtils::CreateIconL(fileName,
EMbmMopoidgraphicsBrick_blue);
CleanupStack::PopAndDestroy(&fileName);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -