bool init(char* androidAppKey, char* iosAppKey, bool enableTesting, bool enableLogging, bool useEvents) { //todo? might want a reloadAdOnSurfaceChange callback that asks for a new ad if there //is a rotation or resize event... bool initialised = false; if (s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_ANDROID) { if (!androidAppKey || !androidAppKey[0]) return false; initialised = s3eAmazonAdsInit(androidAppKey, enableTesting, enableLogging) == S3E_RESULT_SUCCESS; } else if (s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_IPHONE) { if (!iosAppKey || !iosAppKey[0]) return false; initialised = s3eAmazonAdsInit(iosAppKey, enableTesting, enableLogging) == S3E_RESULT_SUCCESS; } if (initialised && useEvents) { s3eAmazonAdsRegister(S3E_AMAZONADS_CALLBACK_AD_LOADED, onAdLoad, NULL); s3eAmazonAdsRegister(S3E_AMAZONADS_CALLBACK_AD_ACTION, onAdAction, NULL); s3eAmazonAdsRegister(S3E_AMAZONADS_CALLBACK_AD_ERROR, onAdError, NULL); } return initialised; }
static void SoftkeysRender() { static bool disableExit = s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_WS8 || s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_WS81; if (!disableExit) { int back = s3eDeviceGetInt(S3E_DEVICE_BACK_SOFTKEY_POSITION); SoftkeyRender("`x666666Exit", (s3eDeviceSoftKeyPosition)back, s3eDeviceRequestQuit); } }
void CScores::DoSubmitScore() { unsigned int aMode = 1; unsigned int aLevel = 1; double aScore = (double)g_localhighscore; double aMinorResult = (double)s3eDeviceGetInt(S3E_DEVICE_OS); // Save OS type as Minor Result /* Create the score and set score data */ SC_Score_h score; SC_Error_t retCode = SC_Score_New(&score); if (retCode == SC_OK) { SC_Score_SetResult(score, aScore); SC_Score_SetMode(score, aMode); SC_Score_SetLevel(score, aLevel); SC_Score_SetMinorResult(score, aMinorResult); retCode = SC_ScoreController_SubmitScore(m_scoreController, score); // See OnRequestSuccessSubmit() } /* SC_ScoreController_SubmitScore takes the ownership, we can safely release it */ SC_Score_Release(score); if (retCode != SC_OK) { OnRequestFailed(retCode); } }
void RenderSoftkeys() { int back = s3eDeviceGetInt(S3E_DEVICE_BACK_SOFTKEY_POSITION); RenderSoftkey("Exit", (s3eDeviceSoftKeyPosition)back, s3eDeviceRequestQuit); //int advance = s3eDeviceGetInt(S3E_DEVICE_ADVANCE_SOFTKEY_POSITION); //RenderSoftkey("ASK", (s3eDeviceSoftKeyPosition)advance); }
static void SoftkeysRender() { //int advance = s3eDeviceGetInt(S3E_DEVICE_ADVANCE_SOFTKEY_POSITION); //SoftkeyRender("`x666666ASK", (s3eDeviceSoftKeyPosition)advance); int back = s3eDeviceGetInt(S3E_DEVICE_BACK_SOFTKEY_POSITION); SoftkeyRender("`x666666Exit", (s3eDeviceSoftKeyPosition)back, s3eDeviceRequestQuit); }
//----------------------------------------------------------------------------- void ExampleInit() { // Startapp: if (s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_ANDROID) { if(startappAvailable()) { initSDK(STARTAPP_DEVID, STARTAPP_APPID); } } //Initialise the IwUI module IwUIInit(); //Instantiate the view and controller singletons. //IwUI will not instantiate these itself, since they can be subclassed to add functionality. new CIwUIController; new CIwUIView; //Load group which contains the ui specifications IwGetResManager()->LoadGroup("IwUIBasicButtonEvents.group"); //Load button s_Button = (CIwUIButton*) CIwUIElement::CreateFromResource("EventButton"); //Attach eventhandler to button s_Button->AddEventHandler(new MyButtonEventHandler); //Add the label to the UIView singleton IwGetUIView()->AddElement(s_Button); }
//-------------------------------------------------------------------------- void ExampleInit() { //Register for standard pointer events s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, (s3eCallback)SingleTouchButtonCB, NULL); s3ePointerRegister(S3E_POINTER_MOTION_EVENT, (s3eCallback)SingleTouchMotionCB, NULL); // Init buttons. startBtn = NewButton("Start MAT SDK"); showParmsBtn = NewButton("Show SDK Parameters"); sendInstallBtn = NewButton("Send Install"); sendEventRefBtn = NewButton("Send Event With Ref"); sendEventBtn = NewButton("Send Event Items"); setDebugBtn = NewButton("Set Debug on/off"); int32 osInt = s3eDeviceGetInt(S3E_DEVICE_OS); if (osInt == S3E_OS_ID_ANDROID) { strcpy(g_package_name, "com.marmaladeandroidtest"); strcpy(g_site_id, "7488"); } else { strcpy(g_package_name, "2GLFC47AY5.com.hasoffers.marmaladeTestApp"); strcpy(g_site_id, "6864"); } SetButtonScale(2); }
int32 dpiGetScreenDPI_Bada() { switch (s3eDeviceGetInt(S3E_DEVICE_ID)) { case 754973890: //Wave 525 ("GT-S5250") return 146; case 755065988: //Bada Wave GT-S8500 return 283; default: break; } return 146; }
bool CIwGameAds::Init() { Mediator = NULL; AdAvailableCallback = NULL; Error = ErrorNone; ErrorString = ""; ErrorString.setAutoHash(true); ClientID = "-1"; HtmlAds = false; TextAds = false; UserAge = 0; UserGender = GenderInvalid; AdAvailable = false; UserAgent = IW_GAME_HTTP_MANAGER->getUserAgent(); SlotSize = sDefault; Version = "Sm2m-1.5.3"; // Get device UDID UDID = s3eDeviceGetInt(S3E_DEVICE_UNIQUE_ID); // Get device surface dimensions Width = IwGxGetScreenWidth(); Height = IwGxGetScreenHeight(); // Find our which portal ID we should be using PortalType = FindPortalType(TextAds); // Allocate string large enough to hold our largest request RequestURI.allocString(2048); // Get previous session client ID /* CIwGameFile file; if (file.Open("\\iwgameads.dat", "rb")) { int len = file.getFileSize(); ClientID.allocString(len); ClientID.setLength(len); file.Read((void*)ClientID.c_str(), len); }*/ // ClientID = CIwGameString(UDID); return true; // Pointer support }
ccLanguageType CCApplication::getCurrentLanguage() { int nLanguageIdx; ccLanguageType currentLanguage; nLanguageIdx = s3eDeviceGetInt(S3E_DEVICE_LANGUAGE); switch (nLanguageIdx) { case S3E_DEVICE_LANGUAGE_ENGLISH: currentLanguage = kLanguageEnglish; break; case S3E_DEVICE_LANGUAGE_SIMPL_CHINESE: case S3E_DEVICE_LANGUAGE_TRAD_CHINESE: currentLanguage = kLanguageChinese; break; case S3E_DEVICE_LANGUAGE_FRENCH: currentLanguage = kLanguageFrench; break; case S3E_DEVICE_LANGUAGE_ITALIAN: currentLanguage = kLanguageItalian; break; case S3E_DEVICE_LANGUAGE_GERMAN: currentLanguage = kLanguageGerman; break; case S3E_DEVICE_LANGUAGE_SPANISH: currentLanguage = kLanguageSpanish; break; case S3E_DEVICE_LANGUAGE_RUSSIAN: currentLanguage = kLanguageItalian; break; default: currentLanguage = kLanguageRussian; break; } return currentLanguage; }
TargetPlatform CCApplication::getTargetPlatform() // MH: Cocos2dx 2.0.3 added this new method to the protocol { int os = s3eDeviceGetInt(S3E_DEVICE_OS); switch (os) { case S3E_OS_ID_QNX: return kTargetBlackBerry; case S3E_OS_ID_ANDROID: return kTargetAndroid; case S3E_OS_ID_IPHONE: return kTargetIphone; // TODO: Need to add distinction between iPad and iPhone case S3E_OS_ID_WINDOWS: return kTargetWindows; case S3E_OS_ID_LINUX: return kTargetLinux; case S3E_OS_ID_OSX: return kTargetMacOS; } return kTargetWindows; // TODO: TargetPlatform contains no definition for unsupported platform }
static int GetDeviceID() { return s3eDeviceGetInt(S3E_DEVICE_ID); }
static int GetDeviceOS() { return s3eDeviceGetInt(S3E_DEVICE_OS); }
//Example Main void ExampleInit() { InitMessages(10,60); g_ButtonLogEvent = NewButton("Log Event"); g_ButtonLogTimedEvent = NewButton("Log Timed Event"); g_ButtonEndTimedEvent = NewButton("End Timed Event"); g_ButtonLogError = NewButton("Log Error"); g_ButtonUserInfo = NewButton("Set User Info"); g_ButtonUserLocation = NewButton("Log User Location"); g_ButtonToggleSendOnClose = NewButton("Disable send session report on close"); g_ButtonToggleSendOnPause = NewButton("Disable send session report on pause"); g_ButtonSetDefaultMessage = NewButton("Set Default Banner Message"); g_ButtonToggleAdBanner = NewButton("Toggle Ad Banner"); g_ButtonShowOfferWall = NewButton("Display Offer Wall"); g_ButtonLogEvent->m_Enabled = false; g_ButtonLogTimedEvent->m_Enabled = false; g_ButtonEndTimedEvent->m_Enabled = false; g_ButtonLogError->m_Enabled = false; g_ButtonUserInfo->m_Enabled = false; g_ButtonUserLocation->m_Enabled = false; g_ButtonToggleSendOnClose->m_Enabled = false; g_ButtonToggleSendOnPause->m_Enabled = false; g_ButtonSetDefaultMessage->m_Enabled = false; g_ButtonToggleAdBanner->m_Enabled = false; g_ButtonShowOfferWall->m_Enabled = false; if (!s3eFlurryAvailable()) { AppendMessageColour(RED,"Extension Not Available"); return; } // Enable AppCircle // We need to call this *before* calling s3eFlurryStart s3eFlurryAppCircleEnable(); //iOS Applicaton Key if(s3eDeviceGetInt (S3E_DEVICE_OS) == S3E_OS_ID_IPHONE) s3eFlurryStart("DNWX7I7XZYYL9V1QAZFC"); //Android Applicaton Key else if(s3eDeviceGetInt (S3E_DEVICE_OS) == S3E_OS_ID_ANDROID) s3eFlurryStart("HD4EZJ147ELQAT9H43KM"); g_ButtonLogEvent->m_Enabled = true; g_ButtonLogTimedEvent->m_Enabled = true; g_ButtonEndTimedEvent->m_Enabled = true; g_ButtonLogError->m_Enabled = true; g_ButtonUserInfo->m_Enabled = true; g_ButtonUserLocation->m_Enabled = true; g_ButtonToggleSendOnClose->m_Enabled = true; g_ButtonToggleSendOnPause->m_Enabled = true; g_ButtonSetDefaultMessage->m_Enabled = true; g_ButtonToggleAdBanner->m_Enabled = true; g_ButtonShowOfferWall->m_Enabled = true; s3eLocationStart(); }
ccLanguageType CCApplication::getCurrentLanguage() { int nLanguageIdx; ccLanguageType currentLanguage; nLanguageIdx = s3eDeviceGetInt(S3E_DEVICE_LANGUAGE); switch (nLanguageIdx) { case S3E_DEVICE_LANGUAGE_ENGLISH: currentLanguage = kLanguageEnglish; break; case S3E_DEVICE_LANGUAGE_SIMPL_CHINESE: case S3E_DEVICE_LANGUAGE_TRAD_CHINESE: currentLanguage = kLanguageChinese; break; case S3E_DEVICE_LANGUAGE_FRENCH: currentLanguage = kLanguageFrench; break; case S3E_DEVICE_LANGUAGE_ITALIAN: currentLanguage = kLanguageItalian; break; case S3E_DEVICE_LANGUAGE_GERMAN: currentLanguage = kLanguageGerman; break; case S3E_DEVICE_LANGUAGE_SPANISH: currentLanguage = kLanguageSpanish; break; case S3E_DEVICE_LANGUAGE_RUSSIAN: currentLanguage = kLanguageRussian; break; case S3E_DEVICE_LANGUAGE_KOREAN: currentLanguage = kLanguageKorean; break; case S3E_DEVICE_LANGUAGE_JAPANESE: currentLanguage = kLanguageJapanese; break; case S3E_DEVICE_LANGUAGE_HUNGARIAN: currentLanguage = kLanguageHungarian; break; case S3E_DEVICE_LANGUAGE_PORTUGUESE: currentLanguage = kLanguagePortuguese; break; case S3E_DEVICE_LANGUAGE_ARABIC: currentLanguage = kLanguageArabic; break; default: currentLanguage = kLanguageEnglish; break; } return currentLanguage; }
CIwGameAds::eIwGameAdsPortalType CIwGameAds::FindPortalType(bool text_ad) { // Get the devices operating system OperatingSystem = s3eDeviceGetInt(S3E_DEVICE_OS); // Calculate portal type from OS switch (OperatingSystem) { case S3E_OS_ID_SYMBIAN: if (text_ad) return OVIText; return OVIBanner; case S3E_OS_ID_WINMOBILE: case S3E_OS_ID_WINCE: if (text_ad) return WinMobileText; return WinMobileBanner; case S3E_OS_ID_QNX: if (text_ad) return BlackberryText; return BlackberryBanner; case S3E_OS_ID_BADA: if (text_ad) return BadaText; return BadaBanner; case S3E_OS_ID_ANDROID: if (text_ad) return AndroidText; return AndroidBanner; case S3E_OS_ID_IPHONE: if (Width > 960 && Height > 640 || Height > 960 && Width > 640) { if (text_ad) return iPadText; return iPadBanner; } else { if (text_ad) return iPhoneText; return iPhoneBanner; } case S3E_OS_ID_WEBOS: if (text_ad) return WebOSText; return WebOSBanner; case S3E_OS_ID_WINDOWS: case S3E_OS_ID_LINUX: case S3E_OS_ID_WIPI: case S3E_OS_ID_NDS: case S3E_OS_ID_ARM_SEMIH: case S3E_OS_ID_NUCLEUS: case S3E_OS_ID_NGI: case S3E_OS_ID_SHARPEMP: case S3E_OS_ID_OSX: case S3E_OS_ID_UIQ: case S3E_OS_ID_PS3: case S3E_OS_ID_X360: case S3E_OS_ID_PSP: case S3E_OS_ID_WII: default: if (text_ad) return MobileWebText; else return MobileWebBanner; break; } return PortalNone; }
bool MarmaladeSystem::Initialize() { LOG_INFO(LOGCAT_SYSTEM, "MarmaladeSystem initialization starting.\n"); const char* marmaladeRuntimeVersion = s3eDeviceGetString(S3E_DEVICE_SDK_VERSION); LOG_INFO(LOGCAT_SYSTEM, "Marmalade Runtime Version %s, Linked Version %s\n", marmaladeRuntimeVersion, MARMALADE_VERSION_STRING); const char* s3eRuntimeVersion = s3eDeviceGetString(S3E_DEVICE_S3E_VERSION); LOG_INFO(LOGCAT_SYSTEM, "S3E Runtime Version: %s, Linked Version: %s\n", s3eRuntimeVersion, S3E_VERSION_STRING); const char* deviceID = s3eDeviceGetString(S3E_DEVICE_ID); const char* deviceOS = s3eDeviceGetString(S3E_DEVICE_OS); int deviceOsVersion = s3eDeviceGetInt(S3E_DEVICE_OS_VERSION); int osVersionMajor = (deviceOsVersion >> 16); int osVersionMinor = deviceOsVersion & 0xffff; const char* deviceClass = s3eDeviceGetString(S3E_DEVICE_CLASS); const char* deviceArch = s3eDeviceGetString(S3E_DEVICE_ARCHITECTURE); const char* deviceChipset = s3eDeviceGetString(S3E_DEVICE_CHIPSET); int deviceTotalMemKB = s3eDeviceGetInt(S3E_DEVICE_MEM_TOTAL); int deviceFreeMemKB = s3eDeviceGetInt(S3E_DEVICE_MEM_FREE); int heapSize = s3eMemoryGetInt(S3E_MEMORY_SIZE); LOG_INFO(LOGCAT_SYSTEM, "Device ID: %s\n", deviceID); LOG_INFO(LOGCAT_SYSTEM, "Device OS: %s (%d.%d)\n", deviceOS, osVersionMajor, osVersionMinor); LOG_INFO(LOGCAT_SYSTEM, "Device Class: %s\n", deviceClass); LOG_INFO(LOGCAT_SYSTEM, "Device Architecture: %s\n", deviceArch); LOG_INFO(LOGCAT_SYSTEM, "Device Chipset: %s\n", deviceChipset); LOG_INFO(LOGCAT_SYSTEM, "Device Memory: %dKB free, %dKB total\n", deviceFreeMemKB, deviceTotalMemKB); LOG_INFO(LOGCAT_SYSTEM, "S3E Memory Heap Size: %d bytes\n", heapSize); bool keyboardHasAlpha = false; bool keyboardHasDirection = false; if (s3eKeyboardGetInt(S3E_KEYBOARD_HAS_ALPHA)) { keyboardHasAlpha = true; LOG_INFO(LOGCAT_SYSTEM, "Keyboard property: S3E_KEYBOARD_HAS_ALPHA\n"); } if (s3eKeyboardGetInt(S3E_KEYBOARD_HAS_NUMPAD)) LOG_INFO(LOGCAT_SYSTEM, "Keyboard property: S3E_KEYBOARD_HAS_NUMPAD\n"); if (s3eKeyboardGetInt(S3E_KEYBOARD_HAS_DIRECTION)) { keyboardHasDirection = true; LOG_INFO(LOGCAT_SYSTEM, "Keyboard property: S3E_KEYBOARD_HAS_DIRECTION\n"); } // Android Xperia Play device detection // TODO: any other device ID's we need to worry about? bool isXperiaPlay = false; if (s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_ANDROID) { LOG_INFO(LOGCAT_SYSTEM, "Detected Android as host OS.\n"); if (strlen(deviceID) >= 4) { // possible device ID's I currently know of: // R800i, R800a, R800x if (strncmp(deviceID, "R800", 4) == 0) { LOG_INFO(LOGCAT_SYSTEM, "Device is an Xperia Play.\n"); isXperiaPlay = true; } else LOG_INFO(LOGCAT_SYSTEM, "Device is not an Xperia Play.\n"); } } bool keyboardHasPhysicalGameControls = false; if ((keyboardHasAlpha && keyboardHasDirection) || isXperiaPlay) keyboardHasPhysicalGameControls = true; if (keyboardHasPhysicalGameControls) LOG_INFO(LOGCAT_SYSTEM, "Keyboard device has enough physical keys for full game controls.\n"); else LOG_INFO(LOGCAT_SYSTEM, "Keyboard device does not have enough physical keys for full game controls.\n"); m_keyboard = new MarmaladeKeyboard(keyboardHasPhysicalGameControls); ASSERT(m_keyboard != NULL); LOG_INFO(LOGCAT_SYSTEM, "Keyboard input device ready.\n"); bool isMultitouchAvailable = false; if (s3ePointerGetInt(S3E_POINTER_AVAILABLE)) { s3ePointerType pointerType = (s3ePointerType)s3ePointerGetInt(S3E_POINTER_TYPE); if (pointerType == S3E_POINTER_TYPE_INVALID) LOG_ERROR(LOGCAT_SYSTEM, "Pointer type = S3E_POINTER_TYPE_INVALID\n"); else if (pointerType == S3E_POINTER_TYPE_MOUSE) { LOG_INFO(LOGCAT_SYSTEM, "Pointer device is a mouse.\n"); m_mouse = new MarmaladeMouse(); ASSERT(m_mouse != NULL); LOG_INFO(LOGCAT_SYSTEM, "Mouse input device ready.\n"); } else if (pointerType == S3E_POINTER_TYPE_STYLUS) { s3eStylusType stylusType = (s3eStylusType)s3ePointerGetInt(S3E_POINTER_STYLUS_TYPE); if (stylusType == S3E_STYLUS_TYPE_INVALID) LOG_ERROR(LOGCAT_SYSTEM, "Stylus type = S3E_STYLUS_TYPE_INVALID\n"); else { if (stylusType == S3E_STYLUS_TYPE_STYLUS) LOG_INFO(LOGCAT_SYSTEM, "Pointer device is a touchscreen using a stylus.\n"); else if (stylusType == S3E_STYLUS_TYPE_FINGER) LOG_INFO(LOGCAT_SYSTEM, "Pointer device is a touchscreen.\n"); if (s3ePointerGetInt(S3E_POINTER_MULTI_TOUCH_AVAILABLE)) { LOG_INFO(LOGCAT_SYSTEM, "Pointer device supports multitouch.\n"); isMultitouchAvailable = true; } else LOG_INFO(LOGCAT_SYSTEM, "Pointer device does not support multitouch.\n"); m_touchscreen = new MarmaladeTouchscreen(this, isMultitouchAvailable); ASSERT(m_touchscreen != NULL); LOG_INFO(LOGCAT_SYSTEM, "Touchscreen input device ready.\n"); } } } else LOG_WARN(LOGCAT_SYSTEM, "No pointer device is available.\n"); s3eDeviceRegister(S3E_DEVICE_PAUSE, _MarmaladeEventCallback_Pause, this); s3eDeviceRegister(S3E_DEVICE_UNPAUSE, _MarmaladeEventCallback_Resume, this); s3eDeviceRegister(S3E_DEVICE_EXIT, _MarmaladeEventCallback_Exit, this); s3eGLRegister(S3E_GL_SUSPEND, _MarmaladeEventCallback_GLSuspend, this); s3eGLRegister(S3E_GL_RESUME, _MarmaladeEventCallback_GLResume, this); s3eSurfaceRegister(S3E_SURFACE_SCREENSIZE, _MarmaladeEventCallback_ScreenResize, this); s3eKeyboardRegister(S3E_KEYBOARD_KEY_EVENT, _MarmaladeEventCallback_Key, this); s3eKeyboardRegister(S3E_KEYBOARD_CHAR_EVENT, _MarmaladeEventCallback_KeyChar, this); if (m_mouse != NULL || m_touchscreen != NULL) { if (isMultitouchAvailable) { s3ePointerRegister(S3E_POINTER_TOUCH_EVENT, _MarmaladeEventCallback_PointerMultitouchButton, this); s3ePointerRegister(S3E_POINTER_TOUCH_MOTION_EVENT, _MarmaladeEventCallback_PointerMultitouchMotion, this); } else { s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, _MarmaladeEventCallback_PointerButton, this); s3ePointerRegister(S3E_POINTER_MOTION_EVENT, _MarmaladeEventCallback_PointerMotion, this); } } else LOG_WARN(LOGCAT_SYSTEM, "No mouse or touchscreen device was initialized.\n"); LOG_INFO(LOGCAT_SYSTEM, "Registered S3E event callbacks.\n"); LOG_INFO(LOGCAT_SYSTEM, "Initializing file system access.\n"); m_filesystem = new MarmaladeFileSystem(); ASSERT(m_filesystem != NULL); LOG_INFO(LOGCAT_SYSTEM, "Finished initialization.\n"); return true; }
void RenderSoftkeys() { int back = s3eDeviceGetInt(S3E_DEVICE_BACK_SOFTKEY_POSITION); RenderSoftkey("Exit", (s3eDeviceSoftKeyPosition)back, s3eDeviceRequestQuit); }
void doMain() { if(s3ePointerGetInt(S3E_POINTER_MULTI_TOUCH_AVAILABLE)){ s3ePointerRegister(S3E_POINTER_TOUCH_EVENT, (s3eCallback)MultiTouchButtonCB, NULL); s3ePointerRegister(S3E_POINTER_TOUCH_MOTION_EVENT, (s3eCallback)MultiTouchMotionCB, NULL); } else { s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, (s3eCallback)SingleTouchButtonCB, NULL); s3ePointerRegister(S3E_POINTER_MOTION_EVENT, (s3eCallback)SingleTouchMotionCB, NULL); } IwGetResManager()->LoadGroup("resource_groups/palate.group"); palateGroup = IwGetResManager()->GetGroupNamed("Palate"); std::vector<int> ui_texture_hashes; uint background_hash = IwHashString("background_clean"); CIwResList* resources = palateGroup->GetListHashed(IwHashString("CIwTexture")); for(CIwManaged** itr = resources->m_Resources.GetBegin(); itr != resources->m_Resources.GetEnd(); ++itr) { if(background_hash != (*itr)->m_Hash) { ui_texture_hashes.push_back((*itr)->m_Hash); } } CIwMaterial* background = new CIwMaterial(); background->SetTexture((CIwTexture*)palateGroup->GetResNamed("background_clean", IW_GX_RESTYPE_TEXTURE)); background->SetModulateMode(CIwMaterial::MODULATE_NONE); background->SetAlphaMode(CIwMaterial::ALPHA_DEFAULT); unit_ui = new CIwMaterial(); unit_ui->SetModulateMode(CIwMaterial::MODULATE_NONE); unit_ui->SetAlphaMode(CIwMaterial::ALPHA_DEFAULT); unit_ui->SetTexture((CIwTexture*)palateGroup->GetResNamed("TAKE2", IW_GX_RESTYPE_TEXTURE)); CIwSVec2 bg_wh(320, 480); CIwSVec2 ui_wh(80, 480); CIwSVec2 ui_offset(240, 0); CIwSVec2 uv(0, 0); CIwSVec2 duv(IW_GEOM_ONE, IW_GEOM_ONE); init(); IwGxLightingOff(); IwGxSetColClear(255, 255, 255, 255); float worldScrollMultiplier = 0.75; if(s3eDeviceGetInt(S3E_DEVICE_OS) == S3E_OS_ID_IPHONE) { worldScrollMultiplier = 0.925; } while (1) { int64 start = s3eTimerGetMs(); s3eDeviceYield(0); s3eKeyboardUpdate(); s3ePointerUpdate(); if ((s3eKeyboardGetState(s3eKeyEsc) & S3E_KEY_STATE_DOWN) || (s3eKeyboardGetState(s3eKeyAbsBSK) & S3E_KEY_STATE_DOWN) || (s3eDeviceCheckQuitRequest())) { break; } switch(currentState) { case MAIN_MENU: if(s3ePointerGetState(S3E_POINTER_BUTTON_SELECT) & S3E_POINTER_STATE_PRESSED) { currentState = IN_GAME; } if(frameCount % FRAMES_PER_UPDATE == 0) { mainMenu->tick(); } mainMenu->render(); break; case IN_GAME: IwGxSetMaterial(background); IwGxSetScreenSpaceSlot(-1); IwGxDrawRectScreenSpace(&CIwSVec2::g_Zero, &bg_wh, &uv, &duv); IwGxSetMaterial(unit_ui); IwGxSetScreenSpaceSlot(1); IwGxDrawRectScreenSpace(&ui_offset, &ui_wh, &uv, &duv); if (worldScrollSpeed > .0005 || worldScrollSpeed < -.0005) { game->rotate(worldScrollSpeed); worldScrollSpeed *= worldScrollMultiplier; } if(frameCount % FRAMES_PER_UPDATE == 0) { game->tick(); } game->render(); if(!renderTouches()) { break; } break; } IwGxFlush(); IwGxSwapBuffers(); // Attempt frame rate while ((s3eTimerGetMs() - start) < MS_PER_FRAME){ int32 yield = (MS_PER_FRAME - (s3eTimerGetMs() - start)); if (yield < 0) { break; } s3eDeviceYield(yield); } frameCount++; IwGxClear(IW_GX_COLOUR_BUFFER_F | IW_GX_DEPTH_BUFFER_F); } delete game; delete mainMenu; delete localPlayer; delete opponentPlayer; delete background; delete unit_ui; palateGroup->Finalise(); for(int i = 0; i < MAX_TOUCHES; ++i) if(touches[i].unit) delete touches[i].unit; }
void MenuScreen::Initialize( int16 t ) { image = Iw2DCreateImage("splash.png"); quitConfirmationImage2 = NULL; //counter = 0; buttonCount = 0; type = t; // This is the actual pixel size of the image for stretching and tiling purposes sprite.setUWidth( 480 ); sprite.setUHeight( 320 ); //sprite.setSize( 480, 320 ); sprite.setSize( IwGxGetScreenWidth(), IwGxGetScreenHeight() ); sprite.setImage( image ); sprite.setPosition( IwGxGetScreenWidth()/2, -IwGxGetScreenHeight()/2 ); // menu screen position spawns off-screen by default!!! if( type == MENU ) { delete image; image = Iw2DCreateImage("black.png"); sprite.setPosition( IwGxGetScreenWidth()/2, IwGxGetScreenHeight()/2 ); // high score screen has back button, and Rate button buttonCount = 2; // make only 1 button for play for now. Add a 2nd button for credits. More button for more links. for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // PLAY button buttonImageArray[i] = Iw2DCreateImage("test.png"); //buttonImageArray_pressed[i] = Iw2DCreateImage("rateButton_green.png"); // Load only one image for pressed and unpressed. button[i].setLocation( 50, 100 ); // these are irrelevant I believe, because locations are reset in Render() break; case 1: // High Score Screen button buttonImageArray[i] = Iw2DCreateImage("test.png"); //buttonImageArray_pressed[i] = Iw2DCreateImage("backButton_green.png"); button[i].setLocation( 300, 100 ); // these are irrelevant I believe, because locations are reset in Render() break; } buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); //buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setImage( buttonImageArray[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); } } else if( type == CHALLENGE ) { int row = 1; int column = 1; buttonCount = 21; // make 20 buttons for levels, 1 button to go back for( int i = 0; i < buttonCount; i++ ) { // add if-condition here to create a different image for every button buttonImageArray[i] = Iw2DCreateImage("test.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); buttonSprite[i].setSize( 40, 40 ); buttonImageArray_pressed[i] = Iw2DCreateImage("menuButton_Touched.png"); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); buttonSprite_pressed[i].setSize( 40, 40 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); button[i].setTouchSize( 40, 40 ); button[i].setLocation( column*buttonSprite[i].size.x + 30*(column) + 35, row*buttonSprite[i].size.y + 15*(row) + 5 - IwGxGetScreenHeight()/2 ); // increment the rows/columns column++; if( column >= 6 ) { column = 1; row++; } } // end of for-loop creating buttons } // end of type == challenge menu else if( type == HIGH_SCORE ) { delete image; if( s3eDeviceGetInt( S3E_DEVICE_OS ) == S3E_OS_ID_IPHONE ) { image = Iw2DCreateImage("highscore_screen.png"); } else { image = Iw2DCreateImage("highscore_screen2.png"); } // high score screen has back button, and Rate button buttonCount = 13; // buttons 0-1 are rate, 2-6 are black trophies, 7-11 are trophies, 12 is game center for( int i = 0; i < NUM_OF_TROPHIES; i++ ) { trophies[i] = false; } for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // RATE button buttonImageArray[i] = Iw2DCreateImage("rateButton_red.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("rateButton_green.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 64 ); buttonSprite[i].setUHeight( 64 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 64 ); buttonSprite_pressed[i].setUHeight( 64 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); //button[i].setLocation( 50, 100 ); // not affected here. in render break; case 1: // BACK button buttonImageArray[i] = Iw2DCreateImage("backButton_red.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("backButton_green.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 64 ); buttonSprite[i].setUHeight( 64 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 64 ); buttonSprite_pressed[i].setUHeight( 64 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); //button[i].setLocation( 300, 100 ); // not affected here. in render break; case 2: // all the BLACK TROPHY buttons case 3: case 4: case 5: case 6: buttonImageArray[i] = Iw2DCreateImage("trophyButton_black.png"); //buttonImageArray_pressed[i] = Iw2DCreateImage("trophyButton_black.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 100 ); buttonSprite[i].setUHeight( 100 ); //buttonSprite[i].setSize( 100, 100 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .208, IwGxGetScreenWidth() * .208 ); buttonSprite_pressed[i].setImage( buttonImageArray[i] ); buttonSprite_pressed[i].setUWidth( 100 ); buttonSprite_pressed[i].setUHeight( 100 ); //buttonSprite_pressed[i].setSize( 80, 80 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .167, IwGxGetScreenWidth() * .167 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .167, IwGxGetScreenWidth() * .167 ); break; case 7: case 8: case 9: case 10: case 11: // all the REGULAR TROPHY buttons buttonImageArray[i] = Iw2DCreateImage("trophyButton.png"); //buttonImageArray_pressed[i] = Iw2DCreateImage("trophyButton.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 64 ); buttonSprite[i].setUHeight( 64 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray[i] ); buttonSprite_pressed[i].setUWidth( 64 ); buttonSprite_pressed[i].setUHeight( 64 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); break; case 12: // GameCenter button buttonImageArray[i] = Iw2DCreateImage("gamecenter_64.png"); //buttonImageArray_pressed[i] = Iw2DCreateImage("trophyButton.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 64 ); buttonSprite[i].setUHeight( 64 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray[i] ); buttonSprite_pressed[i].setUWidth( 64 ); buttonSprite_pressed[i].setUHeight( 64 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); break; } } } // end of type == high score else if( type == CREDITS ) { delete image; image = Iw2DCreateImage("credits_screen.png"); // high score screen has back button, and Rate button buttonCount = 2; for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // RATE button buttonImageArray[i] = Iw2DCreateImage("rateButton_red.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("rateButton_green.png"); button[i].setLocation( 50, 100 ); break; case 1: // BACK button buttonImageArray[i] = Iw2DCreateImage("backButton_red.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("backButton_green.png"); button[i].setLocation( 300, 100 ); break; } buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 64 ); buttonSprite[i].setUHeight( 64 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 64 ); buttonSprite_pressed[i].setUHeight( 64 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); } } else if( type == TUTORIAL ) { delete image; image = Iw2DCreateImage("tutorial.png"); // high score screen has back button, and Rate button buttonCount = 4; for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: buttonImageArray[i] = Iw2DCreateImage("backButton_red.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("backButton_green.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 64 ); buttonSprite[i].setUHeight( 64 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 64 ); buttonSprite_pressed[i].setUHeight( 64 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); break; case 1: buttonImageArray[i] = Iw2DCreateImage("buttonBasic.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("buttonBasic.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); break; case 2: buttonImageArray[i] = Iw2DCreateImage("buttonDanger.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("buttonDanger.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); break; case 3: buttonImageArray[i] = Iw2DCreateImage("buttonDefuse.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("buttonDefuse.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 64, 64 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 50, 50 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .104, IwGxGetScreenWidth() * .104 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 64, 64 ); button[i].setTouchSize( IwGxGetScreenWidth() * .133, IwGxGetScreenWidth() * .133 ); break; } } } else if( type == QUIT_CONFIRMATION ) { delete image; image = Iw2DCreateImage("quitconfirmation.png"); quitConfirmationImage2 = Iw2DCreateImage("quitconfirmation2.png"); sprite.setUWidth( 480 ); sprite.setUHeight( 320 ); //sprite.setSize( 480, 320 ); sprite.setSize( IwGxGetScreenWidth(), IwGxGetScreenHeight() ); sprite.setImage( image ); sprite.setPosition( IwGxGetScreenWidth()/2, IwGxGetScreenHeight()/2 ); // high score screen has back button, and Rate button buttonCount = 2; for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: buttonImageArray[i] = Iw2DCreateImage("quitconfirmation_yes.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("quitconfirmation_yes.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 128, 128 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 100, 100 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .208, IwGxGetScreenWidth() * .208 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 128, 128 ); button[i].setTouchSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); break; case 1: buttonImageArray[i] = Iw2DCreateImage("quitconfirmation_no.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("quitconfirmation_no.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 128, 128 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 100, 100 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .208, IwGxGetScreenWidth() * .208 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 128, 128 ); button[i].setTouchSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); break; } } } else if( type == NEW_STORY_CONFIRMATION ) { delete image; image = Iw2DCreateImage("newstoryconfirmation.png"); sprite.setUWidth( 480 ); sprite.setUHeight( 320 ); //sprite.setSize( 480, 320 ); sprite.setSize( IwGxGetScreenWidth(), IwGxGetScreenHeight() ); sprite.setImage( image ); sprite.setPosition( IwGxGetScreenWidth()/2, IwGxGetScreenHeight()/2 ); // high score screen has back button, and Rate button buttonCount = 2; for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: buttonImageArray[i] = Iw2DCreateImage("quitconfirmation_yes.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("quitconfirmation_yes.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 128, 128 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 100, 100 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .208, IwGxGetScreenWidth() * .208 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 128, 128 ); button[i].setTouchSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); break; case 1: buttonImageArray[i] = Iw2DCreateImage("quitconfirmation_no.png"); buttonImageArray_pressed[i] = Iw2DCreateImage("quitconfirmation_no.png"); buttonSprite[i].setImage( buttonImageArray[i] ); buttonSprite[i].setUWidth( 128 ); buttonSprite[i].setUHeight( 128 ); //buttonSprite[i].setSize( 128, 128 ); buttonSprite[i].setSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); buttonSprite_pressed[i].setImage( buttonImageArray_pressed[i] ); buttonSprite_pressed[i].setUWidth( 128 ); buttonSprite_pressed[i].setUHeight( 128 ); //buttonSprite_pressed[i].setSize( 100, 100 ); buttonSprite_pressed[i].setSize( IwGxGetScreenWidth() * .208, IwGxGetScreenWidth() * .208 ); button[i].setUnpressedSprite( buttonSprite[i] ); button[i].setPressedSprite( buttonSprite_pressed[i] ); //button[i].setTouchSize( 128, 128 ); button[i].setTouchSize( IwGxGetScreenWidth() * .267, IwGxGetScreenWidth() * .267 ); break; } } } else if( type == QUESTION_MARK ) { delete image; image = Iw2DCreateImage("questionmarkinfo.png"); sprite.setUWidth( 480 ); sprite.setUHeight( 320 ); //sprite.setSize( 480, 320 ); sprite.setSize( IwGxGetScreenWidth(), IwGxGetScreenHeight() ); sprite.setImage( image ); sprite.setPosition( IwGxGetScreenWidth()/2, IwGxGetScreenHeight()/2 ); } } // end of initialize()
void MenuScreen::Render() { sprite.Render(); if( type == MENU ) { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: //button[i].setLocation( sprite.position.x - 75, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x, sprite.position.y); // The sprite is the center of the image break; case 1: //button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .031, sprite.position.y + IwGxGetScreenHeight() * .381 ); button[i].setLocation( sprite.position.x, sprite.position.y + IwGxGetScreenHeight() * .381 ); break; } button[i].Render(); } } else if( type == CHALLENGE ) { int row = 1; int column = 1; for( int i = 0; i < buttonCount; i++ ) { button[i].setLocation( (column*buttonSprite[i].size.x + 30*(column) + 35) + (sprite.position.x - IwGxGetScreenWidth()/2), (row*buttonSprite[i].size.y + 15*(row) + 5) + (sprite.position.y - IwGxGetScreenHeight()/2) ); button[i].Render(); // increment the rows/columns column++; if( column >= 6 ) { column = 1; row++; } } } else if( type == HIGH_SCORE ) { if( s3eDeviceGetInt( S3E_DEVICE_OS ) == S3E_OS_ID_IPHONE ) { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: //button[i].setLocation( sprite.position.x - 75, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .156, sprite.position.y + IwGxGetScreenHeight() * .381 ); button[i].Render(); break; case 1: //button[i].setLocation( sprite.position.x + 97, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .202, sprite.position.y + IwGxGetScreenHeight() * .381); button[i].Render(); break; case 2: // render black trophies //button[i].setLocation( sprite.position.x - 190, sprite.position.y - 75 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y - IwGxGetScreenHeight() * .234); if( trophies[0] == false ) { button[i].Render(); } break; case 3: //button[i].setLocation( sprite.position.x + 183, sprite.position.y - 80 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .381, sprite.position.y - IwGxGetScreenHeight() * .25 ); if( trophies[1] == false ) { button[i].Render(); } break; case 4: //button[i].setLocation( sprite.position.x - 190, sprite.position.y + 50 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y + IwGxGetScreenHeight() * .156); if( trophies[2] == false ) { button[i].Render(); } break; case 5: //button[i].setLocation( sprite.position.x + 12, sprite.position.y + 63 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .025, sprite.position.y + IwGxGetScreenHeight() * .197); if( trophies[3] == false ) { button[i].Render(); } break; case 6: //button[i].setLocation( sprite.position.x + 187, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .390, sprite.position.y + IwGxGetScreenHeight() * .141); if( trophies[4] == false ) { button[i].Render(); } break; case 7: //button[i].setLocation( sprite.position.x - 190, sprite.position.y - 75 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y - IwGxGetScreenHeight() * .234); if( trophies[0] == true ) { button[i].Render(); } break; case 8: //button[i].setLocation( sprite.position.x + 183, sprite.position.y - 80 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .381, sprite.position.y - IwGxGetScreenHeight() * .25); if( trophies[1] == true ) { button[i].Render(); } break; case 9: //button[i].setLocation( sprite.position.x - 190, sprite.position.y + 50 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y + IwGxGetScreenHeight() * .156); if( trophies[2] == true ) { button[i].Render(); } break; case 10: //button[i].setLocation( sprite.position.x + 12, sprite.position.y + 63 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .025, sprite.position.y + IwGxGetScreenHeight() * .197); if( trophies[3] == true ) { button[i].Render(); } break; case 11: //button[i].setLocation( sprite.position.x + 187, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .390, sprite.position.y + IwGxGetScreenHeight() * .141); if( trophies[4] == true ) { button[i].Render(); } break; case 12: //button[i].setLocation( sprite.position.x + 187, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * 0, sprite.position.y + IwGxGetScreenHeight() * .381); button[i].Render(); break; } } } // end of if OS is iphone, and rendering trophies else // if OS is NOT iphone, do not render rate trophy, or rate button. In fact, just move them off the screen. { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // RATE BUTTON OFFSET OFF SCREEN //button[i].setLocation( sprite.position.x - 75, sprite.position.y + 122 ); //button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .156, sprite.position.y + IwGxGetScreenHeight() * .381 ); button[i].setLocation( -IwGxGetScreenWidth() * 2, IwGxGetScreenHeight() ); button[i].Render(); break; case 1: // BACK button //button[i].setLocation( sprite.position.x + 97, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .202, sprite.position.y + IwGxGetScreenHeight() * .381); button[i].Render(); break; case 2: // render black trophies //button[i].setLocation( sprite.position.x - 190, sprite.position.y - 75 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y - IwGxGetScreenHeight() * .234); if( trophies[0] == false ) { button[i].Render(); } break; case 3: //button[i].setLocation( sprite.position.x + 183, sprite.position.y - 80 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .381, sprite.position.y - IwGxGetScreenHeight() * .25 ); if( trophies[1] == false ) { button[i].Render(); } break; case 4: // Fuzzy Reviewer Trophy OFFSET OFF SCREEN //button[i].setLocation( sprite.position.x - 190, sprite.position.y + 50 ); //button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y + IwGxGetScreenHeight() * .156); button[i].setLocation( -IwGxGetScreenWidth() * 2, IwGxGetScreenHeight() ); if( trophies[2] == false ) { button[i].Render(); } break; case 5: // Fuzzy 1 mill points shifted to reviewer spot //button[i].setLocation( sprite.position.x + 12, sprite.position.y + 63 ); //button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .025, sprite.position.y + IwGxGetScreenHeight() * .197); button[i].setLocation( sprite.position.x - 190, sprite.position.y + 50 ); if( trophies[3] == false ) { button[i].Render(); } break; case 6: //button[i].setLocation( sprite.position.x + 187, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .390, sprite.position.y + IwGxGetScreenHeight() * .141); if( trophies[4] == false ) { button[i].Render(); } break; case 7: //button[i].setLocation( sprite.position.x - 190, sprite.position.y - 75 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y - IwGxGetScreenHeight() * .234); if( trophies[0] == true ) { button[i].Render(); } break; case 8: //button[i].setLocation( sprite.position.x + 183, sprite.position.y - 80 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .381, sprite.position.y - IwGxGetScreenHeight() * .25); if( trophies[1] == true ) { button[i].Render(); } break; case 9: // Fuzzy Reviewer Trophy OFFSET OFF SCREEN //button[i].setLocation( sprite.position.x - 190, sprite.position.y + 50 ); //button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .396, sprite.position.y + IwGxGetScreenHeight() * .156); button[i].setLocation( -IwGxGetScreenWidth() * 2, IwGxGetScreenHeight() ); if( trophies[2] == true ) { button[i].Render(); } break; case 10: // Fuzzy 1 mill points shifted to reviewer spot //button[i].setLocation( sprite.position.x + 12, sprite.position.y + 63 ); //button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .025, sprite.position.y + IwGxGetScreenHeight() * .197); button[i].setLocation( sprite.position.x - 190, sprite.position.y + 50 ); if( trophies[3] == true ) { button[i].Render(); } break; case 11: //button[i].setLocation( sprite.position.x + 187, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .390, sprite.position.y + IwGxGetScreenHeight() * .141); if( trophies[4] == true ) { button[i].Render(); } break; case 12: //button[i].setLocation( sprite.position.x + 187, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * 0, sprite.position.y + IwGxGetScreenHeight()*.381); button[i].Render(); break; } } } // end of rendering non-iOS versions for trophies and buttons // need to render the current images because fonts are automatically displayed underneath them. IwGxFlush(); // the high score CIwGxFontPreparedData scoreData; char scoreChar[100] = ""; std::ostringstream scoreStringStream; scoreStringStream << highScore; string scoreString = scoreStringStream.str(); strcat( scoreChar, scoreString.c_str() ); // draw the shadow //IwGxFontSetCol(0xffaaffff); IwGxFontSetCol(0xff330000); //IwGxFontSetRect( CIwRect( sprite.position.x - (scoreString.length()/2 * 10), sprite.position.y - 100, 500, 300 ) ); // major glitch here. the size of score affects size of time. vice versa IwGxFontSetRect( CIwRect( sprite.position.x - (scoreString.length()/2 * 10), sprite.position.y - IwGxGetScreenHeight() * .312, 500, 300 ) ); // major glitch here. the size of score affects size of time. vice versa IwGxFontPrepareText( scoreData, scoreChar ); IwGxFontDrawText( scoreData ); // draw the text IwGxFontSetCol(0xff66ffff); //IwGxFontSetRect( CIwRect( sprite.position.x - (scoreString.length()/2 * 10) - 1, sprite.position.y - 100 - 2, 500, 300 ) ); // major glitch here. the size of score affects size of time. vice versa IwGxFontSetRect( CIwRect( sprite.position.x - (scoreString.length()/2 * 10) - IwGxGetScreenWidth()*.002, sprite.position.y - IwGxGetScreenHeight() * .319, 500, 300 ) ); // major glitch here. the size of score affects size of time. vice versa IwGxFontPrepareText( scoreData, scoreChar ); IwGxFontDrawText( scoreData ); // the time played // the high score CIwGxFontPreparedData timeData; char timeChar[100] = ""; std::ostringstream timeStringStream; timeStringStream << timeHours << " hours " << timeMinutes << " minutes " << timeSeconds << " seconds"; string timeString = timeStringStream.str(); strcat( timeChar, timeString.c_str() ); // draw the shadow //IwGxFontSetCol(0xffaaffff); IwGxFontSetCol(0xff330000); //IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 10), sprite.position.y - 15, 400, 300 ) ); if( IwGxGetScreenHeight() >= 640 ) { IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 20), sprite.position.y - IwGxGetScreenHeight() * .047, IwGxGetScreenWidth(), IwGxGetScreenHeight() ) ); } else if( IwGxGetScreenHeight() >= 480 ) { IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 15), sprite.position.y - IwGxGetScreenHeight() * .047, IwGxGetScreenWidth(), IwGxGetScreenHeight() ) ); } else //if( IwGxGetScreenHeight() >= 320 ) { IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 10), sprite.position.y - IwGxGetScreenHeight() * .047, IwGxGetScreenWidth(), IwGxGetScreenHeight() ) ); } IwGxFontPrepareText( timeData, timeChar ); IwGxFontDrawText( timeData ); // draw the text IwGxFontSetCol(0xff66ffff); //IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 10) - 1, sprite.position.y - 15 - 2, 400, 300 ) ); if( IwGxGetScreenHeight() >= 640 ) { IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 20) - IwGxGetScreenWidth()*.002, sprite.position.y - IwGxGetScreenHeight() * .053, IwGxGetScreenWidth(), IwGxGetScreenHeight() ) ); } else if( IwGxGetScreenHeight() >= 480 ) { IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 15) - IwGxGetScreenWidth()*.002, sprite.position.y - IwGxGetScreenHeight() * .053, IwGxGetScreenWidth(), IwGxGetScreenHeight() ) ); } else //if( IwGxGetScreenHeight() >= 320 ) { IwGxFontSetRect( CIwRect( sprite.position.x - (timeString.length()/2 * 10) - IwGxGetScreenWidth()*.002, sprite.position.y - IwGxGetScreenHeight() * .053, IwGxGetScreenWidth(), IwGxGetScreenHeight() ) ); } IwGxFontPrepareText( timeData, timeChar ); IwGxFontDrawText( timeData ); } else if( type == CREDITS ) { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: //button[i].setLocation( sprite.position.x - 75, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .156, sprite.position.y + IwGxGetScreenHeight() * .381 ); break; case 1: //button[i].setLocation( sprite.position.x + 15, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .031, sprite.position.y + IwGxGetScreenHeight() * .381 ); button[i].Render(); // only render back button break; } } } else if( type == TUTORIAL ) { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // the back button //button[i].setLocation( sprite.position.x + 180, sprite.position.y + 122 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .375, sprite.position.y + IwGxGetScreenHeight() * .381); break; case 1: //button[i].setLocation( sprite.position.x - 60, sprite.position.y + 125 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .125, sprite.position.y + IwGxGetScreenHeight() * .390 ); break; case 2: //button[i].setLocation( sprite.position.x + 0, sprite.position.y + 125 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * 0, sprite.position.y + IwGxGetScreenHeight() * .390); break; case 3: //button[i].setLocation( sprite.position.x + 60, sprite.position.y + 125 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .125, sprite.position.y + IwGxGetScreenHeight() * .390); break; } button[i].Render(); } } else if( type == QUIT_CONFIRMATION ) { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // the back button //button[i].setLocation( sprite.position.x - 60, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .125, sprite.position.y + IwGxGetScreenHeight() * .140 ); break; case 1: //button[i].setLocation( sprite.position.x + 60, sprite.position.y + 45 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .125, sprite.position.y + IwGxGetScreenHeight() * .140 ); break; } button[i].Render(); } } else if( type == NEW_STORY_CONFIRMATION ) { for( int i = 0; i < buttonCount; i++ ) { switch( i ) { case 0: // the back button //button[i].setLocation( sprite.position.x - 60, sprite.position.y + 50 ); button[i].setLocation( sprite.position.x - IwGxGetScreenWidth() * .125, sprite.position.y + IwGxGetScreenHeight() * .156 ); break; case 1: //button[i].setLocation( sprite.position.x + 60, sprite.position.y + 50 ); button[i].setLocation( sprite.position.x + IwGxGetScreenWidth() * .125, sprite.position.y + IwGxGetScreenHeight() * .156 ); break; } button[i].Render(); } } }