diff --git a/Directory.Build.props b/Directory.Build.props index b548fcd5..7d6d9de5 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -4,7 +4,7 @@ Khil-soft 7.11.3 6.0.0 - 2.14.0 + 2.15.0 diff --git a/assets/siq_5.xsd b/assets/siq_5.xsd index 0e203241..1153b7a9 100644 --- a/assets/siq_5.xsd +++ b/assets/siq_5.xsd @@ -1,11 +1,11 @@ - + SIGame question package (version 5) - + @@ -27,10 +27,10 @@ Global package info - + - + Author's name @@ -56,7 +56,7 @@ Author's city - + Unique author identifier @@ -66,7 +66,7 @@ - + Source's authos @@ -92,7 +92,7 @@ Source's publish city - + Unique source identifier @@ -100,10 +100,10 @@ - + - + Rounds @@ -114,13 +114,13 @@ Round - + Round info - + Themes @@ -131,13 +131,13 @@ Theme - + Theme info - + Questions @@ -148,7 +148,7 @@ Question - + Question info @@ -275,7 +275,7 @@ - + Answer @@ -297,7 +297,7 @@ - + Question price @@ -313,7 +313,7 @@ - + Theme name @@ -324,7 +324,7 @@ - + Round name @@ -340,7 +340,7 @@ - + Unique package identifier @@ -388,6 +388,11 @@ Package language + + + The tool package was created with + + Author contact URI @@ -409,7 +414,7 @@ Content item type - + Content item reference to resource marker @@ -419,12 +424,17 @@ Content item placement - + Content item duration + + + + + - + Content item wait for finish marker @@ -486,7 +496,7 @@ - + Authors @@ -530,6 +540,6 @@ Item information extension - + \ No newline at end of file diff --git a/src/Common/SIEngine/SIEngine.csproj b/src/Common/SIEngine/SIEngine.csproj index ebc3c1ed..09af78dd 100644 --- a/src/Common/SIEngine/SIEngine.csproj +++ b/src/Common/SIEngine/SIEngine.csproj @@ -9,7 +9,7 @@ SIGame engine Khil-soft 7.6.0 - Copyright © Khil-soft 2007 - 2023 + Copyright © Khil-soft 2007 - 2024 enable enable diff --git a/src/Common/SIPackages/Containers/FolderSIPackageContainer.cs b/src/Common/SIPackages/Containers/FolderSIPackageContainer.cs index 3a7d851f..8e1e8b05 100644 --- a/src/Common/SIPackages/Containers/FolderSIPackageContainer.cs +++ b/src/Common/SIPackages/Containers/FolderSIPackageContainer.cs @@ -1,4 +1,5 @@ using SIPackages.Core; +using ZipUtils; namespace SIPackages.Containers; @@ -8,12 +9,12 @@ namespace SIPackages.Containers; internal sealed class FolderSIPackageContainer : ISIPackageContainer { private readonly string _folder; - private readonly IReadOnlyDictionary _fileNameMap; + private readonly IReadOnlyDictionary _fileNameMap; private readonly bool _deleteOnClose; public FolderSIPackageContainer( string folder, - IReadOnlyDictionary fileNameMap, + IReadOnlyDictionary fileNameMap, bool deleteOnClose = true) { _folder = folder; @@ -23,10 +24,10 @@ public FolderSIPackageContainer( public ISIPackageContainer CopyTo(Stream stream, bool close, out bool isNew) => throw new NotImplementedException(); - internal static ISIPackageContainer Open(string folder, IReadOnlyDictionary fileNameMap) => + internal static ISIPackageContainer Open(string folder, IReadOnlyDictionary fileNameMap) => new FolderSIPackageContainer(folder, fileNameMap); - internal static ISIPackageContainer Create(string folder) => new FolderSIPackageContainer(folder, new Dictionary(), false); + internal static ISIPackageContainer Create(string folder) => new FolderSIPackageContainer(folder, new Dictionary(), false); public void CreateStream(string name, string contentType) { @@ -128,9 +129,9 @@ private string GetName(string name) { if (!_fileNameMap.TryGetValue(name, out var mappedName)) { - mappedName = name; + return name; } - return mappedName; + return mappedName.Name; } } diff --git a/src/Common/SIPackages/Containers/PackageContainerFactory.cs b/src/Common/SIPackages/Containers/PackageContainerFactory.cs index 36c5a5ff..a83d980f 100644 --- a/src/Common/SIPackages/Containers/PackageContainerFactory.cs +++ b/src/Common/SIPackages/Containers/PackageContainerFactory.cs @@ -1,4 +1,6 @@ -namespace SIPackages.Containers; +using ZipUtils; + +namespace SIPackages.Containers; /// /// Provides methods for creating package containers. @@ -24,7 +26,7 @@ public static ISIPackageContainer CreatePackageContainer(Stream stream, bool lea /// /// Container folder. /// File name map. - public static ISIPackageContainer GetPackageContainer(string folder, IReadOnlyDictionary fileNameMap) => + public static ISIPackageContainer GetPackageContainer(string folder, IReadOnlyDictionary fileNameMap) => FolderSIPackageContainer.Open(folder, fileNameMap); /// diff --git a/src/Common/SIPackages/SIDocument.cs b/src/Common/SIPackages/SIDocument.cs index a69b3f1e..2b0cde19 100644 --- a/src/Common/SIPackages/SIDocument.cs +++ b/src/Common/SIPackages/SIDocument.cs @@ -6,6 +6,7 @@ using SIPackages.Properties; using System.Diagnostics; using System.Xml; +using ZipUtils; namespace SIPackages; @@ -192,7 +193,7 @@ public static SIDocument Load(Stream stream, bool read = true, PackageLimits? li /// Should the document be read-only. [Obsolete("Use ExtractToFolderAndLoadAsync")] public static SIDocument Load(string folder, bool read = true) => - Load(PackageContainerFactory.GetPackageContainer(folder, new Dictionary())); + Load(PackageContainerFactory.GetPackageContainer(folder, new Dictionary())); /// /// Extracts document to folder and load from it. diff --git a/src/Common/SIPackages/SIPackages.csproj b/src/Common/SIPackages/SIPackages.csproj index 7f07317d..4b3db921 100644 --- a/src/Common/SIPackages/SIPackages.csproj +++ b/src/Common/SIPackages/SIPackages.csproj @@ -31,7 +31,7 @@ - + diff --git a/src/Common/SIPackages/ZipExtractorExtensions.cs b/src/Common/SIPackages/ZipExtractorExtensions.cs index 4ef05c32..2cd64afa 100644 --- a/src/Common/SIPackages/ZipExtractorExtensions.cs +++ b/src/Common/SIPackages/ZipExtractorExtensions.cs @@ -15,7 +15,7 @@ internal static class PackageExtractor /// Maximum allowed length of extracted data in archive. /// Cancellation token. /// Map of archive file names to extracted file names. - internal static Task> ExtractPackageToFolderAsync( + internal static Task> ExtractPackageToFolderAsync( string sourceArchiveFilePath, string destinationFolderPath, long maxAllowedDataLength = long.MaxValue, diff --git a/src/Common/SIUI.Model/SIUI.Model.csproj b/src/Common/SIUI.Model/SIUI.Model.csproj index e4763c79..35a91fa2 100644 --- a/src/Common/SIUI.Model/SIUI.Model.csproj +++ b/src/Common/SIUI.Model/SIUI.Model.csproj @@ -7,7 +7,7 @@ Khil-soft Game table model 7.6.0 - Copyright © Khil-soft 2010 - 2023 + Copyright © Khil-soft 2010 - 2024 enable enable diff --git a/src/Common/SIUI.ViewModel/SIUI.ViewModel.csproj b/src/Common/SIUI.ViewModel/SIUI.ViewModel.csproj index e6e27111..df71c316 100644 --- a/src/Common/SIUI.ViewModel/SIUI.ViewModel.csproj +++ b/src/Common/SIUI.ViewModel/SIUI.ViewModel.csproj @@ -7,7 +7,7 @@ Khil-soft 7.6.0 Game table view model - Copyright © Khil-soft 2012 - 2023 + Copyright © Khil-soft 2012 - 2024 enable enable diff --git a/src/Common/SIUI/SIUI.csproj b/src/Common/SIUI/SIUI.csproj index 84068b6c..8208d7ca 100644 --- a/src/Common/SIUI/SIUI.csproj +++ b/src/Common/SIUI/SIUI.csproj @@ -5,7 +5,7 @@ Khil-soft SIUI SIGame table ui - Copyright © Khil-soft 2010 - 2023 + Copyright © Khil-soft 2010 - 2024 7.7.3 bin\$(Configuration)\ true @@ -33,7 +33,7 @@ - + True True diff --git a/src/SImulator/SImulator.ViewModel/SImulator.ViewModel.csproj b/src/SImulator/SImulator.ViewModel/SImulator.ViewModel.csproj index 52ba0890..de065789 100644 --- a/src/SImulator/SImulator.ViewModel/SImulator.ViewModel.csproj +++ b/src/SImulator/SImulator.ViewModel/SImulator.ViewModel.csproj @@ -6,7 +6,7 @@ SImulator.ViewModel SImulator view model $(SImulatorVersion) - Copyright © Khil-soft 2010 - 2023 + Copyright © Khil-soft 2010 - 2024 enable enable diff --git a/src/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cs b/src/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cs index ebefe9da..8c590521 100644 --- a/src/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cs +++ b/src/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cs @@ -1911,7 +1911,7 @@ private bool ProcessPlayerPress(int index, PlayerInfo player) return false; } - // It is no pressing time + // It is not pressing time if (_state != QuestionState.Pressing) { player.BlockedTime = DateTime.Now; @@ -1962,9 +1962,23 @@ private bool ProcessPlayerPress(int index, PlayerInfo player) ThinkingTimeMax = Settings.Model.ThinkingTime2; RunThinkingTimer_Executed(0); + BlockNextButtonForAWhile(); + return true; } + private async void BlockNextButtonForAWhile() + { + if (!_next.CanBeExecuted) + { + return; + } + + _next.CanBeExecuted = false; + await Task.Delay(500); + UpdateNextCommand(); + } + private void UnselectPlayer() { if (_selectedPlayer != null) diff --git a/src/SImulator/SImulator.ViewModel/ViewModel/MainViewModel.cs b/src/SImulator/SImulator.ViewModel/ViewModel/MainViewModel.cs index 24b2d82e..5e6417c4 100644 --- a/src/SImulator/SImulator.ViewModel/ViewModel/MainViewModel.cs +++ b/src/SImulator/SImulator.ViewModel/ViewModel/MainViewModel.cs @@ -136,6 +136,8 @@ private string[] LoadComPorts() return ports; } + public string[] ComPorts => _comPorts.Value; + private GameViewModel? _game; public GameViewModel? Game diff --git a/src/SImulator/SImulator/App.xaml.cs b/src/SImulator/SImulator/App.xaml.cs index c7bb2f93..12420665 100644 --- a/src/SImulator/SImulator/App.xaml.cs +++ b/src/SImulator/SImulator/App.xaml.cs @@ -7,7 +7,6 @@ using NLog.Web; using SImulator.Implementation; using SImulator.ViewModel; -using SImulator.ViewModel.Model; using SIStorage.Service.Client; using SIStorage.Service.Contract.Models; using SIStorageService.ViewModel; @@ -286,7 +285,7 @@ private async void Application_DispatcherUnhandledException(object sender, Dispa else if (_useAppService && _host != null && MessageBox.Show( - string.Format("Произошла ошибка в приложении: {0}\r\n\r\nПриложение будет закрыто. Отправить информацию разработчику? (просьба также связаться с разработчиком лично, так как ряд ошибок нельзя воспроизвести)", e.Exception.Message), + string.Format(SImulator.Properties.Resources.ErrorSendConfirm, e.Exception.Message), MainViewModel.ProductName, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) @@ -303,7 +302,7 @@ private async void Application_DispatcherUnhandledException(object sender, Dispa { case ErrorStatus.Fixed: MessageBox.Show( - "Эта ошибка исправлена в новой версии программы. Обновитесь, пожалуйста.", + SImulator.Properties.Resources.ErrorFixed, MainViewModel.ProductName, MessageBoxButton.OK, MessageBoxImage.Information); @@ -311,7 +310,7 @@ private async void Application_DispatcherUnhandledException(object sender, Dispa case ErrorStatus.CannotReproduce: MessageBox.Show( - "Эта ошибка не воспроизводится. Если вы можете её гарантированно воспроизвести, свяжитесь с автором, пожалуйста.", + SImulator.Properties.Resources.ErrorCannotReproduce, MainViewModel.ProductName, MessageBoxButton.OK, MessageBoxImage.Information); @@ -321,7 +320,7 @@ private async void Application_DispatcherUnhandledException(object sender, Dispa catch (Exception) { MessageBox.Show( - "Не удалось подключиться к серверу при отправке отчёта об ошибке. Отчёт будет отправлен позднее.", + SImulator.Properties.Resources.ErrorConnectionError, MainViewModel.ProductName, MessageBoxButton.OK, MessageBoxImage.Error); diff --git a/src/SImulator/SImulator/CommandWindow.xaml b/src/SImulator/SImulator/CommandWindow.xaml index fc64d0ff..c009f797 100644 --- a/src/SImulator/SImulator/CommandWindow.xaml +++ b/src/SImulator/SImulator/CommandWindow.xaml @@ -61,16 +61,12 @@ - Простой - Вопрос со ставкой - Вопрос со ставкой - Вопрос с секретом - Вопрос с секретом - Вопрос с секретом - Вопрос с секретом (тема и стоимость известны до передачи вопроса) - Вопрос с секретом (деньги без вопроса) - Вопрос без риска - Вопрос без риска + + + + + + @@ -78,40 +74,24 @@ - Стоимость - Когда известны тема и стоимость - Можно ли отдать себе - - Тема - Стоимость - Можно отдать + + + - - - - Да - Нет - До отдачи - После отдачи - Никогда - - - - - Не использовать - Внешние - Клавиатура - Джойстик - COM-порт - Веб-доступ + + + + + + @@ -214,8 +194,8 @@ - - + + @@ -317,7 +297,11 @@ - + @@ -893,7 +877,7 @@ - + @@ -906,7 +890,7 @@ - + @@ -919,7 +903,7 @@ - + @@ -1458,29 +1442,29 @@ - Название - Псевдоним - Вопрос со ставкой + + + - Вопрос с секретом + - Вопрос без риска + - - Номер COM-порта + + @@ -1592,7 +1576,11 @@ Соответствуют позициям игроков в списке - + @@ -1602,7 +1590,7 @@ Width="25" Height="25" Padding="3" - ToolTip="Удалить" + ToolTip="{x:Static lp:Resources.Delete}" DockPanel.Dock="Right" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ItemsControl,AncestorLevel=1}, Path=DataContext.DeletePlayerKey}" CommandParameter="{Binding}"> diff --git a/src/SImulator/SImulator/Properties/PublishProfiles/ClickOnceX86Profile.pubxml b/src/SImulator/SImulator/Properties/PublishProfiles/ClickOnceX86Profile.pubxml index 78b01028..2aa43b37 100644 --- a/src/SImulator/SImulator/Properties/PublishProfiles/ClickOnceX86Profile.pubxml +++ b/src/SImulator/SImulator/Properties/PublishProfiles/ClickOnceX86Profile.pubxml @@ -4,8 +4,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - 3 - 2.14.1.* + 1 + 2.15.0.* True Release True @@ -36,6 +36,6 @@ https://go.microsoft.com/fwlink/?LinkID=208121. False index.htm true - True|2023-10-08T08:09:30.9675119Z;True|2023-10-08T09:04:58.7408510+02:00;True|2023-04-05T09:20:34.2222213+02:00;True|2023-04-05T09:19:42.0864925+02:00;True|2023-03-05T12:25:57.0140212+01:00;True|2023-03-05T11:55:02.4267411+01:00;True|2023-03-04T22:04:18.8157069+01:00;True|2023-03-04T22:01:42.5379576+01:00;False|2023-03-04T21:30:31.7645530+01:00;True|2023-01-28T09:23:56.0211677+01:00;True|2023-01-08T11:13:45.0386973+01:00;True|2023-01-08T10:15:52.4694362+01:00;True|2022-12-27T09:14:19.3776898+01:00; + True|2023-10-09T17:28:12.3146788Z;True|2023-10-08T10:09:30.9675119+02:00;True|2023-10-08T09:04:58.7408510+02:00;True|2023-04-05T09:20:34.2222213+02:00;True|2023-04-05T09:19:42.0864925+02:00;True|2023-03-05T12:25:57.0140212+01:00;True|2023-03-05T11:55:02.4267411+01:00;True|2023-03-04T22:04:18.8157069+01:00;True|2023-03-04T22:01:42.5379576+01:00;False|2023-03-04T21:30:31.7645530+01:00;True|2023-01-28T09:23:56.0211677+01:00;True|2023-01-08T11:13:45.0386973+01:00;True|2023-01-08T10:15:52.4694362+01:00;True|2022-12-27T09:14:19.3776898+01:00; \ No newline at end of file diff --git a/src/SImulator/SImulator/Properties/Resources.Designer.cs b/src/SImulator/SImulator/Properties/Resources.Designer.cs index a53d49b3..42540f3f 100644 --- a/src/SImulator/SImulator/Properties/Resources.Designer.cs +++ b/src/SImulator/SImulator/Properties/Resources.Designer.cs @@ -96,6 +96,15 @@ public static string AddSumForActivePlayer { } } + /// + /// Ищет локализованную строку, похожую на Псевдоним. + /// + public static string Alias { + get { + return ResourceManager.GetString("Alias", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на (все). /// @@ -231,6 +240,60 @@ public static string Buttons { } } + /// + /// Ищет локализованную строку, похожую на COM-порт. + /// + public static string ButtonTypesCom { + get { + return ResourceManager.GetString("ButtonTypesCom", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Внешние. + /// + public static string ButtonTypesExternal { + get { + return ResourceManager.GetString("ButtonTypesExternal", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Джойстик. + /// + public static string ButtonTypesJoystick { + get { + return ResourceManager.GetString("ButtonTypesJoystick", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Клавиатура. + /// + public static string ButtonTypesKeyboard { + get { + return ResourceManager.GetString("ButtonTypesKeyboard", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Не использовать. + /// + public static string ButtonTypesNone { + get { + return ResourceManager.GetString("ButtonTypesNone", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Веб-доступ. + /// + public static string ButtonTypesWeb { + get { + return ResourceManager.GetString("ButtonTypesWeb", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на По умолчанию. /// @@ -294,6 +357,24 @@ public static string ComponentsLicenses { } } + /// + /// Ищет локализованную строку, похожую на Номер COM-порта. + /// + public static string ComPortNumber { + get { + return ResourceManager.GetString("ComPortNumber", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Удалить. + /// + public static string Delete { + get { + return ResourceManager.GetString("Delete", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Внешний вид. /// @@ -339,6 +420,44 @@ public static string EndQuestionOnRightAnswer { } } + /// + /// Ищет локализованную строку, похожую на Эта ошибка не воспроизводится. Если вы можете её гарантированно воспроизвести, свяжитесь с автором, пожалуйста. + /// + public static string ErrorCannotReproduce { + get { + return ResourceManager.GetString("ErrorCannotReproduce", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Не удалось подключиться к серверу при отправке отчёта об ошибке. Отчёт будет отправлен позднее. + /// + public static string ErrorConnectionError { + get { + return ResourceManager.GetString("ErrorConnectionError", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Эта ошибка исправлена в новой версии программы. Обновитесь, пожалуйста. + /// + public static string ErrorFixed { + get { + return ResourceManager.GetString("ErrorFixed", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Произошла ошибка в приложении: {0} + /// + ///Приложение будет закрыто. Отправить информацию разработчику?. + /// + public static string ErrorSendConfirm { + get { + return ResourceManager.GetString("ErrorSendConfirm", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Игра с фальстартами. /// @@ -617,6 +736,15 @@ public static string MakeStake { } } + /// + /// Ищет локализованную строку, похожую на Название. + /// + public static string Name { + get { + return ResourceManager.GetString("Name", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Возникла ошибка при переходе на сайт программы ({0}). Убедитесь, что у вас настроен браузер по умолчанию: {1}. /// @@ -680,6 +808,15 @@ public static string Pass { } } + /// + /// Ищет локализованную строку, похожую на Приостановить. + /// + public static string Pause { + get { + return ResourceManager.GetString("Pause", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Фон. /// @@ -779,6 +916,15 @@ public static string PreviousRound { } } + /// + /// Ищет локализованную строку, похожую на Стоимость. + /// + public static string Price { + get { + return ResourceManager.GetString("Price", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на От {0} до {1} с шагом {2}. /// @@ -842,6 +988,60 @@ public static string QuestionTime { } } + /// + /// Ищет локализованную строку, похожую на Вопрос без риска. + /// + public static string QuestionTypeNoRisk { + get { + return ResourceManager.GetString("QuestionTypeNoRisk", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Вопрос с секретом. + /// + public static string QuestionTypeSecret { + get { + return ResourceManager.GetString("QuestionTypeSecret", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Вопрос с секретом (деньги без вопроса). + /// + public static string QuestionTypeSecretNoQuestion { + get { + return ResourceManager.GetString("QuestionTypeSecretNoQuestion", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Вопрос с секретом (тема и стоимость известны до передачи вопроса). + /// + public static string QuestionTypeSecretPublicPrice { + get { + return ResourceManager.GetString("QuestionTypeSecretPublicPrice", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Простой. + /// + public static string QuestionTypeSimple { + get { + return ResourceManager.GetString("QuestionTypeSimple", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Вопрос со ставкой. + /// + public static string QuestionTypeStake { + get { + return ResourceManager.GetString("QuestionTypeStake", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Последние файлы. /// @@ -968,6 +1168,15 @@ public static string SelectHeader { } } + /// + /// Ищет локализованную строку, похожую на Можно отдать. + /// + public static string SelectionMode { + get { + return ResourceManager.GetString("SelectionMode", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Библиотека вопросов…. /// @@ -1103,6 +1312,15 @@ public static string Source { } } + /// + /// Ищет локализованную строку, похожую на Псевдонимы спецвопросов. + /// + public static string SpecialQuestionsAliases { + get { + return ResourceManager.GetString("SpecialQuestionsAliases", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Время на размышление над спецвопросом (с). /// @@ -1139,6 +1357,15 @@ public static string StartGame { } } + /// + /// Ищет локализованную строку, похожую на Завершить. + /// + public static string Stop { + get { + return ResourceManager.GetString("Stop", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Завершить игру. /// @@ -1202,6 +1429,15 @@ public static string TextColor { } } + /// + /// Ищет локализованную строку, похожую на Тема. + /// + public static string Theme { + get { + return ResourceManager.GetString("Theme", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Комментарии темы. /// diff --git a/src/SImulator/SImulator/Properties/Resources.resx b/src/SImulator/SImulator/Properties/Resources.resx index b340a523..14690336 100644 --- a/src/SImulator/SImulator/Properties/Resources.resx +++ b/src/SImulator/SImulator/Properties/Resources.resx @@ -129,6 +129,9 @@ Добавить активному игроку + + Псевдоним + (все) @@ -174,6 +177,24 @@ Кнопки + + COM-порт + + + Внешние + + + Джойстик + + + Клавиатура + + + Не использовать + + + Веб-доступ + По умолчанию @@ -195,6 +216,12 @@ Лицензии используемых компонентов + + Номер COM-порта + + + Удалить + Внешний вид @@ -210,6 +237,20 @@ Завершать вопрос при правильном ответе + + Эта ошибка не воспроизводится. Если вы можете её гарантированно воспроизвести, свяжитесь с автором, пожалуйста + + + Не удалось подключиться к серверу при отправке отчёта об ошибке. Отчёт будет отправлен позднее + + + Эта ошибка исправлена в новой версии программы. Обновитесь, пожалуйста + + + Произошла ошибка в приложении: {0} + +Приложение будет закрыто. Отправить информацию разработчику? + Игра с фальстартами @@ -310,6 +351,9 @@ Сделать ставку + + Название + Возникла ошибка при переходе на сайт программы ({0}). Убедитесь, что у вас настроен браузер по умолчанию: {1} @@ -331,6 +375,9 @@ Пас + + Приостановить + Фон @@ -364,6 +411,9 @@ Предыдущий раунд + + Стоимость + От {0} до {1} с шагом {2} @@ -385,6 +435,24 @@ Время вопроса (c) + + Вопрос без риска + + + Вопрос с секретом + + + Вопрос с секретом (деньги без вопроса) + + + Вопрос с секретом (тема и стоимость известны до передачи вопроса) + + + Простой + + + Вопрос со ставкой + Последние файлы @@ -427,6 +495,9 @@ Выбрать… + + Можно отдать + Библиотека вопросов… @@ -472,6 +543,9 @@ Источник + + Псевдонимы спецвопросов + Время на размышление над спецвопросом (с) @@ -484,6 +558,9 @@ Начать игру + + Завершить + Завершить игру @@ -505,6 +582,9 @@ Цвет текста + + Тема + Комментарии темы diff --git a/src/SImulator/SImulator/SImulator.csproj b/src/SImulator/SImulator/SImulator.csproj index 6ca04c6b..6448e9ad 100644 --- a/src/SImulator/SImulator/SImulator.csproj +++ b/src/SImulator/SImulator/SImulator.csproj @@ -5,7 +5,7 @@ SImulator SImulator SIGame emulator - Copyright © Khil-soft 2010 - 2023 + Copyright © Khil-soft 2010 - 2024 $(SImulatorVersion) bin\$(Configuration)\ true diff --git a/test/Common/SIEngine.Core.Tests/SIEngine.Core.Tests.csproj b/test/Common/SIEngine.Core.Tests/SIEngine.Core.Tests.csproj index 5519a4ce..d0380738 100644 --- a/test/Common/SIEngine.Core.Tests/SIEngine.Core.Tests.csproj +++ b/test/Common/SIEngine.Core.Tests/SIEngine.Core.Tests.csproj @@ -10,9 +10,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Common/SIEngine.Tests/SIEngine.Tests.csproj b/test/Common/SIEngine.Tests/SIEngine.Tests.csproj index 05a7434a..c23d9e29 100644 --- a/test/Common/SIEngine.Tests/SIEngine.Tests.csproj +++ b/test/Common/SIEngine.Tests/SIEngine.Tests.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/test/Common/SIEngine.Tests/TvEngineTests.cs b/test/Common/SIEngine.Tests/TvEngineTests.cs index 6dcb2217..df590213 100644 --- a/test/Common/SIEngine.Tests/TvEngineTests.cs +++ b/test/Common/SIEngine.Tests/TvEngineTests.cs @@ -28,7 +28,7 @@ public void CommonTest() new SIEnginePlayHandlerMock(), new QuestionEnginePlayHandlerMock()); - Assert.AreEqual(GameStage.Begin, engine.Stage); + Assert.That(engine.Stage, Is.EqualTo(GameStage.Begin)); AssertMove(engine, GameStage.GameThemes); AssertMove(engine, GameStage.Round); @@ -37,7 +37,7 @@ public void CommonTest() engine.SelectQuestion(0, 0); - Assert.AreEqual(GameStage.Question, engine.Stage); + Assert.That(engine.Stage, Is.EqualTo(GameStage.Question)); AssertMove(engine, GameStage.Question); AssertMove(engine, GameStage.Question); @@ -46,7 +46,7 @@ public void CommonTest() engine.SelectQuestion(0, 1); - Assert.AreEqual(GameStage.Question, engine.Stage); + Assert.That(engine.Stage, Is.EqualTo(GameStage.Question)); AssertMove(engine, GameStage.Question); AssertMove(engine, GameStage.Question); @@ -55,7 +55,7 @@ public void CommonTest() engine.SelectQuestion(0, 2); - Assert.AreEqual(GameStage.Question, engine.Stage); + Assert.That(engine.Stage, Is.EqualTo(GameStage.Question)); AssertMove(engine, GameStage.Question); AssertMove(engine, GameStage.Question); @@ -102,6 +102,6 @@ private static void AssertMove(ISIEngine engine, GameStage stage) { engine.MoveNext(); - Assert.AreEqual(stage, engine.Stage); + Assert.That(engine.Stage, Is.EqualTo(stage)); } } \ No newline at end of file diff --git a/test/SImulator/SImulator.ViewModel.Tests/CommonTests.cs b/test/SImulator/SImulator.ViewModel.Tests/CommonTests.cs index 9bf42674..5046724a 100644 --- a/test/SImulator/SImulator.ViewModel.Tests/CommonTests.cs +++ b/test/SImulator/SImulator.ViewModel.Tests/CommonTests.cs @@ -25,9 +25,9 @@ public async Task SimpleRun() await main.Start.ExecuteAsync(null); var game = main.Game; - Assert.NotNull(game); + Assert.That(game, Is.Not.Null); - game.Next.Execute(null); + game!.Next.Execute(null); game.Next.Execute(null); game.Next.Execute(null); game.Next.Execute(null); @@ -37,7 +37,8 @@ public async Task SimpleRun() game.Next.Execute(null); - Assert.AreEqual(" ", - ((PresentationController)game.PresentationController).TInfo.Text); + Assert.That( + ((PresentationController)game.PresentationController).TInfo.Text, + Is.EqualTo(" ")); } } \ No newline at end of file diff --git a/test/SImulator/SImulator.ViewModel.Tests/SImulator.ViewModel.Tests.csproj b/test/SImulator/SImulator.ViewModel.Tests/SImulator.ViewModel.Tests.csproj index 248e61bb..eba89dc8 100644 --- a/test/SImulator/SImulator.ViewModel.Tests/SImulator.ViewModel.Tests.csproj +++ b/test/SImulator/SImulator.ViewModel.Tests/SImulator.ViewModel.Tests.csproj @@ -1,4 +1,4 @@ - + net6.0 false @@ -7,7 +7,7 @@ - +