Skip to content

Commit

Permalink
prohibited assigning multiple actions to only one button
Browse files Browse the repository at this point in the history
  • Loading branch information
Riborok committed Jan 29, 2024
1 parent 9b3da32 commit 85475c6
Show file tree
Hide file tree
Showing 101 changed files with 71 additions and 21 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,8 @@ To customize controls, simply click on the button you want to change—it will b
button you wish to assign to the selected action (press Esc to cancel). Note that there are only two reserved
buttons: Esc (to go back and call pause) and F11 (to toggle fullscreen mode).

**Note:** Each action can be assigned to only one button.

## Author
___
* Egor Pankratiev
Expand Down
7 changes: 6 additions & 1 deletion coursework/coursework.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,12 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<TargetName>Void Guardian</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetName>Void Guardian</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
Expand Down Expand Up @@ -428,7 +434,6 @@
<ClInclude Include="src\sprite\SpriteInfos.hpp" />
</ItemGroup>
<ItemGroup>
<Image Include="AppData\img\Icon.ico" />
<Image Include="Icon.ico" />
</ItemGroup>
<ItemGroup>
Expand Down
6 changes: 6 additions & 0 deletions coursework/include/game/entity/player/Control.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,10 @@ struct Control final {
* @return A MovementMask representing the detected movement based on the input.
*/
[[nodiscard]] MovementUtils::MovementMask getMovementMask() const;

[[nodiscard]] bool hasInputInfo(const InputInfo& input_info) const {
return forward_move == input_info || backward_move == input_info ||
left_move == input_info || right_move == input_info ||
take_item == input_info || fire == input_info;
}
};
13 changes: 13 additions & 0 deletions coursework/include/game/input/InputInfo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ union KeyOrMouseButton final {
explicit KeyOrMouseButton(const sf::Keyboard::Key key) : key(key) {}
explicit KeyOrMouseButton(const sf::Mouse::Button mb) : mouse_button(mb) {}
KeyOrMouseButton() = default;

bool operator==(const KeyOrMouseButton& other) const {
return key == other.key && mouse_button == other.mouse_button;
}
bool operator!=(const KeyOrMouseButton& other) const {
return !(*this == other);
}
};

enum class InputType final {
Expand Down Expand Up @@ -44,4 +51,10 @@ struct InputInfo final {
return false;
}
}
bool operator==(const InputInfo& other) const {
return type == other.type && info == other.info;
}
bool operator!=(const InputInfo& other) const {
return !(*this == other);
}
};
42 changes: 22 additions & 20 deletions coursework/src/gui/UIController/SettingsButtons.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,26 +21,28 @@ void SettingsButtons::setActionNames() {
}

void SettingsButtons::setInputInfo(const InputInfo& input_info) {
_buttons.setStr(_active_index, input_info.toString());
switch (_active_index) {
case 0:
_control->forward_move = input_info;
break;
case 1:
_control->backward_move = input_info;
break;
case 2:
_control->left_move = input_info;
break;
case 3:
_control->right_move = input_info;
break;
case 4:
_control->take_item = input_info;
break;
case 5:
_control->fire = input_info;
break;
if (!_control->hasInputInfo(input_info)) {
_buttons.setStr(_active_index, input_info.toString());
switch (_active_index) {
case 0:
_control->forward_move = input_info;
break;
case 1:
_control->backward_move = input_info;
break;
case 2:
_control->left_move = input_info;
break;
case 3:
_control->right_move = input_info;
break;
case 4:
_control->take_item = input_info;
break;
case 5:
_control->fire = input_info;
break;
}
}
_active_index = -1;
}
Expand Down
Binary file modified coursework/x64/Debug/BulletCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/BulletExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/ChooseCharacterController.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/Control.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/DyingEffectAnimator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/EnemyCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/EnemyExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/EntityCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/EntityDamageImpactor.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/EventHandler.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/FightingInfoDrawer.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/FileOperator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/GameFieldCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/GameLoop.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/GameMaster.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/GameStarter.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/GameUpdater.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/GunInstaller.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/HotkeyHandler.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/InfoInitialization.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/ItemChecker.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/Launcher.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/LocationPlaceholder.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/LongCreation.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/MenuController.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/PauseController.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/Player.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/PlayerCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/PlayerExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/RegenerationExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/SettingsButtons.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/SettingsController.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/SpriteDrawer.obj
Binary file not shown.
11 changes: 11 additions & 0 deletions coursework/x64/Debug/Void Guardian.exe.recipe
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Users\user\Desktop\coursework\x64\Debug\Void Guardian.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>
Binary file added coursework/x64/Debug/Void Guardian.ilk
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.ilk
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.tlog/CL.command.1.tlog
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.tlog/CL.read.1.tlog
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.tlog/CL.write.1.tlog
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.tlog/link.command.1.tlog
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.tlog/link.read.1.tlog
Binary file not shown.
Binary file modified coursework/x64/Debug/coursework.tlog/link.write.1.tlog
Binary file not shown.
Binary file modified coursework/x64/Debug/main.obj
Binary file not shown.
Binary file modified coursework/x64/Debug/vc143.idb
Binary file not shown.
Binary file modified coursework/x64/Debug/vc143.pdb
Binary file not shown.
Binary file modified coursework/x64/Release/BulletCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/BulletExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Release/ChooseCharacterController.obj
Binary file not shown.
Binary file modified coursework/x64/Release/Control.obj
Binary file not shown.
Binary file modified coursework/x64/Release/DyingEffectAnimator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/EnemyCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/EnemyExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Release/EntityCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/EntityDamageImpactor.obj
Binary file not shown.
Binary file modified coursework/x64/Release/EventHandler.obj
Binary file not shown.
Binary file modified coursework/x64/Release/FightingInfoDrawer.obj
Binary file not shown.
Binary file modified coursework/x64/Release/FileOperator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/GameFieldCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/GameLoop.obj
Binary file not shown.
Binary file modified coursework/x64/Release/GameMaster.obj
Binary file not shown.
Binary file modified coursework/x64/Release/GameStarter.obj
Binary file not shown.
Binary file modified coursework/x64/Release/GameUpdater.obj
Binary file not shown.
Binary file modified coursework/x64/Release/GunInstaller.obj
Binary file not shown.
Binary file modified coursework/x64/Release/HotkeyHandler.obj
Binary file not shown.
Binary file modified coursework/x64/Release/InfoInitialization.obj
Binary file not shown.
Binary file modified coursework/x64/Release/ItemChecker.obj
Binary file not shown.
Binary file modified coursework/x64/Release/Launcher.obj
Binary file not shown.
Binary file modified coursework/x64/Release/LocationPlaceholder.obj
Binary file not shown.
Binary file modified coursework/x64/Release/LongCreation.obj
Binary file not shown.
Binary file modified coursework/x64/Release/MenuController.obj
Binary file not shown.
Binary file modified coursework/x64/Release/PauseController.obj
Binary file not shown.
Binary file modified coursework/x64/Release/Player.obj
Binary file not shown.
Binary file modified coursework/x64/Release/PlayerCreator.obj
Binary file not shown.
Binary file modified coursework/x64/Release/PlayerExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Release/RegenerationExecutor.obj
Binary file not shown.
Binary file modified coursework/x64/Release/SettingsButtons.obj
Binary file not shown.
Binary file modified coursework/x64/Release/SettingsController.obj
Binary file not shown.
Binary file modified coursework/x64/Release/SpriteDrawer.obj
Binary file not shown.
11 changes: 11 additions & 0 deletions coursework/x64/Release/Void Guardian.exe.recipe
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Users\user\Desktop\coursework\x64\Release\Void Guardian.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>
Loading

0 comments on commit 85475c6

Please sign in to comment.