the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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