Skip to content
3 changes: 2 additions & 1 deletion Minecraft.Client/Common/App_enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ enum eGameSetting
eGameSetting_RenderDistance,
eGameSetting_Gamma,
eGameSetting_FOV,
eGameSetting_GraphicsMode,
eGameSetting_Difficulty,
eGameSetting_Sensitivity_InGame,
eGameSetting_Sensitivity_InMenu,
Expand Down Expand Up @@ -948,4 +949,4 @@ enum eMCLang

eMCLang_hans,
eMCLang_hant,
};
};
2 changes: 1 addition & 1 deletion Minecraft.Client/Common/App_structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ typedef struct
unsigned char ucSoundFXVolume;
unsigned char ucSensitivity;
unsigned char ucGamma;
unsigned char ucPad01; // 1 byte of padding inserted here
unsigned char ucGraphicsMode;
unsigned short usBitmaskValues; // bit 0,1 - difficulty
// bit 2 - view bob
// bit 3 - player visible in a map
Expand Down
40 changes: 40 additions & 0 deletions Minecraft.Client/Common/Consoles_App.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -838,6 +838,7 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
SetGameSettings(iPad,eGameSetting_Gamma,50);
SetGameSettings(iPad,eGameSetting_FOV,0);
SetGameSettings(iPad,eGameSetting_GraphicsMode,1);

// 4J-PB - Don't reset the difficult level if we're in-game
if(Minecraft::GetInstance()->level==nullptr)
Expand Down Expand Up @@ -1334,6 +1335,7 @@ void CMinecraftApp::ApplyGameSettingsChanged(int iPad)
ActionGameSettings(iPad,eGameSetting_RenderDistance );
ActionGameSettings(iPad,eGameSetting_Gamma );
ActionGameSettings(iPad,eGameSetting_FOV );
ActionGameSettings(iPad,eGameSetting_GraphicsMode );
ActionGameSettings(iPad,eGameSetting_Difficulty );
ActionGameSettings(iPad,eGameSetting_Sensitivity_InGame );
ActionGameSettings(iPad,eGameSetting_ViewBob );
Expand Down Expand Up @@ -1390,6 +1392,30 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
pMinecraft->options->set(Options::Option::RENDER_DISTANCE, 3 - level);
};
break;
case eGameSetting_GraphicsMode:
if(iPad == ProfileManager.GetPrimaryPad())
{
int graphicsLevel = GameSettingsA[iPad]->ucGraphicsMode;

if (graphicsLevel == 0) {
pMinecraft->options->set(Options::Option::GRAPHICS, false);
pMinecraft->options->set(Options::Option::AMBIENT_OCCLUSION, false);
pMinecraft->options->set(Options::Option::PARTICLES, 2);
}
else if (graphicsLevel == 1) {
pMinecraft->options->set(Options::Option::GRAPHICS, false);
pMinecraft->options->set(Options::Option::AMBIENT_OCCLUSION, true);
if (graphicsLevel == 0) pMinecraft->options->set(Options::Option::PARTICLES, 1);
}
else {
pMinecraft->options->set(Options::Option::GRAPHICS, true);
pMinecraft->options->set(Options::Option::AMBIENT_OCCLUSION, true);
if (graphicsLevel == 0) pMinecraft->options->set(Options::Option::PARTICLES, 0);
}
if (pMinecraft && pMinecraft->levelRenderer && pMinecraft->level)
pMinecraft->levelRenderer->allChanged();
}
break;
case eGameSetting_Gamma:
if(iPad==ProfileManager.GetPrimaryPad())
{
Expand Down Expand Up @@ -1868,6 +1894,17 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
GameSettingsA[iPad]->bSettingsChanged = true;
}
break;
case eGameSetting_GraphicsMode:
if(GameSettingsA[iPad]->ucGraphicsMode != ucVal)
{
GameSettingsA[iPad]->ucGraphicsMode = ucVal;
if(iPad == ProfileManager.GetPrimaryPad())
{
ActionGameSettings(iPad, eVal);
}
GameSettingsA[iPad]->bSettingsChanged = true;
}
break;
case eGameSetting_Gamma:
if(GameSettingsA[iPad]->ucGamma!=ucVal)
{
Expand Down Expand Up @@ -2334,6 +2371,9 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
return val;
break;
}
case eGameSetting_GraphicsMode:
return GameSettingsA[iPad]->ucGraphicsMode;
break;
case eGameSetting_Gamma:
return GameSettingsA[iPad]->ucGamma;
break;
Expand Down
Binary file modified Minecraft.Client/Common/Media/MediaWindows64.arc
Binary file not shown.
Binary file modified Minecraft.Client/Common/Media/SettingsGraphicsMenu1080.swf
Binary file not shown.
Binary file modified Minecraft.Client/Common/Media/SettingsGraphicsMenu480.swf
Binary file not shown.
Binary file modified Minecraft.Client/Common/Media/SettingsGraphicsMenu720.swf
Binary file not shown.
27 changes: 26 additions & 1 deletion Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,18 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD

swprintf(TempString, 256, L"Render Distance: %d",app.GetGameSettings(m_iPad,eGameSetting_RenderDistance));
m_sliderRenderDistance.init(TempString,eControl_RenderDistance,0,5,DistanceToLevel(app.GetGameSettings(m_iPad,eGameSetting_RenderDistance)));


int currentGraphics = app.GetGameSettings(m_iPad, eGameSetting_GraphicsMode);

const wchar_t* graphicsText = L"";
if (currentGraphics == 0) graphicsText = L"Graphics: Potato";
else if (currentGraphics == 1) graphicsText = L"Graphics: Fast";
else graphicsText = L"Graphics: Fancy";

swprintf(TempString, 256, L"%ls", graphicsText);

m_sliderGraphicsMode.init(TempString, eControl_GraphicsMode, 0, 2, currentGraphics);

swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),app.GetGameSettings(m_iPad,eGameSetting_Gamma));
m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma));

Expand Down Expand Up @@ -205,7 +216,21 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal
m_sliderRenderDistance.setLabel(TempString);
}
break;
case eControl_GraphicsMode:
{
m_sliderGraphicsMode.handleSliderMove(value);

app.SetGameSettings(m_iPad, eGameSetting_GraphicsMode, value);

const wchar_t* modeName = L"Potato";
if (value == 1) modeName = L"Fast";
else if (value == 2) modeName = L"Fancy";

swprintf(TempString, 256, L"Graphics: %ls", modeName);

m_sliderGraphicsMode.setLabel(TempString);
}
break;
case eControl_Gamma:
m_sliderGamma.handleSliderMove(value);

Expand Down
8 changes: 5 additions & 3 deletions Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ class UIScene_SettingsGraphicsMenu : public UIScene
eControl_RenderDistance,
eControl_Gamma,
eControl_FOV,
eControl_InterfaceOpacity
eControl_InterfaceOpacity,
eControl_GraphicsMode
};

UIControl_CheckBox m_checkboxClouds, m_checkboxBedrockFog, m_checkboxCustomSkinAnim; // Checkboxes
UIControl_Slider m_sliderRenderDistance, m_sliderGamma, m_sliderFOV, m_sliderInterfaceOpacity; // Sliders
UIControl_Slider m_sliderRenderDistance, m_sliderGamma, m_sliderFOV, m_sliderInterfaceOpacity, m_sliderGraphicsMode; // Sliders
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxClouds, "Clouds")
UI_MAP_ELEMENT( m_checkboxBedrockFog, "BedrockFog")
Expand All @@ -28,6 +29,7 @@ class UIScene_SettingsGraphicsMenu : public UIScene
UI_MAP_ELEMENT( m_sliderGamma, "Gamma")
UI_MAP_ELEMENT(m_sliderFOV, "FOV")
UI_MAP_ELEMENT( m_sliderInterfaceOpacity, "InterfaceOpacity")
UI_MAP_ELEMENT( m_sliderGraphicsMode, "GraphicsMode")
UI_END_MAP_ELEMENTS_AND_NAMES()

bool m_bNotInGame;
Expand All @@ -53,4 +55,4 @@ class UIScene_SettingsGraphicsMenu : public UIScene
static int LevelToDistance(int dist);

static int DistanceToLevel(int dist);
};
};
2 changes: 1 addition & 1 deletion Minecraft.Client/GameRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1524,7 +1524,7 @@ void GameRenderer::renderLevel(float a, int64_t until)
// 4J - have changed this fancy rendering option to work with our command buffers. The original used to use frame buffer flags to disable
// writing to colour when doing the z-only pass, but that value gets obliterated by our command buffers. Using alpha blend function instead
// to achieve the same effect.
if (true) // (mc->options->fancyGraphics)
if (mc->options->fancyGraphics)
{
if (mc->options->ambientOcclusion)
{
Expand Down
12 changes: 11 additions & 1 deletion Minecraft.Client/Options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ void Options::init()
anaglyph3d = false;
advancedOpengl = false;
framerateLimit = 0;
fancyGraphics = true;
fancyGraphics = false;
ambientOcclusion = true;
renderClouds = true;
skin = L"Default";
Expand Down Expand Up @@ -242,6 +242,14 @@ void Options::set(const Options::Option *item, float fVal)
{
viewDistance = fVal;
}
if (item == Option::GRAPHICS)
{
fancyGraphics = fVal;
}
if (item == Option::AMBIENT_OCCLUSION)
{
ambientOcclusion = fVal;
}
}

void Options::toggle(const Options::Option *option, int dir)
Expand Down Expand Up @@ -297,6 +305,8 @@ float Options::getProgressValue(const Options::Option *item)
if (item == Option::SOUND) return sound;
if (item == Option::SENSITIVITY) return sensitivity;
if (item == Option::RENDER_DISTANCE) return viewDistance;
if (item == Option::GRAPHICS) return fancyGraphics;
if (item == Option::AMBIENT_OCCLUSION) return ambientOcclusion;
return 0;
}

Expand Down
2 changes: 1 addition & 1 deletion Minecraft.Client/TileRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "EntityTileRenderer.h"
#include "Options.h"

bool TileRenderer::fancy = true;
bool TileRenderer::fancy = false;

const float smallUV = ( 1.0f / 16.0f );

Expand Down