S3E_MAIN_DECL void IwMain() { srand(time(NULL)); GameManager *mgr; mgr = new GameManager(); mgr->SetRequestedFPS(100); mgr->GetResourceManager()->RegisterResourceGroup("images.group"); BUG_HANDLE = mgr->GetResourceManager()->RegisterImage("bug"); SPLAT_HANDLE = mgr->GetResourceManager()->RegisterImage("splat"); LEAVES_HANDLE = mgr->GetResourceManager()->RegisterImage("leaves"); ARROW_HANDLE = mgr->GetResourceManager()->RegisterImage("right_arrow"); FIRE_HANDLE = mgr->GetResourceManager()->RegisterImage("FireBlast"); TREB_FONT_HANDLE = mgr->GetResourceManager()->RegisterFont("trebuchet16pt"); COOPER_FONT_HANDLE = mgr->GetResourceManager()->RegisterFont("cooper_24pt"); GameManager::SetDebugFont(mgr->GetResourceManager()->GetFont(TREB_FONT_HANDLE)); Iw2DSetFont(mgr->GetResourceManager()->GetFont(TREB_FONT_HANDLE)); Sprite *background = new Sprite(mgr); background->SetImage(mgr->GetResourceManager()->GetImage(LEAVES_HANDLE)); background->SetBaseLocation(CIwVec2(0, 0)); background->SetZIndex(-999); mgr->RegisterGameObject(background); int width = mgr->GetSurfaceWidth(); int height = mgr->GetSurfaceHeight(); #define SIMPLE_TEST 0 #define MANY_SHIP_TEST 1 #define ORBITER_TEST 2 #define ANIMATION_TEST 3 #define LABELED_SPRITE 4 #define PATH_TEST 5 int test_selection = SIMPLE_TEST; switch(test_selection) { case SIMPLE_TEST: DoSimpleTest(mgr, ARROW_HANDLE, width, height); break; case MANY_SHIP_TEST: DoManyShipTest(mgr, 10, 10, width, height, ARROW_HANDLE); break; case ORBITER_TEST: MakeOrbiters(mgr, width / 2, height / 2, ARROW_HANDLE); break; case ANIMATION_TEST: AnimationTest(mgr, 0, width, height); break; case LABELED_SPRITE: LabeledSprite(mgr, 0, width, height); break; case PATH_TEST: PathTest(mgr, ARROW_HANDLE, width, height); break; } mgr->MainLoop(); delete mgr; }
void ResourceManager::SelectFont(int fontHandle) { Iw2DSetFont(GetFont(fontHandle)); }
int main(int argc, char* argv[]) { g_pointerdown = false; FillDefaultLocalScores(); // Initialisation of Airplay Studio modules Iw2DInit(); // Initialise support for rendering with the standard SW renderer IwGxLightingOff(); IwResManagerInit(); Load(); int16 sw = (int16)Iw2DGetSurfaceWidth(); int16 sh = (int16)Iw2DGetSurfaceHeight(); PAL_InitData_t palInitData; SC_Error_t retCode = SC_Client_New(&g_client, &palInitData, SC_TEST_GAME_ID, SC_TEST_GAME_SECRET, "AIW"); if (retCode != SC_OK) s3eDebugAssertShow(S3E_MESSAGE_CONTINUE_STOP, "Failed to create SC_Client"); IwGetResManager()->LoadGroup("fonts.group"); LoadGlobalImages(); LoadMainControls(); game = new CGame(); mainmenu = new CMainMenu(); profile = new CProfile(); scores = new CScores(); mainmenu->Load(); game->Load(); profile->Load(); scores->Load(); CBaseScene *curscene = (CBaseScene *)mainmenu; g_curSceneType = stMainMenu; uint32 timer = (uint32)s3eTimerGetMs(); g_AccelerometerEnabled = (s3eAccelerometerStart() == S3E_RESULT_SUCCESS); while(curscene) { s3eDeviceYield(0); //// Check for user quit if (s3eDeviceCheckQuitRequest()) break; int delta = uint32(s3eTimerGetMs()) - timer; timer += delta; // Make sure the delta-time value is safe if (delta < 0) delta = 0; if (delta > 100) delta = 100; if (g_AccelerometerEnabled) { if (!g_waiting) { if (g_errorDialog->Get_Visible()) { if (UpdatePointer() == petDown) CloseErrorDlg(); else g_errorDialog->Update(delta); } else { switch (UpdatePointer()) { case petNone: break; case petDown: curscene->PointerDown(g_pointerx, g_pointery); break; case petUp: curscene->PointerUp(g_pointerx, g_pointery); break; case petMove: curscene->PointerMove(g_pointerx, g_pointery); break; } curscene->Update(delta); } } curscene->Render(); if (g_waiting) { Iw2DSetColour(0xeeffffff); Iw2DFillRect(CIwSVec2(0, 0), CIwSVec2(sw, sh)); Iw2DSetColour(0xff000000); Iw2DSetFont(g_font); Iw2DDrawString(g_waitcaption, CIwSVec2(0, 0), CIwSVec2(sw, sh), IW_2D_FONT_ALIGN_CENTRE, IW_2D_FONT_ALIGN_CENTRE); } if (g_errorDialog->Get_Visible()) { g_errorDialog->Render(); } } Iw2DSurfaceShow(); switch (g_curSceneType) { case stNone: curscene = 0; break; case stMainMenu: { if (curscene != (CBaseScene *)mainmenu) { curscene = (CBaseScene *)mainmenu; curscene->Show(); } } break; case stGame: { if (curscene != (CBaseScene *)game) { curscene = (CBaseScene *)game; curscene->Show(); } }break; case stProfile: { if (curscene != (CBaseScene *)profile) { curscene = (CBaseScene *)profile; curscene->Show(); } }break; case stScores: { if (curscene != (CBaseScene *)scores) { curscene = (CBaseScene *)scores; curscene->Show(); } }break; } } Save(); delete game; delete mainmenu; delete profile; delete scores; SC_Client_Release(g_client); UnloadGlobalImages(); UnloadMainControls(); if (g_AccelerometerEnabled) s3eAccelerometerStop(); // Terminate system modules IwResManagerTerminate(); Iw2DTerminate(); return 0; }