Initial Dansori character workspace
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
<Window x:Class="Character_Builder.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"
|
||||
Title="Dansori · Character Builder" Height="1040" Width="1560"
|
||||
MinHeight="760" MinWidth="1320"
|
||||
WindowStyle="None" WindowState="Maximized" WindowStartupLocation="CenterScreen"
|
||||
Background="Transparent"
|
||||
FontFamily="Segoe UI Variable, Segoe UI">
|
||||
|
||||
<shell:WindowChrome.WindowChrome>
|
||||
<shell:WindowChrome CaptionHeight="52" ResizeBorderThickness="6"
|
||||
GlassFrameThickness="0" CornerRadius="0" UseAeroCaptionButtons="False"/>
|
||||
</shell:WindowChrome.WindowChrome>
|
||||
|
||||
<Border x:Name="RootBorder" Background="{StaticResource Bg}"
|
||||
BorderBrush="{StaticResource Stroke}" BorderThickness="1">
|
||||
<Grid Margin="16">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- ===== TOP BAR ===== -->
|
||||
<Grid Grid.Row="0" Margin="4,0,4,14">
|
||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<Border Width="12" Height="12" CornerRadius="6" Background="{StaticResource Accent}" Margin="0,0,12,0"/>
|
||||
<TextBlock Text="Character Builder" FontSize="28" FontWeight="Bold"/>
|
||||
<TextBlock Text="Dansori 캐릭터 조합기" Foreground="{StaticResource Mute}"
|
||||
FontSize="18" VerticalAlignment="Bottom" Margin="12,0,0,4"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
|
||||
shell:WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<Button x:Name="BtnRoot" Content="📁 루트" Click="Root_Click" Margin="0,0,8,0"/>
|
||||
<Button x:Name="BtnLoad" Content="↥ 불러오기" Click="Load_Click" Margin="0,0,8,0"/>
|
||||
<Button x:Name="BtnReset" Content="⟲ 초기화" Click="Reset_Click" Margin="0,0,8,0"/>
|
||||
<Button x:Name="BtnSave" Content="💾 저장" Click="Save_Click" Style="{StaticResource AccentButton}"/>
|
||||
<Border Width="1" Background="{StaticResource Stroke}" Margin="12,4,10,4"/>
|
||||
<Button x:Name="BtnMin" Style="{StaticResource CaptionButton}" Click="Min_Click">
|
||||
<Path Data="M0,5 H11" Stroke="{StaticResource Dim}" StrokeThickness="1.3"/>
|
||||
</Button>
|
||||
<Button x:Name="BtnMax" Style="{StaticResource CaptionButton}" Click="Max_Click" Margin="2,0">
|
||||
<Path Data="M0,0 H10 V10 H0 Z" Stroke="{StaticResource Dim}" StrokeThickness="1.3" Fill="Transparent"/>
|
||||
</Button>
|
||||
<Button x:Name="BtnClose" Style="{StaticResource CaptionClose}" Click="Close_Click">
|
||||
<Path Data="M0,0 L10,10 M0,10 L10,0" Stroke="{StaticResource Dim}" StrokeThickness="1.3"/>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<!-- ===== MAIN ===== -->
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="300"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="440"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- Character list -->
|
||||
<Border Grid.Column="0" Style="{StaticResource Card}" Margin="0,0,14,0">
|
||||
<DockPanel Margin="12">
|
||||
<TextBlock DockPanel.Dock="Top" Text="캐릭터" FontWeight="Bold" FontSize="21" Margin="2,2,0,12"/>
|
||||
<ListBox x:Name="CharList" Background="Transparent" BorderThickness="0"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||
SelectionChanged="CharList_SelectionChanged">
|
||||
<ListBox.ItemContainerStyle>
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Margin" Value="0,0,0,8"/>
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ListBoxItem">
|
||||
<Border x:Name="bd" CornerRadius="10" Background="{StaticResource Panel2}"
|
||||
BorderBrush="{StaticResource Stroke}" BorderThickness="1" Padding="8">
|
||||
<ContentPresenter/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter TargetName="bd" Property="BorderBrush" Value="{StaticResource Accent}"/>
|
||||
<Setter TargetName="bd" Property="Background" Value="#12344A"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="bd" Property="BorderBrush" Value="{StaticResource Accent}"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ListBox.ItemContainerStyle>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<Border CornerRadius="8" Height="150" ClipToBounds="True" Background="#0E0F14">
|
||||
<Image Source="{Binding Thumb}" Stretch="Uniform" Margin="4"/>
|
||||
</Border>
|
||||
<TextBlock Text="{Binding Name}" FontWeight="SemiBold" FontSize="19"
|
||||
Margin="2,9,0,2" TextTrimming="CharacterEllipsis"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
</DockPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Preview -->
|
||||
<Border Grid.Column="1" Style="{StaticResource Card}" Margin="0,0,14,0">
|
||||
<DockPanel Margin="14">
|
||||
<Grid DockPanel.Dock="Top" Margin="2,0,2,10">
|
||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<TextBlock x:Name="TxtCharName" Text="캐릭터를 선택하세요" FontSize="22" FontWeight="Bold"/>
|
||||
</StackPanel>
|
||||
<Button x:Name="BtnPlay" Content="▶ 제스처 미리보기" Click="Play_Click"
|
||||
HorizontalAlignment="Right" Width="210"/>
|
||||
</Grid>
|
||||
<Border Background="#0E0F14" CornerRadius="10" BorderBrush="{StaticResource Stroke}" BorderThickness="1">
|
||||
<Grid>
|
||||
<TextBlock x:Name="PreviewHint" Text="왼쪽에서 캐릭터를 고른 뒤, 오른쪽에서 파츠를 조합하세요."
|
||||
Foreground="{StaticResource Mute}" HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" MaxWidth="320"/>
|
||||
<Viewbox Stretch="Uniform" Margin="16">
|
||||
<Grid x:Name="StageHost" Width="540" Height="680"
|
||||
Background="Transparent" Cursor="SizeAll"
|
||||
MouseLeftButtonDown="Stage_MouseDown"
|
||||
MouseMove="Stage_MouseMove"
|
||||
MouseLeftButtonUp="Stage_MouseUp">
|
||||
<Grid x:Name="Stage" Width="540" Height="680"/>
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DockPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Controls -->
|
||||
<Border Grid.Column="2" Style="{StaticResource Card}">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" Padding="14,10,14,14">
|
||||
<StackPanel>
|
||||
<TextBlock Text="조합" FontWeight="Bold" FontSize="21" Margin="2,2,0,4"/>
|
||||
|
||||
<TextBlock Text="바디 / 제스처" Style="{StaticResource Label}"/>
|
||||
<ComboBox x:Name="CmbBody" SelectionChanged="Body_Changed"/>
|
||||
|
||||
<TextBlock Text="헤어 모양" Style="{StaticResource Label}"/>
|
||||
<ComboBox x:Name="CmbShape" SelectionChanged="Shape_Changed"/>
|
||||
|
||||
<TextBlock Text="표정" Style="{StaticResource Label}"/>
|
||||
<ComboBox x:Name="CmbExpr" SelectionChanged="Expr_Changed"/>
|
||||
|
||||
<TextBlock Text="헤어 색상 (코드 틴트)" Style="{StaticResource Label}"/>
|
||||
<WrapPanel x:Name="SwatchPanel"/>
|
||||
|
||||
<TextBlock Text="악세서리" Style="{StaticResource Label}"/>
|
||||
<Border Background="{StaticResource Panel2}" BorderBrush="{StaticResource Stroke}"
|
||||
BorderThickness="1" CornerRadius="8" Padding="10,6" MinHeight="40" MaxHeight="230">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel x:Name="AccPanel"/>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="레이어 위치/크기 조정" Style="{StaticResource Label}"/>
|
||||
<ComboBox x:Name="CmbLayer" SelectionChanged="Layer_Changed"/>
|
||||
<Grid Margin="0,8,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="34"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="X" Foreground="{StaticResource Dim}" VerticalAlignment="Center"/>
|
||||
<Slider x:Name="SldX" Grid.Row="0" Grid.Column="1" Minimum="-400" Maximum="400" ValueChanged="LayerXform_Changed"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="Y" Foreground="{StaticResource Dim}" VerticalAlignment="Center"/>
|
||||
<Slider x:Name="SldY" Grid.Row="1" Grid.Column="1" Minimum="-400" Maximum="400" ValueChanged="LayerXform_Changed"/>
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="⤢" Foreground="{StaticResource Dim}" VerticalAlignment="Center"/>
|
||||
<Slider x:Name="SldScale" Grid.Row="2" Grid.Column="1" Minimum="0.1" Maximum="1.6" ValueChanged="LayerXform_Changed"/>
|
||||
</Grid>
|
||||
<Button Content="🎯 머리 자동 정렬" Click="AutoAlign_Click" Margin="0,10,0,0"/>
|
||||
<TextBlock Text="미리보기에서 드래그하면 위 목록에서 선택한 레이어가 이동합니다."
|
||||
Foreground="{StaticResource Mute}" FontSize="16" TextWrapping="Wrap" Margin="2,10,0,0"/>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<!-- ===== STATUS ===== -->
|
||||
<TextBlock x:Name="TxtStatus" Grid.Row="2" Margin="4,10,4,0"
|
||||
Foreground="{StaticResource Mute}" FontSize="17" Text="준비"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
Reference in New Issue
Block a user