game_scene.cpp

来自「大家好!这是一个网络游戏源码」· C++ 代码 · 共 79 行

CPP
79
字号
#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 + =
减小字号Ctrl + -
显示快捷键?