リンクの実装

暫定的ですが、リンクを実装してみました。

using System;
using y4cs.timer;
using y4cs.aux;
using y4cs.draw;
using y4cs.input;

class Sample
{
  public static void Main(string[] args) 
  {
    // 略

    ScenarioTextDraw view = new ScenarioTextDraw();
    view.setText(@"<a href=""xxx.yyy.zzz"">リンク</a>に対応");
    view.updateText();

    while (GameFrame.pollEvent() == 0) {
      screen.clear();

      // 10フレーム毎に1文字表示
      if (loop++ % 10 == 0) 
        view.next();
      view.onDraw(screen, offset_x, offset_y, c);

      // 画面内のリンクを調べる
      for (int i = 0; i < view.links.count; ++i) {
        // 表示されているリンクのみを対象にする
        if (view.links[i].visible) {
          int x, y;
          m.getPos(out x, out y);
          // マウスがリンク内に入っていたら色変更
          if (view.links[i].isIn(offset_x, offset_y, x, y, true))
            view.links[i].onDraw(screen, offset_x, offset_y, new Color4ub(0, 0, 255, 128));
        }
      }

      screen.update();
      fpstimer.waitFrame();
    }
  }
}

ScenarioTextDrawクラスでは似非HTMLを解析して見つかったリンクをlinksメンバとして保持します。サンプルでは文字が表示されるまでリンクは有効にならないようにしていますが、何も表示されていないところにマウスを持っていくとリンクが浮かび上がる、なんて使い方もできます。
現状ではリンクの色しか変えられないので、下線を引いたり、何らかのエフェクトが掛けられるようにするのが課題かな。