似非ScenarioTextDraw
yaneSDK4Csのバグ修正をやってたら、ちょっとゲームプログラミングっぽいことしたくなったので、ライブラリ拡張してテキスト表示でHTMLっぽいタグが使えるようにしてみました。こんな感じで使います。
using System; using y4cs.timer; using y4cs.math; using y4cs.aux; using y4cs.draw; using y4cs.input; class Sample01 { // テスト文字列 static string text = "<font size=2 color=#ffffff>" + "<b>「フフフ、ハハハ、ついに見つけたわ」</b><br>" + " <br>" + "<font size=3 color=#00ff00>森</font>と<font color=#0000ff size=3>湖</font>" + "に囲まれた<u>古城の一室</u>で<font size=3 color=#ff0000>女</font>は呟いた。<br>" + "真っ暗な部屋の中、<br>" + "<b><font color=#add8e6>蒼い月</font></b>の光が浮かび出すシルエット。<br>" + "純白のドレスと<b><font color=#e0ffff>白い肌</font></b>、" + "そして<b><font color=#ff0000>深紅の瞳</font></b>が暗闇に光っていた。<br>" + " <br>" + "<b>「闇の女王…、怠惰な貴方とはいえ、沈黙して<i>15年</i>。<br>" + " 少々怠けすぎではなくて?」</b><br>" + " <br>" + "<font size=3 color=#ff0000>女</font>は東の窓へと足を進める。<br>" + "この空の向こうに<u><i>彼女</i></u>がいる。<br>" + "優しく見つめる目が細められ、厳しいものに変わる。<br>" + " <br>" + "<b>「貴方に無様な姿は許されないのよ、" + "<font color=#ffd700><i><u>アタナシア</u></i></font>」</b></font>"; [STAThread] static void Main(string[] args) { // お決まりのパターン Screen screen = new Screen(); screen.beginScreenTest(); screen.testVideoMode(640,480,0); screen.endScreenTest(); // アルファ転送する screen.blendSrcAlpha(); // 60fps FpsTimer fpstimer = new FpsTimer(); fpstimer.setFps(60); // フォントローダーに使用するフォントを登録 // registerで登録した場合、登録順に0,1...と番号が振られる // この番号をFontRepositoryのsetLoaderを呼ぶときに指定する FontLoader loader = new FontLoader(); for (int i = 0; i < 3; ++i) { loader.register("msmincho.ttc", 16 + i * 4); // MS明朝 } int loop = 0; MouseInput m = new MouseInput(); // HTML形式に対応したテキスト描画クラス ScenarioTextDraw view = new ScenarioTextDraw(); view.getFontRepository().setLoader(loader, 0); view.getFontRepository().setMax(300); // HTML形式の文字列を設定 view.setText(text); view.updateText(); Color4ub c = new Color4ub(); while (GameFrame.pollEvent() == 0) { // マウスクリックで終了 if (m.isPress(MouseInput.button.left)) break; screen.clear(); // 10フレーム毎に1文字表示 if (loop++ % 10 == 0) view.next(); view.onDraw(screen, 30, 30, c); screen.update(); fpstimer.waitFrame(); } } }
もう少し、テストしたらライブラリをアップします。