RQ Overlay: оверлей заработка и статистики для Royal Quest

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-26 12:46:52 +03:00
commit 7f89dba5f8
43 changed files with 4253 additions and 0 deletions

View File

@@ -0,0 +1,105 @@
<UserControl x:Class="RQOverlay.Views.SessionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:RQOverlay"
xmlns:p="clr-namespace:RQOverlay.Plugins">
<!-- DataContext — SessionViewModel -->
<UserControl.Resources>
<local:BoolToVis x:Key="Vis" />
</UserControl.Resources>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Margin="0,0,10,0">
<!-- Заголовок -->
<Grid Margin="0,0,0,18">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="Сессия" Style="{StaticResource HeadingText}" FontSize="24" />
<TextBlock Foreground="{DynamicResource TextFaint}" Margin="0,2,0,0">
<Run Text="идёт" /> <Run Text="{Binding Elapsed, Mode=OneWay}" FontFamily="{DynamicResource NumFont}" Foreground="{DynamicResource TextDim}" />
</TextBlock>
</StackPanel>
<Button Grid.Column="1" Style="{StaticResource FlatButton}" Content="Новая сессия" Click="Reset_Click"
VerticalAlignment="Top" ToolTip="Обнулить счётчики сессии (цены и «всё время» не трогаются)" />
</Grid>
<!-- Итог -->
<Border Style="{StaticResource Card}" Padding="22,18" Margin="0,0,0,10"
Visibility="{Binding HasGold, Converter={StaticResource Vis}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Style="{StaticResource Caption}">
<Run Text="{DynamicResource CaptionPrefix}" /><Run Text="ЗАРАБОТОК ЗА СЕССИЮ" />
</TextBlock>
<StackPanel Orientation="Horizontal" Margin="0,6,0,0">
<TextBlock Text="{Binding Total}" Style="{StaticResource BigNum}" FontSize="40"
Foreground="{DynamicResource Gold}" />
<TextBlock Text="золота" Foreground="{DynamicResource TextFaint}" VerticalAlignment="Bottom" Margin="10,0,0,9" />
</StackPanel>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Bottom" HorizontalAlignment="Right">
<TextBlock Style="{StaticResource Caption}" HorizontalAlignment="Right">
<Run Text="{DynamicResource CaptionPrefix}" /><Run Text="ТЕМП" />
</TextBlock>
<TextBlock Text="{Binding PerHour}" Style="{StaticResource BigNum}" FontSize="22"
Foreground="{DynamicResource Text}" HorizontalAlignment="Right" Margin="0,4,0,4" />
</StackPanel>
</Grid>
</Border>
<!-- Показатели плагинов: ровный ряд карточек -->
<ItemsControl ItemsSource="{Binding Metrics}" Margin="-5,0,-5,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="p:Metric">
<Border Style="{StaticResource Card}" Margin="5,0">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Ellipse Width="7" Height="7" Fill="{Binding Color}" Margin="0,0,8,0" VerticalAlignment="Center" />
<TextBlock Text="{Binding Label}" Foreground="{DynamicResource TextDim}" TextTrimming="CharacterEllipsis" />
</StackPanel>
<TextBlock Text="{Binding ValueText}" Style="{StaticResource BigNum}" FontSize="24" Margin="0,8,0,0"
Foreground="{DynamicResource Text}" />
<TextBlock Text="{Binding RateText}" Style="{StaticResource Num}" FontSize="12"
Foreground="{DynamicResource TextFaint}" Margin="0,2,0,0" />
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- Ручная корректировка -->
<Border Style="{StaticResource Card}" Margin="0,10,0,24">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Корректировка" VerticalAlignment="Center" Margin="0,0,14,0" />
<TextBox Grid.Column="1" Style="{StaticResource DarkBox}" HorizontalContentAlignment="Right"
FontFamily="{DynamicResource NumFont}"
Text="{Binding AdjustmentText, UpdateSourceTrigger=PropertyChanged, Delay=400}" />
<TextBlock Grid.Column="2" Foreground="{DynamicResource TextFaint}" TextWrapping="Wrap" VerticalAlignment="Center"
Margin="14,0,0,0"
Text="Золото, добавляемое к итогу. Со знаком минус — вычитается: зелья, ремонт." />
</Grid>
</Border>
<!-- Разделы плагинов (заполняются из кода) -->
<StackPanel x:Name="Sections" />
</StackPanel>
</ScrollViewer>
</UserControl>