mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-05-25 13:33:51 +00:00
Create initial mob caps option
This commit is contained in:
parent
70458e410f
commit
069759196d
12 changed files with 168 additions and 35 deletions
|
|
@ -45,9 +45,11 @@
|
|||
#define GAME_HOST_OPTION_BITMASK_DOTILEDROPS 0x08000000
|
||||
#define GAME_HOST_OPTION_BITMASK_NATURALREGEN 0x10000000
|
||||
#define GAME_HOST_OPTION_BITMASK_DODAYLIGHTCYCLE 0x20000000
|
||||
#define GAME_HOST_OPTION_BITMASK_WORLDMOBCAP 0xC0000000 // 2 bits, 4 values (small(0), medium(1), large(2), unlimited(3))
|
||||
#define GAME_HOST_OPTION_BITMASK_ALL 0xFFFFFFFF
|
||||
|
||||
#define GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT 20
|
||||
#define GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT 20
|
||||
#define GAME_HOST_OPTION_BITMASK_WORLDMOBCAP_BITSHIFT 28 // Set to this value as there is no other remaining space
|
||||
|
||||
enum EGameHostOptionWorldSize
|
||||
{
|
||||
|
|
|
|||
|
|
@ -636,6 +636,7 @@ enum eGameHostOption
|
|||
eGameHostOption_BedrockFog,
|
||||
eGameHostOption_NoHUD,
|
||||
eGameHostOption_WorldSize,
|
||||
eGameHostOption_WorldMobCap,
|
||||
eGameHostOption_All,
|
||||
|
||||
eGameHostOption_DisableSaving,
|
||||
|
|
|
|||
|
|
@ -8067,10 +8067,15 @@ void CMinecraftApp::SetGameHostOption(unsigned int &uiHostSettings, eGameHostOpt
|
|||
}
|
||||
break;
|
||||
case eGameHostOption_WorldSize:
|
||||
// clear the difficulty first
|
||||
// Clear the original value first
|
||||
uiHostSettings&=~GAME_HOST_OPTION_BITMASK_WORLDSIZE;
|
||||
uiHostSettings|=(GAME_HOST_OPTION_BITMASK_WORLDSIZE & (uiVal<<GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT));
|
||||
break;
|
||||
case eGameHostOption_WorldMobCap:
|
||||
// Clear the original value first
|
||||
uiHostSettings&=~GAME_HOST_OPTION_BITMASK_WORLDMOBCAP;
|
||||
uiHostSettings|=(GAME_HOST_OPTION_BITMASK_WORLDMOBCAP & (uiVal<<GAME_HOST_OPTION_BITMASK_WORLDMOBCAP_BITSHIFT));
|
||||
break;
|
||||
case eGameHostOption_All:
|
||||
uiHostSettings=uiVal;
|
||||
break;
|
||||
|
|
@ -8157,6 +8162,8 @@ unsigned int CMinecraftApp::GetGameHostOption(unsigned int uiHostSettings, eGame
|
|||
return (uiHostSettings&GAME_HOST_OPTION_BITMASK_NOTOWNER);
|
||||
case eGameHostOption_WorldSize:
|
||||
return (uiHostSettings&GAME_HOST_OPTION_BITMASK_WORLDSIZE) >> GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT;
|
||||
case eGameHostOption_WorldMobCap:
|
||||
return (uiHostSettings&GAME_HOST_OPTION_BITMASK_WORLDMOBCAP) >> GAME_HOST_OPTION_BITMASK_WORLDMOBCAP_BITSHIFT;
|
||||
case eGameHostOption_MobGriefing:
|
||||
return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_MOBGRIEFING);
|
||||
case eGameHostOption_KeepInventory:
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#include "..\..\..\Minecraft.World\BiomeSource.h"
|
||||
#include "..\..\..\Minecraft.World\IntCache.h"
|
||||
#include "..\..\..\Minecraft.World\LevelType.h"
|
||||
#include "..\..\..\Minecraft.World\MobCategory.h"
|
||||
#include "..\..\DLCTexturePack.h"
|
||||
|
||||
#ifdef __PSVITA__
|
||||
|
|
@ -1213,6 +1214,10 @@ void UIScene_CreateWorldMenu::CreateGame(UIScene_CreateWorldMenu* pClass, DWORD
|
|||
pClass->m_MoreOptionsParams.currentWorldSize = (EGameHostOptionWorldSize)(pClass->m_MoreOptionsParams.worldSize+1);
|
||||
pClass->m_MoreOptionsParams.newWorldSize = (EGameHostOptionWorldSize)(pClass->m_MoreOptionsParams.worldSize+1);
|
||||
#endif
|
||||
app.SetGameHostOption(eGameHostOption_WorldMobCap, pClass->m_MoreOptionsParams.worldMobCap );
|
||||
|
||||
// Use helper to update the caps based on what was set earlier
|
||||
MobCategory::updateMobCaps(pClass->m_MoreOptionsParams.worldMobCap);
|
||||
|
||||
g_NetworkManager.HostGame(dwLocalUsersMask,isClientSide,isPrivate,MINECRAFT_NET_MAX_PLAYERS,0);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,14 @@ int m_iWorldSizeTitleA[4] =
|
|||
};
|
||||
#endif
|
||||
|
||||
string m_iWorldMobCapTitleA[4] =
|
||||
{
|
||||
"Small",
|
||||
"Medium",
|
||||
"Large",
|
||||
"Unlimited"
|
||||
};
|
||||
|
||||
UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
|
||||
{
|
||||
// Setup all the Iggy references we need for this scene
|
||||
|
|
@ -132,6 +140,10 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
|
|||
|
||||
m_tabIndex = m_params->bGenerateOptions ? TAB_WORLD_OPTIONS : TAB_GAME_OPTIONS;
|
||||
|
||||
|
||||
// Introduce a mob cap slider for large worlds. If there were a better solution for this it would be nice...
|
||||
m_sliderWorldMobCap.init(UIString::UIString("Mob Cap Size: " + m_iWorldMobCapTitleA[m_params->worldMobCap]),eControl_WorldMobCap,0,3,m_params->worldMobCap);
|
||||
|
||||
// set the default text
|
||||
#ifdef _LARGE_WORLDS
|
||||
wstring wsText=L"";
|
||||
|
|
@ -663,6 +675,11 @@ void UIScene_LaunchMoreOptionsMenu::handleSliderMove(F64 sliderId, F64 currentVa
|
|||
}
|
||||
#endif
|
||||
break;
|
||||
case eControl_WorldMobCap:
|
||||
m_sliderWorldMobCap.handleSliderMove(value);
|
||||
m_params->worldMobCap = value;
|
||||
m_sliderWorldMobCap.setLabel(UIString::UIString("Mob Cap Size: " + m_iWorldMobCapTitleA[m_params->worldMobCap]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ private:
|
|||
eControl_EditSeed,
|
||||
eControl_WorldSize,
|
||||
eControl_WorldResize,
|
||||
eControl_WorldMobCap,
|
||||
|
||||
eControl_Count
|
||||
};
|
||||
|
|
@ -61,6 +62,8 @@ private:
|
|||
UIControl_TextInput m_editSeed;
|
||||
UIControl_Slider m_sliderWorldSize;
|
||||
UIControl_Slider m_sliderWorldResize;
|
||||
UIControl_Label m_labelWorldMobCap; // Added ~ Mob cap label for user control
|
||||
UIControl_Slider m_sliderWorldMobCap;
|
||||
IggyName m_funcSetMenuType, m_funcChangeTab, m_funcSetDescription;
|
||||
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
|
||||
UI_MAP_ELEMENT( m_labelGameOptions, "LabelGame")
|
||||
|
|
@ -99,6 +102,8 @@ private:
|
|||
UI_MAP_ELEMENT( m_labelRandomSeed, "RandomSeed")
|
||||
UI_MAP_ELEMENT( m_labelWorldSize, "WorldSize")
|
||||
UI_MAP_ELEMENT( m_sliderWorldSize, "WorldSizeSlider")
|
||||
UI_MAP_ELEMENT( m_labelWorldMobCap, "WorldMobCap")
|
||||
UI_MAP_ELEMENT( m_sliderWorldMobCap, "WorldMobCapSlider")
|
||||
|
||||
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Structures], "CheckboxStructures")
|
||||
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_BonusChest], "CheckboxBonusChest")
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include "..\..\MinecraftServer.h"
|
||||
#include "..\..\..\Minecraft.World\LevelSettings.h"
|
||||
#include "..\..\..\Minecraft.World\StringHelpers.h"
|
||||
#include "..\..\..\Minecraft.World\MobCategory.h"
|
||||
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
|
||||
#include "Common\Network\Sony\SonyHttp.h"
|
||||
#endif
|
||||
|
|
@ -479,6 +480,8 @@ void UIScene_LoadMenu::tick()
|
|||
m_MoreOptionsParams.bDisableSaving = app.GetGameHostOption(uiHostOptions,eGameHostOption_DisableSaving)>0?TRUE:FALSE;
|
||||
m_MoreOptionsParams.currentWorldSize = (EGameHostOptionWorldSize)app.GetGameHostOption(uiHostOptions,eGameHostOption_WorldSize);
|
||||
m_MoreOptionsParams.newWorldSize = m_MoreOptionsParams.currentWorldSize;
|
||||
// Load world mob cap option
|
||||
m_MoreOptionsParams.worldMobCap = app.GetGameHostOption(uiHostOptions,eGameHostOption_WorldMobCap);
|
||||
|
||||
m_MoreOptionsParams.bMobGriefing = app.GetGameHostOption(uiHostOptions, eGameHostOption_MobGriefing);
|
||||
m_MoreOptionsParams.bKeepInventory = app.GetGameHostOption(uiHostOptions, eGameHostOption_KeepInventory);
|
||||
|
|
@ -1616,6 +1619,10 @@ void UIScene_LoadMenu::StartGameFromSave(UIScene_LoadMenu* pClass, DWORD dwLocal
|
|||
#ifdef _LARGE_WORLDS
|
||||
app.SetGameHostOption(eGameHostOption_WorldSize, pClass->m_MoreOptionsParams.worldSize+1 ); // 0 is GAME_HOST_OPTION_WORLDSIZE_UNKNOWN
|
||||
#endif
|
||||
app.SetGameHostOption(eGameHostOption_WorldMobCap, pClass->m_MoreOptionsParams.worldMobCap );
|
||||
|
||||
// Use helper to update the caps based on what was set earlier
|
||||
MobCategory::updateMobCaps(pClass->m_MoreOptionsParams.worldMobCap);
|
||||
// app.SetGameNewWorldSize(64, true );
|
||||
// app.SetGameNewWorldSize(0, false );
|
||||
|
||||
|
|
|
|||
|
|
@ -356,6 +356,7 @@ typedef struct _LaunchMoreOptionsMenuInitData
|
|||
|
||||
wstring seed;
|
||||
int worldSize;
|
||||
int worldMobCap;
|
||||
bool bDisableSaving;
|
||||
|
||||
EGameHostOptionWorldSize currentWorldSize;
|
||||
|
|
@ -372,6 +373,7 @@ typedef struct _LaunchMoreOptionsMenuInitData
|
|||
bTNT = true;
|
||||
iPad = -1;
|
||||
worldSize = 3;
|
||||
worldMobCap = 0;
|
||||
seed = L"";
|
||||
bDisableSaving = false;
|
||||
newWorldSize = e_worldSize_Unknown;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue