We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prometeでは、画面を構成する全ての概念がElementというC#クラスで管理されている
一方、多くのゲームは、そのロジックで使うためのデータをクラスなり構造体なりで持っていることが殆どである
ゲームロジック用のデータを画面に表示するとき、以下のような処理を行う必要がある
これは、ロジック側のデータ列とPromete側のElementリストで、似たような構造を二重管理していることになる 特に 4. がかなり面倒…。ロジック側のデータ列がそのまま画面描画に使われたら、メモリ効率も生産性も上がるだろう
このissueでは、上記の背景を解決するために、任意のC#オブジェクトおよび、それを用いた画面描画のロジックを使って画面を構成できるようにする。ロジック用のデータをDataとし、それを画面に描画するためのコードをRendererとするため、Data Rendererパターンと呼ぶ。
Dataは、単なるC#の型である。stringやintでもいいし、構造体・クラスを問わない。
Rendererは、与えられたDataを元に画面描画を担当するクラスである。
public struct Enemy { public Texture2D Texture { get; set; } public Vector Position { get; set; } public string Name { get; set; } public int Hp { get; set; } } public class EnemyRenderer : DataRenderer<Enemy> { // DataRenderer<T>.Render(T data); public override void Render(Enemy enemy) { // 実際の画面描画。Promete Elementを生成するか、よりローレベルなAPIを呼ぶかは未定 } }
The text was updated successfully, but these errors were encountered:
RenderAll(ReadonlySpan<Enemy> enemies) の形で全データの描画を制御できてもよさそう
RenderAll(ReadonlySpan<Enemy> enemies)
Sorry, something went wrong.
No branches or pull requests
背景
Prometeでは、画面を構成する全ての概念がElementというC#クラスで管理されている
一方、多くのゲームは、そのロジックで使うためのデータをクラスなり構造体なりで持っていることが殆どである
ゲームロジック用のデータを画面に表示するとき、以下のような処理を行う必要がある
これは、ロジック側のデータ列とPromete側のElementリストで、似たような構造を二重管理していることになる
特に 4. がかなり面倒…。ロジック側のデータ列がそのまま画面描画に使われたら、メモリ効率も生産性も上がるだろう
Data Renderer パターン
このissueでは、上記の背景を解決するために、任意のC#オブジェクトおよび、それを用いた画面描画のロジックを使って画面を構成できるようにする。ロジック用のデータをDataとし、それを画面に描画するためのコードをRendererとするため、Data Rendererパターンと呼ぶ。
Data
Dataは、単なるC#の型である。stringやintでもいいし、構造体・クラスを問わない。
Renderer
Rendererは、与えられたDataを元に画面描画を担当するクラスである。
例
The text was updated successfully, but these errors were encountered: