亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ski.cpp

?? s60源碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
* Map accessor
* @return the map
*/
const CSkiMap& CSkiEngine::Map() const
    {
    return *iMap;
    }

/**
* skier accessor
* @return the skier
*/
CSkier& CSkiEngine::Skier()
    {
    return *iSkier;
    }

/**
* skier accessor
* @return the map gallery
*/
const CSkier& CSkiEngine::Skier() const
    {
    return *iSkier;
    }

/**
* Map gallery accessor
* @return the map gallery
*/
CMapGallery& CSkiEngine::MapGallery()
    {
    return *iMapGallery;
    }

/**
* Map gallery accessor
* @return the map gallery
*/
const CMapGallery& CSkiEngine::MapGallery() const
    {
    return *iMapGallery;
    }

/**
* Screen attributes acessor
* @return the screen attributes
*/
TSkiScreenAttribs& CSkiEngine::ScreenAttribs()
    {
    return iScrAttribs;
    }

/**
* Screen attributes acessor
* @return the screen attributes
*/
const TSkiScreenAttribs& CSkiEngine::ScreenAttribs() const
    {
    return iScrAttribs;
    }

/**
* Key handler accessor
* @return the key handler
*/
TKeyHandler& CSkiEngine::KeyHandler()
    {
    return iKeyHandler;
    }

/**
* Key handler accessor
* @return the key handler
*/
const TKeyHandler& CSkiEngine::KeyHandler() const
    {
    return iKeyHandler;
    }

/**
* Scroll driver accessor
* @return the scrll driver
*/
TScrollDriver& CSkiEngine::ScrollDriver()
    {
    return iScrollDriver;
    }

/**
* Scroll driver accessor
* @return the scrll driver
*/
const TScrollDriver& CSkiEngine::ScrollDriver() const
    {
    return iScrollDriver;
    }

//
// SkiBitmapLoader::
//

/**
* Loads a bitmap from an id
* @param aName The filename of the mbm
* @param aId the id of the image wanted for the created bitmap
* @return the newly created bitmap, on ther cleanup stack
*/
CFbsBitmap* SkiBitmapLoader::CreateBitmapLC(const TDesC& aName,TInt aId)
    {
	CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
	CleanupStack::PushL(bitmap);
	User::LeaveIfError(bitmap->Load(aName, aId));
	return bitmap;
    }

/**
* Adds the skier sprites to a gallery
* @param aGallery the gallery to add the skier sprites to
*/
void SkiBitmapLoader::AddSkierSpritesToGalleryL(CGameGallery& aGallery)
    {
    TFileName filename = KMultiBitmapFilename();
    CompleteWithAppPath(filename);  // don't need to handle error here - the path will be unchanged

    CFbsBitmap* bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS7);
    CFbsBitmap* mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm7);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier0);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS6);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm6);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier30);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS5);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm5);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier60);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS4);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm4);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier90);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS3);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm3);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier120);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS2);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm2);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier150);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesS1);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSm1);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkier180);
    CleanupStack::Pop(2, bitmap);

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSkiercrash);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSkiercrashm);

    aGallery.AddBitmapL(bitmap, mask, TSkierAttribs::ESkierFall);
    CleanupStack::Pop(2, bitmap);
    }

/**
* Adds the map sprites to a gallery
* @param aGallery the gallery to add the map sprites to
*/
void SkiBitmapLoader::AddMapSpritesToGalleryL(CGameGallery& aGallery)
    {
    TFileName filename = KMultiBitmapFilename();
    CompleteWithAppPath(filename);  // don't need to handle error here - the path will be unchanged
    //
    //blue flag

    CFbsBitmap* bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesFlagarrowleft);
    CFbsBitmap* mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesFlagm);

    aGallery.AddBitmapL(bitmap, mask, TMapPrimitive::ELeftFlag);
    CleanupStack::Pop(2, bitmap);

    //
    //red flag

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesFlagarrowright);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesFlagm);

    aGallery.AddBitmapL(bitmap, mask, TMapPrimitive::ERightFlag);
    CleanupStack::Pop(2, bitmap);

    //
    //log

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesLog);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesLogmask);

    aGallery.AddBitmapL(bitmap, mask, TMapPrimitive::ELog);
    CleanupStack::Pop(2, bitmap);

    //
    //tree

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesTree);
    mask = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesTreemask);

    aGallery.AddBitmapL(bitmap, mask, TMapPrimitive::ETree);
    CleanupStack::Pop(2, bitmap);

    //
    //bump

    bitmap = SkiBitmapLoader::CreateBitmapLC(filename,EMbmImagesSnowbump);
    aGallery.AddBitmapL(bitmap, NULL, TMapPrimitive::EBump);
    CleanupStack::Pop(bitmap);
    }

//
// CSkiFrameRenderer::
//

/**
* Standard Symbian 2 phase constructor
* @param aSize The size of the screen
* @param aEngineAttribs the engine attributes
*/
CSkiFrameRenderer* CSkiFrameRenderer::NewL(TSize aSize, CSkiEngine& aEngineAttribs)
    {
    CSkiFrameRenderer* self = NewLC(aSize, aEngineAttribs);
    CleanupStack::Pop(self);
    return self;
    }

/**
* Standard Symbian 2 phase constructor.  The object is left on the cleanup stack
* @param aSize The size of the screen
* @param aEngineAttribs the engine attributes
*/
CSkiFrameRenderer* CSkiFrameRenderer::NewLC(TSize aSize, CSkiEngine& aEngineAttribs)
    {
    CSkiFrameRenderer* self = new (ELeave) CSkiFrameRenderer(aEngineAttribs);
    CleanupStack::PushL(self);
    self->ConstructL(aSize);
    return self;
    }

/**
* Destructor
*/
CSkiFrameRenderer::~CSkiFrameRenderer()
    {
    delete iDBArea;
    }

/**
* Renders a game frame
* @return A bitmap containing a game frame
*/
const CFbsBitmap* CSkiFrameRenderer::RenderedFrameL() const
    {
    iDBArea->ClearBufferedArea();

    CSkiMap* map = iEngineAttribs.Map().IntersectsLC(iScrAttribs.Rect(), iEngineAttribs.MapGallery());

    CMapPrimitiveArray* bumps = map->TypeLC(TMapPrimitive::EBump);
    const TInt bumpCount = bumps->Count();

    for (TInt ii = 0; ii < bumpCount; ii++)
    	{
        DrawPrimitiveL(bumps->At(ii));
		}

    CleanupStack::PopAndDestroy(bumps);

    // Get scenery and find position of skier.  When we get passed the y position of the
    // skier we can draw the skier
    //

    TSkiVector posVect = iEngineAttribs.Skier().Attribs().Posn();
    TPoint skierPosn(static_cast<TInt>(posVect.iX), static_cast<TInt>(posVect.iY));
    TBool skierDrawn = EFalse;

    TInt type = TMapPrimitive::ETree | TMapPrimitive::ELeftFlag | TMapPrimitive::ERightFlag | TMapPrimitive::ELog;
    CMapPrimitiveArray* scenery = map->TypeLC(type);
    const TInt count = scenery->Count();

    for (TInt iii = 0; iii < count; iii++)
        {
        TMapPrimitive primitive = scenery->At(iii);

        // So this doesn't mess up if we have a negative offset..
        //
        TInt primitiveYPos = primitive.Posn().iY;
        TInt skierYPos = skierPosn.iY;

        TBool primitiveInfront = EFalse;

        if ((primitiveYPos < 0 && skierYPos < 0) || (primitiveYPos >= 0 && skierYPos >= 0))
        	{
            primitiveInfront = primitiveYPos > skierYPos;
			}

        else if (primitiveYPos < 0) // && skierYPos >= 0
        	{
            primitiveInfront = EFalse;
			}

        else // if skierYPos <0 && primitiveYPos >= 0
        	{
            primitiveInfront = ETrue;
			}

        if (!skierDrawn &&  primitiveInfront)
            {
            DisplaySkierL();
            skierDrawn = ETrue;
            }

        DrawPrimitiveL(primitive);
        }

    if (!skierDrawn)
    	{
        DisplaySkierL();
		}

    CleanupStack::PopAndDestroy(2, map);

    return &(iDBArea->GetDoubleBufferedAreaBitmap());
    }

/**
* C++ constructor
* @param aEngineAtrbs the engine attributes
*/
CSkiFrameRenderer::CSkiFrameRenderer(CSkiEngine& aEngineAttribs) :
    iEngineAttribs(aEngineAttribs),
    iScrAttribs(aEngineAttribs.ScreenAttribs())
    {
    }


/**
* Standard SymbianOS 2nd phase constructor
* @param aSize The sze of the screen
*/
void CSkiFrameRenderer::ConstructL(TSize aSize)
    {
    iDBArea = CDoubleBufferedArea::NewL(aSize, EColor4K);
    }

/**
* Draw a map primitive to the back buffer
* @param aPrimitive the primitive to draw
*/
void CSkiFrameRenderer::DrawPrimitiveL(const TMapPrimitive& aPrimitive) const
    {
    CMapGallery& gallery = iEngineAttribs.MapGallery();
    CSkiSprite& sprite = gallery.SpriteL(aPrimitive.Type());

    // this obtains the sprite rectangle with absolute (map) coordinates
    TRect absoluteBounds = gallery.RectangleL(aPrimitive);
    // this converts to a screen coordinate
    TPoint scrPosn = absoluteBounds.iTl - iScrAttribs.Offset();

    DrawSpriteL(scrPosn, sprite);
    }

/**
* Draw the skier to the back buffer
*/
void CSkiFrameRenderer::DisplaySkierL() const
    {
    CSkier& skier = iEngineAttribs.Skier();

    TSkiVector posVect = skier.Attribs().Posn();
    TPoint skierPosn(static_cast<TInt>(posVect.iX), static_cast<TInt>(posVect.iY));

    CFbsBitmap& bitmap = skier.SpriteL().Bitmap();

    // GET SKIER SPRITE ON SCREEN
    //
    //
    TSize skierSize = bitmap.SizeInPixels();
    TRect skiRect(skierPosn - iScrAttribs.Offset(), skierSize);
    // map position is bottom centre of object
    skiRect.Move(-skierSize.iWidth / 2, -skierSize.iHeight - skier.Attribs().Elevation());

    TPoint posn = skiRect.iTl;
    CFbsBitGc& gc = iDBArea->GetDoubleBufferedAreaContext();

    if (skier.Jumping())
        {
        //Draw shadow if the skier is jumping
		TPoint shadowPosn = skierPosn - iScrAttribs.Offset();
		shadowPosn.iY -= skierSize.iHeight;
        TRect shadow(shadowPosn, TSize(8,8));

        gc.SetBrushColor(KRgbBlack);
        gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
        gc.DrawEllipse(shadow);
        gc.SetBrushColor(KRgbWhite);
		gc.SetBrushStyle(CGraphicsContext::ENullBrush);

        // put the skier in the "air"
        posn.iY -= skier.Attribs().Elevation();
        }

	gc.BitBltMasked(posn, &(bitmap), bitmap.SizeInPixels(), skier.SpriteL().Mask(), ETrue);

    }


/**
* Draw a sprite to the back buffer
* @param aPosn the screen position to draw to
* @param aSprite the sprite to draw
*/
void CSkiFrameRenderer::DrawSpriteL(TPoint aPosn, const CSkiSprite& aSprite) const
    {
    const CFbsBitmap* mask = aSprite.Mask();
    const CFbsBitmap& bitmap = aSprite.Bitmap();
    CFbsBitGc& gc = iDBArea->GetDoubleBufferedAreaContext();
	gc.Reset();

    if (mask)
    	{
		gc.BitBltMasked(aPosn, &bitmap, bitmap.SizeInPixels(), mask, ETrue);
		}
    else
        {
        CFbsBitmap* copy = new (ELeave) CFbsBitmap;
        CleanupStack::PushL(copy);
        User::LeaveIfError(copy->Duplicate(bitmap.Handle()));
        gc.BitBlt(aPosn, copy);
        CleanupStack::PopAndDestroy(copy);
        }
    }

//
// CSkiGameLoop::
//

/**
* Standard SymbianOS 2-phase constructor
* @param aEngine the game engine
* @param aRenderer the frame rederer
* @aam aDSA direct screen access
*/
CSkiGameLoop* CSkiGameLoop::NewL(CSkiEngine& aEngine, CSkiFrameRenderer& aRenderer, CDSAWrapper& aDSA)
    {
    CSkiGameLoop* self = NewLC(aEngine, aRenderer, aDSA);
    CleanupStack::Pop(self);
    return self;
    }

/**
* Standard SymbianOS 2-phase constructor.  The object is left on the cleanup stack
* @param aEngine the game engine
* @param aRenderer the frame rederer
* @aam aDSA direct screen access
*/
CSkiGameLoop* CSkiGameLoop::NewLC(CSkiEngine& aEngine, CSkiFrameRenderer& aRenderer, CDSAWrapper& aDSA)
    {
    CSkiGameLoop* self = new (ELeave) CSkiGameLoop(aEngine, aRenderer, aDSA);
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

/**
* Desructor
*/
CSkiGameLoop::~CSkiGameLoop()
    {
    }

/**
* Kicks off the timer
* @param anInterval the time in miliseconds between timer events
*/
void CSkiGameLoop::Start(TTimeIntervalMicroSeconds32 anInterval)
    {
    Cancel();
    iInterval = anInterval;
    After(iInterval);
    }

/**
* C++ constructor
* @param aEngine the game engine
* @param aRenderer the frame rederer
* @aam aDSA direct screen access
*/
CSkiGameLoop::CSkiGameLoop(CSkiEngine& aEngine, CSkiFrameRenderer& aRenderer, CDSAWrapper& aDSA) :
    CTimer(EPriorityHigh),
    iEngine(aEngine),
    iRenderer(aRenderer),
    iDSA(aDSA),
    iPaused(EFalse)
    {
    }

/**
* From CActive.  Updates the game engine and screen
*/
void CSkiGameLoop::RunL()
    {
    if (!iPaused)
        {
        // instantiates DSA if not already p

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色就色 综合激情| 国产精品视频麻豆| 678五月天丁香亚洲综合网| 色成年激情久久综合| 国产欧美日韩卡一| 精品国产一区a| 一区二区高清视频在线观看| 日日夜夜免费精品| 亚洲另类在线一区| 亚洲成人一二三| 老司机午夜精品| 日韩福利视频网| 欧美大黄免费观看| 波多野结衣中文字幕一区| 国产福利一区在线| 国产成人夜色高潮福利影视| 国产精品资源在线看| 国产精品一区二区在线观看不卡| 国产毛片精品视频| 国产高清精品在线| 91色九色蝌蚪| 精品视频资源站| 欧美不卡一区二区三区四区| 久久免费的精品国产v∧| 久久精品欧美日韩| 亚洲免费在线播放| 天天综合天天做天天综合| 玖玖九九国产精品| 国产成人av影院| 色网综合在线观看| 这里只有精品视频在线观看| 久久午夜羞羞影院免费观看| 国产精品狼人久久影院观看方式| 亚洲男人的天堂在线观看| 日韩精品亚洲专区| 懂色一区二区三区免费观看| 91精品福利在线| 日韩一区二区视频| 国产精品久久久久久久久搜平片| 亚洲一区在线视频| 精品亚洲成a人在线观看| 99久久精品免费看国产| 天堂蜜桃91精品| 国产美女视频91| 91蝌蚪porny九色| 欧美一区二区三区四区在线观看| 久久久久久免费毛片精品| 亚洲综合色噜噜狠狠| 精品制服美女丁香| 色综合天天性综合| 日韩片之四级片| 亚洲精品视频免费看| 久久精品国产亚洲高清剧情介绍 | 国产亚洲综合在线| 亚洲乱码精品一二三四区日韩在线| 香蕉久久夜色精品国产使用方法 | 欧美一级视频精品观看| 中文字幕精品一区二区三区精品| 亚洲一区二区三区精品在线| 粉嫩蜜臀av国产精品网站| 91超碰这里只有精品国产| 国产精品久久久久影院老司| 亚洲超碰97人人做人人爱| 成人va在线观看| 精品久久一二三区| 一区二区三区欧美| 成人精品免费视频| 日韩一区二区三区视频| 亚洲综合一二三区| 国产成人av电影免费在线观看| 欧美欧美欧美欧美| 亚洲精品视频免费看| 国产大陆亚洲精品国产| 日韩欧美一区在线| 亚洲国产精品视频| 色又黄又爽网站www久久| 久久久久久久久久久电影| 欧美日本在线播放| 中文字幕亚洲在| 国产一区999| 精品日韩99亚洲| 免费人成精品欧美精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产农村妇女毛片精品久久麻豆| 麻豆中文一区二区| 欧美一区二区三区男人的天堂 | 成人动漫中文字幕| 国产午夜精品一区二区三区四区| 久久99精品久久久久婷婷| 7878成人国产在线观看| 亚洲黄色录像片| 91视频在线观看| 一色桃子久久精品亚洲| 国产91丝袜在线18| 日本一区二区在线不卡| 国产91精品入口| 久久精品视频免费观看| 国产一区二区视频在线| 精品美女一区二区三区| 蜜桃视频第一区免费观看| 日韩色在线观看| 久久精品噜噜噜成人88aⅴ| 欧美一级片在线| 青青草成人在线观看| 日韩一区二区电影在线| 美女被吸乳得到大胸91| 欧美成人一级视频| 国产伦精品一区二区三区视频青涩 | 亚洲欧洲日韩一区二区三区| 国产成人av电影在线观看| 国产午夜一区二区三区| 粉嫩av一区二区三区| 欧美国产国产综合| av动漫一区二区| 伊人夜夜躁av伊人久久| 在线精品视频小说1| 天天综合网 天天综合色| 日韩欧美中文字幕公布| 国产老妇另类xxxxx| 久久午夜国产精品| 国产福利精品一区| 亚洲视频免费观看| 在线观看精品一区| 日韩福利视频导航| 久久久久久亚洲综合| 成人av免费在线播放| 亚洲男人的天堂网| 欧美日韩国产影片| 老色鬼精品视频在线观看播放| 久久九九久久九九| 99久久99久久精品免费看蜜桃| 一二三区精品福利视频| 91精品国产高清一区二区三区 | 亚洲123区在线观看| 日韩三级视频在线观看| 国产·精品毛片| 怡红院av一区二区三区| 欧美一区二区精品| 国产91精品欧美| 亚洲国产精品天堂| 久久蜜桃av一区二区天堂| 成人免费毛片片v| 亚洲国产精品精华液网站| 日韩精品一区在线观看| 丁香天五香天堂综合| 91视频你懂的| 麻豆国产精品视频| 国产精品日产欧美久久久久| 欧美三级电影网站| 国产乱码精品一区二区三区五月婷| 最新高清无码专区| 日韩精品一区国产麻豆| 99精品视频在线免费观看| 五月激情综合色| 国产精品护士白丝一区av| 91精品国产综合久久久久久久久久| 国产成人亚洲综合a∨婷婷| 亚洲激情六月丁香| 国产偷国产偷精品高清尤物| 欧美无砖砖区免费| 丁香啪啪综合成人亚洲小说| 天堂在线亚洲视频| 国产精品的网站| 这里是久久伊人| 一本色道久久综合狠狠躁的推荐| 美腿丝袜一区二区三区| 亚洲免费色视频| 国产亚洲欧美激情| 日韩一区二区三| 在线一区二区三区四区| 国产黄色成人av| 日韩成人一区二区| 亚洲影院免费观看| 国产精品色在线| 精品国产一区久久| 欧美精品高清视频| 波波电影院一区二区三区| 青青青爽久久午夜综合久久午夜 | 国产精品一二三四五| 天堂资源在线中文精品| 亚洲欧美激情插 | 国产福利一区二区| 免费视频最近日韩| 一区二区三区欧美视频| 国产精品视频一二三| 精品国产一区二区国模嫣然| 欧美美女一区二区在线观看| 91啪亚洲精品| 粉嫩一区二区三区在线看| 精彩视频一区二区三区| 免费观看成人av| 日韩和欧美一区二区| 亚洲国产精品久久久久秋霞影院| 18欧美亚洲精品| 欧美激情在线看| 国产日韩欧美综合一区| 久久久久久一级片| 久久久综合激的五月天| 精品国产制服丝袜高跟| 精品国产三级电影在线观看|