CG回想モードプラグイン(スマホ対応・GUIツール付き) - CGViewerMZ.js

▼CG回想モードプラグイン(スマホ対応・GUIツール付き)(MEGAokie様作) - CGViewerMZ.js
https://plugin-mz.fungamemake.com/archives/8903
専用GUIツール付きのCGギャラリー/回想モードプラグインです。フォルダを選ぶだけで画像を一括登録できます。PC・スマホ・タブレット全対応で、ズーム・スクロール・ピンチ操作にも対応しています。レイアウトも自由に調整可。CGごとにコモンイベントでシーン再生の設定をします。
ふりがな:しーじーかいそうもーどぷらぐいん
機能概要: 専用GUIツール付きのCGギャラリー/回想モードプラグインです。フォルダを選ぶだけで画像を一括登録できます。PC・スマホ・タブレット全対応で、ズーム・スクロール・ピンチ操作にも対応しています。レイアウトも自由に調整可。CGごとにコモンイベントでシーン再生の設定をします。
利用規約(ライセンス): MITライセンス
作者:MEGAokie
作者サイト:https://x.com/MEGAokie
解説ページ:https://note.com/megaokie/n/ned7a3eafdcf7
ダウンロードページ:https://note.com/megaokie/n/ned7a3eafdcf7
ファイル名:CGViewerMZ.js
プラグインのヘルプ:
/*:
* @target MZ
* @plugindesc v7.1 CGビューワー+ギャラリー(拡大機能・設定ツール付き)
* @author MEGAokie
* @url
* @license MIT
*
* @param UnlockMode
* @text CG開放管理モード
* @type select
* @option スロット個別・即時保存(UnlockCG実行時に開放状態が保存。ゲームオーバー後も消えない)
* @value slot
* @option スロット個別・手動セーブのみ(手動セーブ時にのみ開放状態が保存)
* @value slot-manual
* @option 全体共有・即時保存(UnlockCG実行時に開放状態が保存。全セーブデータで共有・ゲームオーバー後も消えない)
* @value global
* @option 全体共有・手動セーブのみ(手動セーブ時にのみ開放状態が保存。全セーブデータで共有)
* @value global-manual
* @default global
* @desc UnlockCG実行時の開放情報の管理方法。
* 即時保存モードはゲームオーバー・強制終了後も開放情報が維持されます。
* ※即時保存モードは書き戻し先スロットが存在しない場合は保存されません。
* ※全体共有モードはプラグイン専用ファイル(CGViewerMZ_unlocks)に保存されます。
*
* @param AllUnlocked
* @text 全開放モード
* @type boolean
* @default false
* @desc デバッグ用:全CGを開放状態で表示
*
* @param ThumbCols
* @text サムネイル列数
* @type number
* @min 1
* @max 10
* @default 3
* @desc ギャラリーのサムネイル列数
*
* @param ThumbRows
* @text サムネイル行数
* @type number
* @min 1
* @max 10
* @default 3
* @desc ギャラリーのサムネイル行数
*
* @param ThumbPadding
* @text サムネイル間隔(px)
* @type number
* @min 0
* @max 40
* @default 1
* @desc サムネイル画像と画像の間のすき間(ピクセル数)。
* 数値を大きくすると画像同士の間隔が広くなり、その分サムネイルが小さくなります。
*
* @param ThumbScaleMode
* @text サムネイル縮小方式
* @type select
* @option バイリニア(シャープ)
* @value bilinear
* @option エリア平均(なめらか)
* @value area
* @default area
* @desc サムネイルをフルサイズ画像から生成する際の縮小アルゴリズム。
* bilinear: PixiJS GPU処理(MZデフォルトと同等)。area: Canvas高品質リサンプリング。
*
* @param GridMargin
* @text 外周の余白(px)
* @type number
* @min 0
* @max 60
* @default 1
* @desc ギャラリー画面の外周(画面の端とサムネイルの間)の余白(ピクセル数)。
* 数値を大きくすると外側の余白が広くなります。
*
* @param DescHeight
* @text 説明文エリアの高さ(px)
* @type number
* @min 0
* @max 60
* @default 30
* @desc 各サムネイル下部に確保する説明文の表示エリアの高さ(ピクセル数)。
* 説明文を使わない場合は0にするとサムネイルが最大サイズになります。
*
* @param DescTextColor
* @text 説明文の文字色
* @type string
* @default #ffffff
* @desc 説明文の文字色。色コード形式で指定(例: #ffffff=白、#ffff00=黄色)
*
* @param DescOutlineColor
* @text 説明文の枠色
* @type string
* @default #000000
* @desc 説明文の縁取り色。色コード形式で指定(例: #000000=黒)
*
* @param DescOutlineWidth
* @text 説明文の枠幅(px)
* @type number
* @min 0
* @max 10
* @default 3
* @desc 説明文の縁取りの太さ(ピクセル数)。0で縁取りなし。
*
* @param DescTextAlign
* @text 説明文の文字揃え
* @type select
* @option 左揃え
* @value left
* @option 中央揃え
* @value center
* @option 右揃え
* @value right
* @default center
* @desc 説明文の文字揃え
*
* @param FocusColor
* @text フォーカス枠の色
* @type string
* @default #ffffff
* @desc ギャラリーでキーボード操作時に選択中のサムネイルを囲む枠線の色。
* 色コード形式で指定(例: #ffffff=白、#ffff00=黄色、#00ff00=緑)
*
* @param GalleryBackground
* @text ギャラリー背景画像
* @type file
* @dir img/pictures/
* @desc ギャラリー(一覧画面)の背景に表示する画像。
* 空欄の場合は黒背景になります。
*
* @param GalleryBackgroundMode
* @text 背景画像の表示方法
* @type select
* @option 元サイズで中央配置
* @value original
* @option 画面全体に引き伸ばし
* @value stretch
* @option タイル状に繰り返し
* @value tile
* @default original
* @desc 背景画像の表示方法を選択します。
*
* @param LockedImage
* @text 未開放時の代替画像
* @type file
* @dir img/pictures/
* @desc 未開放スロットに表示する画像。空欄の場合はLOCKEDテキストを表示します。
* 全フォルダ・全スロット共通で使用されます。
*
* @param ShowLockedDescription
* @text 未開放時も説明文表示
* @type boolean
* @default false
* @desc 未開放のCGでも説明文を表示するか。
* trueにすると「LOCKED」の下に説明文が表示されます。
*
* @param FadeDuration
* @text フェード時間(フレーム)
* @type number
* @min 1
* @max 120
* @default 30
* @desc ギャラリーのページ切り替え時のフェード時間(60フレーム=1秒)
*
* @param ZoomEnabled
* @text 拡大機能を有効化
* @type boolean
* @default true
* @desc ビューアーで画像の拡大/縮小/移動を可能にする
*
* @param MinZoom
* @text 最小拡大率(%)
* @type number
* @min 10
* @max 100
* @default 10
* @desc 縮小できる最小の拡大率(10%~100%)
*
* @param MaxZoom
* @text 最大拡大率(%)
* @type number
* @min 100
* @max 1000
* @default 400
* @desc 拡大できる最大の拡大率(100%~1000%)
*
* @param ZoomSpeed
* @text ズーム速度(%)
* @type number
* @min 5
* @max 50
* @default 10
* @desc 1回のズーム操作での変化率(5%~50%)
*
* @param PanSpeed
* @text 移動速度(px)
* @type number
* @min 10
* @max 100
* @default 20
* @desc キーボードでの画像移動速度(ピクセル)
*
* @param DoubleClickTime
* @text ダブルクリック時間(ms)
* @type number
* @min 100
* @max 500
* @default 300
* @desc ダブルクリックと認識する時間(ミリ秒)
*
* @param DoubleClickZoom
* @text ダブルクリック拡大率(%)
* @type number
* @min 100
* @max 400
* @default 200
* @desc ダブルクリック時の拡大率(100%~400%)
*
* @param EnablePinch
* @text ピンチ操作を有効化
* @type boolean
* @default true
* @desc スマホでのピンチ拡大/縮小を有効にする
*
* @param ShowToolInTitle
* @text タイトル画面にツール表示
* @type boolean
* @default true
* @desc タイトル画面に「CG設定ツール」コマンドを表示(NW.js環境のみ)
*
* @param ToolCommandName
* @text ツールコマンド名
* @type string
* @default CG設定ツール
* @desc タイトル画面に表示するコマンド名
*
* @param EventButtonText
* @text イベント再生ボタン
* @type string
* @default イベント再生
* @desc ビューアーに表示するコモンイベント再生ボタンのテキスト
*
* @param TitleGalleryCommands
* @text タイトル画面ギャラリーコマンド
* @type struct[]
* @default []
* @desc タイトル画面に表示するギャラリーコマンドの一覧。
* 複数フォルダを登録すると複数コマンドが表示されます。global系モード専用(slot系は案内画面に遷移)。
*
* @command OpenViewer
* @text CGビューアーを開く
* @desc 指定したフォルダのCGビューアー(またはギャラリー)を開きます
*
* @arg folder
* @text フォルダ名
* @type string
* @default cg01
* @desc img/pictures/配下のフォルダ名(例: cg01)
*
* @arg startNumber
* @text 開始番号
* @type string
* @desc 空欄にすると一覧表示。数字もしくは変数\V[n]の値にするとその番号のCGから表示が開始。
*
* @command UnlockCG
* @text CGを開放する
* @desc 指定したCGを開放状態にします
*
* @arg folder
* @text フォルダ名
* @type string
* @default cg01
* @desc img/pictures/配下のフォルダ名(例: cg01, chapter1/scene01)
*
* @arg numbers
* @text 開放番号
* @type string
* @default 1
* @desc 開放する番号(例: 1-5,7,9 で1~5番と7番と9番を開放)
*
* @command OpenSettingTool
* @text CG設定ツールを開く
* @desc CG設定ツールを開きます(NW.js環境のみ)
*
* @command ShowCGPicture
* @text 指定CGをピクチャ表示
* @desc 指定したCGをピクチャとして画面に表示します
*
* @arg folder
* @text フォルダ名
* @type string
* @default cg01
* @desc img/pictures/配下のフォルダ名(例: cg01, chapter1/scene01)。\V[n]で変数参照可能
*
* @arg number
* @text CG番号
* @type string
* @default 1
* @desc 表示するCG番号(\V[n]で変数参照可能)
*
* @arg pictureId
* @text ピクチャ番号
* @type string
* @default 1
* @desc 表示先のピクチャ番号(\V[n]で変数参照可能)
*
* @arg origin
* @text 原点
* @type select
* @option 左上
* @value 0
* @option 中心
* @value 1
* @default 1
* @desc ピクチャの原点位置
*
* @arg x
* @text X座標
* @type string
* @desc X座標(空欄で画面中央、\V[n]で変数参照可能)
*
* @arg y
* @text Y座標
* @type string
* @desc Y座標(空欄で画面中央、\V[n]で変数参照可能)
*
* @arg scaleX
* @text 拡大率X(%)
* @type string
* @default 100
* @desc 横方向の拡大率(\V[n]で変数参照可能)
*
* @arg scaleY
* @text 拡大率Y(%)
* @type string
* @default 100
* @desc 縦方向の拡大率(\V[n]で変数参照可能)
*
* @arg opacity
* @text 不透明度
* @type string
* @default 255
* @desc 不透明度 0~255(\V[n]で変数参照可能)
*
* @arg blendMode
* @text 合成方法
* @type select
* @option 通常
* @value 0
* @option 加算
* @value 1
* @option 乗算
* @value 2
* @option スクリーン
* @value 3
* @default 0
* @desc 合成方法
*
* @help
* ■概要
* CGビューアーとギャラリー機能を提供するプラグインです。
* data/CGList.json でCGリストを管理します。
*
* ■CGList.jsonの形式
* {
* "cg01": [1, 2, 3, 4, 5],
* "chapter1/cave1": [1, 2, 3]
* }
* または詳細形式:
* {
* "cg01": [
* { "number": 1, "description": "説明", "commonEventId": 5 }
* ]
* }
* ※フォルダ名は img/pictures/ 配下のパス
*
* ■使用方法
* 1. プラグインコマンド「UnlockCG」でCGを開放
* 2. プラグインコマンド「OpenViewer」でビューアーを開く
* 3. プラグインコマンド「ShowCGPicture」でCGをピクチャ表示
*
* ■主要機能
* - CG解放システム(プラグインパラメーター「CG開放管理モード」で動作を選択)
* ・スロット個別・即時保存: UnlockCG実行時に現在スロットへ即時書き戻し
* ・スロット個別・手動セーブのみ: 手動セーブ時のみ保存(従来動作)
* ・全体共有・即時保存: UnlockCG実行時にプラグイン専用ファイルへ即時保存
* ・全体共有・手動セーブのみ: 手動セーブ時にプラグイン専用ファイルへ保存
* 即時保存モードはゲームオーバー後も開放情報が維持されます。
* ※書き戻し先スロットが存在しない場合(一度もセーブしていない等)は保存されません。
* ※全体共有モードのファイルはsaveフォルダ内のCGViewerMZ_unlocks.rmmzsaveです。
* - ビューアー(開放済みCGを閲覧)
* - ギャラリー(サムネイル一覧表示)
* - 拡大/縮小/移動機能
* - 自動プリロード(前後の画像を先読みしてスムーズ表示)
* - \V[n]による変数参照(フォルダ名、CG番号等)
*
* ■操作方法
* 【ビューアー(拡大機能有効時)】
* キーボード:
* ← → : 前/次のCG
* ↑ ↓ または PageUp/Down : 拡大/縮小
* Shift + 矢印キー : 画像移動(拡大時)
* Tab : 100%にリセット
* Enter/Z : フィット⇔100%切り替え
* R : コモンイベント再生(設定済みの場合)
* Backspace : 一覧に戻る
* Esc : 終了
*
* マウス:
* ホイール上回し : 縮小
* ホイール下回し : 拡大(カーソル位置中心)
* 左ドラッグ : 画像移動(拡大時)
* ダブルクリック : 拡大⇔フィット切り替え
* シングルクリック : メニュー表示/非表示(ドラッグと自動判別)
*
* スマホ/タブレット:
* ピンチ : 拡大/縮小
* ドラッグ : 画像移動(拡大時)
* ダブルタップ : 拡大⇔フィット切り替え
* シングルタップ : メニュー表示/非表示(ドラッグと自動判別)
*
* 【ギャラリー(一覧画面)】
* キーボード:
* 矢印キー : フォーカス移動
* Enter/Z : 選択したCGを開く
* PageUp/Down : ページ切り替え
* Esc : 終了
*
* マウス/タッチ:
* サムネイルクリック : CGを開く
* ボタンクリック : ページ切り替え・終了
*
* ■注意事項
* - 画像ファイルは img/pictures/(フォルダ名)/番号.png の形式で配置
* 例: img/pictures/cg01/1.png
* - 拡大機能により、メモリ使用量が若干増加します
*
* ■サムネイル独立指定(オプション)
* ギャラリー一覧に表示するサムネイル専用画像を用意できます。
* 配置場所: img/pictures/(フォルダ名)/thumb/番号.png
* 例: img/pictures/cg01/thumb/1.png
* thumb/ フォルダに画像がある番号はそちらをサムネイルとして使用し、
* ない番号は元画像をそのままサムネイル表示します(従来どおり)。
* ※ thumbフォルダを作らなくても問題ありません。
*
* ■説明文の表示設定
* 「説明文エリアの高さ」を1以上に設定し、CGList.jsonの各CGに
* descriptionフィールドを記述すると説明文が表示されます。
* 文字色・枠色・文字揃えはプラグインパラメーターで設定できます。
*
* ■タイトル画面ギャラリー
* プラグインパラメーター「タイトル画面ギャラリーコマンド」でコマンドを追加すると、
* タイトル画面からギャラリーを直接起動できます。
* ・global系モード: コマンド選択でギャラリーが開きます
* ・slot系モード: コマンドは表示されますが、選択すると案内画面が表示されます
*
* ■外部連携API
* 独自タイトル画面を使用している場合は、以下のstaticメソッドで直接ギャラリーを起動できます。
* Scene_CGGallery.open("フォルダ名");
* 例: Scene_CGGallery.open("cg01");
* ※global系モードでのみ正常に動作します。
*
* ■ライセンス
* MIT License
* Copyright (c) 2026 MEGAokie
* 本プラグインは自由に使用・改変・再配布できます。
* 詳細は https://opensource.org/licenses/MIT を参照してください。
*
*/
/*~struct~TitleGalleryCommand:
* @param label
* @text コマンド名
* @type string
* @default ギャラリー
* @desc タイトル画面に表示するコマンド名
*
* @param folder
* @text フォルダ名
* @type string
* @default cg01
* @desc 開くギャラリーのフォルダ名(img/pictures/配下のパス)
*/