the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "IUIScene_HorseInventoryMenu.h"
3#include "..\..\..\Minecraft.World\net.minecraft.world.entity.animal.h"
4
5IUIScene_AbstractContainerMenu::ESceneSection IUIScene_HorseInventoryMenu::GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY )
6{
7 ESceneSection newSection = eSection;
8
9 int xOffset = 0;
10 int yOffset = 0;
11
12 // Find the new section if there is one
13 switch( eSection )
14 {
15 case eSectionHorseUsing:
16 if(eTapDirection == eTapStateDown)
17 {
18 if(m_horse->isChestedHorse() && *piTargetX >= 4)
19 {
20 newSection = eSectionHorseChest;
21 xOffset = 4;
22 }
23 else
24 {
25 newSection = eSectionHorseSaddle;
26 }
27 }
28 else if(eTapDirection == eTapStateUp)
29 {
30 newSection = eSectionHorseInventory;
31 }
32 break;
33 case eSectionHorseInventory:
34 if(eTapDirection == eTapStateDown)
35 {
36 newSection = eSectionHorseUsing;
37 }
38 else if(eTapDirection == eTapStateUp)
39 {
40 if(m_horse->isChestedHorse() && *piTargetX >= 4)
41 {
42 xOffset = 4;
43 newSection = eSectionHorseChest;
44 }
45 else if(m_horse->canWearArmor())
46 {
47 newSection = eSectionHorseArmor;
48 }
49 else
50 {
51 newSection = eSectionHorseSaddle;
52 }
53 }
54 break;
55 case eSectionHorseChest:
56 if(eTapDirection == eTapStateDown)
57 {
58 xOffset = -4;
59 newSection = eSectionHorseInventory;
60 }
61 else if(eTapDirection == eTapStateUp)
62 {
63 xOffset = -4;
64 newSection = eSectionHorseUsing;
65 }
66 else if(eTapDirection == eTapStateLeft)
67 {
68 if(*piTargetX < 0)
69 {
70 if(m_horse->canWearArmor() && *piTargetY == 1)
71 {
72 newSection = eSectionHorseArmor;
73 }
74 else if( *piTargetY == 0)
75 {
76 newSection = eSectionHorseSaddle;
77 }
78 }
79 }
80 else if(eTapDirection == eTapStateRight)
81 {
82 if(*piTargetX >= getSectionColumns(eSectionHorseChest))
83 {
84 if(m_horse->canWearArmor() && *piTargetY == 1)
85 {
86 newSection = eSectionHorseArmor;
87 }
88 else if( *piTargetY == 0)
89 {
90 newSection = eSectionHorseSaddle;
91 }
92 }
93 }
94 break;
95 case eSectionHorseArmor:
96 if(eTapDirection == eTapStateDown)
97 {
98 if(m_horse->isChestedHorse())
99 {
100 newSection = eSectionHorseChest;
101 }
102 else
103 {
104 newSection = eSectionHorseInventory;
105 }
106 }
107 else if(eTapDirection == eTapStateUp)
108 {
109 newSection = eSectionHorseSaddle;
110 }
111 else if(eTapDirection == eTapStateRight)
112 {
113 if(m_horse->isChestedHorse())
114 {
115 yOffset = -1;
116 *piTargetX = 0;
117 newSection = eSectionHorseChest;
118 }
119 }
120 else if(eTapDirection == eTapStateLeft)
121 {
122 if(m_horse->isChestedHorse())
123 {
124 yOffset = -1;
125 *piTargetX = getSectionColumns(eSectionHorseChest);
126 newSection = eSectionHorseChest;
127 }
128 }
129 break;
130 case eSectionHorseSaddle:
131 if(eTapDirection == eTapStateDown)
132 {
133 if(m_horse->canWearArmor())
134 {
135 newSection = eSectionHorseArmor;
136 }
137 else
138 {
139 newSection = eSectionHorseInventory;
140 }
141 }
142 else if(eTapDirection == eTapStateUp)
143 {
144 newSection = eSectionHorseUsing;
145 }
146 else if(eTapDirection == eTapStateRight)
147 {
148 if(m_horse->isChestedHorse())
149 {
150 *piTargetX = 0;
151 newSection = eSectionHorseChest;
152 }
153 }
154 else if(eTapDirection == eTapStateLeft)
155 {
156 if(m_horse->isChestedHorse())
157 {
158 *piTargetX = getSectionColumns(eSectionHorseChest);
159 newSection = eSectionHorseChest;
160 }
161 }
162 break;
163 default:
164 assert(false);
165 break;
166 }
167
168 updateSlotPosition(eSection, newSection, eTapDirection, piTargetX, piTargetY, xOffset, yOffset);
169
170 return newSection;
171}
172
173// TODO: Offset will vary by type of horse, add in once horse menu and horse entity are implemented
174int IUIScene_HorseInventoryMenu::getSectionStartOffset(ESceneSection eSection)
175{
176 int offset = 0;
177 switch( eSection )
178 {
179 case eSectionHorseSaddle:
180 offset = EntityHorse::INV_SLOT_SADDLE;
181 break;
182 case eSectionHorseArmor:
183 offset = EntityHorse::INV_SLOT_ARMOR;
184 break;
185 case eSectionHorseChest:
186 offset = EntityHorse::INV_BASE_COUNT;
187 break;
188 case eSectionHorseInventory:
189 offset = EntityHorse::INV_BASE_COUNT;
190 if(m_horse->isChestedHorse())
191 {
192 offset += EntityHorse::INV_DONKEY_CHEST_COUNT;
193 }
194 break;
195 case eSectionHorseUsing:
196 offset = EntityHorse::INV_BASE_COUNT + 27;
197 if(m_horse->isChestedHorse())
198 {
199 offset += EntityHorse::INV_DONKEY_CHEST_COUNT;
200 }
201 break;
202 default:
203 assert( false );
204 break;
205 }
206 return offset;
207}
208
209bool IUIScene_HorseInventoryMenu::IsSectionSlotList( ESceneSection eSection )
210{
211 switch( eSection )
212 {
213 case eSectionHorseChest:
214 if(!m_horse->isChestedHorse())
215 return false;
216 else
217 return true;
218 case eSectionHorseArmor:
219 if(!m_horse->canWearArmor())
220 return false;
221 else
222 return true;
223 case eSectionHorseSaddle:
224 case eSectionHorseInventory:
225 case eSectionHorseUsing:
226 return true;
227 }
228 return false;
229}
230
231bool IUIScene_HorseInventoryMenu::IsVisible( ESceneSection eSection )
232{
233 switch( eSection )
234 {
235 case eSectionHorseChest:
236 if(!m_horse->isChestedHorse())
237 return false;
238 else
239 return true;
240 case eSectionHorseArmor:
241 if(!m_horse->canWearArmor())
242 return false;
243 else
244 return true;
245 case eSectionHorseSaddle:
246 case eSectionHorseInventory:
247 case eSectionHorseUsing:
248 return true;
249 }
250 return false;
251}