#pragma once

#include "blitz/common/Defines.h"
#include "blitz/maths/Vector.h"
#include <vector>

namespace blitz {

namespace protocol {

struct ColoredPart;
typedef std::vector<ColoredPart> ColoredText;

}  // namespace protocol

namespace game {

class PlayerInputListener {
  public:
	virtual void OnLocalPlayerJump() {}
	virtual void OnLocalPlayerShoot(const Vec3f& position, float yaw, float pitch) {}
};

class ClientListener {
  public:
	virtual void OnTextChatReceived(const protocol::ColoredText& text) {}
	virtual void OnSpectatorChange(game::PlayerID player) {}
	virtual void OnPlayerShoot(PlayerID player, const Vec3f& position, float yaw, float pitch) {}
	virtual void OnGameConfigUpdate() {}
	virtual void OnGameJoin() {}
	virtual void OnGameLeave() {}
};

}  // namespace game
}  // namespace blitz
