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; }
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(); }
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 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; }
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 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 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); } }
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)); }
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 ---------------------------------- }
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() { 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; } }
void Initialize() { g_pImage = GfxImageCreate(GfxGetDisplaySizeX() / SCALE_FACTOR, GfxGetDisplaySizeY() / SCALE_FACTOR); }