kinugasa.contents.event

## クラス EventManager

- java.lang.Object
- - kinugasa.contents.event.EventManager

- すべての実装されたインタフェース:
    java.io.Serializable, Freeable, Loadable
  直系の既知のサブクラス:
    MultiClassEventManager, SingleClassEventManager

      public abstract class EventManager
      extends java.lang.Object
      implements Freeable, Loadable, java.io.Serializable

  時系列イベントを処理する仕組みの基本的な機能を定義します.
  実際に発生するイベント[ Eventクラス ]はマネージャの実装によって扱う型が異なるため、 イベントを追加する機能はこのクラスには定義されていません。
  フレームワークでは、基本的な実装として、Event＜T＞を扱うMultiClassEventManagerと、 単一の型のEventを扱うSIngleClassEventManagerを用意しています。
  マネージャが使用するイベントはリストまたはキューとして実装されます。
  関連項目:
    直列化された形式

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `protected EntryModel` | `TIME_BASE_ENTRY_MODEL` このマネージャの時刻とイベントの時刻を比較する最も一般的な実装です.

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `EventManager()` マネージャを構築します.

  - ### メソッドのサマリー

    All Methods Instance Methods Abstract Methods Concrete Methods
    修飾子とタイプ | メソッドと説明
    --- | ---
    `abstract void` | `clear()` マネージャに追加されているすべてのイベントを破棄します.
    `abstract boolean` | `contains(Event<?> evt)` マネージャにイベントevtが含まれているかを調べます.
    `EventManager` | `free()` コンテンツをメモリから破棄出来るようにします.
    `long` | `getProgressTime()` このイベントマネージャの更新回数を取得します.
    `protected abstract void` | `init()` マネージャに追加されているイベントを初期化します.
    `abstract boolean` | `isEmpty()` マネージャの破棄されていないイベントの数が0個であるかを検査します.
    `boolean` | `isLoaded()` このオブジェクトが、すでにロードされているかを検査します.
    `EventManager` | `load()` コンテンツをロードして展開します.
    `abstract void` | `printAll()` ストリームにイベントの情報を発行します.
    `abstract void` | `remove(Event<?> evt)` マネージャにイベントevtが含まれていれば削除します.
    `abstract void` | `removeAll(Event<?>... evt)` マネージャにイベントevtが含まれていれば削除します.
    `abstract int` | `size()` マネージャに追加されており、まだ破棄されていないイベントの数を取得します.
    `abstract void` | `sort()` マネージャに追加されているイベントを、時系列に沿ってソートします.
    `java.lang.String` | `toString()`
    `void` | `update()` イベントマネージャの内部時間を更新します.

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### フィールドの詳細

    - #### TIME_BASE_ENTRY_MODEL

          protected final EntryModel TIME_BASE_ENTRY_MODEL

      このマネージャの時刻とイベントの時刻を比較する最も一般的な実装です.

  - ### コンストラクタの詳細

    - #### EventManager

          public EventManager()

      マネージャを構築します. 通常は、イベントを格納するリストやキューを初期化します。

  - ### メソッドの詳細

    - #### update

          public void update()

      イベントマネージャの内部時間を更新します. このメソッドは毎ターン（もしくは何回かに1回）呼び出し続ける必要があります。
      このメソッドによってこのイベントマネージャの内部時刻が更新され、 新しいイベントが起動できるようになります。

    - #### getProgressTime

          public long getProgressTime()

      このイベントマネージャの更新回数を取得します. 更新回数はイベントが発生する"時刻"を表します。
      通常、更新時刻が、イベントの実行時刻よりも大きくなったとき、イベントが起動されます。
      この時刻はただのカウンタであり、updateを呼び出した回数が保管されます。
      毎フレーム更新することで、時刻のカウンタは総フレーム数と同期します。
      戻り値:
        このイベントマネージャの更新回数を返します。

    - #### load

          public EventManager load()

      インタフェースからコピーされた説明: `Loadable`
      コンテンツをロードして展開します. すでにロードされている場合の動作は、実装によって異なります。
      再度ロードすることで、データを最新のものに更新するなど、効果のある場合には、すでにロードされている場合でも 再度ロードすることがあります。
      定義:
        `load` インタフェース内 `Loadable`
      戻り値:
        インスタンス化と同時にロードするために、thisインスタンスを返します。戻り値は 適切な型にキャストする必要があります。

    - #### init

          protected abstract void init()

      マネージャに追加されているイベントを初期化します. このメソッドはloadメソッドをコールすると自動的に呼ばれます。
      具象クラスでは、addメソッドを使用してイベントを追加する処理を記述する 必要があります。

    - #### free

          public EventManager free()

      インタフェースからコピーされた説明: `Freeable`
      コンテンツをメモリから破棄出来るようにします. 実際にメモリから破棄されるタイミングは、GCに依存します。
      まだロードされていないか、開放済みのオブジェクトを開放した場合には、通常は何も行いません。
      定義:
        `free` インタフェース内 `Freeable`
      戻り値:
        デフォルトでロードされる実装を、インスタンス化と同時に開放するためにthisインスタンスを返します。
        戻り値は適切な型にキャストする必要があります。通常、このような実装は効率的でないため推奨されません。

    - #### printAll

          public abstract void printAll()

      ストリームにイベントの情報を発行します. このメソッドはデバッグ用です。loadメソッドによって実行されます。

    - #### isLoaded

          public boolean isLoaded()

      インタフェースからコピーされた説明: `Loadable`
      このオブジェクトが、すでにロードされているかを検査します.
      定義:
        `isLoaded` インタフェース内 `Loadable`
      戻り値:
        ロード済みである場合はtrueを返します。

    - #### sort

          public abstract void sort()

      マネージャに追加されているイベントを、時系列に沿ってソートします.

    - #### size

          public abstract int size()

      マネージャに追加されており、まだ破棄されていないイベントの数を取得します.
      戻り値:
        追加ずみイベントの数を返します。

    - #### isEmpty

          public abstract boolean isEmpty()

      マネージャの破棄されていないイベントの数が0個であるかを検査します.
      戻り値:
        マネージャにイベントがない場合はtrue、1個以上のイベントが待機中である場合はfalseを返します。

    - #### clear

          public abstract void clear()

      マネージャに追加されているすべてのイベントを破棄します.

    - #### contains

          public abstract boolean contains(Event<?> evt)

      マネージャにイベントevtが含まれているかを調べます.
      パラメータ:
        `evt` - 検査するイベントを送信します。
      戻り値:
        evtがイベントリストに含まれている場合はtrueを返します。

    - #### remove

          public abstract void remove(Event<?> evt)

      マネージャにイベントevtが含まれていれば削除します. このメソッドは実行したイベントを破棄するためにも使用されます。
      evtが含まれていない場合は何も行いません。
      パラメータ:
        `evt` - 削除するイベントを送信します。

    - #### removeAll

          public abstract void removeAll(Event<?>... evt)

      マネージャにイベントevtが含まれていれば削除します. このメソッドは実行したイベントを破棄するためにも使用されます。
      evtが含まれていない場合は何も行いません。
      パラメータ:
        `evt` - 削除するイベントを送信します。

    - #### toString

          public java.lang.String toString()

      オーバーライド:
        `toString` クラス内 `java.lang.Object`