38 lines
805 B
C++
38 lines
805 B
C++
#pragma once
|
|
#include "KPawn.h"
|
|
#include "KPlayer.h"
|
|
#include "KVector2d.h"
|
|
|
|
namespace KapitanGame {
|
|
class KGame;
|
|
class KInput;
|
|
|
|
class KPlayerController : public std::enable_shared_from_this<KPlayerController>
|
|
{
|
|
public:
|
|
KPlayerController(const KPlayer player, KGame* const game)
|
|
: Player(player),
|
|
Game(game)
|
|
{
|
|
}
|
|
|
|
void SetupInputBindings(KInput& input);
|
|
void MoveYAxis(float axis);
|
|
void MoveXAxis(float axis);
|
|
void Update(float deltaTime);
|
|
void NotifyWin() const;
|
|
void Possess(KPawn* pawn);
|
|
void UnPossess();
|
|
const KPlayer& GetPlayer() const;
|
|
private:
|
|
KVector2D Input{ 0.f, 0.f };
|
|
const KPlayer Player;
|
|
KPawn* Pawn{};
|
|
KGame* Game;
|
|
};
|
|
typedef void (KPlayerController::* KPlayerCommand)();
|
|
typedef void (KPlayerController::* KPlayerAxisCommand)(float input);
|
|
}
|
|
|
|
|