Пример #1
0
//----Show
void TBox::DrawBox()
{
	if (m_pSprite != nullptr)
	{
		GfxSpriteSetPosition(m_pSprite, m_tCenter.x, m_tCenter.y);
		GfxSpriteSetAngle(m_pSprite, GfxMathDegToRad(-m_fAngle));
	}

	//Line
	if (m_pLineSprite != nullptr)
	{
		if (m_pLineSprite != nullptr)
			GfxLineSpriteReset(m_pLineSprite);

		GfxLineSpriteSetDrawingColor(m_pLineSprite, GfxColor(150, 150, 150, 255));
		TGfxVec2 tAxisX = TGfxVec2(m_fRay_W, 0).Rotate(GfxMathDegToRad(m_fAngle))*m_fScale;
		TGfxVec2 tAxisY = TGfxVec2(0, m_fRay_H).Rotate(GfxMathDegToRad(m_fAngle))*m_fScale;

		TGfxVec2 tUR = TGfxVec2(m_tCenter.x + tAxisX.x + tAxisY.x, m_tCenter.y + tAxisX.y + tAxisY.y);
		TGfxVec2 tUL = TGfxVec2(m_tCenter.x - tAxisX.x + tAxisY.x, m_tCenter.y - tAxisX.y + tAxisY.y);
		TGfxVec2 tDL = TGfxVec2(m_tCenter.x - tAxisX.x - tAxisY.x, m_tCenter.y - tAxisX.y - tAxisY.y);
		TGfxVec2 tDR = TGfxVec2(m_tCenter.x + tAxisX.x - tAxisY.x, m_tCenter.y + tAxisX.y - tAxisY.y);

		GfxLineSpriteJumpTo(m_pLineSprite, tUL.x, tUL.y);
		GfxLineSpriteLineTo(m_pLineSprite, tDL.x, tDL.y);
		GfxLineSpriteLineTo(m_pLineSprite, tDR.x, tDR.y);
		GfxLineSpriteLineTo(m_pLineSprite, tUR.x, tUR.y);
		GfxLineSpriteLineTo(m_pLineSprite, tUL.x, tUL.y);
	}
	if (m_pTextSprite != nullptr)
	{
		GfxSpriteSetPosition(m_pTextSprite, m_tCenter.x, m_tCenter.y);
		GfxSpriteSetAngle(m_pTextSprite,GfxMathDegToRad(-m_fAngle));
	}
}
Пример #2
0
unsigned int TSphere::Shade(TRay & tRay, const TGfxVec3 tLight, float fDistance) const
{

	TGfxVec3 tHit = tRay.m_tSrc + (tRay.m_tDir * fDistance);
	TGfxVec3 tNormale = (tHit - m_tPosition).Normalize(); // Trouver le point de colison
	TGfxVec3 tFromLight = (tHit - tLight).Normalize();

	float fAngle = - (tFromLight.DotProduct(tNormale)); //Trouver angle entre la normale et le rayon
	
	float fAmbiant = 0.1f;

	// Clamp
	if (fAngle < fAmbiant)
	{
		fAngle = fAmbiant;
	}

	// Diffuse

	TGfxVec3 tColor = m_tColor;

	tColor *= fAngle;

	if (tColor.x > 255) tColor.x = 255;
	if (tColor.x < 0) tColor.x = 0;

	if (tColor.y > 255) tColor.y = 255;
	if (tColor.y < 0) tColor.y = 0;

	if (tColor.z > 255) tColor.z = 255;
	if (tColor.z < 0) tColor.z = 0;

	return GfxColor(tColor.x, tColor.y, tColor.z, 255);
}
Пример #3
0
void Initialize()
{
    g_pBackground = GfxImageLoad("gfx/bg3.tga");
    g_pTextureTest = GfxTextureCreate(g_pBackground);
    g_pSpritesBg = GfxSpriteCreate(g_pTextureTest);
    g_pTexture = GfxTextureLoad("gfx/tileset.tga"); // On crée g_pTexture ici et on l'envoie dans l'appel de fonction

    g_pSpriteHero = CreateTile(g_pTexture, 7, 7, 7, 5); // Initialisée en dehors du scope pour l'utiliser autre part ( Donc on n'écrit pas "TGfxSPrite *" devant ) ( debug mode = 2, 1 | normal mode = 0, 0 )

    TGfxImage * pMapImage = GfxImageLoad("gfx/map.tga"); // Pas en const car on peut vouloir la delete ( Si on le laisse comme ça, il sera inutile et prendra de la mémoire inutile ! il faut le delete après la boucle avec le destroy
    int iImgSizeX = GfxImageGetSizeX(pMapImage);
    int iImgSizeY = GfxImageGetSizeY(pMapImage);

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

            const int iIndex = x + y * iImgSizeX;
            if (GfxImageGetData(pMapImage)[iIndex] == GfxColor(255, 255, 255, 255)) // SI je veux aller voir le premier élément je dois mettre [0]
            {
                g_pSpriteWall[g_iWallCount] = CreateTile(g_pTexture, 6, 1, x, y); // 6 et 1 au lieu de 1 et 1 pour mur ( 1, 1 = debug mode test )
                g_iWallCount++;
            }
            if (GfxImageGetData(pMapImage)[iIndex] == GfxColor(255, 0, 0, 255)) // SI je veux aller voir le premier élément je dois mettre [0]
            {
                g_pSpriteDeathWall[g_iDeathWallCount] = CreateTile(g_pTexture, 7, 1, x, y);
                g_iDeathWallCount++;
            }
        }
    }

    GfxImageDestroy(pMapImage);

    //	for (int i = 0; i < WALL_HEIGHT; i++)  !!!!!! Attention que ça doit bien s'adapter à la taille du tableau !!!!!!
    //	{
    //		g_pSpriteWall[i] = CreateTile(g_pTexture, 12, 3, 0, i);
    //	}
    // TGfxImage            Les 3 permettent d'afficher des choses.
    // TGfxTexture			Une image est un ensemble de pixel d'un certaine taille.
    // TGfxSprite			32 bits par pixel.
    // Un sprite n'est pas autonome, ça fait référence à une texture existente, il contiendra les info qui lui diront avec quelle rotation, quelle SCALE, et quelle partie de la texture utiliser ! Le sprite c'est la transformation. une partie de la texture

}
Пример #4
0
void BuildBox(TGeometry & tGeometry)
{
	tGeometry.AddLine(TGfxVec3(-1, -1, -1), TGfxVec3(1, 1, -1), GfxColor(63, 63, 63, 255));
	tGeometry.AddLine(TGfxVec3(-1, 1, -1), TGfxVec3(1, -1, -1), GfxColor(63, 63, 63, 255));

	tGeometry.AddLine(TGfxVec3(1, 1, 1), TGfxVec3(-1, 1, 1));
	tGeometry.AddLine(TGfxVec3(-1, 1, 1), TGfxVec3(-1, -1, 1));
	tGeometry.AddLine(TGfxVec3(-1, -1, 1), TGfxVec3(1, -1, 1));
	tGeometry.AddLine(TGfxVec3(1, -1, 1), TGfxVec3(1, 1, 1));

	tGeometry.AddLine(TGfxVec3(1, 1, -1), TGfxVec3(-1, 1, -1));
	tGeometry.AddLine(TGfxVec3(-1, 1, -1), TGfxVec3(-1, -1, -1));
	tGeometry.AddLine(TGfxVec3(-1, -1, -1), TGfxVec3(1, -1, -1));
	tGeometry.AddLine(TGfxVec3(1, -1, -1), TGfxVec3(1, 1, -1));

	tGeometry.AddLine(TGfxVec3(1, 1, 1), TGfxVec3(1, 1, -1));
	tGeometry.AddLine(TGfxVec3(-1, 1, 1), TGfxVec3(-1, 1, -1));
	tGeometry.AddLine(TGfxVec3(-1, -1, 1), TGfxVec3(-1, -1, -1));
	tGeometry.AddLine(TGfxVec3(1, -1, 1), TGfxVec3(1, -1, -1));
}
Пример #5
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);
	}
	
}
Пример #6
0
void TBuilding::Create(const int iPosX, const int iPosY, const int iBuildingNumber, const int SCALE)
{
	this->iPosX = iPosX * SCALE;
	this->iPosY = iPosY * SCALE;

	TBuilding::m_tBuildingNumberSprite = GfxTextSpriteCreate();
	if (iBuildingNumber < 9) // Rajoute un 0 devant les nombres plus petit que 10 pour qu'ils aient tous la même taille
	{
		GfxTextSpritePrintf(this->m_tBuildingNumberSprite, "0%d", (iBuildingNumber+1));
	}
	else
	{
		GfxTextSpritePrintf(this->m_tBuildingNumberSprite, "%d", (iBuildingNumber+1));
	}

	GfxSpriteSetFilteringEnabled(this->m_tBuildingNumberSprite, false);
	GfxSpriteSetPosition(this->m_tBuildingNumberSprite, float((iPosX * SCALE) + ((SCALE / 2) - (GfxSpriteGetSizeX(this->m_tBuildingNumberSprite) / 2))),
		float((iPosY * SCALE) + ((SCALE / 2) - (GfxSpriteGetSizeY(this->m_tBuildingNumberSprite) / 2))));

	GfxSpriteSetColor(this->m_tBuildingNumberSprite, GfxColor(0, 0, 0, 255));
}
Пример #7
0
void Initialize()
{
	g_pTexture = GfxTextureLoad("gfx/tileset.tga"); // On crée g_pTexture ici et on l'envoie dans l'appel de fonction

	g_pSpriteHero = CreateTile(g_pTexture, 1, 4, 1, 1); // Initialisée en dehors du scope pour l'utiliser autre part ( Donc on n'écrit pas "TGfxSPrite *" devant )
	g_pSpriteEnemy = CreateTile(g_pTexture, 8, 7, 2, 2);

	TGfxImage * pMapImage = GfxImageLoad("gfx/map.tga"); // Pas en const car on peut vouloir la delete ( Si on le laisse comme ça, il sera inutile et prendra de la mémoire inutile ! il faut le delete après la boucle avec le destroy
	int iImgSizeX = GfxImageGetSizeX(pMapImage);
	int iImgSizeY = GfxImageGetSizeY(pMapImage);

	for (int y = 0; y < iImgSizeY; ++y)
	{
		for (int x = 0; x < iImgSizeX; ++x)
		{   
			 
			const int iIndex = x + y * iImgSizeX; // Le *15 permet de compter les lignes déja parcourue ...
			if (GfxImageGetData(pMapImage)[iIndex] == GfxColor(255,255,255,255)) // SI je veux aller voir le premier élément je dois mettre [0]
			{
				g_pSpriteWall[g_iWallCount] = CreateTile(g_pTexture, 6, 1, x, y);
				g_iWallCount++;
			}
		}
	}

	GfxImageDestroy(pMapImage);

	//	for (int i = 0; i < WALL_HEIGHT; i++)  !!!!!! Attention que ça doit bien s'adapter à la taille du tableau !!!!!!
	//	{
	//		g_pSpriteWall[i] = CreateTile(g_pTexture, 12, 3, 0, i);
	//	}

	GfxSpriteSetPosition(g_pSpriteEnemy, -16 * SCALE, 0 * SCALE); // *4 car on a agrandi la texture X4, c'est pour avoir la même échelle

	// TGfxImage            Les 3 permettent d'afficher des choses.
	// TGfxTexture			Une image est un ensemble de pixel d'un certaine taille.
	// TGfxSprite			32 bits par pixel.
	// Un sprite n'est pas autonome, ça fait référence à une texture existente, il contiendra les info qui lui diront avec quelle rotation, quelle SCALE, et quelle partie de la texture utiliser ! Le sprite c'est la transformation. une partie de la texture

}
Пример #8
0
void TFade::Update()
{
	if (m_eFadeState == FADING_TO_BLACK)
	{
		m_fOpacity += UnscaleDeltaTime() / m_fFadingDurationToBlack;
		if (m_fOpacity > 1.0f){
		
			m_fOpacity = 1.0f;
			m_eFadeState = FADE_BLACK;	
			g_pGame->ProcessPostFadeAction();		
		}

	}
	else if (m_eFadeState == FADING_TO_CLEAR)
	{
		m_fOpacity -= UnscaleDeltaTime() / m_fFadingDurationToClear ;
		if (m_fOpacity < 0.0f){

			m_fOpacity = 0.0f;
			m_eFadeState = FADE_CLEAR;
		
		}
	}
	else if(m_eFadeState == FADE_BLACK)
	{
		m_eFadeState = FADING_TO_CLEAR;
	}

#ifndef TFA_FRESH
	GfxSpriteSetColor(m_pFadeSprite, GfxColor(255, 255, 255, m_fOpacity * 255.0f));
#else

	lua_pushnumber(GfxFreshLuaState(), m_fOpacity);
	LuaCallGlobal(GfxFreshLuaState(), "SetFadeOpacity");

#endif

}
Пример #9
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++;
	}
Пример #10
0
void ChangeColor(int iPosX, int iPosY, int iImgSizeX)
{
	GfxTextureDestroy(g_pBackgroundTexture);
	GfxSpriteDestroy(g_pBackgroundSprite);

	g_pData = GfxImageGetData(g_pBackgroundImage);

	const int iIndex = iPosX + (iPosY * iImgSizeX);

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

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

	GfxSpriteSetScale(g_pBackgroundSprite, 32, 32);
	GfxSpriteSetFilteringEnabled(g_pBackgroundSprite, false);
}
Пример #11
0
TColor::operator unsigned int()const
{
	unsigned int iRGBA = GfxColor(int(r * 255), int(g * 255), int(b * 255), int(a * 255));
	return iRGBA;
}
Пример #12
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);
}