@ -54,10 +54,11 @@ void Menu::InitializeCharacterMenuWindow(){
vf2d windowSize = game - > GetScreenSize ( ) - vf2d { 52 , 52 } ;
Menu * characterMenuWindow = CreateMenu ( CHARACTER_MENU , CENTERED , windowSize ) ;
MenuLabel * characterLabel = NEW MenuLabel ( CHARACTER_MENU , { { 0 , 4 } , { float ( windowSize . x ) - 1 , 24 } } , " Character " , 2 , ComponentAttr : : SHADOW | ComponentAttr : : OUTLINE | ComponentAttr : : BACKGROUND ) ;
MenuLabel * characterLabel = NEW MenuLabel ( CHARACTER_MENU , { { 0 , - 4 } , { float ( windowSize . x ) - 1 , 24 } } , " Character " , 2 , ComponentAttr : : SHADOW | ComponentAttr : : OUTLINE | ComponentAttr : : BACKGROUND ) ;
characterLabel - > decal = true ;
MenuComponent * equipSlotOutline = NEW MenuComponent ( CHARACTER_MENU , { { 0 , 36 } , { 120 , windowSize . y - 37 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
CharacterRotatingDisplay * charDisplay = NEW CharacterRotatingDisplay ( CHARACTER_MENU , { { 135 , 36 } , { 90 , windowSize . y - 37 } } , GFX [ classutils : : GetClassInfo ( game - > GetPlayer ( ) - > GetClassName ( ) ) . classFullImgName ] . Decal ( ) ) ;
MenuComponent * equipSlotOutline = NEW MenuComponent ( CHARACTER_MENU , { { 0 , 28 } , { 120 , windowSize . y - 37 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
CharacterRotatingDisplay * charDisplay = NEW CharacterRotatingDisplay ( CHARACTER_MENU , { { 135 , 28 } , { 90 , windowSize . y - 37 } } , GFX [ classutils : : GetClassInfo ( game - > GetPlayer ( ) - > GetClassName ( ) ) . classFullImgName ] . Decal ( ) ) ;
characterMenuWindow - > AddComponent ( " Character Label " , characterLabel ) ;
characterMenuWindow - > AddComponent ( " Equip Slot Outline " , equipSlotOutline ) ;
@ -73,10 +74,10 @@ void Menu::InitializeCharacterMenuWindow(){
ItemAttribute : : critDmgPct ,
} ;
MenuComponent * equipSelectionOutline = NEW MenuComponent ( CHARACTER_MENU , { { 123 , 36 } , { 120 , windowSize . y - 37 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
ScrollableWindowComponent * equipmentList = NEW ScrollableWindowComponent ( CHARACTER_MENU , { { 123 , 36 } , { 120 , windowSize . y - 37 - 24 } } ) ;
MenuComponent * equipSelectionBottomOutline = NEW MenuComponent ( CHARACTER_MENU , { { 123 , 36 + ( windowSize . y - 37 - 24 ) } , { 120 , 24 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
MenuComponent * equipSelectionSelectButton = NEW MenuComponent ( CHARACTER_MENU , { { 123 + 12 , 36 + ( windowSize . y - 37 - 24 ) + 6 } , { 96 , 12 } } , " Select " , [ ] ( MenuFuncData data ) {
MenuComponent * equipSelectionOutline = NEW MenuComponent ( CHARACTER_MENU , { { 123 , 28 } , { 120 , windowSize . y - 37 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
ScrollableWindowComponent * equipmentList = NEW ScrollableWindowComponent ( CHARACTER_MENU , { { 123 , 28 } , { 120 , windowSize . y - 37 - 24 } } ) ;
MenuComponent * equipSelectionBottomOutline = NEW MenuComponent ( CHARACTER_MENU , { { 123 , 28 + ( windowSize . y - 37 - 24 ) } , { 120 , 24 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
MenuComponent * equipSelectionSelectButton = NEW MenuComponent ( CHARACTER_MENU , { { 123 + 12 , 28 + ( windowSize . y - 37 - 24 ) + 6 } , { 96 , 12 } } , " Select " , [ ] ( MenuFuncData data ) {
Component < MenuComponent > ( data . component - > parentMenu , " Equip Selection Outline " ) - > Enable ( false ) ;
Component < ScrollableWindowComponent > ( data . component - > parentMenu , " Equip List " ) - > Enable ( false ) ;
Component < MenuComponent > ( data . component - > parentMenu , " Equip Selection Bottom Outline " ) - > Enable ( false ) ;
@ -122,7 +123,7 @@ void Menu::InitializeCharacterMenuWindow(){
const static std : : array < std : : string , 8 > slotNames { " Helmet " , " Weapon " , " Armor " , " Gloves " , " Pants " , " Shoes " , " Ring 1 " , " Ring 2 " } ;
EquipSlot slot = EquipSlot ( equipSlot ) ;
EquipSlotButton * equipmentSlot = NEW EquipSlotButton ( CHARACTER_MENU , { { x , y + 36 } , { 24 , 24 } } , slot , MenuType : : ENUM_END ,
EquipSlotButton * equipmentSlot = NEW EquipSlotButton ( CHARACTER_MENU , { { x , y + 28 } , { 24 , 24 } } , slot , MenuType : : ENUM_END ,
[ & ] ( MenuFuncData data ) {
EquipSlot slot = EquipSlot ( data . component - > I ( Attribute : : EQUIP_TYPE ) ) ;
@ -200,7 +201,7 @@ void Menu::InitializeCharacterMenuWindow(){
Component < CharacterRotatingDisplay > ( data . component - > parentMenu , " Character Rotating Display " ) - > Enable ( false ) ;
return true ;
} , DO_NOTHING , DO_NOTHING ) ;
PopupMenuLabel * equipmentLabel = NEW PopupMenuLabel ( CHARACTER_MENU , { { labelX , labelY } , { 29 , 24 } } , slotNames [ i ] , { 0.5 , 1 } , ComponentAttr : : SHADOW ) ;
PopupMenuLabel * equipmentLabel = NEW PopupMenuLabel ( CHARACTER_MENU , { { labelX , labelY } , { 29 , 16 } } , slotNames [ i ] , { 0.5 , 1 } , ComponentAttr : : SHADOW ) ;
equipmentSlot - > I ( Attribute : : EQUIP_TYPE ) = int ( slot ) ;
equipmentSlot - > I ( Attribute : : INDEXED_THEME ) = i ;
equipmentSlot - > SetShowQuantity ( false ) ;
@ -210,17 +211,21 @@ void Menu::InitializeCharacterMenuWindow(){
Menu : : AddEquipStatListener ( equipmentSlot ) ;
}
MenuComponent * statDisplayOutline = NEW MenuComponent ( CHARACTER_MENU , { { 245 , 36 } , { 62 , windowSize . y - 37 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
MenuComponent * statDisplayOutline = NEW MenuComponent ( CHARACTER_MENU , { { 245 , 28 } , { 62 , windowSize . y - 37 } } , " " , DO_NOTHING , ButtonAttr : : UNSELECTABLE ) ;
characterMenuWindow - > AddComponent ( " Stat Display Outline " , statDisplayOutline ) ;
int yOffset = 0 ;
for ( ItemAttribute attribute : displayAttrs ) {
std : : string attrStr = GetLabelText ( attribute ) ;
StatLabel * attrLabel = NEW StatLabel ( CHARACTER_MENU , { { 245 , 36 + 2 + float ( yOffset ) } , { 62 , 18 } } , attribute , 1 , ComponentAttr : : SHADOW | ComponentAttr : : LEFT_ALIGN ) ;
StatLabel * attrLabel = NEW StatLabel ( CHARACTER_MENU , { { 245 , 28 + 2 + float ( yOffset ) } , { 62 , 18 } } , attribute , 1 , ComponentAttr : : SHADOW | ComponentAttr : : LEFT_ALIGN ) ;
yOffset + = 20 ;
AttributeData data = ItemAttributable : : GetDisplayInfo ( attribute ) ;
characterMenuWindow - > AddComponent ( " Attribute " + data . name + " Label " , attrLabel ) ;
Menu : : AddEquipStatListener ( attrLabel ) ;
}
MenuComponent * backButton = NEW MenuComponent ( CHARACTER_MENU , { { windowSize . x / 2 - 64 , windowSize . y } , { 128 , 12 } } , " Back " , [ ] ( MenuFuncData data ) { Menu : : stack . pop_back ( ) ; return true ; } ) ;
backButton - > decal = true ;
characterMenuWindow - > AddComponent ( " Back button " , backButton ) ;
}