the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 508 lines 17 kB view raw
1// Minecraft.cpp : Defines the entry point for the application. 2// 3 4#include "stdafx.h" 5#include "..\XUI\XUI_SettingsOptions.h" 6 7int CScene_SettingsOptions::m_iDifficultySettingA[4]= 8{ 9 IDS_DIFFICULTY_PEACEFUL, 10 IDS_DIFFICULTY_EASY, 11 IDS_DIFFICULTY_NORMAL, 12 IDS_DIFFICULTY_HARD 13}; 14 15int CScene_SettingsOptions::m_iDifficultyTitleSettingA[4]= 16{ 17 IDS_DIFFICULTY_TITLE_PEACEFUL, 18 IDS_DIFFICULTY_TITLE_EASY, 19 IDS_DIFFICULTY_TITLE_NORMAL, 20 IDS_DIFFICULTY_TITLE_HARD 21}; 22 23//---------------------------------------------------------------------------------- 24// Performs initialization tasks - retrieves controls. 25//---------------------------------------------------------------------------------- 26HRESULT CScene_SettingsOptions::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) 27{ 28 WCHAR TempString[256]; 29 m_iPad=*(int *)pInitData->pvInitData; 30 // if we're not in the game, we need to use basescene 0 31 bool bNotInGame=(Minecraft::GetInstance()->level==NULL); 32 bool bPrimaryPlayer = ProfileManager.GetPrimaryPad()==m_iPad; 33 34 MapChildControls(); 35 36 XuiControlSetText(m_ViewBob,app.GetString(IDS_VIEW_BOBBING)); 37 XuiControlSetText(m_Hints,app.GetString(IDS_HINTS)); 38 XuiControlSetText(m_Tooltips,app.GetString(IDS_IN_GAME_TOOLTIPS)); 39 XuiControlSetText(m_InGameGamertags,app.GetString(IDS_IN_GAME_GAMERTAGS)); 40 XuiControlSetText(m_MashUpWorlds,app.GetString(IDS_UNHIDE_MASHUP_WORLDS)); 41 42 // check if we should display the mash-up option 43 if(bNotInGame && app.GetMashupPackWorlds(m_iPad)!=0xFFFFFFFF) 44 { 45 // the mash-up option is needed 46 m_bMashUpWorldsUnhideOption=true; 47 m_MashUpWorlds.SetShow(TRUE); 48 } 49 else 50 { 51 m_bMashUpWorldsUnhideOption=false; 52 m_MashUpWorlds.SetShow(FALSE); 53 } 54 55 // Display the tooltips 56 HRESULT hr = S_OK; 57 HXUIOBJ hSlider; 58 59 unsigned char ucValue=app.GetGameSettings(m_iPad,eGameSetting_Autosave); 60 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].SetValue(ucValue); 61 if(ucValue==0) 62 { 63 swprintf( (WCHAR *)TempString, 256, L"%ls", app.GetString( IDS_SLIDER_AUTOSAVE_OFF )); 64 } 65 else 66 { 67 swprintf( (WCHAR *)TempString, 256, L"%ls: %d %ls", app.GetString( IDS_SLIDER_AUTOSAVE ),ucValue*15, app.GetString( IDS_MINUTES )); 68 } 69 70 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].SetText(TempString); 71 72 73 m_ViewBob.SetCheck( (app.GetGameSettings(m_iPad,eGameSetting_ViewBob)!=0)?TRUE:FALSE); 74 m_InGameGamertags.SetCheck( (app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0)?TRUE:FALSE); 75 m_Hints.SetCheck( (app.GetGameSettings(m_iPad,eGameSetting_Hints)!=0)?TRUE:FALSE); 76 m_Tooltips.SetCheck( (app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0)?TRUE:FALSE); 77 78 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].SetValue(app.GetGameSettings(m_iPad,eGameSetting_Difficulty)); 79 swprintf( (WCHAR *)TempString, 256, L"%ls: %ls", app.GetString( IDS_SLIDER_DIFFICULTY ),app.GetString(m_iDifficultyTitleSettingA[app.GetGameSettings(m_iPad,eGameSetting_Difficulty)])); 80 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].SetText(TempString); 81 82 83 wstring wsText=app.GetString(m_iDifficultySettingA[app.GetGameSettings(m_iPad,eGameSetting_Difficulty)]); 84 int size = 14; 85 if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) 86 { 87 size = 12; 88 } 89 wchar_t startTags[64]; 90 swprintf(startTags,64,L"<font color=\"#%08x\" size=%d>",app.GetHTMLColour(eHTMLColor_White),size); 91 wsText= startTags + wsText; 92 93 m_DifficultyText.SetText(wsText.c_str()); 94 95 96 // If you are in-game, only the game host can change in-game gamertags, and you can't change difficulty 97 // only the primary player gets to change the autosave and difficulty settings 98 99 bool bRemoveDifficulty=false; 100 bool bRemoveAutosave=false; 101 bool bRemoveInGameGamertags=false; 102 float fRemoveHeight=0.0f,fWidth,fHeight; 103 float fSlidersMoveUp=0.0f; 104 105 if(!bPrimaryPlayer) 106 { 107 bRemoveDifficulty=true; 108 bRemoveAutosave=true; 109 bRemoveInGameGamertags=true; 110 } 111 112 if(!bNotInGame) // in the game 113 { 114 bRemoveDifficulty=true; 115 if(!g_NetworkManager.IsHost()) 116 { 117 bRemoveAutosave=true; 118 bRemoveInGameGamertags=true; 119 } 120 } 121 122 D3DXVECTOR3 vec1,vec2; 123 XuiElementGetPosition(m_ViewBob,&vec1); 124 XuiElementGetPosition(m_Hints,&vec2); 125 126 float fCheckboxHeight=vec2.y-vec1.y; 127 128 if(bRemoveDifficulty) 129 { 130 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].SetEnable(FALSE); 131 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].SetShow(FALSE); 132 m_DifficultyText.SetShow(FALSE); 133 hr=XuiElementGetChildById(m_SliderA[SLIDER_SETTINGS_DIFFICULTY].m_hObj,L"XuiSlider",&hSlider); 134 XuiElementSetShow(hSlider,FALSE); 135 XuiControlSetEnable(hSlider,FALSE); 136 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].GetBounds(&fWidth,&fHeight); 137 fRemoveHeight+=fHeight+4.0f; // add padding 138 } 139 else 140 { 141 wstring wsText=app.GetString(m_iDifficultySettingA[app.GetGameSettings(m_iPad,eGameSetting_Difficulty)]); 142 int size = 14; 143 if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) 144 { 145 size = 12; 146 } 147 wchar_t startTags[64]; 148 swprintf(startTags,64,L"<font color=\"#%08x\" size=%d>",app.GetHTMLColour(eHTMLColor_White),size); 149 wsText= startTags + wsText; 150 151 m_DifficultyText.SetText(wsText.c_str()); 152 } 153 154 if(bRemoveAutosave) 155 { 156 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].SetEnable(FALSE); 157 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].SetShow(FALSE); 158 hr=XuiElementGetChildById(m_SliderA[SLIDER_SETTINGS_AUTOSAVE].m_hObj,L"XuiSlider",&hSlider); 159 XuiElementSetShow(hSlider,FALSE); 160 XuiControlSetEnable(hSlider,FALSE); 161 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].GetBounds(&fWidth,&fHeight); 162 fRemoveHeight+=fHeight+4.0f; // add padding 163 } 164 165 if(bRemoveInGameGamertags) 166 { 167 m_InGameGamertags.SetShow(FALSE); 168 m_InGameGamertags.SetEnable(FALSE); 169 m_InGameGamertags.GetBounds(&fWidth, &fHeight); 170 171 // move the mash-up worlds option up 172 if(m_bMashUpWorldsUnhideOption) 173 { 174 D3DXVECTOR3 vec; 175 XuiElementGetPosition(m_InGameGamertags,&vec); 176 m_MashUpWorlds.SetPosition(&vec); 177 } 178 fRemoveHeight+=fCheckboxHeight;//fHeight+4.0f; // add padding 179 fSlidersMoveUp+=fCheckboxHeight; 180 } 181 182 if(!m_bMashUpWorldsUnhideOption) 183 { 184 m_MashUpWorlds.SetShow(FALSE); 185 m_MashUpWorlds.SetEnable(FALSE); 186 m_MashUpWorlds.GetBounds(&fWidth, &fHeight); 187 fRemoveHeight+=fCheckboxHeight; 188 fSlidersMoveUp+=fCheckboxHeight; 189 } 190 191 192 if(fRemoveHeight>0.0f) 193 { 194 D3DXVECTOR3 vec; 195 // autosave should move up by the height of the number of checkboxes hidden 196 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].GetPosition(&vec); 197 vec.y-=fSlidersMoveUp; 198 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].SetPosition(&vec); 199 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].GetPosition(&vec); 200 vec.y-=fSlidersMoveUp; 201 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].SetPosition(&vec); 202 m_DifficultyText.GetPosition(&vec); 203 vec.y-=fSlidersMoveUp; 204 m_DifficultyText.SetPosition(&vec); 205 206 float fbgnWidth, fBgnHeight; 207 GetBounds(&fbgnWidth, &fBgnHeight); 208 fBgnHeight-=fRemoveHeight; 209 SetBounds(fbgnWidth, fBgnHeight); 210 } 211 212 // if we're not in the game, we need to use basescene 0 213 if(bNotInGame) 214 { 215 ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK); 216 CXuiSceneBase::ShowBackground( DEFAULT_XUI_MENU_USER, TRUE ); 217 } 218 else 219 { 220 ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK); 221 CXuiSceneBase::ShowBackground( m_iPad, FALSE ); 222 } 223 224 if(app.GetLocalPlayerCount()>1) 225 { 226 app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); 227 CXuiSceneBase::ShowLogo( m_iPad, FALSE ); 228 } 229 else 230 { 231 if(bNotInGame) 232 { 233 // can't show the logo for 480 mode 234 if(!RenderManager.IsHiDef()) 235 { 236 CXuiSceneBase::ShowLogo( DEFAULT_XUI_MENU_USER, FALSE ); 237 } 238 else 239 { 240 CXuiSceneBase::ShowLogo( DEFAULT_XUI_MENU_USER, TRUE ); 241 } 242 } 243 else 244 { 245 // can't show the logo for 480 mode 246 if(!RenderManager.IsHiDef()) 247 { 248 CXuiSceneBase::ShowLogo( m_iPad, FALSE ); 249 } 250 else 251 { 252 CXuiSceneBase::ShowLogo( m_iPad, TRUE ); 253 } 254 } 255 } 256 257 return S_OK; 258} 259 260HRESULT CScene_SettingsOptions::OnNotifyValueChanged( HXUIOBJ hObjSource, XUINotifyValueChanged* pNotifyValueChanged, BOOL& bHandled ) 261{ 262 WCHAR TempString[256]; 263 264 if(hObjSource==m_SliderA[SLIDER_SETTINGS_AUTOSAVE].GetSlider() ) 265 { 266 app.SetGameSettings(m_iPad,eGameSetting_Autosave,pNotifyValueChanged->nValue); 267 // Update the autosave timer 268 app.SetAutosaveTimerTime(); 269 270 if(pNotifyValueChanged->nValue==0) 271 { 272 swprintf( (WCHAR *)TempString, 256, L"%ls", app.GetString( IDS_SLIDER_AUTOSAVE_OFF )); 273 } 274 else 275 { 276 app.SetAutosaveTimerTime(); 277 swprintf( (WCHAR *)TempString, 256, L"%ls: %d %ls", app.GetString( IDS_SLIDER_AUTOSAVE ),pNotifyValueChanged->nValue*15, app.GetString( IDS_MINUTES )); 278 } 279 m_SliderA[SLIDER_SETTINGS_AUTOSAVE].SetText(TempString); 280 } 281 else if(hObjSource==m_SliderA[SLIDER_SETTINGS_DIFFICULTY].GetSlider() ) 282 { 283 app.SetGameSettings(m_iPad,eGameSetting_Difficulty,pNotifyValueChanged->nValue); 284 swprintf( (WCHAR *)TempString, 256, L"%ls: %ls", app.GetString( IDS_SLIDER_DIFFICULTY ),app.GetString(m_iDifficultyTitleSettingA[pNotifyValueChanged->nValue])); 285 m_SliderA[SLIDER_SETTINGS_DIFFICULTY].SetText(TempString); 286 287 wstring wsText=app.GetString(m_iDifficultySettingA[pNotifyValueChanged->nValue]); 288 int size = 14; 289 if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) 290 { 291 size = 12; 292 } 293 wchar_t startTags[64]; 294 swprintf(startTags,64,L"<font color=\"#%08x\" size=%d>",app.GetHTMLColour(eHTMLColor_White),size); 295 wsText= startTags + wsText; 296 m_DifficultyText.SetText(wsText.c_str()); 297 } 298 return S_OK; 299} 300 301 302HRESULT CScene_SettingsOptions::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled) 303{ 304 ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode); 305 306 HRESULT hr=S_OK; 307 308 // Explicitly handle B button presses 309 switch(pInputData->dwKeyCode) 310 { 311 case VK_PAD_B: 312 case VK_ESCAPE: 313 // if the profile data has been changed, then force a profile write 314 // It seems we're allowed to break the 5 minute rule if it's the result of a user action 315 316 // check the checkboxes 317 app.SetGameSettings(m_iPad,eGameSetting_ViewBob,m_ViewBob.IsChecked()?1:0); 318 app.SetGameSettings(m_iPad,eGameSetting_GamertagsVisible,m_InGameGamertags.IsChecked()?1:0); 319 app.SetGameSettings(m_iPad,eGameSetting_Hints,m_Hints.IsChecked()?1:0); 320 app.SetGameSettings(m_iPad,eGameSetting_Tooltips,m_Tooltips.IsChecked()?1:0); 321 322 // the mashup option will only be shown if some worlds have been previously hidden 323 if(m_bMashUpWorldsUnhideOption && m_MashUpWorlds.IsChecked()) 324 { 325 // unhide all worlds 326 app.EnableMashupPackWorlds(m_iPad); 327 } 328 329 // 4J-PB - don't action changes here or we might write to the profile on backing out here and then get a change in the settings all, and write again on backing out there 330 //app.CheckGameSettingsChanged(true,pInputData->UserIndex); 331 332 app.NavigateBack(pInputData->UserIndex); 333 rfHandled = TRUE; 334 break; 335 } 336 337 return hr; 338} 339 340//---------------------------------------------------------------------------------- 341// Handler for the button press message. 342//---------------------------------------------------------------------------------- 343HRESULT CScene_SettingsOptions::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled) 344{ 345 // This assumes all buttons can only be pressed with the A button 346 ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A); 347 348 return S_OK; 349} 350 351HRESULT CScene_SettingsOptions::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) 352{ 353 // added so we can skip greyed out items 354 pControlNavigateData->hObjDest=XuiControlGetNavigation(pControlNavigateData->hObjSource,pControlNavigateData->nControlNavigate,TRUE,TRUE); 355 356 if(pControlNavigateData->hObjDest!=NULL) 357 { 358 bHandled=TRUE; 359 } 360 361 return S_OK; 362} 363 364HRESULT CScene_SettingsOptions::OnTransitionStart( XUIMessageTransition *pTransition, BOOL& bHandled ) 365{ 366 HRESULT hr; 367 WCHAR TempString[256]; 368 369 if(pTransition->dwTransAction==XUI_TRANSITION_ACTION_DESTROY ) return S_OK; 370 371 if(pTransition->dwTransType == XUI_TRANSITION_TO || pTransition->dwTransType == XUI_TRANSITION_BACKTO) 372 { 373 374 // 4J-PB - Going to resize buttons if the text is too big to fit on any of them (Br-pt problem with the length of Unlock Full Game) 375 376 float fMaxTextLen=0.0f; 377 float fMaxLen=0.0f; 378 379 380 // sliders first 381 HXUIOBJ hSlider,hVisual,hText,hCheckboxText; 382 XUIRect xuiRect; 383 float fWidth,fHeight;//,fTemp; 384 D3DXVECTOR3 vec,vSlider,vecCheckboxText,vecCheckbox; 385 386 // don't display values on these - we handle that 387 for(int i=0;i<OPTIONS_SLIDER_SETTINGS_MAX;i++) 388 { 389 m_SliderA[i].SetValueDisplay(FALSE); 390 } 391 392 393 hr=XuiElementGetChildById(m_SliderA[SLIDER_SETTINGS_AUTOSAVE].m_hObj,L"XuiSlider",&hSlider); 394 hr=XuiControlGetVisual(hSlider,&hVisual); 395 hr=XuiElementGetChildById(hVisual,L"text_Label",&hText); 396 hr=XuiControlGetVisual(m_InGameGamertags.m_hObj,&hVisual); 397 hr=XuiElementGetChildById(hVisual,L"text_Button",&hCheckboxText); 398 hr=XuiElementGetPosition(hCheckboxText,&vecCheckboxText); 399 hr=XuiElementGetPosition(m_InGameGamertags.m_hObj,&vecCheckbox); 400 hr=XuiElementGetPosition(m_SliderA[SLIDER_SETTINGS_AUTOSAVE].m_hObj,&vSlider); 401 402 403 for(int i=0;i<OPTIONS_SLIDER_SETTINGS_MAX;i++) 404 { 405 switch(i) 406 { 407 case SLIDER_SETTINGS_AUTOSAVE: // 3 digits 408 swprintf( (WCHAR *)TempString, 256, L"%ls: %d %ls", app.GetString( IDS_SLIDER_AUTOSAVE ),999, app.GetString( IDS_MINUTES )); 409 break; 410 case SLIDER_SETTINGS_DIFFICULTY: // 3 digits 411 swprintf( (WCHAR *)TempString, 256, L"%ls: %ls", app.GetString( IDS_SLIDER_DIFFICULTY ),app.GetString(IDS_DIFFICULTY_TITLE_PEACEFUL)); 412 break; 413 } 414 415 //LPCWSTR temp=m_SliderA[i].GetText(); 416 hr=XuiTextPresenterMeasureText(hText, TempString, &xuiRect); 417 // 4J-PB - the text measuring doesn't seem to be long enough - add a fudge 418 xuiRect.right+=25.0f; 419 m_SliderA[i].GetBounds(&fWidth,&fHeight); 420 if(xuiRect.right>fMaxTextLen) fMaxTextLen=xuiRect.right; 421 if(fWidth>fMaxLen) fMaxLen=fWidth; 422 } 423 424 // now the VisibleOnMaps checkbox - let's just use the visual we already have... 425 hr=XuiTextPresenterMeasureText(hCheckboxText, m_InGameGamertags.GetText(), &xuiRect); 426 m_InGameGamertags.GetBounds(&fWidth,&fHeight); 427 // need to add the size of the checkbox graphic 428 if((xuiRect.right+vecCheckbox.x+vecCheckboxText.x)>fMaxTextLen) fMaxTextLen=xuiRect.right+vecCheckbox.x+vecCheckboxText.x; 429 if(fWidth>fMaxLen) fMaxLen=fWidth; 430 431 // now the m_Hints checkbox - let's just use the visual we already have... 432 hr=XuiTextPresenterMeasureText(hCheckboxText, m_Hints.GetText(), &xuiRect); 433 m_Hints.GetBounds(&fWidth,&fHeight); 434 // need to add the size of the checkbox graphic 435 if((xuiRect.right+vecCheckbox.x+vecCheckboxText.x)>fMaxTextLen) fMaxTextLen=xuiRect.right+vecCheckbox.x+vecCheckboxText.x; 436 if(fWidth>fMaxLen) fMaxLen=fWidth; 437 438 // now the m_Tooltips checkbox - let's just use the visual we already have... 439 hr=XuiTextPresenterMeasureText(hCheckboxText, m_Tooltips.GetText(), &xuiRect); 440 m_Tooltips.GetBounds(&fWidth,&fHeight); 441 // need to add the size of the checkbox graphic 442 if((xuiRect.right+vecCheckbox.x+vecCheckboxText.x)>fMaxTextLen) fMaxTextLen=xuiRect.right+vecCheckbox.x+vecCheckboxText.x; 443 if(fWidth>fMaxLen) fMaxLen=fWidth; 444 445 if(fMaxLen<fMaxTextLen) 446 { 447 float fWidth; 448 XuiElementGetPosition(m_hObj,&vec); 449 XuiElementGetBounds(m_hObj,&fWidth,&fHeight); 450 451 // need to centre the scene now the size has changed 452 if((!RenderManager.IsHiDef() && !RenderManager.IsWidescreen()) || app.GetLocalPlayerCount()>1) 453 { 454 // scene width needs to be more that the text width on buttons 455 fWidth=vSlider.x; 456 vec.x=floorf((640.0f-(fMaxTextLen+fWidth))/2.0f); 457 XuiElementSetPosition(m_hObj,&vec); 458 XuiElementSetBounds(m_hObj,fMaxTextLen+(fWidth*2.0f),fHeight); 459 } 460 else 461 { 462 fWidth=vSlider.x; 463 vec.x=floorf((1280.0f-(fMaxTextLen+fWidth))/2.0f); 464 XuiElementSetPosition(m_hObj,&vec); 465 XuiElementSetBounds(m_hObj,fMaxTextLen+(fWidth*2.0f),fHeight); 466 } 467 // Need to refresh the scenes visual since the object size has now changed 468 XuiControlAttachVisual(m_hObj); 469 470 bool bNotInGame=(Minecraft::GetInstance()->level==NULL); 471 472 if(bNotInGame) 473 { 474 float fDiffTextW; 475 // reposition the difficulty text - this is positioned from the scene, so will be a negative value 476 m_DifficultyText.GetPosition(&vec); 477 m_DifficultyText.GetBounds(&fDiffTextW,&fHeight); 478 vec.x=floor((fMaxTextLen+(fWidth*2.0f)-fDiffTextW)/2.0f); 479 m_DifficultyText.SetPosition(&vec); 480 } 481 482 // centre is vec.x+(fWidth/2) 483 //for(int i=0;i<OPTIONS_SLIDER_SETTINGS_MAX;i++) 484 //{ 485 // hr=XuiElementGetChildById(m_SliderA[i].m_hObj,L"XuiSlider",&hSlider); 486 // XuiElementGetPosition(hSlider,&vec); 487 // XuiElementGetBounds(hSlider,&fTemp,&fHeight); 488 // XuiElementSetBounds(hSlider,fMaxTextLen,fHeight); 489 //} 490 491 // the checkboxes are left aligned - put them at the same position as the sliders 492 m_ViewBob.SetBounds(fMaxTextLen,fHeight); 493 m_InGameGamertags.SetBounds(fMaxTextLen,fHeight); 494 m_Hints.SetBounds(fMaxTextLen,fHeight); 495 m_Tooltips.SetBounds(fMaxTextLen,fHeight); 496 497 } 498 } 499 500 return S_OK; 501} 502 503 504HRESULT CScene_SettingsOptions::OnCustomMessage_Splitscreenplayer(bool bJoining, BOOL& bHandled) 505{ 506 bHandled=true; 507 return app.AdjustSplitscreenScene_PlayerChanged(m_hObj,&m_OriginalPosition,m_iPad,bJoining); 508}