summaryrefslogtreecommitdiff
path: root/HumanPlayer.h
blob: 071415d74d311f2fb482e63caff91d89be8d9363 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef HUMAN_PLAYER_H__
#define HUMAN_PLAYER_H__

/* **************************************
 *  Includes                            *
 * **************************************/

#include "Player.h"
#include "Camera.h"
#include "Cursor.h"
#include <string.h>

/* **************************************
 *  Defines                             *
 * **************************************/

/* **************************************
 *  Structs and enums                   *
 * **************************************/

/* **************************************
 *  Class definition                    *
 * **************************************/

class HumanPlayer : public Player
{
    public:
        explicit HumanPlayer(const char* const strPlayerName, const Camera& cam);
        void handler(void);

    private:
        enum tPlayerState
        {
            PLAYER_STATE_IDLE,          /**< Player has not entered any menu or unit. */
            PLAYER_STATE_UNIT_MENU,     /**< Player has opened Unit menu. */
            PLAYER_STATE_UNIT_SELECTED  /**< Player has selected one or more units. */
        } _eState;  /**< Player action state. */

        void drawHandler(void);

        /* Button handlers. */
        void buttonHandler(void);
        void playerButtonPressedHandler(const size_t szBtn);
        void cameraButtonPressedHandler(const size_t szBtn);
        void playerButtonReleasedHandler(const size_t szBtn);

        /* Pressed button event handlers. */
        void onABtnPressed(void);
        void onBBtnPressed(void);

        /* Released button event handlers. */
        void onABtnReleased(void);
        void onBBtnReleased(void);

        /* Unit selection. */
        enum tPlayerState selectUnit(void);

        /* Private objects. */
        const Camera& _cam;
        Cursor _cursor;

        /* Private variables. */
        uint8_t _ABtnFrames;
        uint8_t _BBtnFrames;
};

#endif /* HUMAN_PLAYER_H__ */