////////////////////////////////////////////////////////////////////////////////
// PlayerGroundVehicle.h
// Class that controls a player's biped mech
// Copyright Bjoern Ganster
// Developed since 2010
////////////////////////////////////////////////////////////////////////////////

#ifndef PlayerGroundVehicle__h
#define PlayerGroundVehicle__h

#include "BGCPString.h"
#include "GameObject.h"
#include "VehicleAI.h"

class PlayerGroundVehicle: public PlayerVehicleAI {
public:
	// Constructor
	PlayerGroundVehicle(Vehicle* mech);

	// Destructor
	~PlayerGroundVehicle() OVERRIDE;

	// Check if a weapon is currently active - used by the HUD
	bool weaponActive(int i, bool groupFire) const OVERRIDE;

	void setTarget(GameObject* gameObject) OVERRIDE;

	// Notify AI of an event, like a destroyed object
	void updateObjectStatus(const BGCPString& id, SubObjectiveType newStatus) OVERRIDE;

	// Keyboard event handlers
	void keypressed(BGKey key, bool shiftHeld, bool controlHeld, bool down, bool repeat) OVERRIDE;

	// Button state changed over a window: returns child that was clicked
	void buttonStateChanged(int button, bool down, int x, int y)  OVERRIDE;

	// Notify AI of mouse movement event
	void mouseMoved(int /*x*/, int /*y*/) OVERRIDE;

	void setAim(double dx, double dy) OVERRIDE;

	void planMovement(DWORD now) OVERRIDE;

	void setThrottleOrWeaponGroup(BGKey key, bool shiftHeld);

private:
	bool mBraking;
};

#endif
