the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 216 lines 5.8 kB view raw
1#include "stdafx.h" 2 3#ifdef _DEBUG_MENUS_ENABLED 4#include "UI.h" 5#include "UIScene_DebugCreateSchematic.h" 6#include "Minecraft.h" 7#include "..\..\..\Minecraft.World\StringHelpers.h" 8#include "..\..\..\Minecraft.World\net.minecraft.world.level.h" 9 10UIScene_DebugCreateSchematic::UIScene_DebugCreateSchematic(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) 11{ 12 // Setup all the Iggy references we need for this scene 13 initialiseMovie(); 14 15 m_labelTitle.init(L"Name"); 16 m_labelStartX.init(L"StartX"); 17 m_labelStartY.init(L"StartY"); 18 m_labelStartZ.init(L"StartZ"); 19 m_labelEndX.init(L"EndX"); 20 m_labelEndY.init(L"EndY"); 21 m_labelEndZ.init(L"EndZ"); 22 23 m_textInputStartX.init(L"",eControl_StartX); 24 m_textInputStartY.init(L"",eControl_StartY); 25 m_textInputStartZ.init(L"",eControl_StartZ); 26 m_textInputEndX.init(L"",eControl_EndX); 27 m_textInputEndY.init(L"",eControl_EndY); 28 m_textInputEndZ.init(L"",eControl_EndZ); 29 m_textInputName.init(L"",eControl_Name); 30 31 m_checkboxSaveMobs.init(L"Save Mobs", eControl_SaveMobs,false); 32 m_checkboxUseCompression.init(L"Use Compression", eControl_UseCompression, false); 33 34 m_buttonCreate.init(L"Create",eControl_Create); 35 36 m_data = new ConsoleSchematicFile::XboxSchematicInitParam(); 37} 38 39wstring UIScene_DebugCreateSchematic::getMoviePath() 40{ 41 return L"DebugCreateSchematic"; 42} 43 44void UIScene_DebugCreateSchematic::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) 45{ 46 ui.AnimateKeyPress(iPad, key, repeat, pressed, released); 47 48 switch(key) 49 { 50 case ACTION_MENU_CANCEL: 51 if(pressed) 52 { 53 navigateBack(); 54 } 55 break; 56 case ACTION_MENU_OK: 57 case ACTION_MENU_UP: 58 case ACTION_MENU_DOWN: 59 case ACTION_MENU_PAGEUP: 60 case ACTION_MENU_PAGEDOWN: 61 case ACTION_MENU_LEFT: 62 case ACTION_MENU_RIGHT: 63 sendInputToMovie(key, repeat, pressed, released); 64 break; 65 } 66} 67 68void UIScene_DebugCreateSchematic::handlePress(F64 controlId, F64 childId) 69{ 70 switch((int)controlId) 71 { 72 case eControl_Create: 73 { 74 // We want the start to be even 75 if(m_data->startX > 0 && m_data->startX%2 != 0) 76 m_data->startX-=1; 77 else if(m_data->startX < 0 && m_data->startX%2 !=0) 78 m_data->startX-=1; 79 if(m_data->startY < 0) m_data->startY = 0; 80 else if(m_data->startY > 0 && m_data->startY%2 != 0) 81 m_data->startY-=1; 82 if(m_data->startZ > 0 && m_data->startZ%2 != 0) 83 m_data->startZ-=1; 84 else if(m_data->startZ < 0 && m_data->startZ%2 !=0) 85 m_data->startZ-=1; 86 87 // We want the end to be odd to have a total size that is even 88 if(m_data->endX > 0 && m_data->endX%2 == 0) 89 m_data->endX+=1; 90 else if(m_data->endX < 0 && m_data->endX%2 ==0) 91 m_data->endX+=1; 92 if(m_data->endY > Level::maxBuildHeight) 93 m_data->endY = Level::maxBuildHeight; 94 else if(m_data->endY > 0 && m_data->endY%2 == 0) 95 m_data->endY+=1; 96 else if(m_data->endY < 0 && m_data->endY%2 ==0) 97 m_data->endY+=1; 98 if(m_data->endZ > 0 && m_data->endZ%2 == 0) 99 m_data->endZ+=1; 100 else if(m_data->endZ < 0 && m_data->endZ%2 ==0) 101 m_data->endZ+=1; 102 103 app.SetXuiServerAction(ProfileManager.GetPrimaryPad(), eXuiServerAction_ExportSchematic, (void *)m_data); 104 105 navigateBack(); 106 } 107 break; 108 case eControl_Name: 109 case eControl_StartX: 110 case eControl_StartY: 111 case eControl_StartZ: 112 case eControl_EndX: 113 case eControl_EndY: 114 case eControl_EndZ: 115 m_keyboardCallbackControl = (eControls)((int)controlId); 116 InputManager.RequestKeyboard(L"Enter something",L"",(DWORD)0,25,&UIScene_DebugCreateSchematic::KeyboardCompleteCallback,this,C_4JInput::EKeyboardMode_Default); 117 break; 118 }; 119} 120 121void UIScene_DebugCreateSchematic::handleCheckboxToggled(F64 controlId, bool selected) 122{ 123 switch((int)controlId) 124 { 125 case eControl_SaveMobs: 126 m_data->bSaveMobs = selected; 127 break; 128 case eControl_UseCompression: 129 if (selected) 130 m_data->compressionType = APPROPRIATE_COMPRESSION_TYPE; 131 else 132 m_data->compressionType = Compression::eCompressionType_RLE; 133 break; 134 } 135} 136 137int UIScene_DebugCreateSchematic::KeyboardCompleteCallback(LPVOID lpParam,bool bRes) 138{ 139 UIScene_DebugCreateSchematic *pClass=(UIScene_DebugCreateSchematic *)lpParam; 140 141 uint16_t pchText[128]; 142 ZeroMemory(pchText, 128 * sizeof(uint16_t) ); 143 InputManager.GetText(pchText); 144 145 if(pchText[0]!=0) 146 { 147 wstring value = (wchar_t *)pchText; 148 int iVal = 0; 149 if(!value.empty()) iVal = _fromString<int>( value ); 150 switch(pClass->m_keyboardCallbackControl) 151 { 152 case eControl_Name: 153 pClass->m_textInputName.setLabel(value); 154 if(!value.empty()) 155 { 156 swprintf(pClass->m_data->name,64,L"%ls", value.c_str()); 157 } 158 else 159 { 160 swprintf(pClass->m_data->name,64,L"schematic"); 161 } 162 break; 163 case eControl_StartX: 164 pClass->m_textInputStartX.setLabel(value); 165 166 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 167 { 168 pClass->m_data->startX = iVal; 169 } 170 break; 171 case eControl_StartY: 172 pClass->m_textInputStartY.setLabel(value); 173 174 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 175 { 176 pClass->m_data->startY = iVal; 177 } 178 break; 179 case eControl_StartZ: 180 pClass->m_textInputStartZ.setLabel(value); 181 182 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 183 { 184 pClass->m_data->startZ = iVal; 185 } 186 break; 187 case eControl_EndX: 188 pClass->m_textInputEndX.setLabel(value); 189 190 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 191 { 192 pClass->m_data->endX = iVal; 193 } 194 break; 195 case eControl_EndY: 196 pClass->m_textInputEndY.setLabel(value); 197 198 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 199 { 200 pClass->m_data->endY = iVal; 201 } 202 break; 203 case eControl_EndZ: 204 pClass->m_textInputEndZ.setLabel(value); 205 206 if( iVal >= (LEVEL_MAX_WIDTH * -16) || iVal < (LEVEL_MAX_WIDTH * 16)) 207 { 208 pClass->m_data->endZ = iVal; 209 } 210 break; 211 } 212 } 213 214 return 0; 215} 216#endif