Exemplo n.º 1
0
void DrawTowers(TowerList *TL)
{
    Tower *tempTower;
    for (int i = 0; i < TowerSize(TL); i++)
    {
        tempTower = TowerPeek(i,TL);
        int xPos = STARTX+TowerPosX(tempTower)*MAPSCALE;
        int yPos = STARTY+TowerPosY(tempTower);
        
        DrawEffect(tempTower,1);       
        
        if (TowerDamage(tempTower) < 0)
        {
            // attron(COLOR_PAIR(8));
            mvprintw(yPos,xPos,"%dR%d%d",TowerDamage(tempTower)*-1,TowerRange(tempTower),TowerRate(tempTower));
            // attroff(COLOR_PAIR(8));
        }
        else
        {
            mvprintw(yPos,xPos,"%dT%d%d",TowerDamage(tempTower),TowerRange(tempTower),TowerRate(tempTower));
        }
        DrawEffect(tempTower,0);

    }
}
TBool CHuiFxVg10BlurFilter::Draw(CHuiFxEngine& aEngine, CHuiGc& /* aGc */, CHuiFxRenderbuffer& aTarget,
                                 CHuiFxRenderbuffer& aSource, const TRect& aTargetRect, const TRect& aSourceRect, TBool aHasSurface)
    {
    aTarget.BindAsTexture(ERenderbufferUsageWriteOnly);
    aSource.BindAsTexture(ERenderbufferUsageReadOnly);
    VGImage srcImage  = (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aSource))->AcquireSubImage(aSourceRect);
    VGImage destImage = (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aTarget))->AcquireSubImage(aTargetRect);
    
    // take opacity into account
    const VGfloat opacity = clamp(iOpacity, 0.0f, 1.0f);

    if(opacity > EPSILON)
        {
        DrawEffect(aEngine, destImage, srcImage, aSourceRect.Width(), aSourceRect.Height(), aHasSurface);
        }
    else
        {
//        VGint width = vgGetParameteri(srcImage, VG_IMAGE_WIDTH);
//        VGint height = vgGetParameteri(srcImage, VG_IMAGE_HEIGHT);
        VGint width = aSourceRect.Width();
        VGint height = aSourceRect.Height();
        vgClearImage(destImage, 0, 0, width, height);
        }

    HUIFX_VG_INVARIANT();    
    (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aSource))->ReleaseSubImage(srcImage);
    (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aTarget))->ReleaseSubImage(destImage);
    aTarget.UnbindAsTexture();
    aSource.UnbindAsTexture();
    
    return wasEnoughMemory();
    }
Exemplo n.º 3
0
 void ParticleManager::DrawEffects()
 {
     for (auto it = _effects.begin(); it != _effects.end(); ++it)
     {
         for (auto it2 = it->begin(); it2 != it->end(); ++it2)
         {
             DrawEffect(*it2);
         }
     }
 }
Exemplo n.º 4
0
 void ParticleManager::DrawEffect( Effect *e )
 {
     for (int i = 0; i < 10; ++i)
     {
         // particle
         const auto& plist = e->GetParticles(i);
         for (auto it = plist.begin(); it != plist.end(); ++it)
         {
             DrawParticle(*it);
             // effect
             auto& subeffects = (*it)->GetChildren();
             for (auto it2 = subeffects.begin(); it2 != subeffects.end(); ++it2)
             {
                 DrawEffect(static_cast<Effect*>(*it2));
             }
         }
     }
 }
Exemplo n.º 5
0
void StageDraw()
{
    DrawMap(map, 0);
    DrawEnemy(map);
    DrawItem(map);
    DrawBomb(map);
    DrawEffect(map);
    DrawPlayer(map);
    
#if !MAP_EDIT_MODE
    DrawTextureObject(res.player_right, 0, 0);
    FontPrintf(32, 16, "x %d", life);
    
    DrawTextureObject(res.font_stage, 128, 16);
    FontPrintf(128 + 16 * 5, 16, "%d", stageNum + 1);

    DrawTextureObject(res.font_score, 128 + 16 * 5 + 32, 16);
    FontPrintf(128 + 16 * 5 + 32 + 16 * 5 + 16 , 16, "%d", score);
    PrintWindow("fps: %d", engineFps);
#endif    
}
Exemplo n.º 6
0
	void GloriousShot::Draw()
	{
		if( m_StatusFlags[ INVISIBLE ] ){
			return;
		}

		float posX = m_GUData.m_PosX.GetFloat();
		float posY = m_GUData.m_PosY.GetFloat();
		int color = 0xFFFFFFFF;
		int scale = m_ImgScale;

		DrawEffect();

		// 消去されるときは徐々に薄くなっていく。
		if( m_StatusFlags[ DEAD ] ){
			color = ( ( 20 - m_DeadCounter ) * 5 ) << 24 | 0xFFFFFF;
			scale += m_DeadCounter * 0.05f;
		}

		// 点滅
		if( m_Counter % 16 >= 8 ){
			m_DrawingMultiplicity = 2;
		}
		else{
			m_DrawingMultiplicity = 1;
		}

		// 描画
		for( int i = 0; i < m_DrawingMultiplicity; ++i ){
			MAPIL::Assert( m_AtlasImgID != -1, CURRENT_POSITION, TSTR( "Invalid image ID was input." ), -1 );
			for( int i = 0; i < m_DrawingMultiplicity; ++i ){
				AddToAtlasSpriteBatch(	true, m_AlphaBlendingMode,
										m_AtlasImgID,
										posX, posY, m_ImgScale, m_ImgScale, m_ImgRotAngle, true, color );
			}
		}
	}
//*******************************************************************************
void CBCGPChartInterLineColoringEffect::OnDraw(CBCGPGraphicsManager* pGM)
{
	ASSERT_VALID(this);

	if (m_pSeries1 == NULL || m_arPointsSeries1.GetSize() < 2 || !IsVisible())
	{
		return;
	}

	BOOL bWasTransparency = CBCGPGraphicsManagerGDI::IsTransparencyEnabled();
	CBCGPGraphicsManagerGDI::EnableTransparency();

	BCGPChartFormatSeries::ChartCurveType curveType = m_pSeries1->GetCurveType();

	if (curveType == BCGPChartFormatSeries::CCT_STEP || curveType == BCGPChartFormatSeries::CCT_REVERSED_STEP ||
		m_pSeries2 != NULL && (m_pSeries2->GetCurveType() == BCGPChartFormatSeries::CCT_STEP || 
								m_pSeries2->GetCurveType() == BCGPChartFormatSeries::CCT_REVERSED_STEP))
	{
		return;
	}

	CBCGPChartAxis* pXAxis = m_pSeries1->GetRelatedAxis(CBCGPChartSeries::AI_X);
	CBCGPRect rectBounds = pXAxis->GetBoundingRect();

	CBCGPChartAxis* pYAxis = m_pSeries1->GetRelatedAxis(CBCGPChartSeries::AI_Y);

	if (pYAxis->m_bReverseOrder)
	{
		pYAxis->IsVertical() ? rectBounds.SwapTopBottom() : rectBounds.SwapLeftRight();
	}

	if (pXAxis->m_bReverseOrder)
	{
		pXAxis->IsVertical() ?  rectBounds.SwapTopBottom() : rectBounds.SwapLeftRight();
	}

	BCGPSeriesColorsPtr colors;
	m_pSeries1->GetColors(colors, -1);

	CBCGPBrush& brFill = m_brTopBrush.IsEmpty() ? *colors.m_pBrElementFillColor : m_brTopBrush;
	
	CBCGPGeometry* pDrawGeometry = CreateGeometry(m_arPointsSeries1, rectBounds, curveType, FALSE);
	CBCGPGeometry* pClipGeometry = m_pSeries2 != NULL ? 
		CreateGeometry(m_arPointsSeries2, rectBounds, m_pSeries2->GetCurveType(), TRUE) : 
		CreateClipGeometry(m_dblOrigin);

	ASSERT_VALID(pDrawGeometry);
	ASSERT_VALID(pClipGeometry);

	DrawEffect(pGM, pDrawGeometry, pClipGeometry, rectBounds, brFill);

	delete pClipGeometry;
	delete pDrawGeometry;

	if (m_pSeries2 != NULL && m_arPointsSeries2.GetSize() > 2 && !m_bTopOnly)
	{
		BCGPSeriesColorsPtr colors;
		m_pSeries2->GetColors(colors, -1);

		pDrawGeometry = CreateGeometry(m_arPointsSeries2, rectBounds, m_pSeries2->GetCurveType(), FALSE);
		pClipGeometry = CreateGeometry(m_arPointsSeries1, rectBounds, curveType, TRUE);

		CBCGPBrush& brFill = m_brBottomBrush.IsEmpty() ? *colors.m_pBrElementFillColor : m_brBottomBrush;
		DrawEffect(pGM, pDrawGeometry, pClipGeometry, rectBounds, brFill);

		delete pClipGeometry;
		delete pDrawGeometry;
	}

	CBCGPGraphicsManagerGDI::EnableTransparency(bWasTransparency);
}
Exemplo n.º 8
0
void KeyDown_Level( SDLKey key )
{
	if( key == SDLK_d && ( event.key.keysym.mod & KMOD_LCTRL ) )
	{
		if( Game_debug ) 
		{
			sprintf( debugdisplay->text, "Game debugmode Disabled" );
			debugdisplay->counter = DESIRED_FPS * 2;
			Game_debug = 0;
		}
		else
		{
			sprintf( debugdisplay->text, "Game debugmode Enabled" );
			debugdisplay->counter = DESIRED_FPS * 2;
			Game_debug = 1;
		}
		return;
	}
	// Debug Keys only for some testing ;)
	// use F2 - F4
	else if( key == SDLK_F3 && Game_debug )
	{
		pPlayer->GotoNextLevel();
		return;
	}
	else if( key == SDLK_F4 && Game_debug )
	{
		DrawEffect( FIXED_RECTANGLE_PIXELATION );
		//pPlayer->Fireball_add( FIREBALL_EXPLOSION );
		return;
	}
	else if( key == SDLK_F5 )
	{
		Save_Screenshot();
		return;
	}
	else if( pJoystick->shoot && !Leveleditor_Mode )
	{
		pPlayer->Fireball_add();
		return;
	}
	else if( pJoystick->enter && !Leveleditor_Mode )
	{
		Itembox->Request_Item();
		return;
	}
	else if( key == SDLK_s && Leveleditor_Mode )
	{
		pLevel->Save();
		return;
	}
	else if( key == SDLK_F8 )
	{
		Leveleditor_Mode = !Leveleditor_Mode;
		
		if( Leveleditor_Mode )
		{
			if( !pLeveleditor->wMenu_Count ) 
			{
				pLeveleditor->Load_Default_Menu();
			}

			sprintf( debugdisplay->text, "Editor Mode enabled" );
		}
		else
		{
			sprintf( debugdisplay->text, "Editor Mode disabled" );
			cameraposy = pPlayer->posy - (double)( screen->h/2 );
			cameraposx = pPlayer->posx + (double)( screen->w/2 );

			pMouseCursor->mover_mode = 0;
			pMouseCursor->fastCopyMode = 0;
		}

		debugdisplay->counter = DESIRED_FPS * 2;
		pAudio->PlaySound( SOUNDS_DIR "/leveleditor.ogg" );
		
		return;
	}
	else if( keys[SDLK_g] && keys[SDLK_o] && keys[SDLK_d] && !Leveleditor_Mode )
	{
		if( pPlayer->debugmode )
		{
			pPlayer->debugmode = 0;
			sprintf( debugdisplay->text, "Funky Godmode disabled" );
		}
		else
		{
			pPlayer->debugmode = 1;
			sprintf( debugdisplay->text, "Funky Godmode enabled" );
		}
		
		debugdisplay->counter = DESIRED_FPS * 2;

		return;
	}

	else if( key == pPreferences->Key_up )
	{
		pPlayer->Start_jump_keytime();
		return;
	}
	else if( SDLK_j && pPlayer->debugmode )
	{
		pPlayer->Start_jump();
		return;
	}
	else if( key == pPreferences->Key_down && !Leveleditor_Mode )
	{
		pPlayer->Start_ducking();
		return;
	}
	else if( Leveleditor_Mode ) // Additional EditMode Keys
	{
		if ( key == SDLK_F1 ) 
		{
			// Todo : a leveditor help screen
		}
		else if( key == SDLK_HOME ) // new
		{
			cameraposx = 0;
			cameraposy = 0;
		}
		else if( key == SDLK_END ) // new
		{
			double new_cameraposx = 0;
			double new_cameraposy = 0;
			
			for( unsigned int i = 0; i < ActiveObjects.size(); i++ )
			{
				if( !ActiveObjects[i] )
				{
					continue;
				}

				if( ActiveObjects[i]->type == TYPE_LEVELEXIT && new_cameraposx < ActiveObjects[i]->posx )
				{
					new_cameraposx = ActiveObjects[i]->posx;
					new_cameraposy = ActiveObjects[i]->posy;
				}
			}

			if( new_cameraposx != 0 || new_cameraposy != 0 ) 
			{
				cameraposx = new_cameraposx - ( pPreferences->Screen_W/2 );
				cameraposy = new_cameraposy - ( pPreferences->Screen_H/2 );
			}
		}
		else if( key == SDLK_n )
		{
			cameraposx += pPreferences->Screen_W;
		}
		else if( key == SDLK_p )
		{
			cameraposx -= pPreferences->Screen_W;
		}
		// Precise Pixel-Positioning
		else if( key == SDLK_KP2 && pMouseCursor->MouseObject )
		{
			if( pMouseCursor->fastCopyMode )
			{
				if( pMouseCursor->MouseObject->StartImage ) 
				{
					pMouseCursor->Copy( pMouseCursor->MouseObject, pMouseCursor->MouseObject->posx, pMouseCursor->MouseObject->posy + pMouseCursor->MouseObject->StartImage->h );
					cameraposy += pMouseCursor->MouseObject->StartImage->h;
				}
				
			}
			else
			{
				cameraposy++;
			}
		}
		else if( key == SDLK_KP4 && pMouseCursor->MouseObject )
		{
			if( pMouseCursor->fastCopyMode )
			{
				if( pMouseCursor->MouseObject->StartImage ) 
				{
					pMouseCursor->Copy( pMouseCursor->MouseObject, pMouseCursor->MouseObject->posx - pMouseCursor->MouseObject->StartImage->w, pMouseCursor->MouseObject->posy );
					cameraposx -= pMouseCursor->MouseObject->StartImage->w;	
				}
			}
			else
			{
				cameraposx--;
			}
		}
		else if( key == SDLK_KP6 && pMouseCursor->MouseObject )
		{
			if( pMouseCursor->fastCopyMode )
			{
				if( pMouseCursor->MouseObject->StartImage ) 
				{
					pMouseCursor->Copy( pMouseCursor->MouseObject, pMouseCursor->MouseObject->posx + pMouseCursor->MouseObject->StartImage->w, pMouseCursor->MouseObject->posy );
					cameraposx += pMouseCursor->MouseObject->StartImage->w;
				}
			}
			else
			{
				cameraposx++;
			}
		}
		else if( key == SDLK_KP8 && pMouseCursor->MouseObject )
		{
			if( pMouseCursor->fastCopyMode )
			{
				if( pMouseCursor->MouseObject->StartImage ) 
				{
					pMouseCursor->Copy( pMouseCursor->MouseObject, pMouseCursor->MouseObject->posx, pMouseCursor->MouseObject->posy - pMouseCursor->MouseObject->StartImage->h );
					cameraposy -= pMouseCursor->MouseObject->StartImage->h;
				}
			}
			else
			{
				cameraposy--;
			}
		}
		else if( key == SDLK_m && pMouseCursor->MouseObject )
		{
			// modify Passive/Massive/Halfmassive/Climbable
			pLeveleditor->Switch_ObjectState();
			return;
		}
		else if( key == SDLK_c && ( event.key.keysym.mod & KMOD_LCTRL ) && Leveleditor_Mode ) // Copy an Sprite
		{
			if( pMouseCursor->MouseObject )
			{
				pMouseCursor->CopyObject = pMouseCursor->MouseObject;
			}
		}
		else if( key == SDLK_v && ( event.key.keysym.mod & KMOD_LCTRL ) && Leveleditor_Mode ) // Paste an Sprite
		{
			if( pMouseCursor->CopyObject )
			{
				pMouseCursor->Copy( pMouseCursor->CopyObject, pMouseCursor->posx, pMouseCursor->posy );
				pMouseCursor->mouse_H = pMouseCursor->CopyObject->rect.h/2;
				pMouseCursor->mouse_W = pMouseCursor->CopyObject->rect.w/2;
			}
		}
	}
}
Exemplo n.º 9
0
	void BeamShotM::Draw()
	{
		if( m_StatusFlags[ INVISIBLE ] ){
			return;
		}

		float posX = m_GUData.m_PosX.GetFloat();
		float posY = m_GUData.m_PosY.GetFloat();
		int color = 0xFFFFFFFF;
		float scale = 0.0f;
		float angle = ::atan2( m_Line.GetEndY() - m_Line.GetStartY(), -m_Line.GetEndX() + m_Line.GetStartX() ) - MAPIL::DegToRad( 90.0f );
		float length = std::sqrt(	( m_Line.GetEndX() - m_Line.GetStartX() ) * ( m_Line.GetEndX() - m_Line.GetStartX() ) + 
									( m_Line.GetEndY() - m_Line.GetStartY() ) * ( m_Line.GetEndY() - m_Line.GetStartY() ) );

		

		// 消去されるときは徐々に薄くなっていく。
		if( m_StatusFlags[ DEAD ] ){
			color = ( ( 20 - m_DeadCounter ) * 5 ) << 24 | 0xFFFFFF;
			scale = ( 20 - m_DeadCounter ) / 20.0f;
		}
		else{
			// 拡大率
			if( m_Counter < 20 ){
				scale = 1.0f;
			}
			else if( m_Counter >= 20 && m_Counter < 60 ){
				scale = ( m_Counter - 20 ) / 40.0f;
			}
			else if( m_Counter >= 60 ){
				scale = 1.0f;
			}
		}

		// 点滅エフェクト
		if( m_Counter > 20 ){
			if( m_Counter % 16 == 0 || m_Counter % 16 == 12 ){
				m_DrawingMultiplicity = 2;
			}
			if( m_Counter % 16 == 10 || m_Counter % 16 == 14 ){
				m_DrawingMultiplicity = 1;
			}
		}
		else{
			m_DrawingMultiplicity = 1;
		}

		// 描画
		unsigned int texSizeX;
		unsigned int texSizeY;
		int img;
		MAPIL::Assert( m_AtlasImgID != -1, CURRENT_POSITION, TSTR( "Invalid image ID was input." ), -1 );
		ResourceMap::TextureAtlas atlas;
		if( m_Counter < 20 ){
			img = LASER_MAKER_TEX_ID + m_TexColor;
		}
		else{
			img = m_AtlasImgID;
		}
		atlas = m_pResourceMap->m_pGlobalResourceMap->m_TexAtlasMap[ img ];
		texSizeX = atlas.m_Width;
		texSizeY = atlas.m_Height;

		for( int i = 0; i < m_DrawingMultiplicity; ++i ){
			AddToAtlasSpriteBatch(	true,
									m_AlphaBlendingMode,
									img,
									m_Line.GetStartX() - ( texSizeX * scale / 2.0f ) * cos( angle ),
									m_Line.GetStartY() + ( texSizeX * scale / 2.0f ) * sin( angle ),
									scale,
									length / texSizeY, 
									angle, false, color );
		}

		DrawEffect();
	}