우선 게임에 나오는 폰트 같은 경우는
[font face="MS ゴシック"]
[mappfont storage="CookieRun Regular.tft"]
[deffont face="MS ゴシック"]
;//---- 各種設定ファイルを読み込み ----//
;検索パス定義ファイル
@call storage="autoPath.ks"
;プラグイン定義ファイル
@call storage="plugin.ks"
;初回起動の変数初期化ファイル
@call storage="var.ks"
;各種システム設定
@call storage="conf.ks"
;タイトル画面設定
@call storage="title_conf.ks"
;エクストラ画面設定
@call storage="extra_conf.ks"
;コンフィグ画面設定
@call storage="config_conf.ks"
;立ちキャラ定義ファイル
@call storage="stand_conf.ks"
;イベントCG定義ファイル
@call storage="ev_conf.ks"
;//-------------------------------------//
;// ロゴ画面 //
;//-------------------------------------//
;//---- テキスト全画面表示フラグオン ----//
@eval exp="f.textFull=true"
;//---- タイトル画面フラグオン ----//
@eval exp="f.titleFlag=true"
;//---- ウインドウ表示フラグオフ ----//
@eval exp="f.windowVisible=false"
*logo
@if exp="f.logo[0] == true"
@if exp="f.logo[1] == 0"
@movie file='&f.logo[2]'
@elsif exp="f.logo[1] == 1"
@bg name='&f.logo[3]' time=1000 rule='&f.logo[4]'
@waiting time='&f.logo[5]'
@endif
@endif
;Caution画像を表示
@if exp="f.coution[0] == true"
@bg name='&f.coution[1]' time=1000 rule='&f.coution[3]'
@waiting time='&f.coution[2]'
;//---- 一度黒背景に戻す ----//
@bg name="black" time=500 rule='&f.coution[3]' window=false
@endif
;//-------------------------------------//
;// タイトル画面表示 //
;//-------------------------------------//
*title|
;各種レイヤーの解放
@freeimage layer=base
@freeimage layer=0
@freeimage layer=1
@freeimage layer=2
@freeimage layer=3
@freeimage layer=4
@freeimage layer=5
@freeimage layer=6
@freeimage layer=7
;//---- テキスト全画面表示フラグオン ----//
@eval exp="f.textFull=true"
;//---- タイトル画面フラグオン ----//
@eval exp="f.titleFlag=true"
;//---- ウインドウ表示フラグオフ ----//
@eval exp="f.windowVisible=false"
;//---- アンカー設定 ----//
@startanchor
;//---- システムボタンを無効にする ----//
@sysbtn visible=false
;//---- スライダーのコントロールレイヤを非表示にする ----//
@slider visible=false
;//---- BGM停止 ----//
@BGM停止
;//---- 文字送り速度はユーザ指定 ----//
@delay speed=user
;//---- ボタン表示用の透明フレームをセット ----//
@position frame="window_title" left=0 top=0 layer=message2 visible=false
;//---- タイトル背景表示 ----//
@bg name="bg_title" time=1000 rule="trans01"
;//==== タイトル再表示はここから ====//
*title_menu
;各チャプターごとのボイスの初期値
@eval exp="f.current_voice_num_chara01 = 0"
@eval exp="f.current_voice_num_chara02 = 0"
@eval exp="f.current_voice_num_chara03 = 0"
;バッドフラグの初期化
@eval exp="f.badEndFlag = 0"
;//---- アニメーションを停止 ----//
@アニメ停止
;//---- エクストラモードをオフ ----//
@eval exp="f.extraMode=false"
;//---- テキスト全画面表示フラグオン ----//
@eval exp="f.textFull=true"
;//---- タイトル画面フラグオン ----//
@eval exp="f.titleFlag=true"
;//---- ウインドウ表示フラグオフ ----//
@eval exp="f.windowVisible=false"
;//---- イベントモードフラグ解除 ----//
@if exp="f.evmode==true"
@eval exp="f.evmode=false"
@endif
;//---- Hシーンモードフラグ解除 ----//
@if exp="f.hmode==true"
@eval exp="f.hmode=false"
@endif
;//---- メニューボタンをクリア ----//
@cm
;//---- タイトル画面内での履歴表示を禁止 ----//
@history enabled=false
;//---- タイトル画面内での右クリックを禁止 ----//
@rclick enabled=false
;//---- BGM再生 ----//
@BGM再生 storage='&f.titleBgm[0]'
;@eval exp="kag.HistoryLayer.clear();"
;//---- ボタン表示レイヤーの指定 ----//
@current layer=message2
;------------------------
;最初から
@locate x='&f.titleBtnStart[1]' y='&f.titleBtnStart[2]'
@button graphic='&f.titleBtnStart[0]' target="*start" clickse="09_ポピン"
;------------------------
;続きから
@locate x='&f.titleBtnContinue[1]' y='&f.titleBtnContinue[2]'
@button graphic='&f.titleBtnContinue[0]' target="*continue" clickse="09_ポピン"
;------------------------
;コンフィグ
@locate x='&f.titleBtnConfig[1]' y='&f.titleBtnConfig[2]'
@button graphic='&f.titleBtnConfig[0]' storage="config.ks" target="*config" clickse="09_ポピン"
;------------------------
;エキストラ
@if exp="sf.endList != 0x00"
@locate x='&f.titleBtnExtra[1]' y='&f.titleBtnExtra[2]'
@button graphic='&f.titleBtnExtra[0]' storage="extra.ks" target="*extra" clickse="09_ポピン"
@endif
;------------------------
;終了
@locate x='&f.titleBtnExit[1]' y='&f.titleBtnExit[2]'
@button graphic='&f.titleBtnExit[0]' target="*exit" clickse="09_ポピン"
;------------------------
;//---- ボタン表示 ----//
@texton time=0
;//---- スクリプトの停止 ----//
@s
;//-------------------------------------//
;// CONTINUEボタンの処理 //
;//-------------------------------------//
*continue
@cm
@SVLDPROC mode=1 trans=true times=500
;タイトル画面フラグオフ
@eval exp="f.titleFlag=false"
@jump target="*title_menu"
@s
;//-------------------------------------//
;// EXTRAボタンの処理 //
;//-------------------------------------//
;//---- extra.ks に直接ジャンプ ----//
;//-------------------------------------//
;// EXITボタンの処理 //
;//-------------------------------------//
*exit
@close ask=true
@jump target="*title_menu"
@s
;//-------------------------------------//
;// Startボタンの処理 //
;//-------------------------------------//
*start|プロローグ
@BGMフェード停止
@cm
;//---- タイトル画面フラグオフ ----//
@eval exp="f.titleFlag=false"
;//---- テキスト全画面画面フラグオフ ----//
@eval exp="f.textFull=false"
;//---- ウインドウ表示フラグオン ----//
@eval exp="f.windowVisible=true"
;//---- シナリオファイルの読み込み ----//
@jump storage='&f.firstScenario[0]' target="*start_00"
;//---- 何故かここへ来た時はタイトル画面へ戻る ----//
@jump target="*title"
first.ks 파일 명령어 맨 위쪽에
[font face="MS ゴシック"]
[mappfont storage="CookieRun Regular.tft"]
[deffont face="MS ゴシック"]
이렇게 써 놓은 상태고
data폴더에 폰트 파일 TFT로 변환해서 넣어 둔 상태 입니다.
제가 메모장 있는거 다 열어 보니
saveload.ks라는 파일있어서 한번 건드려 봤더니
세이브 화면 폰트 크기랑 색상까지 바꿀 수 있으나
폰트를 바꾸는 명령어 몇개 넣어도 잘 안되더라고요
;//=============================================================//
;// SaveLoad Plugin //
;// SAVE/LOAD機能を実装するプラグイン Ver. 1.41 //
;//-------------------------------------------------------------//
;// <使用方法> //
;// 下記データの設定を行います(直接書替えて下さい) //
;// シナリオファイルのどこかでプラグインを読込みます //
;// マクロが定義されるので、必要な時にマクロを呼出します //
;// <表示用マクロ> //
;// [SVLDPROC mode=0/1 trans=true/false time=msec] //
;// (*) mode 0:SAVE 1:LOAD //
;// (*) trans true:フェードインで表示 false:瞬間表示 //
;// time フェードイン表示時の時間をmsec単位で指定 //
;// ただし、2550msec以内で指定すること //
;// (*)付きの引数は必須です //
;//-------------------------------------------------------------//
;// Copyright 2007-2009 ANEMOS All Right Reserved. //
;//=============================================================//
@if exp="typeof(global.saveloadObject) == 'undefined'"
@iscript
//==============================================================//
// SAVE/LOAD画面プラグインクラス //
//==============================================================//
class SaveLoadPlugin extends KAGPlugin
{
//==============================================================//
// ここに必要なデータを記述します //
//==============================================================//
//----------------------------------------------//
// 栞数の設定 //
//----------------------------------------------//
//---- 1ページの栞数 ----//
var svldDataNum = 8;
//---- SAVE/LOAD画面のページ数 ----//
var svldPageNum = 5;
//----------------------------------------------//
// テキストの設定 //
//----------------------------------------------//
//---- テキスト文字色の設定 ----//
var svldTextColor = 0xff0066;
//----------------------------------------------//
// 表示位置の設定 //
//----------------------------------------------//
//---- ページボタン画像の表示位置 ----//
var svldPageButtonTop = [40, 70, 100, 130, 160];
var svldPageButtonLeft = [532, 532, 532, 532, 532];
//---- 戻るボタン画像の表示位置 ----//
var svldRetButtonLeft = 631;
var svldRetButtonTop = 400;
//---- 栞背景画像の表示位置 ----//
var svldBackImageTop = [42, 42, 182, 182, 322, 322, 462, 462];
var svldBackImageLeft = [28, 278, 28, 278, 28, 278, 28, 278];
//---- サムネイル画像の表示位置 ----//
//---- サムネイル画像の表示位置は栞背景画像表示 ----//
//---- 位置を(0,0)とした相対位置で指定します ----//
var svldThumbImageTop = 18;
var svldThumbImageLeft = 119;
//---- 栞の保存名表示位置 ----//
//---- 栞の保存名表示位置は栞背景画像表示位置を ----//
//---- (0,0)とした相対位置で指定します ----//
var svldBkmrkNameTop = 3;
var svldBkmrkNameLeft = 3;
//---- 栞保存日付表示位置 ----//
//---- 栞保存日付表示位置は栞背景画像表示位置を ----//
//---- (0,0)とした相対位置で指定します ----//
var svldBkmrkDateTop = 40;
var svldBkmrkDateLeft = 3;
//---- 메 모 지の表示位置 ----//
//---- 메 모 지の表示位置は栞背景画像表示位置を ----//
//---- (0,0)とした相対位置で指定します ----//
//---- 実際の메 모 지欄は下記で指定した位置から ----//
//---- TOP位置がオフセット(+17)されます ----//
var svldBkmrkCommTop = 60;
var svldBkmrkCommLeft = 3;
//---- 메 모 지欄のサイズ ----//
var svldBkmrkCommWidth = 110;
var svldBkmrkCommHeight = 15;
//----------------------------------------------//
// イメージ画像の設定 //
//----------------------------------------------//
//---- SAVE画面イメージ画像 ----//
var saveImageFile = "save_main.png";
//---- LOAD画面イメージ画像 ----//
var loadImageFile = "load_main.png";
//---- イメージ画像のサイズ ----//
var svldImageFileWidth = 640;
var svldImageFileHeight = 480;
//---- ページ切替ボタンイメージ画像 ----//
//---- 実際のファイル名はここで指定した ----//
//---- 名前の後に"_連番.png"が付加されます ----//
//---- 連番は 0~ページ数-1 までとなります ----//
//---- また現在選択中のページボタン画像は ----//
//---- 名前の後ろに"_連番_sel.png"が付加 ----//
//---- されます ----//
var pageImageFile = "saveload_page";
var pageImageFileWidth = 20;
var pageImageFileHeight = 20;
//---- 戻るボタンのイメージ画像 ----//
var retImageFile = "saveload_ret.png";
var retImageFileWidth = 40;
var retImageFileHeight = 20;
//---- 栞の背景となるイメージ画像 ----//
var backSaveImageFile = "saveload_save_back.png";
var backLoadImageFile = "saveload_load_back.png";
var backImageFileWidth = 222;
var backImageFileHeight = 96;
//---- 未セーブ時に表示するサムネイル画像 ----//
//---- サムネイル画像のサイズは Config.tjs で ----//
//---- 設定した値が適用されます ----//
var thumbImageFile = "saveload_thumb.png";
//----------------------------------------------//
// 効果音の設定 //
// 効果音のボリュームは Config.tjs にて指定 //
// されたSEバッファとリンク可能です //
// ただし、SEバッファ側の音量変化に自動追従 //
// しませんので注意してください //
// ※リンクさせたSEバッファの音量が変更された //
// 場合は、以下に変更後の音量をセットして //
// ください //
// global.saveloadObject.seBuffer[0-2].volume2 //
//----------------------------------------------//
//---- SAVE/LOAD画面表示時の効果音有無(ture:あり/false:なし) ----//
var svldSoundEffect = false;
//---- ページ切替時の効果音有無(ture:あり/false:なし) ----//
var svldSoundEffectPage = true;
//---- ボタンの効果音有無(ture:あり/false:なし) ----//
var svldSoundEffectButton = true;
//---- SAVE/LOAD画面表示時の効果音 ----//
var svldSvldSoundFile = "";
//---- ページ切り替え時の効果音 ----//
var svldItemPageSoundFile = "09_ポピン.WAV";
//---- ボタンの効果音 ----//
var svldReturnBtnSoundFile = "01_プワ.WAV";
//---- リンクさせるSEバッファの番号 ----//
var svldSoundEffectBuffer = 1;
//==============================================================//
// データの記述はここまで //
//==============================================================//
//----------------------------------------------//
// SaveLoadPlugin プラグインクラス //
//----------------------------------------------//
var window; // ウィンドウへの参照
var saveLayer; // SAVE画面ベースレイヤ
var saveLayerBack; // SAVE画面ベースレイヤ(裏画面)
var loadLayer; // LOAD画面ベースレイヤ
var loadLayerBack; // LOAD画面ベースレイヤ(裏画面)
var actLayer; // 操作対象ベースレイヤ
var actLayerBack; // 操作対象ベースレイヤ(裏画面)
var funcMode; // 指定された機能(0:SAVE/1:LOAD)
var transMode; // フェード表示の有無(true:有/false:無)
var transTime; // フェード時間
var opacityOrigin; // ベースレイヤの透明度
var opacityAdd; // 透明度増分
var opacitySub; // 透明度減分
var fadeTimer; // フェード用タイマ
var modeShowHide; // フェード時モード(0:Show/1:Hide)
var seBuffer = []; // 効果音再生バッファ
var currentPage; // 栞データ選択中に表示中のページ
//------------------------------------------//
// SaveLoadPlugin コンストラクタ //
//------------------------------------------//
function SaveLoadPlugin(win)
{
// スーパークラスのコンストラクタを呼ぶ
super.KAGPlugin();
// windowへの参照を保存する
this.window = win;
// フェード用タイマオブジェクト作成
fadeTimer = new Timer(fadeTimerHandler, '');
fadeTimer.enabled = false;
fadeTimer.interval = 10;
// 効果音再生バッファ作成
var vol = kag.se[svldSoundEffectBuffer].volume2;
seBuffer[0] = new WaveSoundBuffer(this);
seBuffer[1] = new WaveSoundBuffer(this);
seBuffer[2] = new WaveSoundBuffer(this);
seBuffer[0].volume2 = seBuffer[1].volume2 = seBuffer[2].volume2 = vol;
// 表示ページ位置初期化
currentPage = 0;
}
//------------------------------------------//
// SaveLoadPlugin 無効化 //
//------------------------------------------//
function finalize()
{
// ベースレイヤ無効化
invalidate saveLayer if saveLayer !== void;
invalidate saveLayerBack if saveLayerBack !== void;
invalidate loadLayer if loadLayer !== void;
invalidate loadLayerBack if loadLayerBack !== void;
// フェード用タイマオブジェクト無効化
invalidate fadeTimer if fadeTimer !== void;
// 効果音再生バッファオブジェクト無効化
for(var i = 0; i < seBuffer.count; i++)
{
invalidate seBuffer[i] if seBuffer[i] !== void;
}
// スーパークラスのメソッド呼ぶ
super.finalize(...);
}
//------------------------------------------//
// SAVE/LOAD画面表示 //
//------------------------------------------//
function show(elm)
{
// 指定機能を保存(SAVE/LOAD)
funcMode = +elm.mode;
// フェード有無を保存
transMode = +elm.trans;
// フェード時間を保存
transTime = +elm.time;
if(transTime === void)
{
transTime = 10;
}
transTime = transTime > 2550 ? 2550 : transTime;
transTime = transTime < 10 ? 10 : transTime;
// ベースとなるレイヤーを作成
if(funcMode == 0)
{
// SAVE画面ベースレイヤ作成
if(saveLayer === void)
{
saveLayer = new SaveLoadLayer(window, kag.fore.base, this);
saveLayer.loadImages(saveImageFile);
saveLayerBack = new SaveLoadLayer(window, kag.back.base, this);
saveLayerBack.loadImages(saveImageFile);
}
// 操作対象レイヤをSAVE画面ベースレイヤにする
actLayer = saveLayer;
actLayerBack = saveLayerBack;
}
else
{
// LOAD画面ベースレイヤ作成
if(loadLayer === void)
{
loadLayer = new SaveLoadLayer(window, kag.fore.base, this);
loadLayer.loadImages(loadImageFile);
loadLayerBack = new SaveLoadLayer(window, kag.back.base, this);
loadLayerBack.loadImages(loadImageFile);
}
// 操作対象レイヤをLOAD画面ベースレイヤにする
actLayer = loadLayer;
actLayerBack = loadLayerBack;
}
// 操作対象レイヤ画面内のアイテムを作成
actLayer.makeDataItems(funcMode, currentPage);
actLayerBack.makeDataItems(funcMode, currentPage);
// 効果音再生
if(svldSoundEffect == true)
{
seBuffer[0].open(svldSvldSoundFile);
if(seBuffer[0].status == "stop")
{
seBuffer[0].play();
}
}
// 操作対象レイヤ表示
if(transMode == true)
{
// 現在の透明度を退避
opacityOrigin = actLayer.opacity;
// 操作対象レイヤを透明化
actLayer.opacity = 0;
// 操作対象レイヤを表示状態にする(最初は透明)
actLayer.visible = true;
// 透明度増分を算出
opacityAdd = (255 \ (transTime \ 10));
if(opacityAdd == 0)
{
opacityAdd = 1;
}
// Showモード
modeShowHide = 0;
// 透明度を変化させるためにタイマをスタート
fadeTimer.enabled = true;
}
else
{
// 瞬間表示する
actLayer.visible = true;
}
}
//------------------------------------------//
// SAVE/LOAD画面非表示 //
//------------------------------------------//
function hide()
{
if(actLayer !== void && actLayer.visible == true)
{
// 効果音再生
if(svldSoundEffect == true)
{
seBuffer[0].open(svldSvldSoundFile);
if(seBuffer[0].status == "stop")
{
seBuffer[0].play();
}
}
// 操作対象レイヤを非表示にする
if(transMode == true)
{
// 現在の透明度を退避
opacityOrigin = actLayer.opacity;
// 透明度減分を算出
opacitySub = (opacityOrigin \ (transTime \ 10));
// Hideモード
modeShowHide = 1;
// 透明度を変化させるためにタイマをスタート
fadeTimer.enabled = true;
}
else
{
// 瞬間非表示
actLayer.visible = false;
window.trigger('SVLD_COMPLETE');
}
}
}
//------------------------------------------//
// フェード用タイマハンドラ //
//------------------------------------------//
function fadeTimerHandler()
{
// Show
if(modeShowHide == 0)
{
// 操作対象レイヤの透明度を変化させる
if((opacityOrigin - actLayer.opacity) > opacityAdd)
{
// 現在の透明度に増分を加える
actLayer.opacity += opacityAdd;
}
else
{
// 操作対象レイヤの透明度を元の透明度にする
actLayer.opacity = opacityOrigin;
// タイマ停止
fadeTimer.enabled = false;
}
}
// Hide
else
{
// 操作対象レイヤの透明度を変化させる
if(actLayer.opacity > opacitySub)
{
// 現在の透明度から減分を引く
actLayer.opacity -= opacitySub;
}
else
{
// 操作対象レイヤの透明度を0にする
actLayer.opacity = 0;
// 操作対象レイヤを非表示にする
actLayer.visible = false;
// 操作対象レイヤの透明度を元に戻す
actLayer.opacity = opacityOrigin;
// タイマ停止
fadeTimer.enabled = false;
// トリガ発行
window.trigger('SVLD_COMPLETE');
}
}
}
//---- 以下、KAGPlugin メソッドのオーバーライド ----//
//------------------------------------------//
// 栞読込み時のメソッド //
//------------------------------------------//
function onRestore(f, clear, elm)
{
if(actLayer !== void)
{
// SAVE/LOAD画面非表示
hide();
}
}
//------------------------------------------//
// システム変数保存時のメソッド //
//------------------------------------------//
function onSaveSystemVariables()
{
// セーブデータの메 모 지はこのタイミングでも scflags に
// 保存しなければならない
if(saveLayer !== void)
{
actLayer.saveToSystemVariable();
}
}
//------------------------------------------//
// レイヤ情報コピーのメソッド //
//------------------------------------------//
function onCopyLayer(toback)
{
// レイヤの表←→裏の情報のコピー
// backlay タグやトランジションの終了時に呼ばれる
if( (saveLayer !== void) && (saveLayerBack !== void) )
{
if(toback)
{
// 表→裏
saveLayerBack.visible = saveLayer.visible;
}
else
{
// 裏→表
saveLayer.visible = saveLayerBack.visible;
}
}
if( (loadLayer !== void) && (loadLayerBack !== void) )
{
if(toback)
{
// 表→裏
loadLayerBack.visible = loadLayer.visible;
}
else
{
// 裏→表
loadLayer.visible = loadLayerBack.visible;
}
}
}
//------------------------------------------//
// レイヤ情報入れ替えメソッド //
//------------------------------------------//
function onExchangeForeBack()
{
// 裏と表の管理情報を交換
// children = true のトランジションでは、トランジション終了時に
// 表画面と裏画面のレイヤ構造がそっくり入れ替わるので、
// それまで 表画面だと思っていたものが裏画面に、裏画面だと思って
// いたものが表画面になってしまう。ここのタイミングでその情報を
// 入れ替えれば、矛盾は生じないで済む。
var tmp;
if( (saveLayer !== void) && (saveLayerBack !== void) )
{
tmp = saveLayerBack;
saveLayerBack = saveLayer;
saveLayer = tmp;
}
if( (loadLayer !== void) && (loadLayerBack !== void) )
{
tmp = loadLayerBack;
loadLayerBack = loadLayer;
loadLayer = tmp;
}
}
}
//==============================================================//
// SAVE/LOAD用ボタンレイヤクラス //
//==============================================================//
class SaveLoadButtonLayer extends ButtonLayer
{
var tag;
//------------------------------------------//
// SaveLoadButtonLayer コンストラクタ //
//------------------------------------------//
function SaveLoadButtonLayer(window, parent)
{
// スーパークラスのメソッドを呼び出す
super.ButtonLayer(window, parent);
// フォーカスは受け取れない
focusable = false;
}
//------------------------------------------//
// SaveLoadButtonLayer 無効化 //
//------------------------------------------//
function finalize()
{
super.finalize(...);
}
//------------------------------------------//
// クリックイベントハンドラ //
//------------------------------------------//
function onClick()
{
// スーパークラスのメソッドを呼び出す
super.onClick(...);
if(enabled)
{
parent.onButtonClick(this);
}
}
//------------------------------------------//
// マウスエンターイベントハンドラ //
//------------------------------------------//
function onMouseEnter()
{
// スーパークラスのメソッドを呼び出す
super.onMouseEnter(...);
//parent.onButtonEnter(this);
}
}
//==============================================================//
// 個々の栞に対応するレイヤクラス //
//==============================================================//
class svldDataItemLayer extends KAGLayer
{
var parentObj; // 親オブジェクト
var num; // 栞番号
var commentEdit; // 메 모 지のエディット
// var protectCheckBox; // データ保護チェックボックス
//------------------------------------------//
// svldDataItemLayer コンストラクタ //
//------------------------------------------//
function svldDataItemLayer(window, parent, owner, func, num, mode)
{
// スーパークラスのメソッドを呼び出す
super.KAGLayer(window, parent);
// 親オブジェクト
parentObj = parent;
// mode が true ならば個々の栞データのレイヤを作成
if(mode == true)
{
// 栞番号を保存
this.num = num;
// 各栞毎のレイヤを作成
setImageSize(owner.backImageFileWidth, owner.backImageFileHeight);
// 栞背景イメージ画像の読込み
if(func == 0)
{
loadImages(owner.backSaveImageFile);
}
else
{
loadImages(owner.backLoadImageFile);
}
setSizeToImageSize();
// 表示範囲内はクリック不可
hitType = htProvince;
// マウスメッセージは全域不透過
hitThreshold = 0;
// カーソル形状
cursor = kag.cursorPointed;
// フォーカス可能
focusable = true;
// 上書き保護用チェックボックス
// protectCheckBox = new CheckBoxLayer(window, this);
// protectCheckBox.width = 16;
// protectCheckBox.height = 16;
// protectCheckBox.color = 0xffffff;
// protectCheckBox.opacity = 64;
// protectCheckBox.textColor = 0x000000;
// protectCheckBox.setPos(210, 34);
// protectCheckBox.visible = true;
// protectCheckBox.checked = kag.bookMarkProtectedStates[num];
// font.height = 14;
// face = dfBoth;
// drawText(240, 35, "データ保護", owner.svldTextColor);
// 메 모 지入力用エディット
commentEdit = new EditLayer(window, this);
commentEdit.setPos(owner.svldBkmrkCommLeft, owner.svldBkmrkCommTop + 17);
commentEdit.width = owner.svldBkmrkCommWidth;
commentEdit.height = owner.svldBkmrkCommHeight;
commentEdit.color = 0xdddddd;
commentEdit.opacity = 164;
commentEdit.textColor = 0x000000;
commentEdit.visible = true;
if(kag.scflags.bookMarkComments !== void)
{
commentEdit.text = kag.scflags.bookMarkComments[num];
}
// 番号を表示
// var str = string (num + 1);
// font.height = 20;
// var ty = font.getTextHeight(str);
// drawText(6, ( imageHeight - ty ) \ 2, str, owner.svldTextColor);
// サムネイル画像を読込むために一時的なレイヤを作成
var tmplayer = new global.Layer(window, parent);
// 栞番号に対応したセーブデータ名を取得
var tnname = kag.getBookMarkFileNameAtNum(num);
if(Storages.isExistentStorage(tnname))
{
// 栞があればサムネイル読込み
tmplayer.loadImages(tnname);
}
else
{
// 栞がないので指定のサムネイル画像を読込み
tmplayer.loadImages(owner.thumbImageFile);
}
// サムネイル画像を栞毎のレイヤにコピー
copyRect(owner.svldThumbImageLeft, owner.svldThumbImageTop, tmplayer, 0, 0, tmplayer.imageWidth, tmplayer.imageHeight);
// 一時レイヤを破棄
invalidate tmplayer;
// 栞の保存名を表示
font.height = 14;
var str = kag.bookMarkNames[num];
if(str == '')
{
// 栞がなければ No Data と表示
str = '';
}
drawText(owner.svldBkmrkNameLeft, owner.svldBkmrkNameTop, str, owner.svldTextColor);
// 日付を表示
if(kag.bookMarkDates[num] == '')
{
// 栞がなければ日付なし
str = "----/--/-- --:--";
}
else
{
// 栞の日付を取得
str = kag.bookMarkDates[num];
}
drawText(owner.svldBkmrkDateLeft, owner.svldBkmrkDateTop, str, owner.svldTextColor);
// 메 모 지 :
drawText(owner.svldBkmrkCommLeft, owner.svldBkmrkCommTop, "메 모 지 :", owner.svldTextColor);
}
else
{
// 各栞毎の可視領域設定用レイヤ
setImageSize(owner.backImageFileWidth, owner.backImageFileHeight);
setSizeToImageSize();
// 表示範囲内はクリック不可
hitType = htProvince;
// マウスメッセージは全域不透過
hitThreshold = 0;
// フォーカス不可
focusable = false;
}
}
//------------------------------------------//
// svldDataItemLayer 無効化 //
//------------------------------------------//
function finalize()
{
invalidate commentEdit if commentEdit !== void;
// invalidate protectCheckBox if protectCheckBox !== void;
super.finalize(...);
}
//------------------------------------------//
// 메 모 지と保護状態を記録 //
//------------------------------------------//
function saveToSystemVariable()
{
// 메 모 지記憶させるシステム変数が無ければ作成
if(kag.scflags.bookMarkComments === void)
{
kag.scflags.bookMarkComments = [];
}
// 메 모 지をシステム変数に記録
kag.scflags.bookMarkComments[num] = commentEdit.text;
// 書込み保護状態を記憶
// kag.bookMarkProtectedStates[num] = protectCheckBox.checked;
}
//------------------------------------------//
// フォーカス制御 //
//------------------------------------------//
function onFocus()
{
// フォーカスを得た
super.onFocus(...);
}
//------------------------------------------//
// フォーカス制御 //
//------------------------------------------//
function onBlur()
{
// フォーカスを失った
super.onBlur(...);
}
//------------------------------------------//
// onHitTest イベントハンドラ //
//------------------------------------------//
function onHitTest(x, y, process)
{
if(process)
{
// 右ボタンが押されていたときにイベントを透過
if(System.getKeyState(VK_RBUTTON))
{
super.onHitTest(x, y, false);
}
else
{
super.onHitTest(x, y, true);
}
}
}
//------------------------------------------//
// キーイベントハンドラ //
//------------------------------------------//
function onKeyDown(key, shift, process)
{
// キーが押された
if(process && key == VK_RETURN || key == VK_SPACE)
{
// スペースキーまたはエンターキー
super.onKeyDown(key, shift, false);
saveToSystemVariable();
parentObj.parentObj.onLoadOrSave(num);
}
else
{
// process が false の場合は処理は行わない
super.onKeyDown(...);
}
}
//------------------------------------------//
// マウスボタンイベントハンドラ //
//------------------------------------------//
function onMouseDown(x, y, button, shift)
{
super.onMouseDown(...);
if(button == mbLeft)
{
focus();
saveToSystemVariable();
parentObj.parentObj.onLoadOrSave(num);
}
}
}
//==============================================================//
// Save/Load画面ベースレイヤクラス //
//==============================================================//
class SaveLoadLayer extends Layer
{
var svldDataItems; // 栞データオブジェクト
var svldDataItemsBase; // 栞データの可視範囲を固定するためのレイヤ
var owner; // SaveLoadPluginオブジェクトへの参照
var retButton; // 戻るボタン
var pageButtons; // ページボタン
var dataItemShowTimer; // 栞データフェード用タイマ
//------------------------------------------//
// SaveLoadLayer コンストラクタ //
//------------------------------------------//
function SaveLoadLayer(win, par, owner)
{
// スーパークラスのメソッドを呼び出す
super.Layer(win, par);
// SaveLoadPluginオブジェクトへの参照を可能にする
this.owner = owner;
// ベースレイヤの状態を初期化
setImageSize(owner.svldImageFileWidth, owner.svldImageFileHeight);
// ベースレイヤの背景画像を読込む
if(owner.funcMode == 0)
{
// SAVE画面
loadImages(owner.saveImageFile);
}
else
{
// LOAD画面
loadImages(owner.loadImageFile);
}
// ベースレイヤのサイズを背景画像のサイズに合わせる
setSizeToImageSize();
// ベースレイヤの表示位置を初期化
setPos(0, 0);
// 表示範囲内はクリック可能
hitType = htMask;
// マウスメッセージは全域不透過
hitThreshold = 0;
// 栞データフェード用タイマオブジェクト作成
dataItemShowTimer = new Timer(dataItemShowTimerHandler, '');
dataItemShowTimer.enabled = false;
dataItemShowTimer.interval = 20;
// 栞レイヤ表示
makeDataItems(owner.funcMode);
// 戻るボタン表示
makeRetButtons();
// ページボタン表示
makePageButtons();
}
//------------------------------------------//
// SaveLoadLayer 無効化 //
//------------------------------------------//
function finalize()
{
// 戻るボタンを無効化する
invalidate retButton if retButton !== void;
// ページボタンを無効化する
if(pageButtons !== void)
{
for(var i = 0; i < pageButtons.count; i++)
{
invalidate pageButtons[i];
}
pageButtons = void;
}
// 栞データ表示レイヤを無効化する
clearDataItems(true);
// スーパークラスのメソッドを呼び出す
super.finalize(...);
}
//------------------------------------------//
// 栞データレイヤ表示 //
//------------------------------------------//
function makeDataItems(func, page)
{
// 栞データ可視範囲固定化レイヤ作成
if(svldDataItemsBase === void)
{
svldDataItemsBase = [];
}
for(var i = 0; i < owner.svldDataNum; i++)
{
if(svldDataItemsBase[i] === void )
{
// オブジェクトが作成されていなければ作成する
var obj = new svldDataItemLayer(window, this, owner, func, page * owner.svldDataNum + i, false);
// 表示位置設定
obj.setPos(owner.svldBackImageLeft[i], owner.svldBackImageTop[i]);
// 可視
obj.visible = true;
// オブジェクトを保存
svldDataItemsBase[i] = obj;
}
}
// 現在表示中の栞データ表示レイヤを無効化する
clearDataItems(false);
// 栞データ表示レイヤを新規作成して表示を更新する
svldDataItems = [];
for(var i = 0; i < owner.svldDataNum; i++)
{
// オブジェクトを作成する
var obj = new svldDataItemLayer(window, svldDataItemsBase[i], owner, func, page * owner.svldDataNum + i, true);
// 表示位置は親レイヤよりも縦幅分上にずらして設定
obj.setPos(0, (0 - owner.backImageFileHeight));
// 透明
obj.opacity = 0;
// 可視
obj.visible = true;
// オブジェクトを保存
svldDataItems[i] = obj;
}
// 栞レイヤフェードイン用タイマ開始
dataItemShowTimer.enabled = true;
}
//------------------------------------------//
// 栞データレイヤ無効化 //
//------------------------------------------//
function clearDataItems(mode)
{
// 栞データ表示レイヤを無効化する
if(svldDataItems !== void)
{
for(var i = 0; i < svldDataItems.count; i++)
{
svldDataItems[i].saveToSystemVariable(i);
invalidate svldDataItems[i];
}
svldDataItems = void;
kag.setBookMarkMenuCaptions();
}
// 栞データ可視範囲固定用レイヤを無効化する
if(mode == true)
{
if(svldDataItemsBase !== void)
{
for(var i = 0; i < svldDataItemsBase.count; i++)
{
invalidate svldDataItemsBase[i];
}
svldDataItemsBase = void;
}
}
}
//------------------------------------------//
// 戻るボタン表示 //
//------------------------------------------//
function makeRetButtons()
{
// 戻るボタン表示レイヤ作成
retButton = new SaveLoadButtonLayer(window, this);
// レイヤのサイズを設定
retButton.setSize(owner.retImageFileWidth, owner.retImageFileHeight);
// ボタン画像を読込み
retButton.loadImages(owner.retImageFile);
// クリック可能
retButton.enabled = true;
// レイヤ表示位置を設定
retButton.setPos(owner.svldRetButtonLeft, owner.svldRetButtonTop);
// フォーカスは受け取れる
retButton.focusable = true;
// ボタンを表示する
retButton.visible = true;
// ボタン押下時のタグ設定
retButton.tag = 'ret';
}
//------------------------------------------//
// ページボタン表示 //
//------------------------------------------//
function makePageButtons()
{
// ページボタンを作成する
pageButtons = [];
for(var i = 0; i < owner.svldPageNum; i++)
{
// ページボタン表示レイヤ作成
var obj = new SaveLoadButtonLayer(window, this);
// レイヤのサイズを設定
obj.setSize(owner.pageImageFileWidth, owner.pageImageFileHeight);
// 現在表示中のページか?
if(owner.currentPage == i)
{
// 表示中用のボタン画像を読込み
obj.loadImages(owner.pageImageFile + "_" + i + "_sel.png");
// クリック不可
obj.enabled = false;
}
else
{
// ボタン画像を読込み
obj.loadImages(owner.pageImageFile + "_" + i + ".png");
// クリック可
obj.enabled = true;
}
// レイヤ表示位置を設定
obj.setPos(owner.svldPageButtonLeft[i], owner.svldPageButtonTop[i]);
// フォーカスは受け取れる
obj.focusable = true;
// ボタンを表示する
obj.visible = true;
// ボタン押下時のタグ設定
obj.tag = 'page';
// このボタンのページ番号を設定
obj.page = i;
// オブジェクトの保存
pageButtons[i] = obj;
}
}
//------------------------------------------//
// ページ変更 //
//------------------------------------------//
function changePage(newpage)
{
// ページを変更するとき
if(pageButtons !== void)
{
// 表示中だったページのボタン画像を通常画像に変更
pageButtons[owner.currentPage].loadImages(owner.pageImageFile + "_" + owner.currentPage + ".png");
// クリック可
pageButtons[owner.currentPage].enabled = true;
// 新しいページのボタン画像を表示中用の画像に変更
pageButtons[newpage].loadImages(owner.pageImageFile + "_" + newpage + "_sel.png");;
// クリック不可
pageButtons[newpage].enabled = false;
// 効果音再生
if(owner.svldSoundEffectPage == true)
{
owner.seBuffer[1].open(owner.svldItemPageSoundFile);
if(owner.seBuffer[1].status == "stop")
{
owner.seBuffer[1].play();
}
}
// 再表示
makeDataItems(owner.funcMode, newpage);
}
}
//------------------------------------------//
// システム変数保存 //
//------------------------------------------//
function saveToSystemVariable()
{
// システム変数にデータを保存する必要があるとき
if(svldDataItems !== void)
{
for(var i = 0; i < svldDataItems.count; i++)
{
svldDataItems[i].saveToSystemVariable();
}
kag.setBookMarkMenuCaptions();
}
}
//------------------------------------------//
// ボタンクリック //
//------------------------------------------//
function onButtonClick(sender)
{
// ページボタンが押されたとき
if(sender.tag == 'page')
{
if(owner.funcMode == 0)
{
// 表示ページを変更する
this.changePage(sender.page);
// 裏画面の表示ページを更新する
if(this == owner.saveLayer)
{
owner.saveLayerBack.changePage(sender.page);
}
else
{
owner.saveLayer.changePage(sender.page);
}
}
else
{
// 表示ページを変更する
this.changePage(sender.page);
// 裏画面の表示ページを更新する
if(this == owner.loadLayer)
{
owner.loadLayerBack.changePage(sender.page);
}
else
{
owner.loadLayer.changePage(sender.page);
}
}
// 表示しているページ番号を更新
owner.currentPage = sender.page;
}
// 戻るボタンが押されたとき
else if(sender.tag == 'ret')
{
// 透明度変更中はボタンを無視する
if( (owner.fadeTimer.enabled == false) &&
(dataItemShowTimer.enabled == false) )
{
// 効果音再生
if(owner.svldSoundEffectPage == true)
{
owner.seBuffer[1].open(owner.svldItemPageSoundFile);
if(owner.seBuffer[1].status == "stop")
{
owner.seBuffer[1].play();
}
}
// ベースレイヤを非表示にする
owner.hide();
}
}
}
//------------------------------------------//
// マウスエンター //
//------------------------------------------//
function onButtonEnter(sender)
{
if(owner.svldSoundEffectButton == true)
{
owner.seBuffer[2].open(owner.svldReturnBtnSoundFile);
if(owner.seBuffer[2].status == "stop")
{
owner.seBuffer[2].play();
}
}
}
//------------------------------------------//
// SAVE/LOAD処理 //
//------------------------------------------//
function onLoadOrSave(num)
{
// 番号 num をセーブまたはロード
if(owner.funcMode == 0)
{
// セーブ
if(kag.saveBookMarkWithAsk(num))
{
// 現在表示中の栞データ表示レイヤを無効化する
clearDataItems();
// 新規に栞データ表示レイヤを作成して表示を更新
makeDataItems(owner.funcMode);
}
else
{
// 現在表示中の栞データ表示レイヤを無効化する
clearDataItems();
// SAVEをキャンセルしたので메 모 지をクリアする
if(kag.scflags.bookMarkComments !== void)
{
kag.scflags.bookMarkComments[num] = '';
}
// 新規に栞データ表示レイヤを作成して表示を更新
makeDataItems(owner.funcMode);
}
}
else
{
// ロード
kag.loadBookMarkWithAsk(num);
}
}
//------------------------------------------//
// マウスイベントハンドラ //
//------------------------------------------//
function onMouseDown(x, y, button, shift)
{
// 右ボタンクリック
if(button == mbRight)
{
// 透明度変化中は右クリックを無視する
if( (owner.fadeTimer.enabled == false) &&
(dataItemShowTimer.enabled == false) )
{
// ベースレイヤを非表示にする
owner.hide();
}
}
}
//------------------------------------------//
// 栞フェード用タイマハンドラ //
//------------------------------------------//
function dataItemShowTimerHandler()
{
var opacityAdd = (255 \ 20);
var topPosAdd = (owner.backImageFileHeight \ 10);
var endFlag = 0x00;
if(topPosAdd == 0)
{
// 縦位置移動差分が整数演算で0になって
// しまった場合は移動差分を1にする
topPosAdd = 1;
}
for(var i = 0; i < svldDataItems.count; i++)
{
// 透明度
if((255 - svldDataItems[i].opacity) > opacityAdd)
{
// 透明度を変化させて徐々に見えるようにする
svldDataItems[i].opacity += opacityAdd;
}
else
{
// 不透明状態
svldDataItems[i].opacity = 255;
// 表示範囲内はクリック可能
svldDataItems[i].hitType = htMask;
// 透明度変化完了
endFlag |= 0x01;
}
// 縦位置(POSはマイナス値からスタート)
if((0 - svldDataItems[i].top) > topPosAdd)
{
// 上から落ちてくるように移動
svldDataItems[i].top += topPosAdd;
}
else
{
// 縦位置は親レイヤと同じ位置
svldDataItems[i].top = 0;
// 縦移動完了
endFlag |= 0x10;
}
}
if(endFlag == 0x11)
{
// 透明度変化と縦移動の両方完了していたらタイマ停止
dataItemShowTimer.enabled = false;
}
}
}
//==============================================================//
// プラグイン登録 //
//==============================================================//
kag.addPlugin(global.saveloadObject = new SaveLoadPlugin(kag));
@endscript
@endif
;//==============================================================//
;// SAVE/LOAD用マクロ定義 //
;//==============================================================//
;//-------------------------------------//
;// SAVE/LOAD画面表示 //
;//-------------------------------------//
@macro name="SVLDPROC"
@locksnapshot
@eval exp="global.saveloadObject.show(%[mode:mp.mode, trans:mp.trans, time:mp.times])"
@waittrig name="SVLD_COMPLETE"
@unlocksnapshot
@endmacro
@return
파일에 써져있는 내용은 이렇게 되 있습니다.
게임 이름은 す快らーく(RJ052592)입니다.
