2024-07-30 09:35:41 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# pragma region License 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								License  ( OLC - 3 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Copyright  2024  Joshua  Sigona  < sigonasr2 @ gmail . com >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Redistribution  and  use  in  source  and  binary  forms ,  with  or  without  modification ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								are  permitted  provided  that  the  following  conditions  are  met :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								1.  Redistributions  or  derivations  of  source  code  must  retain  the  above  copyright  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								notice ,  this  list  of  conditions  and  the  following  disclaimer .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								2.  Redistributions  or  derivative  works  in  binary  form  must  reproduce  the  above  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								copyright  notice .  This  list  of  conditions  and  the  following 	disclaimer  must  be  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								reproduced  in  the  documentation  and / or  other  materials  provided  with  the  distribution .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								3.  Neither  the  name  of  the  copyright  holder  nor  the  names  of  its  contributors  may  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								be  used  to  endorse  or  promote  products  derived  from  this  software  without  specific  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								prior  written  permission .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								THIS  SOFTWARE  IS  PROVIDED  BY  THE  COPYRIGHT  HOLDERS  AND  CONTRIBUTORS 	" AS IS "  AND  ANY  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								EXPRESS  OR  IMPLIED  WARRANTIES ,  INCLUDING ,  BUT  NOT  LIMITED  TO ,  THE  IMPLIED  WARRANTIES  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								OF  MERCHANTABILITY  AND  FITNESS  FOR  A  PARTICULAR  PURPOSE  ARE  DISCLAIMED .  IN  NO  EVENT  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								SHALL  THE  COPYRIGHT 	HOLDER  OR  CONTRIBUTORS  BE  LIABLE  FOR  ANY  DIRECT ,  INDIRECT ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								INCIDENTAL , 	SPECIAL ,  EXEMPLARY ,  OR  CONSEQUENTIAL  DAMAGES  ( INCLUDING ,  BUT  NOT  LIMITED  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								TO ,  PROCUREMENT  OF  SUBSTITUTE  GOODS  OR  SERVICES ;  LOSS  OF  USE ,  DATA ,  OR  PROFITS ;  OR  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								BUSINESS  INTERRUPTION )  HOWEVER  CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY ,  WHETHER  IN  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								CONTRACT ,  STRICT  LIABILITY ,  OR  TORT 	( INCLUDING  NEGLIGENCE  OR  OTHERWISE )  ARISING  IN  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								ANY  WAY  OUT  OF  THE  USE  OF  THIS  SOFTWARE ,  EVEN  IF  ADVISED  OF  THE  POSSIBILITY  OF  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								SUCH  DAMAGE .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Portions  of  this  software  are  copyright  <EFBFBD> 2024  The  FreeType  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Project  ( www . freetype . org ) .  Please  see  LICENSE_FT . txt  for  more  information .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								All  rights  reserved .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# pragma endregion 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  "Menu.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  "AdventuresInLestoria.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-09-15 21:24:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  "MenuLabel.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  "MenuIconButton.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-07-30 09:35:41 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								INCLUDE_game  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								void  Menu : : InitializeArtificerEnchantConfirmWindow ( ) {  
						 
					
						
							
								
									
										
										
										
											2024-09-15 21:24:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
									Menu * artificerEnchantConfirmWindow = CreateMenu ( ARTIFICER_ENCHANT_CONFIRM , CENTERED , vi2d { 240 , 144 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  enchantSuccessLabel { artificerEnchantConfirmWindow - > ADD ( " Enchant Success Label " , MenuLabel ) ( geom2d : : rect < float > { { 0.f , - 14.f } , vf2d { artificerEnchantConfirmWindow - > size . x , 12.f } } , " Enchantment Success! " , 1.f , ComponentAttr : : SHADOW | ComponentAttr : : OUTLINE | ComponentAttr : : BACKGROUND ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  chooseResultLabel { artificerEnchantConfirmWindow - > ADD ( " Choose Result Label " , MenuLabel ) ( geom2d : : rect < float > { vf2d { 0.f , 0.f } , vf2d { artificerEnchantConfirmWindow - > size . x , 12.f } } , " Choose a Result " , 1.f , ComponentAttr : : SHADOW ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									const  float  oldLabelTextWidth { game - > GetTextSize ( " OLD " ) . x * 2.f } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  oldLabel { artificerEnchantConfirmWindow - > ADD ( " Old Item Label " , MenuLabel ) ( geom2d : : rect < float > { { artificerEnchantConfirmWindow - > size . x / 4.f - oldLabelTextWidth / 2 - 4.f , 14.f } , vf2d { oldLabelTextWidth + 8.f , 24.f } } , " OLD " , 2.f , ComponentAttr : : SHADOW | ComponentAttr : : OUTLINE | ComponentAttr : : BACKGROUND ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									const  float  newLabelTextWidth { game - > GetTextSize ( " NEW " ) . x * 2.f } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  newLabel { artificerEnchantConfirmWindow - > ADD ( " New Item Label " , MenuLabel ) ( geom2d : : rect < float > { { artificerEnchantConfirmWindow - > size . x / 2.f + artificerEnchantConfirmWindow - > size . x / 4.f - oldLabelTextWidth / 2 + 2.f , 14.f } , vf2d { oldLabelTextWidth + 8.f , 24.f } } , " NEW " , 2.f , ComponentAttr : : SHADOW | ComponentAttr : : OUTLINE | ComponentAttr : : BACKGROUND ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  oldIcon { artificerEnchantConfirmWindow - > ADD ( " Old Item Icon " , MenuIconButton ) ( geom2d : : rect < float > { { artificerEnchantConfirmWindow - > size . x / 4.f - 12.f , 42.f } , { 24 , 24 } } , nullptr , DO_NOTHING , IconButtonAttr : : NOT_SELECTABLE ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  newIcon { artificerEnchantConfirmWindow - > ADD ( " New Item Icon " , MenuIconButton ) ( geom2d : : rect < float > { { artificerEnchantConfirmWindow - > size . x / 2.f + artificerEnchantConfirmWindow - > size . x / 4.f - 12.f + 4.f , 42.f } , { 24 , 24 } } , nullptr , DO_NOTHING , IconButtonAttr : : NOT_SELECTABLE ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  oldItemDescription { artificerEnchantConfirmWindow - > ADD ( " Old Item Description " , MenuLabel ) ( geom2d : : rect < float > { { 0.f , 74.f } , { artificerEnchantConfirmWindow - > size . x / 2.f - 8.f , 60.f } } , " " , 0.5f , ComponentAttr : : SHADOW | ComponentAttr : : BACKGROUND | ComponentAttr : : OUTLINE ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  newItemDescription { artificerEnchantConfirmWindow - > ADD ( " New Item Description " , MenuLabel ) ( geom2d : : rect < float > { { artificerEnchantConfirmWindow - > size . x / 2.f + 8.f , 74.f } , { artificerEnchantConfirmWindow - > size . x / 2.f - 8.f , 60.f } } , " " , 0.5f , ComponentAttr : : SHADOW | ComponentAttr : : BACKGROUND | ComponentAttr : : OUTLINE ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									const  float  takeOldTextWidth { float ( game - > GetTextSize ( " Take Old " ) . x ) * 2.f } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  takeOldButton { artificerEnchantConfirmWindow - > ADD ( " Take Old Button " , MenuComponent ) ( geom2d : : rect < float > { { artificerEnchantConfirmWindow - > size . x / 4.f - takeOldTextWidth / 2.f , 138.f } , { takeOldTextWidth , 20.f } } , " Take Old " , [ ] ( MenuFuncData  data ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										onClick : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									} , vf2d { 2.f , 2.f } ) END } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									const  float  takeNewTextWidth { float ( game - > GetTextSize ( " Take New " ) . x ) * 2.f } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									auto  takeNewButton { artificerEnchantConfirmWindow - > ADD ( " Take New Button " , MenuComponent ) ( geom2d : : rect < float > { vf2d { artificerEnchantConfirmWindow - > size . x / 2.f + 8.f + artificerEnchantConfirmWindow - > size . x / 4.f - takeNewTextWidth / 2.f , 138.f } , { takeNewTextWidth , 20.f } } , " Take New " , [ ] ( MenuFuncData  data ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										onClick : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									} , vf2d { 2.f , 2.f } ) END } ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-30 09:35:41 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									artificerEnchantConfirmWindow - > SetupKeyboardNavigation ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									[ ] ( MenuType  type , Data & returnData ) {  //On Open
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										returnData = " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									{  //Button Key
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										{ game - > KEY_SCROLL , { " Navigate " , [ ] ( MenuType  type ) { } } } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										{ game - > KEY_BACK , { " Stay " , [ ] ( MenuType  type ) { 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-15 21:24:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2024-07-30 09:35:41 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										} } } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										{ game - > KEY_CONFIRM , { " Select " , [ ] ( MenuType  type ) { } } } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									, {  //Button Navigation Rules
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
										{ " Sample Button " , { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
											. up = " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
											. down = " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
											. left = " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
											. right = " " , } } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								}