the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 178 lines 4.7 kB view raw
1#include "stdafx.h" 2#include "..\..\..\Minecraft.World\StringHelpers.h" 3#include "XUI_DebugSchematicCreator.h" 4#include "..\..\..\Minecraft.World\ChunkSource.h" 5#include "..\..\..\Minecraft.World\net.minecraft.world.level.h" 6 7#ifndef _CONTENT_PACKAGE 8HRESULT CScene_DebugSchematicCreator::OnInit( XUIMessageInit *pInitData, BOOL &bHandled ) 9{ 10 MapChildControls(); 11 12 m_startX .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric); 13 m_startY .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric); 14 m_startZ .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric); 15 m_endX .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric); 16 m_endY .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric); 17 m_endZ .SetKeyboardType(C_4JInput::EKeyboardMode_Numeric); 18 19 m_data = new ConsoleSchematicFile::XboxSchematicInitParam(); 20 21 return S_OK; 22} 23 24HRESULT CScene_DebugSchematicCreator::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled) 25{ 26 // This assumes all buttons can only be pressed with the A button 27 ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A); 28 29 if ( hObjPressed == m_createButton ) 30 { 31 // We want the start to be even 32 if(m_data->startX > 0 && m_data->startX%2 != 0) 33 m_data->startX-=1; 34 else if(m_data->startX < 0 && m_data->startX%2 !=0) 35 m_data->startX-=1; 36 if(m_data->startY < 0) m_data->startY = 0; 37 else if(m_data->startY > 0 && m_data->startY%2 != 0) 38 m_data->startY-=1; 39 if(m_data->startZ > 0 && m_data->startZ%2 != 0) 40 m_data->startZ-=1; 41 else if(m_data->startZ < 0 && m_data->startZ%2 !=0) 42 m_data->startZ-=1; 43 44 // We want the end to be odd to have a total size that is even 45 if(m_data->endX > 0 && m_data->endX%2 == 0) 46 m_data->endX+=1; 47 else if(m_data->endX < 0 && m_data->endX%2 ==0) 48 m_data->endX+=1; 49 if(m_data->endY > Level::maxBuildHeight) 50 m_data->endY = Level::maxBuildHeight; 51 else if(m_data->endY > 0 && m_data->endY%2 == 0) 52 m_data->endY+=1; 53 else if(m_data->endY < 0 && m_data->endY%2 ==0) 54 m_data->endY+=1; 55 if(m_data->endZ > 0 && m_data->endZ%2 == 0) 56 m_data->endZ+=1; 57 else if(m_data->endZ < 0 && m_data->endZ%2 ==0) 58 m_data->endZ+=1; 59 60 wstring value = m_name.GetText(); 61 if(!value.empty()) 62 { 63 swprintf(m_data->name,64,L"%ls", value.c_str()); 64 } 65 else 66 { 67 swprintf(m_data->name,64,L"schematic"); 68 } 69 70 m_data->bSaveMobs = m_saveMobs.IsChecked(); 71 72#ifdef _XBOX 73 if (m_useXboxCompr.IsChecked()) 74 m_data->compressionType = Compression::eCompressionType_LZXRLE; 75 else 76#endif 77 m_data->compressionType = Compression::eCompressionType_RLE; 78 79 app.SetXuiServerAction(ProfileManager.GetPrimaryPad(), eXuiServerAction_ExportSchematic, (void *)m_data); 80 81 NavigateBack(); 82 rfHandled = TRUE; 83 } 84 return S_OK; 85} 86 87HRESULT CScene_DebugSchematicCreator::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled) 88{ 89 ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode); 90 91 switch(pInputData->dwKeyCode) 92 { 93 94 case VK_PAD_B: 95 case VK_PAD_START: 96 case VK_PAD_BACK: 97 NavigateBack(); 98 99 rfHandled = TRUE; 100 101 break; 102 103 } 104 105 return S_OK; 106} 107 108HRESULT CScene_DebugSchematicCreator::OnNotifyValueChanged( HXUIOBJ hObjSource, XUINotifyValueChanged *pNotifyValueChangedData, BOOL &bHandled) 109{ 110 if(hObjSource == m_startX) 111 { 112 int iVal = 0; 113 wstring value = m_startX.GetText(); 114 if(!value.empty()) iVal = _fromString<int>( value ); 115 116 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 117 { 118 m_data->startX = iVal; 119 } 120 } 121 else if(hObjSource == m_startY) 122 { 123 int iVal = 0; 124 wstring value = m_startY.GetText(); 125 if(!value.empty()) iVal = _fromString<int>( value ); 126 127 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 128 { 129 m_data->startY = iVal; 130 } 131 } 132 else if(hObjSource == m_startZ) 133 { 134 int iVal = 0; 135 wstring value = m_startZ.GetText(); 136 if(!value.empty()) iVal = _fromString<int>( value ); 137 138 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 139 { 140 m_data->startZ = iVal; 141 } 142 } 143 else if(hObjSource == m_endX) 144 { 145 int iVal = 0; 146 wstring value = m_endX.GetText(); 147 if(!value.empty()) iVal = _fromString<int>( value ); 148 149 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 150 { 151 m_data->endX = iVal; 152 } 153 } 154 else if(hObjSource == m_endY) 155 { 156 int iVal = 0; 157 wstring value = m_endY.GetText(); 158 if(!value.empty()) iVal = _fromString<int>( value ); 159 160 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 161 { 162 m_data->endY = iVal; 163 } 164 } 165 else if(hObjSource == m_endZ) 166 { 167 int iVal = 0; 168 wstring value = m_endZ.GetText(); 169 if(!value.empty()) iVal = _fromString<int>( value ); 170 171 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 172 { 173 m_data->endZ = iVal; 174 } 175 } 176 return S_OK; 177} 178#endif