Conquer Chess
Chess and Starcraft combined
Loading...
Searching...
No Matches
user_inputs.h
Go to the documentation of this file.
1#ifndef USER_INPUTS_H
2#define USER_INPUTS_H
3
4#include "ccfwd.h"
5
6#include "chess_color.h"
7#include "user_input.h"
9#include <iostream>
10#include <vector>
11
26{
27public:
29 const std::vector<user_input>& user_inputs = {}
30 );
31
33 void add(const user_input& input);
34
35 [[nodiscard]] const auto& get_user_inputs() const noexcept { return m_user_inputs; }
36
37private:
38
39 std::vector<user_input> m_user_inputs;
40};
41
43void add(user_inputs& current, const user_inputs& to_be_added);
44
47[[nodiscard]] int count_user_inputs(const user_inputs& a);
48
50[[nodiscard]] int count_piece_actions(const user_inputs& a);
51
53void do_select(
55 const std::string& square_str,
56 const side player_side
57);
58
62 const std::string& from_square_str,
63 const std::string& to_square_str,
64 const side player_side,
66);
67
69[[nodiscard]] bool is_empty(const user_inputs& inputs) noexcept;
70
72void start_attack(
73 game& g,
74 const game_controller& c,
75 const game_coordinate& coordinat,
76 const chess_color player_color
77);
78
80 game& g,
81 const game_controller& c,
82 const game_coordinate& coordinat,
83 const chess_color player_color
84);
85
88 game& g,
89 const game_controller& c,
90 const game_coordinate& coordinat,
91 const chess_color player_color
92);
93
95void test_user_inputs();
96
97std::ostream& operator<<(std::ostream& os, const user_inputs& actions) noexcept;
98[[nodiscard]] bool operator==(const user_inputs& lhs, const user_inputs& rhs) noexcept;
99[[nodiscard]] bool operator!=(const user_inputs& lhs, const user_inputs& rhs) noexcept;
100
101#endif // USER_INPUTS_H
chess_color
A chess piece color.
Definition chess_color.h:10
The class that acts as a controller for game}.
Definition game_controller.h:31
An exact coordinate anywhere on the board.
Definition game_coordinate.h:32
The game logic.
Definition game.h:28
A user input.
Definition user_input.h:18
A collection of user inputs.
Definition user_inputs.h:26
void add(const user_input &input)
Add a new user input.
Definition user_inputs.cpp:20
const auto & get_user_inputs() const noexcept
Definition user_inputs.h:35
@ start_en_passant_attack
physical_controller_type
The type of controller.
Definition physical_controller_type.h:15
side
The side the player/piece is on.
Definition side.h:11
int count_user_inputs(const user_inputs &a)
Count the total number of control actions to be done by the game, which should be zero after each tic...
Definition user_inputs.cpp:33
void do_select(game_controller &c, const std::string &square_str, const side player_side)
Select a piece.
Definition user_inputs.cpp:38
void start_move_unit(game &g, const game_controller &c, const game_coordinate &coordinat, const chess_color player_color)
Process an M or right-mouse-button down.
Definition user_inputs.cpp:147
std::ostream & operator<<(std::ostream &os, const user_inputs &actions) noexcept
Definition user_inputs.cpp:303
bool operator!=(const user_inputs &lhs, const user_inputs &rhs) noexcept
Definition user_inputs.cpp:298
bool operator==(const user_inputs &lhs, const user_inputs &rhs) noexcept
Definition user_inputs.cpp:293
bool is_empty(const user_inputs &inputs) noexcept
See if the user_inputs} holds zero elements.
Definition user_inputs.cpp:68
int count_piece_actions(const user_inputs &a)
Count the total number of piece actions to be done by the game.
void add(user_inputs &current, const user_inputs &to_be_added)
Add new user inputs.
Definition user_inputs.cpp:25
void do_select_and_move_piece(game_controller &c, const std::string &from_square_str, const std::string &to_square_str, const side player_side, const physical_controller_type t)
Select a piece and move it to a target square.
Definition user_inputs.cpp:49
void test_user_inputs()
Test this class and its free functions.
Definition user_inputs.cpp:182