⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spritehandler.cpp

📁 mopoid game symbian os application development
💻 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 + -