the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 251 lines 5.2 kB view raw
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}