예제 #1
0
	//----------------------------------------------------------------------------
	void GameRadar::drawBackGround()
	{
		IEngineUtil* engUtil = ClientMain::getInstance().getEngine()->engineUtil();
		if ( engUtil )
		{
			VecI2 srcSize = engUtil->getTextureSize( mWorldMapName, mWorldMapGroup );

			engUtil->drawTextureToSurface(mWorldMapName, mWorldMapGroup, VecI2(0,0), srcSize,
				mapName, mapGroup,  VecI2(0,0), mMiniMapSize);
		}
	}
예제 #2
0
	//----------------------------------------------------------------------------
	VecI2 GameRadar::convertContainerPositionToImagePosition(VecI2 containerPos)
	{
		//获得相对控件左上角的位移
		Vec2 imagePos;

		imagePos.x = ((Flt)containerPos.x / (Flt)mContainerSize.x) * (Flt)mMiniMapSize.x;
		imagePos.y = ((Flt)containerPos.y / (Flt)mContainerSize.y) * (Flt)mMiniMapSize.y;

		return VecI2((Int)imagePos.x, (Int)imagePos.y);
	}
예제 #3
0
void Game::spawnGhost()
{
	if(num_entities<(int)entities.size())
	{
		entities[num_entities]->reset();
	}
	else
	{
		GameEntity* entity = entityFac->createGhost(VecI2(3, 1), maze);
		entities.push_back(entity);
	}
	num_entities++;
}
예제 #4
0
	//----------------------------------------------------------------------------
	VecI2 GameRadar::convertWorldPositionToImagePosition( Vec3 worldPos )
	{
		//获取绘制图片相对底图中心的位移
		Vec2 imageOffset;
		imageOffset.x = ( worldPos.x - mVisibleWorldCenter.x ) * ((Flt)mMiniMapSize.x / mVisibleWorldSize.x);
		imageOffset.y = ( worldPos.z - mVisibleWorldCenter.y ) * ((Flt)mMiniMapSize.y / mVisibleWorldSize.y);

		//通过这个位移获取具体位置
		Vec2 imagePos = Vec2( (Flt)mMiniMapSize.x * 0.5f, (Flt)mMiniMapSize.y * 0.5f ) + imageOffset;
	
		//修正边界值
		imagePos.x = min( imagePos.x, (Flt)mMiniMapSize.x );
		imagePos.x = max( 0.0f, imagePos.x );

		imagePos.y = min( imagePos.y, (Flt)mMiniMapSize.y );
		imagePos.y = max( 0.0f, imagePos.y );

		return VecI2((I32)imagePos.x, (I32)imagePos.y);
	}
예제 #5
0
	//----------------------------------------------------------------------------
	void GameRadar::drawUnit(Vec3 pos, const Str& iconName, const Str& iconGroup)
	{
		IEngineUtil* engUtil = ClientMain::getInstance().getEngine()->engineUtil();
		if ( engUtil )
		{
			//转换坐标
			VecI2 imagePos = convertWorldPositionToImagePosition(pos);

			//获取绘制图标单元的尺寸
			VecI2 unitImageSize = engUtil->getTextureSize( iconName, iconGroup );
			if ( unitImageSize.x == 0 || 
				unitImageSize.y == 0 )
				return;

			//绘制的图片是否缩放
			VecI2 unitScaledImageSize = unitImageSize;
			unitScaledImageSize.x *= 1;
			unitScaledImageSize.y *= 1;

			//中央对齐
			imagePos.x -= ( unitScaledImageSize.x >> 1);
			imagePos.y -= ( unitScaledImageSize.y >> 1);

			//修正边界值
			if ( imagePos.x > mMiniMapSize.x - unitScaledImageSize.x )
				imagePos.x = mMiniMapSize.x - unitScaledImageSize.x;

			if ( imagePos.y > mMiniMapSize.y - unitScaledImageSize.y )
				imagePos.y = mMiniMapSize.y - unitScaledImageSize.y;

			if ( imagePos.x < 0 )
				imagePos.x = 0;

			if ( imagePos.y < 0 )
				imagePos.y = 0;			

			engUtil->drawTextureToSurface( iconName, iconGroup,
				VecI2(0,0), unitImageSize, mapName, mapGroup, imagePos, unitScaledImageSize );
		}
		
	}