DXライブラリでも使ってフレームワークでも 第5回

アバター
せんちゃ
記事: 50
登録日時: 13年前
住所: 江別市東野幌町
連絡を取る:

DXライブラリでも使ってフレームワークでも 第5回

投稿記事 by せんちゃ » 10年前

今日はテキストオブジェクトの作成を行う
テキストには2種類用意しようかと思っております。
・通常のテキスト
・リッチテキスト
の2種類

CODE:

//	--------------------------------------------------------------------------------------
//	テキストを扱うオブジェクト
//	色変更は可能だが改行はできない
//	色変更はテキスト単位となる
//	--------------------------------------------------------------------------------------
class TextObject : public DrawObject {
private :
	std::string m_text;
	int m_colorR;
	int m_colorG;
	int m_colorB;

CODE:

//	--------------------------------------------------------------------------------------
//	リッチテキストを扱う
//	"Hello World" → 'H','e','l','l','o',' ','W','o','r','l','d'
//	というように文字単位でオブジェクトとして管理する。
//	
//	幅指定による自動改行・文字別の色などをサポートする
//	TextObjectより処理が全体的に重い
//	--------------------------------------------------------------------------------------
class RichTextObject : public DrawObject {
private :
	std::string m_text;
	TextObject* m_textObj;
テキストはDrawFormatStringから文字列単位で描画される。
文字列単位なので改行や文字単位の色変更はできない。

リッチテキストはテキストを1オブジェクトにつき1文字としてリストで管理する。
サイズ指定によって改行・文字単位の色変更などをサポートしていく(予定)
1文字につき1オブジェクトでの管理なのでテキストに比べると重いがその分自由度が高いのがポイント。
文字をバラバラに飛ばすような演出の作成から、1文字1文字色を変えた虹色テキストまでやろうと思えば可能。
機能を拡張すればセンタリングなんかも対応可能。
ちょっと改造すれば会話イベントのテキスト処理もこれ一つでどうにかなる。

CODE:

	//	リッチテキストの設定
	void setText( std::string text ){
		m_text = text;

		//	テキストを全部消す
		m_textObj->ReleaseObject();

		//	新しいテキストを再連結
		float x = 0;
		float y = 0;
		for( size_t i = 0 ; i = 0x81 && c1 = 0xE0 && c1 setPos( x , y );
			c->setText( s );

			x += charW;
			if( x >= sizeWidth ){
				x = 0;
				y += charH;
			}			
			m_textObj->addObject( c );
			i += next;
		}
	}
そのうちフォントハンドルから描画フォントを指定したり
タグ解析からカラー指定できるようにしていく予定。
意外とフォント周りは画像以上に面倒臭そう

ではでは
最後に編集したユーザー せんちゃ on 2013年9月21日(土) 02:36 [ 編集 1 回目 ]

アバター
へにっくす
記事: 634
登録日時: 12年前

Re: DXライブラリでも使ってフレームワークでも 第5回

投稿記事 by へにっくす » 10年前

せんちゃ さんが書きました:意外とフォント周りは画像以上に面倒臭そう
等幅フォント固定で考えてますか?
もしプロポーショナルフォントに対応を考えているのならさらに面倒なことをしないといけないですよ。
(文字ごとに幅が違うため)
まあ普通、ゲームに組み込むのは一つのフォントだけで、あとはビットマップ画像に落とすのが常道ですけどね。

アバター
せんちゃ
記事: 50
登録日時: 13年前
住所: 江別市東野幌町
連絡を取る:

Re: DXライブラリでも使ってフレームワークでも 第5回

投稿記事 by せんちゃ » 10年前

いえ、可変幅はまったく考慮してないです。
というかプロポーショナルフォントという存在をたった今知ったくらいですw