//----SET void TBox::CreateBox(unsigned int m_iColor, const bool bText, const bool bSprite, const bool bLine) { if (m_pTextSprite == nullptr && bText) { m_pTextSprite = GfxTextSpriteCreate(); GfxSpriteSetFilteringEnabled(m_pTextSprite, true); } m_bIsDrawable = true; if (bLine) { //Line m_pLineSprite = GfxLineSpriteCreate(); } if (bSprite) { //Image TGfxImage * pImage = GfxImageCreate(1, 1); GfxImageGetData(pImage)[0] = EGfxColor_White; TGfxTexture * pTexture = GfxTextureCreate(pImage); m_pSprite = GfxSpriteCreate(pTexture); GfxSpriteSetFilteringEnabled(m_pSprite, false); GfxSpriteSetPivot(m_pSprite, 0.5f, 0.5f); SetColor(m_iColor); } }
void MainMenu::Create() { g_tMainMenuBackgroundTexture = GfxTextureLoad("gfx/menu.tga"); g_tMainMenuBackgroundSprite = GfxSpriteCreate(g_tMainMenuBackgroundTexture); GfxSpriteSetFilteringEnabled(g_tMainMenuBackgroundSprite, false); GfxSpriteSetPosition(g_tMainMenuBackgroundSprite, 0, 0); }
void TBox::CreateSpriteBox(TGfxTexture * pTexture) { m_bIsDrawable = true; m_pSprite = GfxSpriteCreate(pTexture); int iSizeX = GfxSpriteGetSizeX(m_pSprite); int iSizeY = GfxSpriteGetSizeY(m_pSprite); GfxSpriteSetFilteringEnabled(m_pSprite, false); GfxSpriteSetPivot(m_pSprite, iSizeX / 2.0f, iSizeY / 2.0f); SetBox(TGfxVec2(0.0f, 0.0f), (float)iSizeX, (float)iSizeY); }
void TLemmings::Spawn(TGfxVec2 tPosition) { m_tLemmingSprite = GfxSpriteCreate(tMainTexture); GfxSpriteSetCutout(m_tLemmingSprite, 0, 0, 16, 16); GfxSpriteSetFilteringEnabled(m_tLemmingSprite, false); GfxSpriteSetPosition(m_tLemmingSprite, tPosition.x, tPosition.y); m_tPosition = tPosition; g_iLemmingsCpt++; }
TGfxSprite * CreateTile(const TGfxTexture * g_pTexture, const int iPosX, const int iPosY, const int iTileX, const int iTileY) { TGfxSprite * pSprite = GfxSpriteCreate(g_pTexture); // On crée pSprite et on y met la la variable de la texture chargée GfxSpriteSetScale(pSprite, float(SCALE), float(SCALE)); // On choisis la taille du sprite appellé pSprite GfxSpriteSetFilteringEnabled(pSprite, false); // On désactive le filtering ( à laisse ) GfxSpriteSetCutout(pSprite, iPosX * TILE_SIZE, iPosY * TILE_SIZE, TILE_SIZE, TILE_SIZE); // On choisis ce qui sera affiché sur un sprite, ici on choisis la taille et la position du sprite dans la texture GfxSpriteSetPosition(pSprite, float(SCALE) * TILE_SIZE * iTileX, float(SCALE) * TILE_SIZE * iTileY); // On choisis où l'afficher return pSprite; // toujours mettre le return à la fin car ça sort de la fonction. }
void TBox::CreateSpriteBox(TGfxTexture * pTexture, const int iTextureSize, int iTileX, int iTileY, int iTextureSizeY) { iTextureSizeY = (iTextureSizeY != 0) ? iTextureSizeY : iTextureSize; m_bIsDrawable = true; m_pSprite = GfxSpriteCreate(pTexture); GfxSpriteSetFilteringEnabled(m_pSprite, false); GfxSpriteSetCutout(m_pSprite, iTileX*iTextureSize, iTileY*iTextureSizeY, iTextureSize, iTextureSizeY); GfxSpriteSetPivot(m_pSprite, iTextureSize / 2.0f, iTextureSizeY / 2.0f); SetBox(TGfxVec2(0.0f, 0.0f), (float)iTextureSize, (float)iTextureSizeY); }
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)))); }
void TLemmings::ChangeColor(const int Color) // 0 = Grey, 1 = Red, 2 = Green { m_iColor = Color; GfxSpriteDestroy(m_tLemmingSprite); m_tLemmingSprite = GfxSpriteCreate(tMainTexture); GfxSpriteSetCutout(m_tLemmingSprite, m_iColor * 16, 0, 16, 16); GfxSpriteSetFilteringEnabled(m_tLemmingSprite, false); GfxSpriteSetPosition(m_tLemmingSprite, m_tPosition.x, m_tPosition.y); }
TGfxSprite * CreateTile(const TGfxTexture * g_pTexture, const int g_iPosX, const int g_iPosY, const int iTileX, const int iTileY) { TGfxSprite * pSprite = GfxSpriteCreate(g_pTexture); GfxSpriteSetScale(pSprite, float(SCALE), float(SCALE)); GfxSpriteSetFilteringEnabled(pSprite, false); GfxSpriteSetCutout(pSprite, g_iPosX * TILE_SIZE, g_iPosY * TILE_SIZE, TILE_SIZE, TILE_SIZE); GfxSpriteSetPosition(pSprite, float(SCALE) * TILE_SIZE * iTileX, float(SCALE) * TILE_SIZE * iTileY); GfxSpriteSetPivot(pSprite, TILE_SIZE / 2, TILE_SIZE / 2); // Change le point de collision de tout les tile créés comme ça return pSprite; // toujours mettre le return à la fin car ça sort de la fonction. }
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); } }
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 }
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; }
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++; }
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); }
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); }
void Update() { //Effacer le sprite et texture de la mémoire if (g_pSprite != nullptr) { GfxSpriteDestroy(g_pSprite); g_pSprite = nullptr; // Libert l'adresse mémoire du sprite } if (g_pTexture != nullptr) { GfxTextureDestroy(g_pTexture); g_pTexture = nullptr; } TCamera tCamera; TSphere tSphere[MAX_SPHERES]; TPlan tPlan; tPlan.m_tPosition = TGfxVec3(0, -5, 0); tSphere[0].m_tPosition = TGfxVec3(-1, 0, 8); tSphere[0].m_tColor = TGfxVec3(255, 0, 0); tSphere[1].m_tPosition = TGfxVec3(-3, 0, 8); tSphere[1].m_tColor = TGfxVec3(255, 255, 0); tSphere[2].m_tPosition = TGfxVec3(1, 0, 8); tSphere[2].m_tColor = TGfxVec3(0, 0, 255); tSphere[3].m_tPosition = TGfxVec3(3, 0, 8); tSphere[3].m_tColor = TGfxVec3(255, 255, 0); tSphere[4].m_tPosition = TGfxVec3(0, 1, 8); tSphere[4].m_tColor = TGfxVec3(255, 0, 0); tSphere[5].m_tPosition = TGfxVec3(0, -1, 8); tSphere[5].m_tColor = TGfxVec3(0, 0, 255); tSphere[6].m_tPosition = TGfxVec3(0, -3, 8); tSphere[6].m_tColor = TGfxVec3(255, 255, 0); tSphere[7].m_tPosition = TGfxVec3(0, 3, 8); tSphere[7].m_tColor = TGfxVec3(255, 255, 0); tSphere[8].m_tPosition = TGfxVec3(-2, -2, 8); tSphere[8].m_tColor = TGfxVec3(255, 255, 0); tSphere[9].m_tPosition = TGfxVec3(-2, 2, 8); tSphere[9].m_tColor = TGfxVec3(255, 255, 0); tSphere[10].m_tPosition = TGfxVec3(2, 2, 8); tSphere[10].m_tColor = TGfxVec3(255, 255, 0); tSphere[11].m_tPosition = TGfxVec3(2, -2, 8); tSphere[11].m_tColor = TGfxVec3(255, 255, 0); tCamera.m_tPosition = TGfxVec3(g_fx, g_fy, g_fz); tCamera.m_fFOV = 120.f; tCamera.Render(g_pImage, tSphere, tPlan); g_pTexture = GfxTextureCreate(g_pImage); g_pSprite = GfxSpriteCreate(g_pTexture); GfxSpriteSetScale(g_pSprite, float(SCALE_FACTOR), float(SCALE_FACTOR)); GfxSpriteSetFilteringEnabled(g_pSprite, false); if (GfxInputIsPressed(EGfxInputID_KeyArrowUp)) { g_fy += 0.1f; } if (GfxInputIsPressed(EGfxInputID_KeyArrowDown)) { g_fy -= 0.1f; } if (GfxInputIsPressed(EGfxInputID_KeyArrowRight)) { g_fx += 0.1f; } if (GfxInputIsPressed(EGfxInputID_KeyArrowLeft)) { g_fx -= 0.1f; } if (GfxInputIsPressed(EGfxInputID_KeyCharS)) { g_fz -= 0.1f; } if (GfxInputIsPressed(EGfxInputID_KeyCharZ)) { g_fz += 0.1f; } }