first commit
This commit is contained in:
178
Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp
Normal file
178
Minecraft.Client/Common/XUI/XUI_DebugSchematicCreator.cpp
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user