Skip to content
New issue

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

Develop #65

Merged
merged 135 commits into from
Nov 11, 2022
Merged

Develop #65

merged 135 commits into from
Nov 11, 2022

Conversation

rrbox
Copy link
Owner

@rrbox rrbox commented Sep 6, 2022

v4 にむけ制作開始

  • フォルダ構成を整理
  • Opaque 型を使用した API

各ノードに特殊化されたコード以外を Foundation フォルダに移動
[clean] フォルダ構成
@rrbox
Copy link
Owner Author

rrbox commented Sep 6, 2022

フォルダ構成を整理した

BuilderProtocol.swift to SKNode.swift
Builder を modifier の連続として定義できるようにした. Modifier をメソッドチェーンで追加すると, Builder の型が変化していき, Moidifier を実装した構造体が追加されていくようになった.
Builder の実装方法の変更に伴い, property wrapper が機能しなくなったため, 一時的に削除とした.
SKNode に実装されているプロパティを変更するための modifier を定義した. ジェネリクスで定義されているため, あらゆるSKNodeサブクラスに対して使用できる.
@rrbox
Copy link
Owner Author

rrbox commented Sep 6, 2022

Linked modifier を使用したシステムに移行しました。以下のような機能変更があります。

  • Modifier をカスタマイズできるようになりました。
  • NodeBuilder の property wrapper が使えなくなりました。
  • UnownedNodeBuilder が完全に使えなくなりました。
  • 定義済みのノードを編集する process メソッドが追加されました。
  • ノード生成方法が以下のように変わりました。
// Builder の生成過程は省略しています.

// v3 以前
builder.node

// develop
builder.node()

SKNode サブクラス全てに適用させるモディファイアを一つの名前空間に整理した.
SKNode サブクラスのモディファイアメソッドの内部の記述を簡略化した.
モディファイアの名前空間の末尾に " ~ Modifiers " を追加.
SKNode サブクラスを生成するか引数から受け取るかし, ノードの子ノードとして追加するメソッドです.
SKNode サブクラスのノードを追加するメソッドと, ビルダーから生成したノードを追加するメソッドを引数から見分けられるようにした.
テストコードに addChild モディファイアの実装分を追加した.
SKNode サブクラスのイニシャライザの恩恵を受けるために, イニシャライザ一つ一つを構造体でラップするという模索
全てのSKNodeサブクラスのインスタンス化を遅延して実行する構造体を追加.
SKLabelNode 向けの API を一つのフォルダに整理した.
documentation の骨組みを作成しました.
`Builder` の使い方を整理するファイルです.
Generator の使い方をこのファイルに整理します.
`Processor` の使い方をこのファイルに整理します.
SKNodeBuilder で中心的に使用される構造体の説明のリンクを作成しました.
`Modifier` を使ってカスタムモディファイアを作成する方法をこのファイルに整理します.
`Modifier` の使い方についてのリンクを作成しました.
それぞれの topic について, article を先に配置し, 必要最低限の名前空間やプロトコルをその下に配置しました.
Builder からノードを生成する方法についての記述を追加しました.
[update] README.md の内容を, 新しい API にしました.
[fix] CQS 原則に従い, process メソッドを void に変更しました.
@rrbox rrbox merged commit 100fb92 into main Nov 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant