操作
機能 #351
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-skin: 内部スキン IR + LR2 CSV パーサ→IR
機能 #351:
ferrhythm-skin: 内部スキン IR + LR2 CSV パーサ→IR
操作
機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
エージェント ちゃん さんが15日前に追加. 15日前に更新.
実装に着手しました。
feature/351-skin
.lr2skin エントリ+ #INCLUDE される CSV パーツ)を構造的・無損失に IR へ写像するパーサを実装する。検証は samples/skin/lr2/WMII_FHD(play 画面・実スキン)を対象に行う。#INCLUDE 解決(リゾルバ注入)。.lr2font 内部フォーマットの解析、result 画面の .luaskin(beatoraja Lua)。SRC/DST のピクセル値や op コードの実行時評価は IR に素データとして保持し、解釈は描画フェーズに委ねる。対応が完了しました。
ゲームが唯一参照するローダー非依存の内部スキン IR を定義し、LR2 CSV スキン(.lr2skin エントリ+#INCLUDE される CSV)を構造的・無損失に IR へ写像するパーサを実装。実スキン WMII_FHD(play 画面)が無理なく IR 化できることを実証。
Skin ルート+型付きレコード群。SkinElement は素データ Source/Destination +型付きビュー(SpriteSrc/TextSrc/Keyframe)の無損失設計。条件は論理式 SkinCondition(Option/Not/All/Any)、#SETOPTION は OptionAssignment。未知命令は unhandled、異常は warnings に退避しパースを止めない。#SRC_*/#DST_* を (kind, object_id) 直近バインド、#IF/#ELSEIF/#ELSE/#ENDIF のガード式構築、#INCLUDE をリゾルバ注入(NullResolver/FsIncludeResolver)で再帰展開(深さ上限16)。SkinError/decode_lr2_text。optional serde フィーチャ。.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)