aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp178
1 files changed, 178 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp b/Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp
new file mode 100644
index 00000000..66279d1f
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp
@@ -0,0 +1,178 @@
+#include "stdafx.h"
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+#include "XUI_DebugSchematicCreator.h"
+#include "..\..\..\Minecraft.World\ChunkSource.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.level.h"
+
+#ifndef _CONTENT_PACKAGE
+HRESULT CScene_DebugSchematicCreator::OnInit( XUIMessageInit *pInitData, BOOL &bHandled )
+{
+ MapChildControls();
+
+ m_startX .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric);
+ m_startY .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric);
+ m_startZ .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric);
+ m_endX .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric);
+ m_endY .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric);
+ m_endZ .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric);
+
+ m_data = new ConsoleSchematicFile::XboxSchematicInitParam();
+
+ return S_OK;
+}
+
+HRESULT CScene_DebugSchematicCreator::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled)
+{
+ // This assumes all buttons can only be pressed with the A button
+ ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A);
+
+ if ( hObjPressed == m_createButton )
+ {
+ // We want the start to be even
+ if(m_data->startX > 0 && m_data->startX%2 != 0)
+ m_data->startX-=1;
+ else if(m_data->startX < 0 && m_data->startX%2 !=0)
+ m_data->startX-=1;
+ if(m_data->startY < 0) m_data->startY = 0;
+ else if(m_data->startY > 0 && m_data->startY%2 != 0)
+ m_data->startY-=1;
+ if(m_data->startZ > 0 && m_data->startZ%2 != 0)
+ m_data->startZ-=1;
+ else if(m_data->startZ < 0 && m_data->startZ%2 !=0)
+ m_data->startZ-=1;
+
+ // We want the end to be odd to have a total size that is even
+ if(m_data->endX > 0 && m_data->endX%2 == 0)
+ m_data->endX+=1;
+ else if(m_data->endX < 0 && m_data->endX%2 ==0)
+ m_data->endX+=1;
+ if(m_data->endY > Level::maxBuildHeight)
+ m_data->endY = Level::maxBuildHeight;
+ else if(m_data->endY > 0 && m_data->endY%2 == 0)
+ m_data->endY+=1;
+ else if(m_data->endY < 0 && m_data->endY%2 ==0)
+ m_data->endY+=1;
+ if(m_data->endZ > 0 && m_data->endZ%2 == 0)
+ m_data->endZ+=1;
+ else if(m_data->endZ < 0 && m_data->endZ%2 ==0)
+ m_data->endZ+=1;
+
+ wstring value = m_name.GetText();
+ if(!value.empty())
+ {
+ swprintf(m_data->name,64,L"%ls", value.c_str());
+ }
+ else
+ {
+ swprintf(m_data->name,64,L"schematic");
+ }
+
+ m_data->bSaveMobs = m_saveMobs.IsChecked();
+
+#ifdef _XBOX
+ if (m_useXboxCompr.IsChecked())
+ m_data->compressionType = Compression::eCompressionType_LZXRLE;
+ else
+#endif
+ m_data->compressionType = Compression::eCompressionType_RLE;
+
+ app.SetXuiServerAction(ProfileManager.GetPrimaryPad(), eXuiServerAction_ExportSchematic, (void *)m_data);
+
+ NavigateBack();
+ rfHandled = TRUE;
+ }
+ return S_OK;
+}
+
+HRESULT CScene_DebugSchematicCreator::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled)
+{
+ ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
+
+ switch(pInputData->dwKeyCode)
+ {
+
+ case VK_PAD_B:
+ case VK_PAD_START:
+ case VK_PAD_BACK:
+ NavigateBack();
+
+ rfHandled = TRUE;
+
+ break;
+
+ }
+
+ return S_OK;
+}
+
+HRESULT CScene_DebugSchematicCreator::OnNotifyValueChanged( HXUIOBJ hObjSource, XUINotifyValueChanged *pNotifyValueChangedData, BOOL &bHandled)
+{
+ if(hObjSource == m_startX)
+ {
+ int iVal = 0;
+ wstring value = m_startX.GetText();
+ if(!value.empty()) iVal = _fromString<int>( value );
+
+ if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16))
+ {
+ m_data->startX = iVal;
+ }
+ }
+ else if(hObjSource == m_startY)
+ {
+ int iVal = 0;
+ wstring value = m_startY.GetText();
+ if(!value.empty()) iVal = _fromString<int>( value );
+
+ if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16))
+ {
+ m_data->startY = iVal;
+ }
+ }
+ else if(hObjSource == m_startZ)
+ {
+ int iVal = 0;
+ wstring value = m_startZ.GetText();
+ if(!value.empty()) iVal = _fromString<int>( value );
+
+ if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16))
+ {
+ m_data->startZ = iVal;
+ }
+ }
+ else if(hObjSource == m_endX)
+ {
+ int iVal = 0;
+ wstring value = m_endX.GetText();
+ if(!value.empty()) iVal = _fromString<int>( value );
+
+ if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16))
+ {
+ m_data->endX = iVal;
+ }
+ }
+ else if(hObjSource == m_endY)
+ {
+ int iVal = 0;
+ wstring value = m_endY.GetText();
+ if(!value.empty()) iVal = _fromString<int>( value );
+
+ if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16))
+ {
+ m_data->endY = iVal;
+ }
+ }
+ else if(hObjSource == m_endZ)
+ {
+ int iVal = 0;
+ wstring value = m_endZ.GetText();
+ if(!value.empty()) iVal = _fromString<int>( value );
+
+ if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16))
+ {
+ m_data->endZ = iVal;
+ }
+ }
+ return S_OK;
+}
+#endif \ No newline at end of file