📄 game_scene.cpp
字号:
#include "runner_game.h"
GAME_SCENE::GAME_SCENE()
{
pbBlockPath = NULL;
}
GAME_SCENE::~GAME_SCENE()
{
Release();
}
VOID GAME_SCENE::Release()
{
FreeMemory(pbBlockPath);
}
BOOL GAME_SCENE::Init()
{
GetMemory(pbBlockPath , BYTE , gridWorld.iAttrSize);
gridWorld.SetBorderValue(1);
ResetPathBlockBuffer();
return TRUE;
}
VOID GAME_SCENE::SetCoverRedrawValue(RECT rcObj , BYTE bValue)
{
int iMapX , iMapY;
mapMain.GetMapXY(&iMapX , &iMapY);
RECT rc;
rc.left = rcObj.left - iMapX;
rc.top = rcObj.top - iMapY;
rc.right = rcObj.right - iMapX;
rc.bottom = rcObj.bottom - iMapY;
RECT rcGrid;
if(!gridCover.WorldRectToGridRect(rc , &rcGrid))
{
return;
}
int iStartRectX = rcGrid.left;
int iStartRectY = rcGrid.top;
int iEndRectX = rcGrid.right;
int iEndRectY = rcGrid.bottom;
int w , h ; gridCover.GetWorldGridSize(&w , &h);
int iOffset = iEndRectY * w;
if(iEndRectY>=h)
{
Out("ERR %s\n" , "iEndRectY Overflow!");
Out("iStartRectY = %d\n" , iStartRectY);
Out("iEndRectY = %d\n" , iEndRectY);
return ;
}
LPBYTE pbHeight = gridCover.GetAttrPtr() + iOffset;
LPBYTE pbRedraw = gridCoverRedraw.GetAttrPtr() + iOffset;
for(int y = iEndRectY ; y >= iStartRectY; y--) //从下往上
{
for(int x = iStartRectX ; x <= iEndRectX ; x++)
{
if( *(pbHeight + x) > (iEndRectY - y) )
{
*(pbRedraw + x) = 1;
}
}
pbHeight-=w;
pbRedraw-=w;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -