Compare commits

...

17 Commits

Author SHA1 Message Date
3891d90f43 updated docs path 2025-01-19 13:43:02 +01:00
a7ef306800 reorganized repository 2025-01-19 13:33:30 +01:00
a1e1205247 moved controller to subfolder 2025-01-18 13:28:32 +01:00
1007b6744d removed .idea folder 2025-01-18 13:12:55 +01:00
f0701fe9e7 fixed navigation and more secure navigation 2025-01-18 13:11:27 +01:00
b462ae3c7e removed second layer to set the start positions 2025-01-16 20:56:06 +01:00
8ad2a1342a fixed history 2025-01-16 19:30:40 +01:00
99007047eb final commit for Torsten 2025-01-16 16:03:56 +01:00
Fabian505
d8b9430120 Changes 2025-01-16 15:34:29 +01:00
Fabian505
4f4d598eb6 Changes 2025-01-16 15:29:18 +01:00
Fabian505
2f065f4917 Finish export method 2025-01-16 13:38:16 +01:00
Fabian505
6c8d033629 Add SetPlayers with set order 2025-01-16 12:33:58 +01:00
Fabian505
3dfe314836 Set instruction to InstructionVisualizer 2025-01-16 12:17:56 +01:00
Fabian505
ca546e5ba6 Merge branch 'main' of https://gitea.hb.dhbw-stuttgart.de/FabianHamacher/TurboSchach 2025-01-16 11:50:53 +01:00
Fabian505
6b01273580 Add menu for Player name input 2025-01-16 11:50:48 +01:00
Fabian505
14869f4a83 Modify eport method; round counter doesnt work quiet right 2025-01-16 09:26:53 +01:00
Fabian505
47b880e737 Implement export method 2025-01-16 08:49:01 +01:00
70 changed files with 3896 additions and 1082 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,7 @@
.vscode/
.idea/
build/
docs/
*.exe
*.txt
chess

8
.idea/.gitignore generated vendored
View File

@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

2
.idea/TurboSchach.iml generated
View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CIDR" type="CPP_MODULE" version="4" />

494
.idea/editor.xml generated
View File

@@ -1,494 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BackendCodeEditorSettings">
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALLOW_COMMENT_AFTER_LBRACE/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/EXPORT_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TYPE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INVOCABLE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/OTHER_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/REQUIRES_EXPRESSION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/EXPRESSION_BRACES/@EntryValue" value="OUTSIDE_AND_INSIDE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/EMPTY_BLOCK_STYLE/@EntryValue" value="TOGETHER" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexRemoved" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexRemoved" />
</component>
</project>

8
.idea/modules.xml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/TurboSchach.iml" filepath="$PROJECT_DIR$/.idea/TurboSchach.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -1,208 +0,0 @@
#include "MenuController.hpp"
#include "Player/Player.hpp"
#include "Visualizer/BaseVisualizer.hpp"
#include "Visualizer/InstructionsVisualizer.hpp"
#include "Visualizer/ImportVisualizer.hpp"
#include "Visualizer/PlayingViewVisualizer.hpp"
#include <iostream>
#include <memory>
MenuController::MenuController() {
// Konstruktor, falls nötig
}
MenuController::~MenuController() {
// Destruktor, falls nötig
}
void MenuController::HandleFirstOption() {
BaseVisualizer::ClearTerminal();
// Spieler initialisieren
Player* playerA = new Player("Player 1");
Player* playerB = new Player("Player 2");
// Schachbrett initialisieren
Chessboard chessboard;
chessboard.SetPlayers(playerA, playerB);
chessboard.InitializeStartBoard();
chessboard.UpdateChessPieces();
SetChessboard(&chessboard);
// Spielansicht vorbereiten
PlayingViewVisualizer playView(&chessboard, 4, 12);
while (!chessboard.IsCheckmate() && !chessboard.IsStalemate() && !chessboard.IsDraw() && chessboard.IsFinished() == false) {
playView.DisplayElement();
std::string input;
std::cout << "\x1B[u"; // Cursor-Positionierung
std::cin >> input;
std::string command = ExtractAfterDollar(input);
if (!command.empty()) {
HandleCommandOptions(command);
if (command == "0") {
return;
}
} else {
std::string status = chessboard.MoveChessPiece(input);
if (status.empty() == false) {
playView.SetMessage(status);
}
}
}
std::string winner = chessboard.GetWinner();
if (winner.empty()) {
playView.SetMessage("Game is over! - Draw");
} else {
playView.SetMessage("Game is over! - " + winner + " has won the game!");
}
while (true) {
playView.DisplayElement();
std::string input;
std::cout << "\x1B[u"; // Cursor-Positionierung
std::cin >> input;
std::string command = ExtractAfterDollar(input);
if (command == "0") {
return;
}
}
}
void MenuController::HandleSecondOption() {
BaseVisualizer::ClearTerminal();
ImportVisualizer import;
import.DisplayElement();
std::string input;
std::string filePath;
std::cout << "\x1B[u";
std::getline(std::cin, filePath);
if (filePath.empty()) {
return;
}
Chessboard chessboard;
chessboard.InitializeStartBoard();
chessboard.UpdateChessPieces();
SetChessboard(&chessboard);
std::string status = chessboard.ImportFilePGN(filePath);
if (status.empty() == false) {
return;
}
BaseVisualizer::ClearTerminal();
PlayingViewVisualizer playView(&chessboard, 4, 12);
playView.SetMessage(status);
playView.DisplayElement();
bool isFirstDisplayed = true;
if (status.empty() == false) {
playView.SetMessage(status);
} else {
while (!chessboard.IsCheckmate() && !chessboard.IsStalemate() && !chessboard.IsDraw() && chessboard.IsFinished() == false) {
if (isFirstDisplayed) {
isFirstDisplayed = false;
} else {
playView.DisplayElement();
}
std::cout << "\x1B[u"; // Cursor-Positionierung
std::cin.clear();
std::getline(std::cin, input);
std::string command = ExtractAfterDollar(input);
if (!command.empty()) {
HandleCommandOptions(command);
if (command == "0") {
}
} else {
std::string status = chessboard.MoveChessPiece(input);
if (status.empty() == false) {
playView.SetMessage(status);
}
}
}
std::string winner = chessboard.GetWinner();
if (winner.empty()) {
playView.SetMessage("Game is over! - Draw");
} else {
playView.SetMessage("Game is over! - " + winner + " has won the game!");
}
}
while (true) {
playView.DisplayElement();
std::string input;
std::cout << "\x1B[u"; // Cursor-Positionierung
std::cin >> input;
std::string command = ExtractAfterDollar(input);
if (command == "0") {
return;
}
}
}
// ToDo:: Hier muss aus irgendeinem Grund immer zweimal die Eingabe abgeschickt werden. Why!?
void MenuController::HandleThirdOption() {
BaseVisualizer::ClearTerminal();
InstructionsVisualizer instructions;
instructions.DisplayElement();
std::string dummyInput;
//std::cout << std::endl;
// Eingabepuffer leeren
//std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "\x1B[u"; // Cursor-Positionierung
std::cin.clear();
std::getline(std::cin, dummyInput);
}
void MenuController::HandleCommandOptions(const std::string& command) {
if (command == "1") {
HandleThirdOption();
return;
} else if (command == "2") {
std::cout << "Save game functionality is not implemented yet.\n";
} else if (command == "3") {
// resign
CHESSBOARD->SetWinner(CHESSBOARD->GetOpponentPlayer());
return;
} else if (command == "0") { // exit
return;
} else {
std::cout << "Invalid command. Please try again.\n";
}
}
std::string MenuController::ExtractAfterDollar(const std::string& userInput) {
if (!userInput.empty() && userInput[0] == '$') {
return userInput.substr(1); // Rückgabe des Teils nach '$'
}
return ""; // Leerer String, wenn kein '$' am Anfang
}
Chessboard* MenuController::GetChessboard() {
return CHESSBOARD;
}
void MenuController::SetChessboard(Chessboard* chessboard) {
CHESSBOARD = chessboard;
}

View File

@@ -1,27 +0,0 @@
#ifndef MENU_CONTROLLER_HPP
#define MENU_CONTROLLER_HPP
#include "Chessboard/Chessboard.hpp"
#include <string>
class MenuController {
private:
std::string ExtractAfterDollar(const std::string& userInput);
void InitializeGame();
Chessboard* CHESSBOARD;
public:
MenuController();
~MenuController();
void HandleFirstOption();
void HandleSecondOption();
void HandleThirdOption();
void HandleCommandOptions(const std::string& command);
Chessboard* GetChessboard();
void SetChessboard(Chessboard* chessboard);
};
#endif // MENU_CONTROLLER_HPP

View File

@@ -17,7 +17,7 @@ make run
```
# build
g++ -std=c++17 -o chess.exe main.cpp MenuController.cpp ChessPieces/*.cpp Chessboard/*.cpp Player/*.cpp Visualizer/*.cpp
g++ -std=c++17 -o chess.exe main.cpp ChessPieces/*.cpp Chessboard/*.cpp Controller/*.cpp Player/*.cpp Visualizer/*.cpp
# run
./chess.exe

View File

@@ -1,28 +0,0 @@
#include "HistorieVisualizer.hpp"
#include "../ChessPieces/ChessPieceMove.hpp"
void HistorieVisualizer::GenerateElement() {
BaseVisualizer::display_vector.push_back({"Historie"});
std::vector<ChessPieceMove> test = CHESSBOARD->GetHistoryMoves();
BaseVisualizer::GenerateTableTopBottom(MAX_MENU_WIDTH, true, true);
std::string playerName1 = HistorieVisualizer::PLAYER1;
std::string playerName2 = HistorieVisualizer::PLAYER2;
if (playerName1.length() > 14) {
playerName1 = playerName1.substr(0, 11) + "...";
}
if(playerName2.length() > 14) {
playerName2 = playerName2.substr(0, 11) + "...";
}
BaseVisualizer::GenerateTableLine(MAX_MENU_WIDTH, {playerName1, playerName2}, true);
BaseVisualizer::BaseVisualizer::GenerateTableSeperator(MAX_MENU_WIDTH, true);
// ToDo: History einlesen und anzeigen lassenF
for (size_t i = 0; i < 5; i++) {
BaseVisualizer::GenerateTableLine(MAX_MENU_WIDTH, {"", ""}, true);
}
BaseVisualizer::GenerateTableTopBottom(MAX_MENU_WIDTH, false, true);
}

View File

@@ -1,16 +0,0 @@
#include "ImportVisualizer.hpp"
void ImportVisualizer::GenerateElement() {
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
BaseVisualizer::AddEmptyLines(5, MAX_MENU_WIDTH, false);
for (const auto& content : menuContent) {
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, content, false, PADDING);
}
BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Please enter a path to a PGN file:", false, PADDING);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "\x1B[s", false, PADDING);
BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "You can get a lot of PGN files from chessgames.com.", false, PADDING);
BaseVisualizer::AddEmptyLines(5, MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
}

View File

@@ -1,19 +0,0 @@
#ifndef INSTRUCTIONSVISUALIZER_HPP
#define INSTRUCTIONSVISUALIZER_HPP
#include "BaseVisualizer.hpp"
class InstructionsVisualizer : public BaseVisualizer {
private:
inline static const std::vector<std::string> menuContent = {
"Hier kommt noch eine Anleitung"
};
void GenerateElement() override;
public:
InstructionsVisualizer() : BaseVisualizer(60, 4) {
InstructionsVisualizer::GenerateElement();
};
};
#endif //INSTRUCTIONSVISUALIZER_HPP

View File

@@ -0,0 +1,12 @@
[Event "Private Game"]
[Site "Horb am Neckar, Germany"]
[Date "2025.01.16"]
[Round "2"]
[White "E"]
[Black "F"]
[PlyCount "7"]
[Result "*"]
1. e3 e5 2. e4 f5 3. f3 g5
4. g4 *

View File

@@ -0,0 +1,11 @@
[Event "Private Game"]
[Site "Horb am Neckar, Germany"]
[Date "2025.01.16"]
[Round "1"]
[White "F"]
[Black "E"]
[PlyCount "4"]
[Result "*"]
1. e3 e5 2. e4 f5 *

View File

@@ -0,0 +1,10 @@
[Event "Private Game"]
[Site "Horb am Neckar, Germany"]
[Date "2025.01.16"]
[Round "1"]
[White "F"]
[Black "E"]
[PlyCount "0"]
[Result "*"]
*

View File

@@ -0,0 +1,9 @@
[Event "Private Game"]
[Site "Horb am Neckar, Germany"]
[Date "2025.01.16"]
[Round "1"]
[White "Player 1"]
[Black "Player 2"]
[PlyCount "0"]
[Result "*"]
*

View File

@@ -0,0 +1,11 @@
[Event "Private Game"]
[Site "Horb am Neckar, Germany"]
[Date "2025.01.16"]
[Round "1"]
[White "Player 2"]
[Black "Player 1"]
[PlyCount "3"]
[Result "*"]
1. e3 e6 2. f4 *

View File

@@ -0,0 +1,11 @@
[Event "Private Game"]
[Site "Horb am Neckar, Germany"]
[Date "2025.01.16"]
[Round "1"]
[White "Sebro"]
[Black "Fabian"]
[PlyCount "1"]
[Result "*"]
1. e3 *

2970
doc/Doxyfile Normal file

File diff suppressed because it is too large Load Diff

1
docs.ps1 Normal file
View File

@@ -0,0 +1 @@
& "doxygen" doc/Doxyfile

View File

@@ -1,58 +0,0 @@
#ifdef _WIN32
#include <windows.h>
#endif
#include "MenuController.hpp"
#include "./Visualizer/StartMenuVisualizer.hpp"
#include "./Visualizer/BaseVisualizer.hpp"
#include <iostream>
int main(int argc, char* argv[]) {
#ifdef _WIN32
SetConsoleOutputCP(CP_UTF8);
#endif
BaseVisualizer::ClearTerminal();
StartMenuVisualizer startMenu(3);
MenuController menuController; // Instanz der Klasse
while (startMenu.GetSelectedOption() != 0) {
BaseVisualizer::ClearTerminal();
startMenu.DisplayElement1();
switch (startMenu.GetSelectedOption()) {
case 1:
menuController.HandleFirstOption();
break;
case 2:
menuController.HandleSecondOption();
break;
case 3:
menuController.HandleThirdOption();
break;
default:
std::cout << "Invalid option. Please try again.\n";
break;
}
}
return 0;
}
/*
Export
Menüs\Draw
Message -> Farbe?
Escape in Anleitung
Instructions einfügen
Sebro
Import
Fehlermeldung durch Bewegung PlayViewVisualizer::message
Instructions generieren
*/

View File

@@ -1,10 +1,12 @@
all:
g++ -std=c++17 -o chess main.cpp MenuController.cpp ChessPieces/*.cpp Chessboard/*.cpp Player/*.cpp Visualizer/*.cpp
g++ -std=c++17 -o build/chess src/main.cpp src/ChessPieces/*.cpp src/Chessboard/*.cpp src/Controller/*.cpp src/Player/*.cpp src/Visualizer/*.cpp
run:
./chess
./build/chess
clean:
rm -f main.exe
rm -f chess.exe
rm -f chess
rm -f build/*
rm -f -r doc/html
doc:
doxygen doc/Doxyfile

View File

@@ -1,2 +1,2 @@
& "g++" -std=c++17 -o chess main.cpp MenuController.cpp ChessPieces/*.cpp Chessboard/*.cpp Player/*.cpp Visualizer/*.cpp
./chess.exe
& "g++" -std=c++17 -o build/chess.exe src/main.cpp src/ChessPieces/*.cpp src/Chessboard/*.cpp src/Controller/*.cpp src/Player/*.cpp src/Visualizer/*.cpp
./build/chess.exe

View File

@@ -5,13 +5,10 @@
* @param move The move that uses the short algebraic notation.
*/
ChessPieceMove::ChessPieceMove(std::string move) {
move = this->Normalize(move);
this->_move = this->Normalize(move);
if (this->IsValidShortNotation(move)) {
this->_move = move;
if (this->IsValidShortNotation()) {
this->ParseShortNotation();
} else {
throw std::invalid_argument("invalid move notation");
}
}

View File

@@ -1,6 +1,11 @@
#include <memory>
#include <regex>
#include <set>
#include <fstream>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctime>
#include "../Chessboard/Chessboard.hpp"
#include "../ChessPieces/Rook.hpp"
#include "../ChessPieces/Queen.hpp"
@@ -14,39 +19,43 @@
#include "../ChessPieces/Queen.hpp"
#include "../ChessPieces/Rook.hpp"
void Chessboard::InitializeStartBoard() {
Chessboard::InitializeBoard(defaultBoard);
}
void Chessboard::SetStartingPosition() {
void Chessboard::InitializeBoard(std::set<Board_ChessPiece> board) {
for (const auto& piece : board) {
ChessPiecePosition pos = ChessPiecePosition(piece.position.first, piece.position.second);
ChessPieceColor color = (piece.color == 0) ? ChessPieceColor::Black : ChessPieceColor::White;
// black chess pieces
this->SetChessPiece(new Rook(ChessPieceColor::Black, ChessPiecePosition("A8")));
this->SetChessPiece(new Knight(ChessPieceColor::Black, ChessPiecePosition("B8")));
this->SetChessPiece(new Bishop(ChessPieceColor::Black, ChessPiecePosition("C8")));
this->SetChessPiece(new Queen(ChessPieceColor::Black, ChessPiecePosition("D8")));
this->SetChessPiece(new King(ChessPieceColor::Black, ChessPiecePosition("E8")));
this->SetChessPiece(new Bishop(ChessPieceColor::Black, ChessPiecePosition("F8")));
this->SetChessPiece(new Knight(ChessPieceColor::Black, ChessPiecePosition("G8")));
this->SetChessPiece(new Rook(ChessPieceColor::Black, ChessPiecePosition("H8")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("A7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("B7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("C7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("D7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("E7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("F7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("G7")));
this->SetChessPiece(new Pawn(ChessPieceColor::Black, ChessPiecePosition("H7")));
switch (piece.type) {
case 'R':
SetChessPiece(new Rook(color, pos));
break;
case 'N':
SetChessPiece(new Knight(color, pos));
break;
case 'B':
SetChessPiece(new Bishop(color, pos));
break;
case 'Q':
SetChessPiece(new Queen(color, pos));
break;
case 'K':
SetChessPiece(new King(color, pos));
break;
case 'P':
SetChessPiece(new Pawn(color, pos));
break;
default:
std::cout << "Invalid ChessPieceType!" << std::endl;
return;
}
}
// white chess pieces
this->SetChessPiece(new Rook(ChessPieceColor::White, ChessPiecePosition("A1")));
this->SetChessPiece(new Knight(ChessPieceColor::White, ChessPiecePosition("B1")));
this->SetChessPiece(new Bishop(ChessPieceColor::White, ChessPiecePosition("C1")));
this->SetChessPiece(new Queen(ChessPieceColor::White, ChessPiecePosition("D1")));
this->SetChessPiece(new King(ChessPieceColor::White, ChessPiecePosition("E1")));
this->SetChessPiece(new Bishop(ChessPieceColor::White, ChessPiecePosition("F1")));
this->SetChessPiece(new Knight(ChessPieceColor::White, ChessPiecePosition("G1")));
this->SetChessPiece(new Rook(ChessPieceColor::White, ChessPiecePosition("H1")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("A2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("B2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("C2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("D2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("E2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("F2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("G2")));
this->SetChessPiece(new Pawn(ChessPieceColor::White, ChessPiecePosition("H2")));
}
/**
@@ -617,8 +626,13 @@ std::vector<ChessPiece*> Chessboard::GetChessPieces() {
return chessPieces;
}
void Chessboard::SetPlayers(Player* playerA, Player* playerB) {
this->players = {playerB, playerA};
this->GetPlayer(ChessPieceColor::White)->SetColor(ChessPieceColor::White);
this->GetPlayer(ChessPieceColor::Black)->SetColor(ChessPieceColor::Black);
this->currentPlayer = this->GetPlayer(ChessPieceColor::White);
}
/**
@@ -627,7 +641,7 @@ std::vector<ChessPiece*> Chessboard::GetChessPieces() {
* @param Player* playerA The first player.
* @param Player* playerB The second player.
*/
void Chessboard::SetPlayers(Player* playerA, Player* playerB) {
void Chessboard::SetPlayersRdm(Player* playerA, Player* playerB) {
std::random_device rngdevice;
std::mt19937 generator(rngdevice());
std::uniform_int_distribution<int> distr(0, 1);
@@ -711,97 +725,106 @@ ChessPiece* Chessboard::GetChessPieceKing(ChessPieceColor color) {
/*bool Chessboard::ExportFilePGN(std::string filePath) {
if (ExistsPath(save_path)) {
bool Chessboard::ExportFilePGN(std::string filePath) {
if (std::filesystem::exists(filePath)) {
if (std::filesystem::is_directory(filePath)) {
filePath = this->GenerateExportFilePath(filePath);
std::string player1 = this->GetPlayer(ChessPieceColor::White)->GetName();
std::string player2 = this->GetPlayer(ChessPieceColor::Black)->GetName();
std::string round;
// Regex-Pattern, um die Zahl nach "Runde " zu finden
std::regex pattern(R"(\bRunde\s+(\d+))");
std::smatch match;
if (std::regex_search(filePath, match, pattern)) {
round = match[1]; // Die gefundene Zahl (Gruppe 1)
}
std::ofstream file(filePath);
if (file.is_open()) {
file << GeneratePGNContent(GetTodaysDate("%Y.%m.%d"), player1, player2, round);
file.close();
} else {
throw "File could not be created and opened";
}
} else {
throw "Path exists but is not a directory";
}
} else {
throw "Path could not be found";
}
std::string result = std::string("[Event \"Private Game\"]\n") // ersten vier werden nicht berücksichtigt
+ "[Site \"Horb am Neckar, Germany\"]\n"
+ "[Date \"" + GetTodaysDate() + "\"]\n"
+ "[Round \"" + GetAmountOfGames() + "\"]\n"
+ "[White \"" + this->GetPlayer(ChessPieceColor::White)->GetName() + "\"]\n"
+ "[Black \"" + this->GetPlayer(ChessPieceColor::Black)->GetName() + "\"]\n"
+ "[PlyCount \"" + history.size() + "\"]\n"
+ "\n"
+ // Spielzüge;
*/
// std::string moveList;
// std::vector<ChessPieceMove> moves = this->GetHistoryMoves();
/**
file_name = Datum - Spielernamen
[Result
1-0 Weiß -> 28. Qh8# 1-0
0-1 Schwarz -> 36. Qxf1 Qxe5 0-1
1/2-1/2 Remis
* Kein Ergebnis
]
1. e4 e5 2. ...
<nummer> -> Zug
<first> -> Zug weiß
<second> -> Zug schwarz
[Result "1/2-1/2"]
[ECO "A29"]
[WhiteElo "2750"]
[BlackElo "2595"]
[PlyCount "155"]
// moveList.append("[PlyCount \"").append(moves.size()).append("\"]").append("\n");
for (int moveIndex = 0; moveIndex < moves.size() - 1; moveIndex++) {
if (moveIndex % 6 == 0) {
moveList.append("\n");
}
if (moveIndex % 2 == 0) {
moveList.append(std::to_string((moveIndex / 2) + 1)).append(".");
}
moveList.append(" ").append(moves[moveIndex].ToString()).append(" ");
}
std::cout << moveList;
return true;
}
}*/
std::string Chessboard::GenerateExportFilePath(std::string& filePath) {
if (this->GetCurrentSaveFilename().empty()) {
std::string player1 = this->GetPlayer(ChessPieceColor::White)->GetName();
std::string player2 = this->GetPlayer(ChessPieceColor::Black)->GetName();
std::string Chessboard::GetTodaysDate() {
std::string fileName = GetTodaysDate("%Y%m%d").append(" - ").append(player1).append(" gegen ").append(player2);
fileName.append(" - Runde ").append(GetRound(filePath, fileName));
this->SetCurrentSaveFilename(fileName);
filePath.append(fileName).append(".PGN");
return filePath;
} else {
return filePath.append(this->GetCurrentSaveFilename()).append(".PGN");
}
}
std::string Chessboard::GetTodaysDate(std::string format) {
// Hole aktuelle Zeit
std::time_t now = std::time(nullptr);
// Zerlege die Zeit in eine Struktur
std::tm* localTime = std::localtime(&now);
// Formatiere das Datum als YYYY.MM.DD
// Formatiere das Datum
std::ostringstream dateStream;
dateStream << std::put_time(localTime, "%Y.%m.%d");
dateStream << std::put_time(localTime, format.c_str());
return dateStream.str();
}
std::string Chessboard::GetAmountOfGames() {
/*return std::to_string(
std::count_if
(std::filesystem::directory_iterator(save_path),
std::filesystem::directory_iterator{},
std::filesystem::is_regular_file
)
);*/
return "";
// ToDo: Zählt noch nicht richtig
std::string Chessboard::GetRound(const std::string& folderPath, const std::string& baseFileName) {
size_t count = 0;
// Escape-Funktion für Regex
auto escapeRegex = [](const std::string& str) {
std::string escaped;
for (char c : str) {
if (std::string(".^$|()[]*+?\\").find(c) != std::string::npos) {
escaped += '\\';
}
escaped += c;
}
return escaped;
};
// Erstelle das Regex-Pattern
std::string pattern = "^" + escapeRegex(baseFileName) + R"(\d+\.pgn$)";
std::regex regexPattern(pattern, std::regex::icase); // Case-insensitive
std::cout << "Regex-Pattern: " << pattern << std::endl;
// Iteriere durch den Ordner
for (const auto& entry : std::filesystem::directory_iterator(folderPath)) {
if (entry.is_regular_file()) {
std::string fileName = entry.path().filename().string();
std::cout << "Prüfe Datei: " << fileName << std::endl;
if (std::regex_match(fileName, regexPattern)) {
std::cout << "Datei passt: " << fileName << std::endl;
count++;
}
}
}
return std::to_string(count + 1);
}
std::string Chessboard::GetWinner() {
@@ -824,3 +847,68 @@ void Chessboard::SetWinner(Player* winner) {
this->game_status = {true, false};
}
}
std::string Chessboard::GeneratePGNContent(std::string today, std::string player1, std::string player2, std::string round) {
return std::string("[Event \"Private Game\"]\n") // ersten vier werden nicht berücksichtigt
.append("[Site \"Horb am Neckar, Germany\"]\n")
.append("[Date \"").append(today).append("\"]\n")
.append("[Round \"").append(round).append("\"]\n")
.append("[White \"").append(player1).append("\"]\n")
.append("[Black \"").append(player2).append("\"]\n")
.append("[PlyCount \"").append(std::to_string(this->GetHistoryMoves().size())).append("\"]\n")
.append("[Result \"").append(GetPGNResult()).append("\"]\n")
.append("\n")
.append(GenerateMoveList());
}
std::string Chessboard::GenerateMoveList() {
std::string result;
std::vector<ChessPieceMove> moves = this->GetHistoryMoves();
if (this->HasMoves()) {
for (size_t moveIndex = 0; moveIndex < moves.size() ; ++moveIndex) {
if (moveIndex % 6 == 0) {
result.append("\n");
}
if (moveIndex % 2 == 0) {
result.append(std::to_string((moveIndex / 2) + 1)).append(".");
}
result.append(" ").append(moves[moveIndex].ToString()).append(" ");
}
}
result.append(GetPGNResult());
return result;
}
std::pair<bool, bool> Chessboard::GetGameState() {
return this->game_status;
};
void Chessboard::SetGameState(std::pair<bool, bool> gameState) {
this->game_status = gameState;
};
std::string Chessboard::GetPGNResult() {
std::pair<bool, bool> state = GetGameState();
if (state.first == true && state.second == true) {
return std::string("1/2-1/2");
} else if (state.first == true && state.second == false) {
return std::string("0-1");
} else if (state.first == false && state.second == true) {
return std::string("1-0");
} else {
return std::string("*");
}
}
std::string Chessboard::GetCurrentSaveFilename() {
return this->currentSaveFilename;
}
void Chessboard::SetCurrentSaveFilename(std::string currentSaveFilename) {
this->currentSaveFilename = currentSaveFilename;
}

View File

@@ -24,6 +24,7 @@ class Chessboard {
inline static const std::string save_path = "chessgames/save_files/";
Player* winner = nullptr;
std::string currentSaveFilename;
// false, false => Laufend
// true, false => black win
@@ -40,66 +41,11 @@ class Chessboard {
void RemoveChessPiece(ChessPiecePosition position);
public:
struct Board_ChessPiece {
int color;
char type;
std::pair<char, int> position;
Board_ChessPiece(const int& c, const char& t, std::pair<char,int> p) : color(c), type(t), position(p) {}
bool operator<(const Board_ChessPiece& other) const {
if (position != other.position) {
return position < other.position;
}
if (color != other.color) {
return color < other.color;
}
return type < other.type;
}
};
inline static const std::set<Board_ChessPiece> defaultBoard = {
{0, 'P', {'A', 7}},
{0, 'P', {'B', 7}},
{0, 'P', {'C', 7}},
{0, 'P', {'D', 7}},
{0, 'P', {'E', 7}},
{0, 'P', {'F', 7}},
{0, 'P', {'G', 7}},
{0, 'P', {'H', 7}},
{0, 'R', {'A', 8}},
{0, 'N', {'B', 8}},
{0, 'B', {'C', 8}},
{0, 'Q', {'D', 8}},
{0, 'K', {'E', 8}},
{0, 'B', {'F', 8}},
{0, 'N', {'G', 8}},
{0, 'R', {'H', 8}},
{1, 'P', {'A', 2}},
{1, 'P', {'B', 2}},
{1, 'P', {'C', 2}},
{1, 'P', {'D', 2}},
{1, 'P', {'E', 2}},
{1, 'P', {'F', 2}},
{1, 'P', {'G', 2}},
{1, 'P', {'H', 2}},
{1, 'R', {'A', 1}},
{1, 'N', {'B', 1}},
{1, 'B', {'C', 1}},
{1, 'Q', {'D', 1}},
{1, 'K', {'E', 1}},
{1, 'B', {'F', 1}},
{1, 'N', {'G', 1}},
{1, 'R', {'H', 1}}
};
~Chessboard();
std::string GetAmountOfGames();
std::vector<ChessPieceMove> GetHistoryMoves();
std::vector<std::pair<ChessPiecePosition, ChessPiecePosition>> GetHistoryPositions();
std::string GetTodaysDate();
void InitializeStartBoard();
void InitializeBoard(std::set<Board_ChessPiece> board);
//void SetChessPiece(std::unique_ptr<ChessPiece> piece);
std::string GetTodaysDate(std::string format);
void SetStartingPosition();
void SetChessPiece(ChessPiece* chesspiece);
bool IsDraw();
bool IsEmptyField(ChessPiecePosition* position);
@@ -119,6 +65,7 @@ class Chessboard {
bool IsPositionUnderAttack(ChessPiecePosition position, ChessPieceColor color);
Player* GetCurrentPlayer();
Player* GetOpponentPlayer();
void SetPlayersRdm(Player* playerA, Player* playerB);
void SetPlayers(Player* playerA, Player* playerB);
void SwitchCurrentPlayer();
Player* GetPlayer(ChessPieceColor color);
@@ -126,6 +73,15 @@ class Chessboard {
std::string ImportFilePGN(std::string filePath);
bool ExportFilePGN(std::string filePath);
void SetWinner(Player* winner);
std::string GeneratePGNContent(std::string today, std::string player1, std::string player2, std::string round);
std::string GenerateMoveList();
std::pair<bool, bool> GetGameState();
void SetGameState(std::pair<bool, bool> gameState);
std::string GetPGNResult();
std::string GetRound(const std::string& folderPath, const std::string& baseFileName);
std::string GetCurrentSaveFilename();
void SetCurrentSaveFilename(std::string currentSaveFileName);
std::string GenerateExportFilePath(std::string& filePath);
std::string GetWinner();
bool IsFinished();
};

View File

@@ -0,0 +1,254 @@
#include "MenuController.hpp"
#include "../Player/Player.hpp"
#include "../Visualizer/BaseVisualizer.hpp"
#include "../Visualizer/InstructionsVisualizer.hpp"
#include "../Visualizer/ImportVisualizer.hpp"
#include "../Visualizer/PlayingViewVisualizer.hpp"
#include "../Visualizer/PlaySelectVisualizer.hpp"
#include <filesystem>
#include <iostream>
#include <memory>
MenuController::MenuController() {
// Konstruktor, falls nötig
}
MenuController::~MenuController() {
// Destruktor, falls nötig
}
void MenuController::HandlePlayingNavigation(std::string choice, Chessboard& chessboard, PlayingViewVisualizer& playView, bool isGameOver) {
if (choice.empty() == false) {
if (choice.at(0) == '$') {
if (choice == "$0") {
return;
} else if (choice == "$1") {
HandleThirdOption();
} else if (choice == "$2") {
chessboard.ExportFilePGN("chessgames/save_games/");
} else if (choice == "$3") {
if (isGameOver) {
playView.SetMessage("Game is over! No moves allowed.");
} else {
chessboard.SetWinner(chessboard.GetOpponentPlayer());
}
}
} else {
if (isGameOver) {
playView.SetMessage("Game is over! No moves allowed.");
} else {
playView.SetMessage(chessboard.MoveChessPiece(choice));
}
}
}
}
void MenuController::HandleFirstOption() {
PlaySelectVisualizer playerSelect(3);
std::string choiceA;
std::string choiceB;
do {
playerSelect.SetLabelPlayerName("first player");
choiceA = playerSelect.ShowMenu();
if (choiceA.length() > 40) {
choiceA.clear();
}
} while (choiceA.empty());
do {
playerSelect.SetLabelPlayerName("second player");
choiceB = playerSelect.ShowMenu();
if (choiceB.length() > 40) {
choiceB.clear();
};
} while (choiceB.empty());
// Spieler initialisieren
Player* playerA = new Player(choiceA);
Player* playerB = new Player(choiceB);
// Schachbrett initialisieren
Chessboard chessboard;
chessboard.SetPlayersRdm(playerA, playerB);
chessboard.SetStartingPosition();
chessboard.UpdateChessPieces();
SetChessboard(&chessboard);
PlayingViewVisualizer playView(&chessboard, 4, 12);
std::string choiceChessboard;
do {
while (!chessboard.IsCheckmate() && !chessboard.IsStalemate() && !chessboard.IsDraw() && chessboard.IsFinished() == false) {
choiceChessboard = playView.ShowMenu();
this->HandlePlayingNavigation(choiceChessboard, chessboard, playView, false);
}
std::string winner = chessboard.GetWinner();
choiceChessboard = "$0";
if (winner.empty()) {
playView.SetMessage("Game is over! - Draw");
} else {
playView.SetMessage("Game is over! - " + winner + " has won the game!");
}
} while (choiceChessboard != "$0");
do {
choiceChessboard = playView.ShowMenu();
this->HandlePlayingNavigation(choiceChessboard, chessboard, playView, true);
} while (choiceChessboard != "$0");
// while (!chessboard.IsCheckmate() && !chessboard.IsStalemate() && !chessboard.IsDraw() && chessboard.IsFinished() == false) {
// playView.DisplayElement();
// std::string input;
// std::cout << "\x1B[u"; // Cursor-Positionierung
// std::cin >> input;
// std::string command = ExtractAfterDollar(input);
// if (!command.empty()) {
// HandleCommandOptions(command);
// if (command == "0") {
// return;
// }
// } else {
// std::string status = chessboard.MoveChessPiece(input);
// if (status.empty() == false) {
// playView.SetMessage(status);
// }
// }
// }
// std::string winner = chessboard.GetWinner();
// if (winner.empty()) {
// playView.SetMessage("Game is over! - Draw");
// } else {
// playView.SetMessage("Game is over! - " + winner + " has won the game!");
// }
// while (true) {
// playView.DisplayElement();
// std::string input;
// std::cout << "\x1B[u"; // Cursor-Positionierung
// std::cin >> input;
// std::string command = ExtractAfterDollar(input);
// if (command == "0") {
// return;
// }
// }
}
void MenuController::HandleSecondOption() {
ImportVisualizer importSelect;
std::string filePath;
do {
filePath = importSelect.ShowMenu();
if (std::filesystem::exists(filePath) == false) {
filePath.clear();
}
} while (filePath.empty());
Chessboard chessboard;
chessboard.SetStartingPosition();
chessboard.UpdateChessPieces();
SetChessboard(&chessboard);
std::string status = chessboard.ImportFilePGN(filePath);
PlayingViewVisualizer playView(&chessboard, 4, 12);
playView.SetMessage(status);
std::string choiceChessboard;
do {
while (!chessboard.IsCheckmate() && !chessboard.IsStalemate() && !chessboard.IsDraw() && chessboard.IsFinished() == false) {
choiceChessboard = playView.ShowMenu();
this->HandlePlayingNavigation(choiceChessboard, chessboard, playView, false);
}
std::string winner = chessboard.GetWinner();
choiceChessboard = "$0";
if (winner.empty()) {
playView.SetMessage("Game is over! - Draw");
} else {
playView.SetMessage("Game is over! - " + winner + " has won the game!");
}
} while (choiceChessboard != "$0");
do {
choiceChessboard = playView.ShowMenu();
this->HandlePlayingNavigation(choiceChessboard, chessboard, playView, true);
} while (choiceChessboard != "$0");
}
// ToDo:: Hier muss aus irgendeinem Grund immer zweimal die Eingabe abgeschickt werden. Why!?
void MenuController::HandleThirdOption() {
InstructionsVisualizer instructions;
instructions.DrawView();
}
// void MenuController::HandleCommandOptions(const std::string& command) {
// if (command == "1") {
// HandleThirdOption();
// return;
// } else if (command == "2") {
// CHESSBOARD->ExportFilePGN("chessgames/save_games/");
// std::cout << "Save game functionality is not implemented yet.\n";
// } else if (command == "3") {
// CHESSBOARD->SetWinner(CHESSBOARD->GetOpponentPlayer());
// return;
// } else if (command == "0") { // exit
// return;
// } else {
// std::cout << "Invalid command. Please try again.\n";
// }
// }
// std::string MenuController::ExtractAfterDollar(const std::string& userInput) {
// if (!userInput.empty() && userInput[0] == '$') {
// return userInput.substr(1); // Rückgabe des Teils nach '$'
// }
// return ""; // Leerer String, wenn kein '$' am Anfang
// }
// Chessboard* MenuController::GetChessboard() {
// return CHESSBOARD;
// }
void MenuController::SetChessboard(Chessboard* chessboard) {
CHESSBOARD = chessboard;
}
// std::string MenuController::trim(const std::string& str) {
// size_t start = str.find_first_not_of(" \t\n\r\f\v");
// if (start == std::string::npos) return ""; // Nur Leerzeichen
// size_t end = str.find_last_not_of(" \t\n\r\f\v");
// return str.substr(start, end - start + 1);
// }
// std::vector<std::string> MenuController::split(const std::string& str, char delimiter, bool trimWhitespace) {
// std::vector<std::string> tokens;
// std::istringstream stream(str);
// std::string token;
// while (std::getline(stream, token, delimiter)) {
// if (trimWhitespace) {
// token = trim(token); // Trimme die Tokens, falls gewünscht
// }
// tokens.push_back(token);
// }
// return tokens;
// }

View File

@@ -0,0 +1,29 @@
#ifndef MENU_CONTROLLER_HPP
#define MENU_CONTROLLER_HPP
#include "../Chessboard/Chessboard.hpp"
#include "../Visualizer/PlayingViewVisualizer.hpp"
#include <string>
class MenuController {
private:
std::string ExtractAfterDollar(const std::string& userInput);
void HandlePlayingNavigation(std::string choice, Chessboard& chessboard, PlayingViewVisualizer& playView, bool isGameOver);
Chessboard* CHESSBOARD;
public:
MenuController();
~MenuController();
void HandleFirstOption();
void HandleSecondOption();
void HandleThirdOption();
// void HandleCommandOptions(const std::string& command);
// Chessboard* GetChessboard();
void SetChessboard(Chessboard* chessboard);
// std::string trim(const std::string& str);
// std::vector<std::string> split(const std::string& str, char delimiter, bool trimWhitespace = false);
};
#endif // MENU_CONTROLLER_HPP

View File

@@ -1,4 +1,6 @@
#include "BaseVisualizer.hpp"
#include <cstdio>
#include <cstdlib>
void BaseVisualizer::ClearTerminal() {
#ifdef __linux__
@@ -93,16 +95,12 @@ void BaseVisualizer::GenerateCenteredString(const size_t widthOfMenu, const std:
}
void BaseVisualizer::DisplayElement() {
int temp;
for (const auto& row : display_vector) {
for (const auto& cell : row) {
std::cout << cell;
}
std::cout << std::endl;
}
std::cout << "\x1B[u";
//std::cout << "Select option" << std::endl;
std::cin >> temp;
}
size_t BaseVisualizer::CalculateMaxMenuWidth(const size_t longestStringLength, const size_t padding) {
@@ -141,6 +139,7 @@ void BaseVisualizer::GenerateTableTopBottom(const size_t totalLength, const bool
display_vector.push_back({result + ((top) ? ((single) ? BaseVisualizer::TOP_RIGHT_CORNER_SINGLE : BaseVisualizer::TOP_RIGHT_CORNER) : ((single) ? BaseVisualizer::BOTTOM_RIGHT_CORNER_SINGLE : BaseVisualizer::BOTTOM_RIGHT_CORNER))});
}
// Todo: pair anstatt vector
void BaseVisualizer::GenerateTableLine(const float length, const std::vector<std::string>& str, const bool single) {
int firstHalfLength = std::floor(length / 2);
std::string result = ((single) ? BaseVisualizer::VERTICAL_LINE_SINGLE : BaseVisualizer::VERTICAL_LINE);
@@ -262,3 +261,21 @@ size_t BaseVisualizer::FindMaxLength(const std::vector<std::string> vec) {
return max;
}
std::pair<int, int> BaseVisualizer::GetCursorPosition() {
std::cout << "\033[6n"; // ANSI-Escape-Sequenz, um die Cursorposition abzufragen
std::fflush(stdout); // Ausgabe sofort erzwingen
int row, col;
// Eingabe im Format "\033[row;colR" lesen
char buf[32];
if (std::fgets(buf, sizeof(buf), stdin)) {
if (std::sscanf(buf, "\033[%d;%dR", &row, &col) != 2) {
row = col = -1; // Fehlerbehandlung
}
} else {
row = col = -1; // Fehlerbehandlung
}
return std::pair<int, int>(row, col); // Rückgabe als Tupel
};

View File

@@ -55,6 +55,7 @@ class BaseVisualizer {
void GenerateTableSeperator(const float length, const bool single);
void GenerateBoxSeperator(const float length, const bool single);
void SetConsoleColor(Colors foreground, Colors background);
std::pair<int, int> GetCursorPosition();
static size_t GetSumAllCharsFromVector(const std::vector<std::string>& vec);
static size_t CountVisibleCharacters(const std::string& str);

View File

@@ -2,13 +2,19 @@
// ToDo: Cursor wird nicht an die richtige Stelle gesetzt
void CommandMenuVisualizer::GenerateElement() {
BaseVisualizer::display_vector.push_back({"Commands"});
BaseVisualizer::display_vector.push_back({" Commands"});
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, true);
for (const auto& content : menuContent) {
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, content, true, PADDING);
}
BaseVisualizer::GenerateBoxSeperator(MAX_MENU_WIDTH, true);
std::string str_temp = ((CHESSBOARD->GetCurrentPlayer()->GetColor() == ChessPieceColor::White) ? "White" : "Black");
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Move [" + str_temp + "] : \x1B[s", true, true);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Move [" + str_temp + "] : \x1B[s", true, PADDING);
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, true);
display_vector.push_back({" "});
BaseVisualizer::display_vector.push_back({std::string(" ").append(GetMessage())});
}
std::string CommandMenuVisualizer::GetMessage() {
return this->message;
}

View File

@@ -18,12 +18,15 @@ class CommandMenuVisualizer : public BaseVisualizer {
Chessboard* CHESSBOARD;
std::string message;
void GenerateElement() override;
public:
CommandMenuVisualizer(Chessboard* chessboard, size_t padding) : BaseVisualizer(CommandMenuVisualizer::FindMaxLength(menuContent), padding), CHESSBOARD(chessboard) {
CommandMenuVisualizer(Chessboard* chessboard, size_t padding, std::string msg) : BaseVisualizer(CommandMenuVisualizer::FindMaxLength(menuContent), padding), CHESSBOARD(chessboard), message(msg) {
CommandMenuVisualizer::GenerateElement();
}
std::string GetMessage();
};
#endif //COMMANDMENUVISUALIZER_HPP

View File

@@ -0,0 +1,52 @@
#include "HistorieVisualizer.hpp"
#include <algorithm>
#include "../ChessPieces/ChessPieceMove.hpp"
void HistorieVisualizer::GenerateElement() {
BaseVisualizer::display_vector.push_back({"Historie"});
BaseVisualizer::GenerateTableTopBottom(MAX_MENU_WIDTH, true, true);
std::string playerName1 = HistorieVisualizer::PLAYER1;
std::string playerName2 = HistorieVisualizer::PLAYER2;
if (playerName1.length() > 14) {
playerName1 = playerName1.substr(0, 11) + "...";
}
if(playerName2.length() > 14) {
playerName2 = playerName2.substr(0, 11) + "...";
}
BaseVisualizer::GenerateTableLine(MAX_MENU_WIDTH, {playerName1, playerName2}, true);
BaseVisualizer::GenerateTableSeperator(MAX_MENU_WIDTH, true);
std::vector<ChessPieceMove> moves = this->CHESSBOARD->GetHistoryMoves();
if (moves.size() % 2 == 0) {
moves = std::vector<ChessPieceMove>(moves.end() - std::min<int>(moves.size(), 10), moves.end());
} else {
moves = std::vector<ChessPieceMove>(moves.end() - std::min<int>(moves.size(), 9), moves.end());
}
std::vector<std::string> rowMoves;
int rows = 0;
for (int moveIndex = 0; moveIndex < moves.size(); moveIndex++) {
if (moveIndex % 2 == 0) rowMoves.clear();
rowMoves.push_back(moves[moveIndex].ToString());
if (moveIndex % 2 == 1) {
BaseVisualizer::GenerateTableLine(MAX_MENU_WIDTH, rowMoves, true);
rows++;
} else if (moveIndex == moves.size() - 1) {
rowMoves.push_back("");
BaseVisualizer::GenerateTableLine(MAX_MENU_WIDTH, rowMoves, true);
rows++;
}
}
for (int rowIndex = rows; rowIndex < 5; rowIndex++) {
BaseVisualizer::GenerateTableLine(MAX_MENU_WIDTH, {"", ""}, true);
}
BaseVisualizer::GenerateTableTopBottom(MAX_MENU_WIDTH, false, true);
}

View File

@@ -9,14 +9,13 @@ class HistorieVisualizer : public BaseVisualizer {
const std::string PLAYER1;
const std::string PLAYER2;
std::vector<std::vector<std::string>> histories;
Chessboard* CHESSBOARD;
void GenerateElement() override;
public:
HistorieVisualizer(Chessboard* chessbord,const size_t menuWidth, const size_t padding) :
BaseVisualizer(menuWidth, padding), histories(5, std::vector<std::string>(2, "")),
BaseVisualizer(menuWidth, padding),
CHESSBOARD(chessbord),
PLAYER1(chessbord->GetPlayer(ChessPieceColor::White)->GetName()),
PLAYER2(chessbord->GetPlayer(ChessPieceColor::Black)->GetName())

View File

@@ -0,0 +1,36 @@
#include "ImportVisualizer.hpp"
void ImportVisualizer::GenerateElement() {
// BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
// BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
// for (const auto& content : menuContent) {
// BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, content, false, PADDING);
// }
// BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
// BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "You can get a lot of PGN files from chessgames.com.", false, PADDING);
// BaseVisualizer::AddEmptyLines(5, MAX_MENU_WIDTH, false);
// BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
}
void ImportVisualizer::DrawView() {
BaseVisualizer::ClearTerminal();
this->display_vector.clear();
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Please enter a path to a PGN (Portable Game Notation) file:", false, PADDING);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "\x1B[s", false, PADDING);
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "On https://chessgames.com/ you will find many more chess", false, PADDING);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "games in PGN format, to import into TurboSchach.", false, PADDING);
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
BaseVisualizer::DisplayElement();
std::cout << "\x1B[u";
}
std::string ImportVisualizer::ShowMenu() {
this->DrawView();
std::string choice;
std::getline(std::cin, choice);
return choice;
}

View File

@@ -5,13 +5,18 @@
class ImportVisualizer : public BaseVisualizer {
private:
inline static const std::vector<std::string> menuContent = {};
inline static const std::vector<std::string> menuContent = {
"Please enter the path to the PGN file:",
"\x1B[s"
};
void GenerateElement() override;
public:
ImportVisualizer() : BaseVisualizer(60, 4) {
ImportVisualizer::GenerateElement();
};
std::string ShowMenu();
void DrawView();
};
#endif //INSTRUCTIONSVISUALIZER_HPP

View File

@@ -2,12 +2,19 @@
void InstructionsVisualizer::GenerateElement() {
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
BaseVisualizer::AddEmptyLines(5, MAX_MENU_WIDTH, false);
BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
for (const auto& content : menuContent) {
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, content, false, PADDING);
}
BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Enter any key to return to menu: \x1B[s", false, PADDING);
BaseVisualizer::AddEmptyLines(5, MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Press enter to continue: \x1B[s", false, PADDING);
BaseVisualizer::AddEmptyLines(2, MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
}
}
void InstructionsVisualizer::DrawView() {
BaseVisualizer::ClearTerminal();
BaseVisualizer::DisplayElement();
std::cout << "\x1B[u";
std::string choice;
std::getline(std::cin, choice);
}

View File

@@ -0,0 +1,60 @@
#ifndef INSTRUCTIONSVISUALIZER_HPP
#define INSTRUCTIONSVISUALIZER_HPP
#include "BaseVisualizer.hpp"
class InstructionsVisualizer : public BaseVisualizer {
private:
inline static const std::vector<std::string> menuContent = {
"1. Algebraische Notation",
"",
"Um die Figuren auf dem Schachbrett zu bewegen, wird die kurze algebraische Notation",
"FIDE-Handbuch (siehe Appendix C) unterstützt. Es werden die Schachfiguren sowohl in",
"deutscher als auch in englischer Sprache unterstützt.",
"",
"┌───────────────────┬─────────┬──────────┐",
"│ Schachfigur │ Deutsch │ Englisch │",
"├───────────────────┼─────────┼──────────┤",
"│ Bauer (Pawn) │ B │ P │",
"│ Springer (Knight) │ S │ N │",
"│ Läufer (Bishop) │ L │ B │",
"│ Turm (Rook) │ T │ R │",
"│ Dame (Queen) │ D │ Q │",
"│ König (King) │ K │ K │",
"└───────────────────┴─────────┴──────────┘",
"",
"Bei der kurzen Notation wird immer nur das Zielfeld eines Spielzuges genannt. Sollte",
"der Ursprung nicht eindeutig sein kann auch die Spalte oder Zeile der zu bewegenden Figur",
"genannt werden. So gibt der Spielzug 'dxe5' an dass der Bauer in der Spalte D auf das Feld",
"E5 zieht. Das 'x' gibt an dass dabei eine Spielfigur des Gegeners geschlagen wird. Dies muss",
"aber nicht zwingend angegeben werden. Der Bauer wird in den Spielzügen nicht benannt. Der",
"Spielzug 'b4' ist daher der Zug eines Bauern auf das Feld B4. Alle anderen Schachfiguren werden",
"im Zug mit ihrem entsprechenden Buchstaben genannt. So gibt der Spielzug 'Bc4' an dass der Läufer",
"auf das Feld C4 gezogen wird.",
"",
"Beispiele:",
"",
" - (=) Angebot für ein Draw. Um das Spiel mit einem Draw zu beenden muss das Angebot direkt im",
" nächsten Zug bestätigt werden.",
" - b4 Der Bauer zieht auf das Feld B4.",
" - Bc4 Der Läufer zieht auf das Feld C4.",
" - 0-0 Kleine Rochade (Rochade am Königsflügel)",
" - 0-0-0 Große Rochade (Rochade am Damenflügel)",
" - d8Q Umwandlung: Der Bauer zieht auf D8 und wandelt sich zur Dame.",
"",
"2. PGN (Portable Game Notation)",
"",
"TurboSchach unterstützt das Datenformat PGN, welches zur Speicherung von Schachpartien verwendet",
"wird. Auf der Website https://www.chessgames.com/ werden viele Schachpartien von offiziellen Turnieren",
"im PGN-Format zur Verfügung gestellt. Diese Dateien können in TurboSchach importiert werden."
};
void GenerateElement() override;
public:
InstructionsVisualizer() : BaseVisualizer(BaseVisualizer::FindMaxLength(menuContent), 4) {
InstructionsVisualizer::GenerateElement();
};
void DrawView();
};
#endif //INSTRUCTIONSVISUALIZER_HPP

View File

@@ -0,0 +1,43 @@
#include "PlaySelectVisualizer.hpp"
void PlaySelectVisualizer::GenerateElement() {
// BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
// BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
// for (const auto& content : menuContent) {
// BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, content, false, PADDING);
// }
// BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
// BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
}
std::vector<std::pair<int, int>> PlaySelectVisualizer::GetCursorPositions() {
return this->cursorPositions;
}
void PlaySelectVisualizer::AddToCursorPositions(const std::pair<int, int>& position) {
this->cursorPositions.push_back(position);
}
void PlaySelectVisualizer::DrawView() {
BaseVisualizer::ClearTerminal();
this->display_vector.clear();
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
if (this->labelPlayerName.empty()) {
this->labelPlayerName = "player";
}
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "Please enter a name for the " + this->labelPlayerName + ":", false, PADDING);
BaseVisualizer::GenerateBoxMenuLine(MAX_MENU_WIDTH, "\x1B[s", false, PADDING);
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
BaseVisualizer::DisplayElement();
std::cout << "\x1B[u";
}
std::string PlaySelectVisualizer::ShowMenu() {
this->DrawView();
std::string choice;
std::getline(std::cin, choice);
return choice;
}
void PlaySelectVisualizer::SetLabelPlayerName(std::string label) {
this->labelPlayerName = label;
}

View File

@@ -0,0 +1,30 @@
#ifndef PLAYSELECTVISUALIZER_HPP
#define PLAYSELECTVISUALIZER_HPP
#include "BaseVisualizer.hpp"
class PlaySelectVisualizer : public BaseVisualizer {
private:
std::string labelPlayerName;
// ToDo: Exit
inline static const std::vector<std::string> menuContent = {
"Please enter your names! Enter your names with '&' seperated.",
"",
"Playernames: \x1B[s"
};
std::vector<std::pair<int, int>> cursorPositions;
public:
PlaySelectVisualizer(size_t padding) : BaseVisualizer(PlaySelectVisualizer::FindMaxLength(menuContent), padding) {
PlaySelectVisualizer::GenerateElement();
}
void GenerateElement();
void AddToCursorPositions(const std::pair<int, int>& position);
std::vector<std::pair<int, int>> GetCursorPositions();
void DrawView();
std::string ShowMenu();
void SetLabelPlayerName(std::string label);
};
#endif //PLAYSELECTVISUALIZER_HPP

View File

@@ -8,9 +8,9 @@
void PlayingViewVisualizer::GenerateElement() {
position_vector.clear();
display_vector.clear();
ChessboardVisualizer chessboardVisualizer = ChessboardVisualizer(CHESSBOARD, 2);
HistorieVisualizer historieVisualizer = HistorieVisualizer(CHESSBOARD, 32, 2);
CommandMenuVisualizer cmdMenuVisualizer = CommandMenuVisualizer(CHESSBOARD, 2);
ChessboardVisualizer chessboardVisualizer = ChessboardVisualizer(this->CHESSBOARD, 2);
HistorieVisualizer historieVisualizer = HistorieVisualizer(this->CHESSBOARD, 32, 2);
CommandMenuVisualizer cmdMenuVisualizer = CommandMenuVisualizer(this->CHESSBOARD, 2, this->GetMessage());
GeneratePositionVector(chessboardVisualizer.GetDisplayVector(), historieVisualizer.GetDisplayVector(), cmdMenuVisualizer.GetDisplayVector());
@@ -56,8 +56,8 @@ void PlayingViewVisualizer::GeneratePositionVector(
temp.push_back(historie_display_vector->at(i)[0]);
} else if (i-3-historie_display_vector->size() < command_menu_display_vector->size()) {
temp.push_back(command_menu_display_vector->at(i-3-historie_display_vector->size())[0]);
} else if (i-3-historie_display_vector->size()-command_menu_display_vector->size()-1 == 0 && !this->GetMessage().empty()) {
temp.push_back(this->GetMessage());
//} else if (i-3-historie_display_vector->size()-command_menu_display_vector->size()-1 == 0 && !this->GetMessage().empty()) {
//temp.push_back(this->GetMessage());
} else {
temp.push_back({"", ""});
}
@@ -113,3 +113,17 @@ std::string PlayingViewVisualizer::GetMessage() {
void PlayingViewVisualizer::SetMessage(std::string message) {
this->message = message;
}
void PlayingViewVisualizer::DrawView() {
BaseVisualizer::ClearTerminal();
this->DisplayElement();
std::cout << "\x1B[u";
}
std::string PlayingViewVisualizer::ShowMenu() {
this->DrawView();
this->SetMessage("");
std::string choice;
std::getline(std::cin, choice);
return choice;
}

View File

@@ -10,7 +10,7 @@ class PlayingViewVisualizer : public BaseVisualizer {
Chessboard* CHESSBOARD;
std::string move;
std::string message = "Fehlermeldung";
std::string message = "";
std::vector<std::vector<std::string>> position_vector;
@@ -27,6 +27,8 @@ class PlayingViewVisualizer : public BaseVisualizer {
std::string GetMove();
std::string GetMessage();
void SetMessage(std::string message);
void DrawView();
std::string ShowMenu();
};
#endif //PLAYINGVIEWVISUALIZER_HPP

View File

@@ -52,15 +52,20 @@ void StartMenuVisualizer::SetSelectedOption(int optionSelect) {
selectedOption = selectedOption;
};
void StartMenuVisualizer::DisplayElement1() {
void StartMenuVisualizer::DrawView() {
BaseVisualizer::ClearTerminal();
int temp;
for (const auto& row : display_vector) {
for (const auto& cell : row) {
std::cout << cell;
}
std::cout << std::endl;
}
BaseVisualizer::DisplayElement();
std::cout << "\x1B[u";
std::cin >> selectedOption;
}
StartMenuVisualizer::StartMenuOption StartMenuVisualizer::ShowMenu() {
this->DrawView();
std::string choice;
std::getline(std::cin, choice);
if (choice == "1") return StartMenuOption::NewGame;
if (choice == "2") return StartMenuOption::LoadGame;
if (choice == "3") return StartMenuOption::Instructions;
if (choice == "0") return StartMenuOption::Exit;
return StartMenuOption::None;
}

View File

@@ -30,10 +30,17 @@ class StartMenuVisualizer : public BaseVisualizer {
StartMenuVisualizer(size_t padding) : BaseVisualizer(BaseVisualizer::CountVisibleCharacters(StartMenuVisualizer::ACSII_ART_TURBO_SCHACH[0]), padding) {
StartMenuVisualizer::GenerateElement();
}
enum StartMenuOption {
NewGame,
LoadGame,
Instructions,
Exit,
None
};
int GetSelectedOption();
void SetSelectedOption(int selectedOption);
void DisplayElement1();
void DrawView();
StartMenuOption ShowMenu();
};
#endif //STARTMENUVISUALIZER_H

38
src/main.cpp Normal file
View File

@@ -0,0 +1,38 @@
#ifdef _WIN32
#include <windows.h>
#endif
#include "./Controller/MenuController.hpp"
#include "./Visualizer/StartMenuVisualizer.hpp"
#include "./Visualizer/BaseVisualizer.hpp"
#include "./Visualizer/PlaySelectVisualizer.hpp"
#include <iostream>
int main(int argc, char* argv[]) {
#ifdef _WIN32
SetConsoleOutputCP(CP_UTF8);
#endif
StartMenuVisualizer startMenu(3);
MenuController menuController;
StartMenuVisualizer::StartMenuOption optionStartMenu = StartMenuVisualizer::StartMenuOption::None;
do {
switch (optionStartMenu = startMenu.ShowMenu()) {
case StartMenuVisualizer::StartMenuOption::NewGame:
menuController.HandleFirstOption();
break;
case StartMenuVisualizer::StartMenuOption::LoadGame:
menuController.HandleSecondOption();
break;
case StartMenuVisualizer::StartMenuOption::Instructions:
menuController.HandleThirdOption();
break;
default:
continue;
break;
}
} while (optionStartMenu != StartMenuVisualizer::StartMenuOption::Exit);
return 0;
}