2323using ShadowSET ;
2424using ShadowSET . SETIDBIN ;
2525using SkiaSharp ;
26- using static System . Net . Mime . MediaTypeNames ;
2726using TableEntry = ShadowFNT . Structures . TableEntry ;
2827
2928namespace ShadowRando . Views ;
@@ -513,6 +512,9 @@ private void UserControl_Loaded(object? sender, RoutedEventArgs e)
513512 foreach ( var par in settings . Layout . Partner . SelectedPartners )
514513 PartnerCheckBoxes [ ( int ) par - 1 ] . IsChecked = true ;
515514
515+ // Layout Misc
516+ Layout_Misc_CheckBox_RandomItemCapsules . IsChecked = settings . Layout . Misc . RandomItemCapsules ;
517+
516518 // Subtitles
517519 Subtitles_CheckBox_RandomizeSubtitlesVoicelines . IsChecked = settings . Subtitles . Randomize ;
518520 Subtitles_CheckBox_NoDuplicates . IsChecked = settings . Subtitles . NoDuplicates ;
@@ -609,6 +611,9 @@ private void UpdateSettings()
609611 if ( PartnerCheckBoxes [ i ] . IsChecked == true )
610612 settings . Layout . Partner . SelectedPartners . Add ( ( Object0190_Partner . EPartner ) ( i + 1 ) ) ;
611613
614+ // Misc
615+ settings . Layout . Misc . RandomItemCapsules = Layout_Misc_CheckBox_RandomItemCapsules . IsChecked . Value ;
616+
612617 // Subtitles
613618 settings . Subtitles . Randomize = Subtitles_CheckBox_RandomizeSubtitlesVoicelines . IsChecked . Value ;
614619 settings . Subtitles . NoDuplicates = Subtitles_CheckBox_NoDuplicates . IsChecked . Value ;
@@ -2152,6 +2157,15 @@ private int RandomizeLayouts(Random r)
21522157 RandomizeEnvironmentWeaponDrops ( ref ds1LayoutData , weaponsPool , r ) ;
21532158 }
21542159
2160+ if ( settings . Layout . Misc . RandomItemCapsules )
2161+ {
2162+ RandomizeItemCapsules ( ref cmnLayoutData , r ) ;
2163+ if ( nrmLayoutData != null )
2164+ RandomizeItemCapsules ( ref nrmLayoutData , r ) ;
2165+ if ( hrdLayoutData != null )
2166+ RandomizeItemCapsules ( ref hrdLayoutData , r ) ;
2167+ }
2168+
21552169 if ( settings . Layout . Partner . Mode == LayoutPartnerMode . Wild )
21562170 {
21572171 MakeAllPartnersRandom ( ref cmnLayoutData , settings . Layout . Partner . KeepAffiliationsAtSameLocation , darkPartners , heroPartners , r ) ;
@@ -2708,6 +2722,21 @@ private static void RandomizeEnvironmentWeaponDrops(ref List<SetObjectShadow> se
27082722 }
27092723 }
27102724
2725+ private static void RandomizeItemCapsules ( ref List < SetObjectShadow > setData , Random r )
2726+ {
2727+ List < ( Object0012_ItemCapsule item , int index ) > itemCapsuleItems = setData
2728+ . Select ( ( item , index ) => new { Item = item , Index = index } )
2729+ . Where ( pair => pair . Item is Object0012_ItemCapsule )
2730+ . Select ( pair => ( Item : ( Object0012_ItemCapsule ) pair . Item , Index : pair . Index ) )
2731+ . ToList ( ) ;
2732+
2733+ foreach ( var capsule in itemCapsuleItems )
2734+ {
2735+ capsule . item . Item = ( EItemShadow ) r . Next ( 11 ) ;
2736+ setData [ capsule . index ] = capsule . item ;
2737+ }
2738+ }
2739+
27112740 private static void DelinkVehicleObjects ( ref List < SetObjectShadow > setData )
27122741 {
27132742 List < ( Object004F_Vehicle item , int index ) > vehicleItems = setData
@@ -3965,6 +3994,12 @@ private void UpdateUIEnabledState()
39653994 return ;
39663995 // Level Order
39673996 LevelOrder_TextBox_Seed . IsEnabled = ! LevelOrder_CheckBox_Random_Seed . IsChecked . Value ;
3997+ LevelOrder_ComboBox_MainPath . IsEnabled = ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . AllStagesWarps ;
3998+ LevelOrder_NumericUpDown_MaxBackwardsJump . IsEnabled = ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . AllStagesWarps ;
3999+ LevelOrder_NumericUpDown_MaxForwardsJump . IsEnabled = ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . AllStagesWarps ;
4000+ LevelOrder_NumericUpDown_BackwardsJumpProbability . IsEnabled = ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . AllStagesWarps ;
4001+ LevelOrder_CheckBox_AllowJumpsToSameLevel . IsEnabled = ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . AllStagesWarps ;
4002+ LevelOrder_CheckBox_AllowBossToBoss . IsEnabled = ! ( ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . BossRush ) && ! ( ( LevelOrderMode ) LevelOrder_ComboBox_Mode . SelectedIndex == LevelOrderMode . Wild ) ;
39684003 // --Layout--
39694004 // Enemy
39704005 Layout_CheckBox_MakeCCSplinesVehicleCompatible . IsEnabled = Layout_CheckBox_RandomizeLayouts . IsChecked . Value ;
@@ -3990,6 +4025,8 @@ private void UpdateUIEnabledState()
39904025 Layout_Partner_CheckBox_OnlySelectedPartners . IsEnabled = Layout_CheckBox_RandomizeLayouts . IsChecked . Value && ( LayoutPartnerMode ) Layout_Partner_ComboBox_Mode . SelectedIndex == LayoutPartnerMode . Wild ;
39914026 for ( int i = 0 ; i < PartnerCheckBoxes . Length ; i ++ )
39924027 PartnerCheckBoxes [ i ] . IsEnabled = Layout_Partner_CheckBox_OnlySelectedPartners . IsChecked . Value && Layout_CheckBox_RandomizeLayouts . IsChecked . Value && ( LayoutPartnerMode ) Layout_Partner_ComboBox_Mode . SelectedIndex == LayoutPartnerMode . Wild ;
4028+ // Misc
4029+ Layout_Misc_CheckBox_RandomItemCapsules . IsEnabled = Layout_CheckBox_RandomizeLayouts . IsChecked . Value ;
39934030 // --End Layout--
39944031 // Subtitles
39954032 Subtitles_CheckBox_OnlyWithLinkedAudio . IsEnabled = Subtitles_CheckBox_RandomizeSubtitlesVoicelines . IsChecked . Value ;
0 commit comments