Exemple #1
0
TGfxVec2 TCamera::ConvertScreenPosToWorldPos(const TGfxVec2 & tScreenPos) const
{
	const TGfxVec2 tRelativeToFocusPos = TGfxVec2(tScreenPos.x - GfxGetDisplaySizeX() / 2.0f, -tScreenPos.y + GfxGetDisplaySizeY() / 2.0f);
	const TGfxVec2 tWorldPos = tRelativeToFocusPos + m_pFocus->GetWorldPos();

	return tWorldPos;
}
Exemple #2
0
void Initialize()
{
	m_TimeDebug.SetStartTime();

	g_pImage = GfxImageLoad("Map.tga");
	int iSizeX = GfxImageGetSizeX(g_pImage);
	
	SetTileS();

	const int iArray = 4;
	TTile m_AllTile[iArray];

	m_AllTile[0] = m_TileWall;
	m_AllTile[1] = m_TileFloor;
	m_AllTile[2] = m_TileEnd;
	m_AllTile[3] = m_TileStart;

	m_Map.SetSizeTile(float(GfxGetDisplaySizeX() / iSizeX));
	m_Map.DrawMap(g_pImage, m_Sprite, m_AllTile, iArray);

	float fTexSize = m_Map.fSizeTile;
	m_Player.SetingSprite(fTexSize);
	m_Player.tPos = m_Map.GetStartMap(g_pImage, m_Sprite, m_TileStart);
//	GfxFullscreen(true);

	m_TimeDebug.GetExitTime();
}
Exemple #3
0
void TPlayer::Initialize(int x, int y, int TILE_SIZE, int SCALE)
{
	TGfxTexture * pTexture = GfxTextureLoad("gfx/tileset.tga");
	m_pSpritePlayer = GfxSpriteCreate(pTexture);
	GfxSpriteSetScale(m_pSpritePlayer, float(SCALE), float(SCALE));
	GfxSpriteSetFilteringEnabled(m_pSpritePlayer, false);
	GfxSpriteSetCutout(m_pSpritePlayer, x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
	GfxSpriteSetPosition(m_pSpritePlayer, 
		((GfxGetDisplaySizeX() / 2) - ((GfxSpriteGetSizeX(m_pSpritePlayer)*(GfxSpriteGetScaleX(m_pSpritePlayer)) / 2))), 
		((GfxGetDisplaySizeY() / 2) - ((GfxSpriteGetSizeY(m_pSpritePlayer)*(GfxSpriteGetScaleY(m_pSpritePlayer)) / 2))));
}      
Exemple #4
0
void PlayerState_GoingToBase()
{
	if (g_bMoving == false)
	{
		GfxDbgPrintf("You are going to the base\n");
	}

	g_bMoving = true;

	//----------------------------------------- TRY ----------------------------------------------------------------

	int sizeX = (GfxGetDisplaySizeX() / 2);
	int sizeY = (GfxGetDisplaySizeY() / 2);

	ArcheoStuffs::Move(TGfxVec2(sizeX - 8, sizeY - 8), TGfxVec2(float(g_TPlayerData.iPosX), float(g_TPlayerData.iPosY)));


}
TFade::TFade()
{
#ifndef TFA_FRESH

	TGfxTexture * m_pFadeTexture = GfxTextureLoad("Data/Hud/Fade_Panel.tga");
	m_pFadeSprite = GfxSpriteCreate(m_pFadeTexture);

	float fScaleX = (GfxSpriteGetSizeY(m_pFadeSprite)*1.0f) / (GfxGetDisplaySizeY()*1.0f);

	GfxSpriteSetScale(m_pFadeSprite, 1.0f / fScaleX, 1.0f / fScaleX);

	float  offset = GfxSpriteGetSizeX(m_pFadeSprite)*(1.0f / fScaleX) - GfxGetDisplaySizeX();
	GfxSpriteSetPosition(m_pFadeSprite, -offset / 2.0f, 0);


#endif
	m_fFadingDurationToBlack = 0.75f;
	m_fFadingDurationToClear = 0.5f;
	m_eFadeState = FADE_CLEAR;
	m_fOpacity = 0;
}
Exemple #6
0
void Initialize()
{
	int sizeX = (GfxGetDisplaySizeX() / 2);
	int sizeY = (GfxGetDisplaySizeY() / 2);
	g_pLines = GfxLineSpriteCreate();
	g_pLines2 = GfxLineSpriteCreate();

	ArcheoStuffs::DrawCircle(g_pLines, TGfxVec2(0, 0), 8, GfxColor(255, 255, 0, 255), true); // Player creation

	for (int i = 0; i < g_iNbrCave; i++)
	{
		g_bCaveSearched[i] = false;
	}


	g_pImage = GfxImageCreate(1,1);
	unsigned int * pData = GfxImageGetData(g_pImage);
	*pData = EGfxColor_White;
	g_pTexture = GfxTextureCreate(g_pImage);

	g_pSpritePlayer = GfxSpriteCreate(g_pTexture);
	g_pSpriteBase = GfxSpriteCreate(g_pTexture);

	GfxSpriteSetScale(g_pSpritePlayer, 16, 16);
	GfxSpriteSetColor(g_pSpritePlayer, GfxColor(255, 255, 0, 255));
	g_TPlayerData.iPos = TGfxVec2(sizeX - 8, sizeY - 8);
	g_TPlayerData.iPosX = sizeX - 8;
	g_TPlayerData.iPosY = sizeY - 8;

	GfxSpriteSetScale(g_pSpriteBase, 32, 32);
	GfxSpriteSetColor(g_pSpriteBase, GfxColor(0, 255, 0, 255));
	GfxSpriteSetPosition(g_pSpriteBase, sizeX-16, sizeY-16);

	for (int i = 0; i < g_iNbrCave; i++)
	{
		ArcheoStuffs::CreateCave(i);
	}
	
}
Exemple #7
0
	void CreateCave(int ActCave)
	{
		g_pCave[ActCave].iScale = GfxMathGetRandomInteger(32, 64);
		bool Collisioned = true;
		do
		{
			g_pCave[ActCave].iPosX = (GfxMathGetRandomInteger(g_pCave[ActCave].iScale, GfxGetDisplaySizeX() - g_pCave[ActCave].iScale));
			g_pCave[ActCave].iPosY = (GfxMathGetRandomInteger(g_pCave[ActCave].iScale, GfxGetDisplaySizeY() - g_pCave[ActCave].iScale));
			Collisioned = false;
			for (int e = 0; e < ActCave; e++)
			{
				if (!(g_pCave[ActCave].iPosX > g_pCave[e].iPosX + g_pCave[e].iScale + 20)
					&& !(g_pCave[ActCave].iPosX < g_pCave[e].iPosX - g_pCave[ActCave].iScale - 20)
					&& !(g_pCave[ActCave].iPosY < g_pCave[e].iPosY - g_pCave[ActCave].iScale - 20)
					&& !(g_pCave[ActCave].iPosY > g_pCave[e].iPosY + g_pCave[e].iScale + 20))
				{
					Collisioned = true;
				}
			}
			if (ActCave == 0)
			{
				Collisioned = false;
			}
		} while (Collisioned == true);


		g_pCave[ActCave].pLines = GfxLineSpriteCreate();
		ArcheoStuffs::DrawCircle(g_pCave[ActCave].pLines, TGfxVec2(0, 0), g_pCave[ActCave].iScale / 2, EGfxColor_Blue, false);
		GfxSpriteSetPosition(g_pCave[ActCave].pLines, g_pCave[ActCave].iPosX, g_pCave[ActCave].iPosY);

		g_pCave[ActCave].g_pSpriteCave = GfxSpriteCreate(g_pTexture);
		GfxSpriteSetPivot(g_pCave[ActCave].g_pSpriteCave, 0.5, 0.5);
		GfxSpriteSetScale(g_pCave[ActCave].g_pSpriteCave, g_pCave[ActCave].iScale, g_pCave[ActCave].iScale);
		GfxSpriteSetColor(g_pCave[ActCave].g_pSpriteCave, GfxColor(0, 0, 255, 255));
		GfxSpriteSetPosition(g_pCave[ActCave].g_pSpriteCave, g_pCave[ActCave].iPosX, g_pCave[ActCave].iPosY);
		g_iNbrCaveCreated++;
	}
Exemple #8
0
	void Move(TGfxVec2 tDest, TGfxVec2 tSrc)
	{
		TGfxVec2 Move(tDest.x - tSrc.x, tDest.y - tSrc.y);
		float Time = (ArcheoStuffs::Absol(Move.x) + ArcheoStuffs::Absol(Move.y)) / g_iSpeed;
		Move = Move / Time;
		Move = Move * GfxTimeFrameGetCurrentDurationInSeconds();




		MoveX = (tDest.x) - (tSrc.x);
		MoveY = (tDest.y) - (tSrc.y);
		RatioX = MoveX / (ArcheoStuffs::Absol(MoveX) + ArcheoStuffs::Absol(MoveY));
		RatioY = MoveY / (ArcheoStuffs::Absol(MoveX) + ArcheoStuffs::Absol(MoveY));
		MoveX2 = RatioX * g_iSpeed;
		MoveY2 = RatioY * g_iSpeed;

		const float X1 = tSrc.x;
		const float Y1 = tSrc.y;
		const float X2 = tDest.x;
		const float Y2 = tDest.y;
		const float X3 = (tSrc.x + (GfxTimeFrameGetCurrentDurationInSeconds() * MoveX2));
		const float Y3 = (tSrc.y + (GfxTimeFrameGetCurrentDurationInSeconds() * MoveY2));

		if (
			(
			X1 < X2
			&& Y1 > Y2
			&& X3 > X2
			&& Y3 < Y2
			)
			||
			(
			X1 < X2
			&& Y1 < Y2
			&& X3 > X2
			&& Y3 > Y2
			)
			||
			(
			X1 > X2
			&& Y1 > Y2
			&& X3 < X2
			&& Y3 < Y2
			)
			||
			(
			X1 > X2
			&& Y1 < Y2
			&& X3 < X2
			&& Y3 > Y2
			)
			)
		{
			tSrc.x = tDest.x;
			tSrc.y = tDest.y;
			g_bMoving = false;

			int sizeX = (GfxGetDisplaySizeX() / 2);
			int sizeY = (GfxGetDisplaySizeY() / 2);

			if (tDest == TGfxVec2(sizeX - 8, sizeY - 8))
			{
				g_TPlayerData.m_ePlayerState = g_TPlayerData.EPlayerState_AtBase;
			}
			else
			{
				g_TPlayerData.m_ePlayerState = g_TPlayerData.EPlayerState_AtCave;
			}
		}
		else
		{
			g_TPlayerData.iPos += Move;
			g_TPlayerData.iPosX += (GfxTimeFrameGetCurrentDurationInSeconds() * MoveX2);
			g_TPlayerData.iPosY += (GfxTimeFrameGetCurrentDurationInSeconds() * MoveY2);
		}
	}
Exemple #9
0
void Update()
{
	const int mPosX = int(GfxGetCurrentMouseX() / (SCALE * TILE_SIZE));
	const int mPosY = int(GfxGetCurrentMouseY() / (SCALE * TILE_SIZE));

	iPosX = int(GfxSpriteGetPositionX(g_pSpriteHero) / (SCALE * 16));  // Le deuxieme int sert à forcer un int ! ça retire les virgules probable
	iPosY = int(GfxSpriteGetPositionY(g_pSpriteHero) / (SCALE * 16));
	int iPosX2 = int(GfxSpriteGetPositionX(g_pSpriteEnemy) / (SCALE * 16));
	int iPosY2 = int(GfxSpriteGetPositionY(g_pSpriteEnemy) / (SCALE * 16));

	const int iTileCountX = GfxGetDisplaySizeX() / (SCALE * 16) - 1;  // valeur de type INT pour ne pas garder ce qui est après la virgule
	const int iTileCountY = GfxGetDisplaySizeY() / (SCALE * 16) - 1;


	// Clic perso ( pose cookie )

	if (GfxInputIsJustPressed(EGfxInputID_MouseLeft) && iPosX == mPosX && iPosY == mPosY && g_cptCookie < MAX_COOKIE)
	{
		g_pCookie[g_cptCookie] = CreateTile(g_pTexture, 13, 3, iPosX, iPosY);
		g_cptCookie++;
	}

	// MOUSE MOVE ( with collision )

	if (GfxInputIsJustPressed(EGfxInputID_MouseLeft) && iPosX < iTileCountX && iPosX < mPosX)
	{
		iPosX++;
		for (int i = 0; i < g_iWallCount; i++)
		{
			if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
			{
				iPosX--;
			}
		}
	}

	if (GfxInputIsJustPressed(EGfxInputID_MouseLeft) && iPosX > 0 && iPosX > mPosX)
	{
		iPosX--;
		for (int i = 0; i < g_iWallCount; i++)
		{
			if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
			{
				iPosX++;
			}
		}
	}

	if (GfxInputIsJustPressed(EGfxInputID_MouseLeft) && iPosY < iTileCountY && iPosY < mPosY)
	{
		iPosY++;
		for (int i = 0; i < g_iWallCount; i++)
		{
			if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
			{
				iPosY--;
			}
		}
	}

	if (GfxInputIsJustPressed(EGfxInputID_MouseLeft) && iPosY > 0 && iPosY > mPosY)
	{
		iPosY--;
		for (int i = 0; i < g_iWallCount; i++)
		{
			if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
			{
				iPosY++;
			}
		}
	}

	// KEYBOARD MOVE ( With collision )

		if (GfxInputIsJustPressed(EGfxInputID_KeyArrowRight) && iPosX < iTileCountX)
		{
			iPosX++;
			for (int i = 0; i < g_iWallCount; i++)
			{
				if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
				{
					iPosX--;
				}
			}
		}

		if (GfxInputIsJustPressed(EGfxInputID_KeyArrowLeft) && iPosX > 0)
		{
			iPosX--;
			for (int i = 0; i < g_iWallCount; i++)
			{
				if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
				{
					iPosX++;
				}
			}
		}
		
		if (GfxInputIsJustPressed(EGfxInputID_KeyArrowDown) && iPosY < iTileCountY)
		{
			iPosY++;
			for (int i = 0; i < g_iWallCount; i++)
			{
				if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
				{
					iPosY--;
				}
			}
		}
		
		if (GfxInputIsJustPressed(EGfxInputID_KeyArrowUp) && iPosY > 0)
		{
			iPosY--;
			for (int i = 0; i < g_iWallCount; i++)
			{
				if (iPosX *(SCALE * 16) == GfxSpriteGetPositionX(g_pSpriteWall[i]) && iPosY*(SCALE * 16) == GfxSpriteGetPositionY(g_pSpriteWall[i]))
				{
					iPosY++;
				}
			}
		}
		

	GfxSpriteSetPosition(g_pSpriteHero, float(iPosX * SCALE * 16), float(iPosY * SCALE * 16));

	// DEPLACEMENT JOUEUR 2 CACHÉ HORS DE L'ECRAN POUR LES VERSION ANDROID ( caché à gauche )

	if (GfxInputIsJustPressed(EGfxInputID_KeyCharD) && iPosX2 < iTileCountX)
	{
		iPosX2++;
	}
	if (GfxInputIsJustPressed(EGfxInputID_KeyCharQ) && iPosX2 > 0)
	{
		iPosX2--;
	}
	if (GfxInputIsJustPressed(EGfxInputID_KeyCharS) && iPosY2 < iTileCountY)
	{
		iPosY2++;
	}
	if (GfxInputIsJustPressed(EGfxInputID_KeyCharZ) && iPosY2 > 0)
	{
		iPosY2--;
	}

	GfxSpriteSetPosition(g_pSpriteEnemy, float(iPosX2 * SCALE * 16), float(iPosY2 * SCALE * 16));


}
Exemple #10
0
void Update()
{
    const int iMPosX = int(GfxGetCurrentMouseX());
    const int iMPosY = int(GfxGetCurrentMouseY());  // Remplacer iMPosX par iiMPosX

    bool bCollide = true;

    g_iPosX = int(GfxSpriteGetPositionX(g_pSpriteHero));  // Le deuxieme int sert à forcer un int ! ça retire les virgules probable
    g_iPosY = int(GfxSpriteGetPositionY(g_pSpriteHero));

    const int iTileCountX = GfxGetDisplaySizeX() - 1;  // valeur de type INT pour ne pas garder ce qui est après la virgule
    const int iTileCountY = GfxGetDisplaySizeY() - 1;


    // MOUSE MOVE ( with collision )




    if (IsGameOver == false)
    {
        //-------------------------------------------------------------- Déplacement droite ---------------------------------------------------//
        if (GfxInputIsPressed(EGfxInputID_MouseLeft) && g_iPosX + 16 < iMPosX)
        {
            GfxSpriteSetScale(g_pSpriteHero, float(SCALE), float(SCALE));																	   //
            bCollide = true;																												   //
            for (int i = 0; i < g_iWallCount; i++)																							   //
            {   //
                if (GfxSpriteGetPositionY(g_pSpriteWall[i]) - 31 < g_iPosY && g_iPosY < GfxSpriteGetPositionY(g_pSpriteWall[i]) + 32)		   //
                {   //
                    if (GfxSpriteGetPositionX(g_pSpriteWall[i]) - 33 < g_iPosX && g_iPosX < GfxSpriteGetPositionX(g_pSpriteWall[i]) + 32)	   //
                    {   //
                        bCollide = false;																									   //
                    }																														   //
                }
            }
            for (int i = 0; i < g_iDeathWallCount; i++)																							   //
            {   //
                if (GfxSpriteGetPositionY(g_pSpriteDeathWall[i]) - 31 < g_iPosY && g_iPosY < GfxSpriteGetPositionY(g_pSpriteDeathWall[i]) + 32)		   //
                {   //
                    if (GfxSpriteGetPositionX(g_pSpriteDeathWall[i]) - 33 < g_iPosX && g_iPosX < GfxSpriteGetPositionX(g_pSpriteDeathWall[i]) + 32)	   //
                    {   //
                        GameOver();																							   //
                    }																														   //
                }
            }
            //
            if (bCollide == true)																											   //
            {   //

                g_iMove[0] -= 2;																											   //

                //g_iPosX += 2;																												   //
            }																																   //
        }																																	   //
        //-------------------------------------------------------------- Fin déplacement droite -----------------------------------------------//

        //-------------------------------------------------------------- Déplacement Gauche ----------------------------------

        if (GfxInputIsPressed(EGfxInputID_MouseLeft) && g_iPosX - 16 > iMPosX)
        {
            GfxSpriteSetScale(g_pSpriteHero, float(-SCALE), float(SCALE));
            bCollide = true;
            for (int i = 0; i < g_iWallCount; i++)
            {
                if (GfxSpriteGetPositionY(g_pSpriteWall[i]) - 31 < g_iPosY && g_iPosY < GfxSpriteGetPositionY(g_pSpriteWall[i]) + 32)
                {
                    if (GfxSpriteGetPositionX(g_pSpriteWall[i]) - 32 < g_iPosX && g_iPosX < GfxSpriteGetPositionX(g_pSpriteWall[i]) + 33)
                    {
                        bCollide = false;
                    }
                }
            }
            for (int i = 0; i < g_iDeathWallCount; i++)
            {
                if (GfxSpriteGetPositionY(g_pSpriteDeathWall[i]) - 31 < g_iPosY && g_iPosY < GfxSpriteGetPositionY(g_pSpriteDeathWall[i]) + 32)
                {
                    if (GfxSpriteGetPositionX(g_pSpriteDeathWall[i]) - 32 < g_iPosX && g_iPosX < GfxSpriteGetPositionX(g_pSpriteDeathWall[i]) + 33)
                    {
                        GameOver();
                    }
                }
            }

            if (bCollide == true)
            {
                g_iMove[0] += 2;
                //g_iPosX-= 2;
            }
        }
        //-------------------------------------------------------------- Fin déplacement gauche ----------------------------------

        //--------------------------------------------------------------- Collision Sol ---------------------------
        bCollide = true;
        for (int i = 0; i < g_iWallCount; i++)
        {
            if (GfxSpriteGetPositionX(g_pSpriteWall[i]) - 31 < g_iPosX && g_iPosX < GfxSpriteGetPositionX(g_pSpriteWall[i]) + 31)
            {
                if (g_iPosY > GfxSpriteGetPositionY(g_pSpriteWall[i]) - 33 && g_iPosY < GfxSpriteGetPositionY(g_pSpriteWall[i]) + 32)
                {
                    bCollide = false;
                    if (g_iVelocity[1] < 0)
                    {
                        g_iPosY = GfxSpriteGetPositionY(g_pSpriteWall[i]) + 32;
                    }
                    if (g_iVelocity[1] > 0)
                    {
                        g_iPosY = GfxSpriteGetPositionY(g_pSpriteWall[i]) - 31;
                    }
                    g_iVelocity[1] = 0;
                }
            }
        }
        // DEBUT GAME OVER
        for (int i = 0; i < g_iDeathWallCount; i++)
        {
            if (GfxSpriteGetPositionX(g_pSpriteDeathWall[i]) - 31 < g_iPosX && g_iPosX < GfxSpriteGetPositionX(g_pSpriteDeathWall[i]) + 31)
            {
                if (g_iPosY > GfxSpriteGetPositionY(g_pSpriteDeathWall[i]) - 33 && g_iPosY < GfxSpriteGetPositionY(g_pSpriteDeathWall[i]) + 32)
                {
                    GameOver();
                }
            }
        }
        // FIN GAME OVER


        if (bCollide == true)
        {
            g_iVelocity[1] += 0.4f; // f à la fin quand c'est un float. ça corrige l'erreur appellé "truncation"
        }

        if (GfxInputIsJustPressed(EGfxInputID_KeySpace) && g_iVelocity[1] == 0 || GfxInputIsJustPressed(EGfxInputID_KeySpace) && GfxInputIsPressed(EGfxInputID_KeyControl))
        {
            g_iVelocity[1] = -7;
        }
        if (iMPosX > g_iPosX - 16
                && iMPosX < g_iPosX + 16
                && g_iVelocity[1] == 0
                && GfxInputIsJustPressed(EGfxInputID_MouseLeft))
        {
            g_iVelocity[1] = -7;
        }
    }
    //------------------------------------------------------------- Fin Collision Sol --------------------------------

    //-------------------------------------------------------------- Actualisation déplacement ----------------------------------
    g_iMove[1] = g_iMove[1] - (g_iVelocity[1]);
    for (int i = 0; i < g_iWallCount; i++)
    {
        GfxSpriteSetPosition(g_pSpriteWall[i], float (GfxSpriteGetPositionX(g_pSpriteWall[i])) + float(g_iMove[0]), float (GfxSpriteGetPositionY(g_pSpriteWall[i])));
    }
    for (int i = 0; i < g_iDeathWallCount; i++)
    {
        GfxSpriteSetPosition(g_pSpriteDeathWall[i], float(GfxSpriteGetPositionX(g_pSpriteDeathWall[i])) + float(g_iMove[0]), float(GfxSpriteGetPositionY(g_pSpriteDeathWall[i])));
    }
    if (IsGameOver == false)
    {
        GfxSpriteSetPosition(g_pSpritesBg, float(GfxSpriteGetPositionX(g_pSpritesBg)) + (float(g_iMove[0]/2)), float(GfxSpriteGetPositionY(g_pSpritesBg)));
        GfxSpriteSetPosition(g_pSpriteHero, float(g_iPosX), float(g_iPosY) - float(g_iMove[1]));
    }
    g_iMove[0] = 0;
    g_iMove[1] = 0;
    //-------------------------------------------------------------- Fin Actualisation déplacement ----------------------------------
}
Exemple #11
0
void Initialize()
{
	g_pBackgroundImage = GfxImageLoad("map.tga");
	g_pData = GfxImageGetData(g_pBackgroundImage);

	const int iImgSizeX = GfxImageGetSizeX(g_pBackgroundImage);
	const int iImgSizeY = GfxImageGetSizeY(g_pBackgroundImage);


	for (int y = 0; y < iImgSizeY; ++y)
	{
		for (int x = 0; x < iImgSizeX; ++x)
		{
			const int iIndex = x + (y * iImgSizeX);

			if (g_pData[iIndex] == GfxColor(0, 0, 255, 255) || g_pData[iIndex] == GfxColor(255, 0, 0, 255) || g_pData[iIndex] == GfxColor(0, 255, 0, 255))
			{
				g_pData[iIndex] = EGfxColor_White;
			}
		}
	}


	g_pBackgroundTexture = GfxTextureCreate(g_pBackgroundImage);
	g_pBackgroundSprite = GfxSpriteCreate(g_pBackgroundTexture);

	GfxSpriteSetScale(g_pBackgroundSprite, 32, 32);
	GfxSpriteSetFilteringEnabled(g_pBackgroundSprite, false);

	g_pSpriteIncome = GfxTextSpriteCreate();
	GfxTextSpritePrintf(g_pSpriteIncome, "revenue: $%d", g_iIncome);
	GfxSpriteSetFilteringEnabled(g_pSpriteIncome, false);
	GfxSpriteSetScale(g_pSpriteIncome, 2, 2);
	GfxSpriteSetPosition(g_pSpriteIncome, float((GfxGetDisplaySizeX() / 2) - GfxSpriteGetSizeX(g_pSpriteIncome)), 290);
	GfxSpriteSetColor(g_pSpriteIncome, GfxColor(255, 255, 255, 255));

	TGfxImage * pMapImage = GfxImageLoad("map.tga");
	
	const int iSecondImgSizeX = GfxImageGetSizeX(pMapImage);
	const int iSecondImgSizeY = GfxImageGetSizeY(pMapImage);

	for (int i = 0; i < 3; i++) // Boucle créant les numéros sur les buildings
	{
		for (int y = 0; y < iSecondImgSizeY; ++y)
		{
			for (int x = 0; x < iSecondImgSizeX; ++x)
			{
				const int iIndex = x + (y * iSecondImgSizeX);

				if (i == 0)
				{
					if (GfxImageGetData(pMapImage)[iIndex] == GfxColor(255, 0, 0, 255)) // RED CHECKING & CREATING
					{
						g_tBuilding[g_iBuildingCount].Create(x, y, g_iBuildingCount, SCALE);
						g_iBuildingCount++;
					}
				}
				else if (i == 1)
				{
					if (GfxImageGetData(pMapImage)[iIndex] == GfxColor(0, 255, 0, 255)) // GREEN CHECKING & CREATING
					{
						g_tBuilding[g_iBuildingCount].Create(x, y, g_iBuildingCount, SCALE);
						g_iBuildingCount++;
					}
				}
				else if (i == 2)
				{
					if (GfxImageGetData(pMapImage)[iIndex] == GfxColor(0, 0, 255, 255)) // BLUE CHECKING & CREATING
					{
						g_tBuilding[g_iBuildingCount].Create(x, y, g_iBuildingCount, SCALE);
						g_iBuildingCount++;
					}
				}
			}
		}
	}

	GfxImageDestroy(pMapImage);
}
Exemple #12
0
void Update()
{
	if (GfxInputIsJustPressed(EGfxInputID_MouseLeft))
	{
		const int iMouseX = GfxGetCurrentMouseX();
		const int iMouseY = GfxGetCurrentMouseY();

		for (int i = 0; i < BUILDING_NUMBER; i++)
		{
			if ((iMouseX < (g_tBuilding[i].iPosX + SCALE))
				&& (iMouseX >(g_tBuilding[i].iPosX))
				&& (iMouseY < (g_tBuilding[i].iPosY + SCALE))
				&& (iMouseY >(g_tBuilding[i].iPosY))
				)
			{
				ChangeColor(iMouseX / 32, iMouseY / 32, GfxImageGetSizeX(g_pBackgroundImage));
				if (g_tBuilding[i].bBuyed == false)
				{
					g_tBuilding[i].bBuyed = true;
				}
				else
				{
					g_tBuilding[i].bBuyed = false;
				}
			}
		}
	}

	g_iIncome = 0;

	for (int i = 0; i < BUILDING_NUMBER; i++) // Boucle principale -> Va tester chaque building un par un.
	{
		g_iQueuePosition = 0;
		g_iBuildingQueued[g_iQueuePosition] = i;
		g_bFirstBuy = false;

		do
		{
			if (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking < 4)
			{
				if (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].bBuyed == true)
				{
					if (g_bFirstBuy == false)
					{
						g_bFirstBuy = true;
						g_iChain++;
					}
					for (int e = 0; e < BUILDING_NUMBER; e++)
					{



						if (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking == 0) // Test dernier building de la file pour savoir si il doit regarder à droite
						{
							if (((g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosX + 32) == g_tBuilding[e].iPosX) && ((g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosY) == g_tBuilding[e].iPosY)) // Test si building à sa droite
							{
								g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking++; // Si building à sa droite, on lui dit qu'il à check à droite

								if (g_tBuilding[e].iLooking == 0 && g_tBuilding[e].bBuyed == true) // Ce building DOIT avoir été acheté)								
								{
									g_iChain++;
									g_iQueuePosition++;
									g_iBuildingQueued[g_iQueuePosition] = e;
								}
								break;
							}
						}
						else if (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking == 1)
						{
							if (((g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosY + 32) == g_tBuilding[e].iPosY) && (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosX == g_tBuilding[e].iPosX)) // Test si building à sa droite
							{
								g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking++; // Si building à sa droite, on lui dit qu'il à check à droite

								if ((g_tBuilding[e].iLooking == 0) && (g_tBuilding[e].bBuyed == true)) // Ce building DOIT avoir été acheté)								
								{
									g_iChain++;
									g_iQueuePosition++;
									g_iBuildingQueued[g_iQueuePosition] = e;
								}
								break;
							}
						}
						else if (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking == 2)
						{
							if (((g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosX - 32) == (g_tBuilding[e].iPosX)) && ((g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosY) == (g_tBuilding[e].iPosY))) // Test si building à sa droite
							{
								g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking++; // Si building à sa droite, on lui dit qu'il à check à droite
								if ((g_tBuilding[e].iLooking == 0) && (g_tBuilding[e].bBuyed == true)) // Ce building DOIT avoir été acheté)								
								{
									g_iChain++;
									g_iQueuePosition++;
									g_iBuildingQueued[g_iQueuePosition] = e;
								}
								break;
							}
						}
						else if (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking == 3)
						{
							if (((g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosY - 32) == g_tBuilding[e].iPosY) && (g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iPosX == g_tBuilding[e].iPosX)) // Test si building à sa droite
							{
								g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking++; // Si building à sa droite, on lui dit qu'il à check à droite
								if (g_tBuilding[e].iLooking == 0   // Ce building ne doit pas encore avoir été check
									&& g_tBuilding[e].bBuyed == true) // Ce building DOIT avoir été acheté)								
								{
									g_iChain++;
									g_iQueuePosition++;
									g_iBuildingQueued[g_iQueuePosition] = e;
								}
								break;
							}
						}

						if (e == 41 && g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking < 4)
						{
							g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking++;
							break;
						}

					}
				}
				else
				{
					g_tBuilding[g_iBuildingQueued[g_iQueuePosition]].iLooking = 4;
				}
			}
			else if (g_iQueuePosition > 0)
			{
				g_iQueuePosition--;
			}
		} while (g_tBuilding[g_iBuildingQueued[0]].iLooking < 4);

		for (int e = 0; e < g_iChain; e++)
		{
			g_iIncome += ((e + 1) * 1000);
		}
		g_iQueuePosition = 0;
		g_iChain = 0;
	}

	GfxTextSpritePrintf(g_pSpriteIncome, "revenue: $%d", g_iIncome);
	GfxSpriteSetPosition(g_pSpriteIncome, float((GfxGetDisplaySizeX() / 2) - GfxSpriteGetSizeX(g_pSpriteIncome)), 290);

	for (int e = 0; e < BUILDING_NUMBER; e++)
	{
		g_tBuilding[e].iLooking = 0;
	}


}
Exemple #13
0
void Initialize()
{
    g_pImage = GfxImageCreate(GfxGetDisplaySizeX() / SCALE_FACTOR, GfxGetDisplaySizeY() / SCALE_FACTOR);
}