Files
itgmania212121/stepmania/src/ScreenGraphicOptions.cpp
T
Chris Danford 8549236385 no message
2002-05-20 08:59:37 +00:00

162 lines
4.6 KiB
C++

#include "stdafx.h"
/*
-----------------------------------------------------------------------------
File: ScreenGraphicOptions.cpp
Desc: Select a song.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
-----------------------------------------------------------------------------
*/
#include "ScreenGraphicOptions.h"
#include <assert.h>
#include "RageTextureManager.h"
#include "RageUtil.h"
#include "RageMusic.h"
#include "ScreenManager.h"
#include "PrefsManager.h"
#include "ScreenOptions.h"
#include "ScreenTitleMenu.h"
#include "GameConstantsAndTypes.h"
#include "StepMania.h"
#include "ThemeManager.h"
#include "RageLog.h"
enum {
GO_WINDOWED = 0,
GO_PROFILE,
GO_RESOLUTION,
GO_TEXTURE_SIZE,
GO_DISPLAY_COLOR,
GO_TEXTURE_COLOR,
GO_BACKGROUNDS,
NUM_GRAPHIC_OPTIONS_LINES
};
OptionLineData g_GraphicOptionsLines[NUM_GRAPHIC_OPTIONS_LINES] = {
{ "Mode", 2, {"Fullscreen", "Windowed"} },
{ "Profile", 5, {"Super Low", "Low", "Medium", "High", "Custom (use settings below)"} },
{ "Resolution", 7, {"320", "400", "512", "640", "800", "1024", "1280" } },
{ "Tex. Size", 4, {"256", "512", "1024", "2048"} },
{ "Display", 2, {"16bit", "32bit"} },
{ "Tex. Color", 2, {"16bit", "32bit"} },
};
//const int NUm_SelectedOption_LINES = sizeof(g_GraphicOptionsLines)/sizeof(OptionLine);
ScreenGraphicOptions::ScreenGraphicOptions() :
ScreenOptions(
THEME->GetPathTo(GRAPHIC_GRAPHIC_OPTIONS_BACKGROUND),
THEME->GetPathTo(GRAPHIC_GRAPHIC_OPTIONS_TOP_EDGE)
)
{
LOG->WriteLine( "ScreenGraphicOptions::ScreenGraphicOptions()" );
Init(
INPUTMODE_BOTH,
g_GraphicOptionsLines,
NUM_GRAPHIC_OPTIONS_LINES
);
}
void ScreenGraphicOptions::ImportOptions()
{
GraphicProfileOptions* pGPO = PREFS->GetCustomGraphicProfileOptions();
m_iSelectedOption[0][GO_WINDOWED] = (PREFS->m_bWindowed ? 1:0 );
m_iSelectedOption[0][GO_PROFILE] = PREFS->m_GraphicProfile;
switch( pGPO->m_iWidth )
{
case 320: m_iSelectedOption[0][GO_RESOLUTION] = 0; break;
case 400: m_iSelectedOption[0][GO_RESOLUTION] = 1; break;
case 512: m_iSelectedOption[0][GO_RESOLUTION] = 2; break;
case 640: m_iSelectedOption[0][GO_RESOLUTION] = 3; break;
case 800: m_iSelectedOption[0][GO_RESOLUTION] = 4; break;
case 1024: m_iSelectedOption[0][GO_RESOLUTION] = 5; break;
case 1280: m_iSelectedOption[0][GO_RESOLUTION] = 6; break;
default: m_iSelectedOption[0][GO_RESOLUTION] = 3; break;
}
switch( pGPO->m_iMaxTextureSize )
{
case 256: m_iSelectedOption[0][GO_TEXTURE_SIZE] = 0; break;
case 512: m_iSelectedOption[0][GO_TEXTURE_SIZE] = 1; break;
case 1024: m_iSelectedOption[0][GO_TEXTURE_SIZE] = 2; break;
case 2048: m_iSelectedOption[0][GO_TEXTURE_SIZE] = 3; break;
default: m_iSelectedOption[0][GO_TEXTURE_SIZE] = 1; break;
}
switch( pGPO->m_iDisplayColor )
{
case 16: m_iSelectedOption[0][GO_DISPLAY_COLOR] = 0; break;
case 32: m_iSelectedOption[0][GO_DISPLAY_COLOR] = 1; break;
}
switch( pGPO->m_iTextureColor )
{
case 16: m_iSelectedOption[0][GO_TEXTURE_COLOR] = 0; break;
case 32: m_iSelectedOption[0][GO_TEXTURE_COLOR] = 1; break;
}
}
void ScreenGraphicOptions::ExportOptions()
{
GraphicProfileOptions* pGPO = PREFS->GetCustomGraphicProfileOptions();
PREFS->m_bWindowed = (m_iSelectedOption[0][GO_WINDOWED] == 1);
PREFS->m_GraphicProfile = (GraphicProfile)m_iSelectedOption[0][GO_PROFILE];
switch( m_iSelectedOption[0][GO_RESOLUTION] )
{
case 0: pGPO->m_iWidth = 320; break;
case 1: pGPO->m_iWidth = 400; break;
case 2: pGPO->m_iWidth = 512; break;
case 3: pGPO->m_iWidth = 640; break;
case 4: pGPO->m_iWidth = 800; break;
case 5: pGPO->m_iWidth = 1024; break;
case 6: pGPO->m_iWidth = 1280; break;
default: ASSERT( false );
}
pGPO->m_iHeight = GetHeightFromWidth( pGPO->m_iWidth );
switch( m_iSelectedOption[0][GO_TEXTURE_SIZE] )
{
case 0: pGPO->m_iMaxTextureSize = 256; break;
case 1: pGPO->m_iMaxTextureSize = 512; break;
case 2: pGPO->m_iMaxTextureSize = 1024; break;
case 3: pGPO->m_iMaxTextureSize = 2048; break;
default: ASSERT( false );
}
switch( m_iSelectedOption[0][GO_DISPLAY_COLOR] )
{
case 0: pGPO->m_iDisplayColor = 16; break;
case 1: pGPO->m_iDisplayColor = 32; break;
default: ASSERT( false );
}
switch( m_iSelectedOption[0][GO_TEXTURE_COLOR] )
{
case 0: pGPO->m_iTextureColor = 16; break;
case 1: pGPO->m_iTextureColor = 32; break;
default: ASSERT( false );
}
//
// put the options into effect
//
ApplyGraphicOptions();
}
void ScreenGraphicOptions::GoToPrevState()
{
SCREENMAN->SetNewScreen( new ScreenTitleMenu );
}
void ScreenGraphicOptions::GoToNextState()
{
SCREENMAN->SetNewScreen( new ScreenTitleMenu );
}