Skip to content

user 作成

tkr987 edited this page Aug 17, 2018 · 11 revisions

基底クラスのHNLIB::NyaUserを継承してuserクラスのヘッダファイルを作成する。画像の表示をするためにHNLIB::GraphicPropertyX4型の変数をメンバに加える。

Property系クラスの説明:
Property系クラスは描画関数NyaGraphic::Draw()やサウンド関数NyaSound::Play()のパラメータとしての役割を持つ。ただし、Property系クラスのメンバ変数を設定するだけでは反映されない。Property系クラスはメンバ変数を設定した後、NyaGraphicクラスのメンバ関数やNyaSoundクラスのメンバ関数の引数として渡したとき初めて反映される。

#pragma once
#include "HNLIB.h"

class TeemoUser : public HNLIB::NyaUser
{
public:
	H2NLIB::GraphicPropertyX4* gpx_;
	TeemoUser();
	~TeemoUser();
	void Run(void);
};

NyaUserクラスは2つのメンバ関数を持つ。

  • virtual void Act(void) = 0;
  • virtual void Draw(void) = 0;

Act関数にはミッション中にユーザーが操作するキャラの行動処理を記述する(正確にはイベントeEVENT::MISSION_RUNまたはeEVENT::MISSION_REPLAY_RUNにてユーザーが操作するキャラの処理を記述することになる。eEVENTの詳細はNyaEnumの項目を参照)。Draw関数にはミッション中にユーザーが操作するキャラの描画処理を記述する。Act関数とDraw関数が別になっている理由は、eEVENT::MISSION_CLEARのようなイベントでは描画処理だけするほうが自然なためである(eEVENT::MISSION_CLEARのときにキャラを操作するとライブラリ仕様上リプレイがずれてしまう)。

GraphicPropertyX4クラスは様々なメンバを持っているが、最低3つの変数の値を設定すれば画像の描画をすることが出来るようになる。

最低限設定しなければならないGraphicPropertyX4のメンバ:

  • draw_grid_cx; 描画中心X座標
  • draw_grid_cy; 描画中心Y座標
  • file_; ロードした画像ファイルを格納する変数

file_変数に画像をロードするにはNyaGraphic::LoadGraphicFile()を利用する。

NyaGraphic::LoadGraphicFile()のプロトタイプ:
void NyaGraphic::LoadGraphicFile(std::string pass, HNLIB::GraphicFile* file);

  • pass; ファイルパス
  • file; ロードした画像データを格納する構造体
#include "TeemoUser.h"
using namespace HNLIB;

TeemoUser::TeemoUser()
{
	gpx_ = new GraphicPropertyX4;
	gpx_->draw_grid_cx_ = 100;
	gpx_->draw_grid_cy_ = 500;
	NyaGraphic::LoadGraphicFile("img/teemo.png", &gpx_->file_);
}

TeemoUser::~TeemoUser()
{
	delete gpx_;
	gpx_ = nullptr;
}

void TeemoUser::Run(void)
{
	NyaGraphic::Draw(gpx_, eOBJECT::USER1);
}

Userクラスを定義したらNyaMission::AddUser()を使ってMissionクラスに登録する。

NyaMission::AddUser()のプロトタイプ:
void NyaMission::AddUser(HNLIB::NyaUser* user);

  • user; 登録するuser

作成するmissionが1つだけだったり、次のmissionにデータを引き継がないときはClear系関数を使って追加したオブジェクトを削除する。

NyaMission::ClearUser()のプロトタイプ:
void NyaMission::ClearUser(void);

#include "TeemoMission.h"
#include "TeemoUser.h"
using namespace HNLIB;

void TeemoMission::Create(void)
{
	AddUser(new TeemoUser);
}

void TeemoMission::Delete(void)
{
	ClearUser();
}

コンパイルして実行する。ユーザーが操作するキャラの画像が表示される。
user_run

Clone this wiki locally