From 20936e93023c18f54d217c66b0e08fa80f4f7d50 Mon Sep 17 00:00:00 2001 From: XaviDCR92 Date: Tue, 10 Jul 2018 23:17:34 +0200 Subject: Camera is now an independent instance, and HumanPlayer only holds a reference to it. --- HumanPlayer.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'HumanPlayer.cpp') diff --git a/HumanPlayer.cpp b/HumanPlayer.cpp index ae16f97..e83d4e6 100644 --- a/HumanPlayer.cpp +++ b/HumanPlayer.cpp @@ -36,10 +36,11 @@ * \brief Constructor for HumanPlayer class. * *********************************************************************/ -HumanPlayer::HumanPlayer(const char* const strPlayerName) : -Player(strPlayerName) +HumanPlayer::HumanPlayer(const char* const strPlayerName, const Camera& cam) : +Player(strPlayerName), +_cam(cam) { - _unitsMap[0].create(Unit::UNIT_ID_PEASANT); + _unitsMap[0].create(Unit::UNIT_ID_PEASANT, 16, 16); } /*****************************************************************//** @@ -84,12 +85,12 @@ void HumanPlayer::buttonHandler(void) static void (Camera::*const apBtnCameraHandlerTable[NUM_BTN])(void) = { [BTN_LEFT] = &Camera::onLeftBtnPressed, - [BTN_UP] = NULL, + [BTN_UP] = &Camera::onUpBtnPressed, [BTN_RIGHT] = &Camera::onRightBtnPressed, - [BTN_DOWN] = NULL + [BTN_DOWN] = &Camera::onDownBtnPressed }; - if (gb.buttons.pressed(u8Btn)) + if (gb.buttons.timeHeld(u8Btn) > 0) { /* Key has been pressed. Execute both * HumanPlayer and Camera handlers, if available. */ @@ -113,9 +114,12 @@ void HumanPlayer::buttonHandler(void) if (pCameraBtnHandler != NULL) { - /* Camera member function - * pointer is available. Execute. */ - (_cam.*pCameraBtnHandler)(); + /* Camera member function pointer + * is available. + * Note: "const" qualifier must be + * removed since camera button event + * handler modifies Camera class members. */ + ((Camera&)_cam.*pCameraBtnHandler)(); } else { -- cgit v1.2.3