virtual int render() { STX_TRY; // ----- Input update ---- mI->Input->Update (); // ----- Input ---- mDelta = mI->Render->GetFrameTime() / 1000.0f; if (mI->Input->IsKeyPressed (KEY_RIGHT)) mScale += mSpeedScaling * mDelta; if (mI->Input->IsKeyPressed (KEY_LEFT)) mScale -= mSpeedScaling * mDelta; mAngle += mSpeedRotation * mDelta; if (mScale < 0) mScale = 0; // ----- Updating entities attributes ----- mBack.SetAngleXYZ (0, 0, -mAngle); mRocket.SetAngleXYZ (0, 0, mAngle); mRocket.SetScale (mScale, mScale); mBeetle.SetPosition ((float) mI->Input->GetMouseX(), (float) mI->Input->GetMouseY(), 5); // ----- Check collisions ----- mTextSmallWhite.SetText ("No collision between the groups we are checking"); if (mI->Entity2dManager->IsCollision (&mRocket, "engines", &mBeetle, "beetle_boy_head")) mTextSmallWhite.SetText ("Collision between rocket boy head and engines"); if (mI->Entity2dManager->IsCollision (&mRocket, "rocket_head", &mBeetle, "beetle_head")) mTextSmallWhite.SetText ("Collision between rokect head and beetle head"); if (mI->Entity2dManager->IsCollision (&mRocket, "rocket_boy_head", &mBeetle, "beetle_boy_head")) mTextSmallWhite.SetText ("Collision between rocket boy head and beetle boy head"); if (mI->Entity2dManager->IsCollision (&mBeetle, "beetle_boy_head", &mSwordMaster, "sword")) mTextSmallWhite.SetText ("Collision between beetle boy head and the sword"); // ----- Render ----- mI->Render->BeginScene (); mI->Entity2dManager->RenderEntities2d (); mI->Entity2dManager->RenderCollisionAreas (255, 0, 0, 255); //mI->Entity2dManager->RenderGridAreas (255, 255, 0, 255); mI->Render->EndScene (); STX_CATCH; return 0; }
virtual int init(unsigned int width, unsigned int height) { STX_INIT_SEGVCATCH; STX_TRY; g_pIndieLib = mI = CIndieLib::Instance(); // ----- IndieLib intialization ----- #if 0 //CIndieLib * mI = CIndieLib::Instance(); if (!mI->Init ()) return 0; #else mI = g_pIndieLib = CIndieLib::Instance(); if (!mI-> Init ( "IndieLib-TankFollowsMouseFires" )) return -1; #endif //////////////////////////////////////IND_Entity2d mTextSmallWhite; // Characters animations //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceSky, "/IndieLib-TankFollowsMouseFires/images/frigistan_sky.png", IND_OPAQUE, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceGnd, "/IndieLib-TankFollowsMouseFires/images/frigistan_ground.png", IND_OPAQUE, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->AnimationManager->AddToSurface (&animTank, "/IndieLib-TankFollowsMouseFires/images/tank.xml", IND_ALPHA, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceBarrel, "/IndieLib-TankFollowsMouseFires/images/barrel.png", IND_ALPHA, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceCursor, "/IndieLib-TankFollowsMouseFires/images/crosshairs1.png", IND_ALPHA, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceBullet, "/IndieLib-TankFollowsMouseFires/images/bullet.png", IND_ALPHA, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceTankShadow, "/IndieLib-TankFollowsMouseFires/images/tankshadow.png", IND_ALPHA, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add(&surfaceMuzzleFlash, "/IndieLib-TankFollowsMouseFires/images/muzzleflash.png", IND_ALPHA, IND_32)) return 0; //////////////////////////////////////IND_Entity2d mTextSmallWhite; mI->Entity2dManager->Add(&sky); sky.SetSurface(&surfaceSky); //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(&ground); ground.SetSurface(&surfaceGnd); ground.SetPosition(0, mI->Window->GetHeight() - surfaceGnd.GetHeight(), 0); //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(&tank); tank.SetAnimation(&animTank); tank.SetHotSpot(0.5f, 0.1f); tank.SetPosition(g_vecPlayer_Pos.x, g_vecPlayer_Pos.y, 0); // initial position //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(&barrel); barrel.SetSurface(&surfaceBarrel); barrel.SetHotSpot(0.5f, 1.0f); barrel.SetScale(1.5f, 1.5f); //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(&bullet); bullet.SetSurface(&surfaceBullet); bullet.SetHotSpot(0.5f, 0.5f); bullet.SetShow(false); //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(1, &cursor); // GUI layer cursor.SetSurface(&surfaceCursor); cursor.SetHotSpot(0.5f, 0.5f); //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(0, &tankShadow); tankShadow.SetSurface(&surfaceTankShadow); tankShadow.SetHotSpot(0.5f, 0.7f); //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(0, &muzzleFlash); muzzleFlash.SetSurface(&surfaceMuzzleFlash); muzzleFlash.SetHotSpot(0.5f, 0.5f); muzzleFlash.SetShow(false); // Font //////////////////////////////////////IND_Entity2d mTextSmallWhite if (!mI->FontManager->Add (&FontSmall, "/IndieLib-TankFollowsMouseFires/font_small.png", "/IndieLib-TankFollowsMouseFires/font_small.xml", IND_ALPHA, IND_32)) return 0; // ----- Font creation ----- //////////////////////////////////////IND_Entity2d mTextSmallWhite mI->Entity2dManager->Add(1, &mTextSmallWhite); // Entity adding (Layer 1) mTextSmallWhite.SetFont (&FontSmall); // Set the font into the entity mTextSmallWhite.SetLineSpacing (18); mTextSmallWhite.SetCharSpacing (-8); mTextSmallWhite.SetPosition (5, 5, 1); mTextSmallWhite.SetAlign (IND_LEFT); timer.Start(); // global audio manager pointer variable automatically set //IAudio* pAudioManager = STX_Service::GetAudioInstance() STX_Service::GetAudioInstance()->Init(); #if 1 //------------------------------ // Load all sounds //------------------------------ for (int i = 0; i < MAX_SOUNDS; i++) { STX_Service::GetAudioInstance()->Load(g_SoundNames[i].szFilename.c_str(), g_SoundNames[i].szName.c_str()); } #endif STX_CATCH; return 0; // ----- Main Loop ----- }
virtual int init(unsigned int width, unsigned int height) { STX_INIT_SEGVCATCH; STX_TRY; g_pIndieLib = mI = CIndieLib::Instance(); // ----- IndieLib intialization ----- #if 0 //CIndieLib * mI = CIndieLib::Instance(); if (!mI->Init ()) return 0; #else //CIndieLib * mI = CIndieLib::Instance(); if (!CIndieLib::Instance()-> Init ( "a_08_Collisions" )) return -1; #endif // ----- Surface loading ----- // Loading Background ////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add (&mSurfaceBack, "/twist.jpg", IND_OPAQUE, IND_32)) return 0; // Loading Rocket ////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add (&mSurfaceRocket, "/rocket.png", IND_ALPHA, IND_32)) return 0; // Loading Beetleship ////////////////////IND_Entity2d mTextSmallWhite; if (!mI->SurfaceManager->Add (&mSurfaceBeetle, "/beetleship.png", IND_ALPHA, IND_32)) return 0; // Sword Master animation, we apply a color key of (0, 255, 0) ////////////////////IND_Entity2d mTextSmallWhite; if (!mI->AnimationManager->AddToSurface (&mSwordMasterAnimation, "/animations/sword_master.xml", IND_ALPHA, IND_16, 0, 255, 0)) return 0; // ----- Font loading ----- // Font ////////////////////IND_Entity2d mTextSmallWhite; if (!mI->FontManager->Add (&mFontSmall, "/font_small.png", "/font_small.xml", IND_ALPHA, IND_32)) return 0; // ----- Set the surfaces into 2d entities ----- // Creating 2d entity for the background ////////////////////IND_Entity2d mTextSmallWhite; mI->Entity2dManager->Add (&mBack); // Entity adding mBack.SetSurface (&mSurfaceBack); // Set the surface into the entity // Creating 2d entity for the Rocket ////////////////////IND_Entity2d mTextSmallWhite; mI->Entity2dManager->Add (&mRocket); // Entity adding mRocket.SetSurface (&mSurfaceRocket); // Set the surface into the entity // Creating 2d entity for the Beetleship ////////////////////IND_Entity2d mTextSmallWhite; mI->Entity2dManager->Add (&mBeetle); // Entity adding mBeetle.SetSurface (&mSurfaceBeetle); // Set the surface into the entity // Creating 2d entity for the Sword Master animation ////////////////////IND_Entity2d mTextSmallWhite; mI->Entity2dManager->Add (&mSwordMaster); // Entity adding mSwordMaster.SetAnimation (&mSwordMasterAnimation); // Set the animation into the entity // Text small white ////////////////////IND_Entity2d mTextSmallWhite; mI->Entity2dManager->Add (&mTextSmallWhite); // Entity adding mTextSmallWhite.SetFont (&mFontSmall); // Set the font into the entity // ----- Changing the attributes of the 2d entities ----- // Background mBack.SetHotSpot (0.5f, 0.5f); mBack.SetPosition (400, 300, 0); mBack.SetScale (1.7f, 1.7f); // Beetle mBeetle.SetHotSpot (0.5f, 0.5f); mBeetle.SetMirrorX (1); mBeetle.SetBoundingTriangle ("beetle_head", 160, 105, 160, 170, 190, 135); mBeetle.SetBoundingCircle ("beetle_boy_head", 85, 52, 55); // Rocket mRocket.SetHotSpot (0.5f, 0.5f); mRocket.SetPosition (200, 450, 1); mRocket.SetBoundingAreas ("/rocket_collisions.xml"); //mRocket.DeleteBoundingAreas ("engines"); // Sword Master Animation mSwordMaster.SetHotSpot (0.5f, 0.5f); mSwordMaster.SetPosition (400, 220, 3); // Text mTextSmallWhite.SetLineSpacing (18); mTextSmallWhite.SetCharSpacing (-7); mTextSmallWhite.SetPosition (400, 30, 10); mTextSmallWhite.SetAlign (IND_CENTER); // ----- Main Loop ----- STX_CATCH; return 0; }