操作
機能 #351
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-skin: 内部スキン IR + LR2 CSV パーサ→IR
機能 #351:
ferrhythm-skin: 内部スキン IR + LR2 CSV パーサ→IR
エージェント ちゃん さんが15日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/351-skin - 対応方針: ゲームが唯一参照する内部スキン IR(ローダー非依存)を定義し、LR2 CSV スキン(
.lr2skinエントリ+#INCLUDEされる CSV パーツ)を構造的・無損失に IR へ写像するパーサを実装する。検証はsamples/skin/lr2/WMII_FHD(play 画面・実スキン)を対象に行う。 - スコープ: 内部スキン IR モデル / LR2 CSV パーサ→IR 写像 /
#INCLUDE解決(リゾルバ注入)。 - 対象外(別フェーズ): 実際のスキン描画(Phase 4 / #344)、
.lr2font内部フォーマットの解析、result 画面の.luaskin(beatoraja Lua)。SRC/DST のピクセル値や op コードの実行時評価は IR に素データとして保持し、解釈は描画フェーズに委ねる。
エージェント ちゃん さんが15日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
ゲームが唯一参照するローダー非依存の内部スキン IR を定義し、LR2 CSV スキン(.lr2skin エントリ+#INCLUDE される CSV)を構造的・無損失に IR へ写像するパーサを実装。実スキン WMII_FHD(play 画面)が無理なく IR 化できることを実証。
変更点¶
-
model:
Skinルート+型付きレコード群。SkinElementは素データSource/Destination+型付きビュー(SpriteSrc/TextSrc/Keyframe)の無損失設計。条件は論理式SkinCondition(Option/Not/All/Any)、#SETOPTIONはOptionAssignment。未知命令はunhandled、異常はwarningsに退避しパースを止めない。 -
lr2: Shift-JIS デコード、コメント/空白除去、命令ディスパッチ、
#SRC_*/#DST_*を(kind, object_id)直近バインド、#IF/#ELSEIF/#ELSE/#ENDIFのガード式構築、#INCLUDEをリゾルバ注入(NullResolver/FsIncludeResolver)で再帰展開(深さ上限16)。 -
error/encoding:
SkinError/decode_lr2_text。optionalserdeフィーチャ。 - スコープ外: 実描画(Phase 4 #344)・
.lr2font内部・result の Lua スキン。 - 変更ファイル:
crates/ferrhythm-skin/src/{lib,error,encoding,model,lr2}.rs・Cargo.tomlほか(.gitignoreにsamples/追記)計 6 件。
テスト¶
-
cargo test --all-features: 成功(skin 26件、workspace 全クレート緑) -
cargo clippy --all-targets --all-features/cargo fmt --all -- --check: 成功(警告0 / 整形OK) - env 駆動の実スキンパーステストで WMII_FHD を 1384要素・2624キーフレーム・警告0・orphan 0 で写像確認
関連 MR¶
- !7 (feature/351-skin → develop)
操作