#pragma once

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
#include "Image.h"

class ShipBase {
public:
	
	ShipBase();
	virtual ~ShipBase();
	
	//現在位置の更新
	virtual void Update();
	
	//描画
	virtual void Draw();
	
	//現在位置を設定
	void SetPosition(const glm::vec2 &pos) {
		this->Position = pos;
	}
	
	//現在位置を取得
	const glm::vec2 &GetPosition() const {
		return Position;
	}
	
	//移動速度を設定
	void SetVelocity(const glm::vec2 &vel) {
		this->Velocity = vel;
	}
	
	//移動速度を取得
	const glm::vec2 &GetVelocity() const {
		return Velocity;
	}
	
protected:
	glm::vec2 Position;		//現在位置
	glm::vec2 Velocity;		//移動速度
	Image *pImage;			//機体の画像
	int HP;
};


class Player : public ShipBase {
public:
	
	Player(GLFWwindow *pWindow);
	virtual ~Player();
	
	//現在位置を更新
	virtual void Update();
	
	//プレイヤーを描画
	virtual void Draw();
	
protected:
	GLFWwindow *pWindow;
};


class Enemy : public ShipBase {
public:
	
	Enemy();
	virtual ~Enemy();
	
	//現在位置を更新
	virtual void Update();
	
	//プレイヤーを描画
	virtual void Draw();
	
};


class PlayerBullet : public ShipBase {
public:
	
	PlayerBullet();
	virtual ~PlayerBullet();
	
	//現在位置を更新
	virtual void Update();
	
	//弾を描画
	virtual void Draw();
	
};


