sleeping-princess-in-the-attic/data/ExtSystemButton.ks
2024-04-17 02:37:35 -05:00

140 lines
4.9 KiB
Text
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[return cond="typeof(global.extsystembutton_obj) != 'undefined'"]
; 画面にシステムボタンを追加するプラグイン by KAICHO
; systembutton.ks は TJS の知識が必要だったが、これは KAG から使える
; Ver 0.97 2015/02/16
; ・二重読み込みに対応。二回目は先頭の[return]で即座に戻るよう修正
; Ver 0.96 2014/06/08
; ・enable=false時にクリック無視するのはKLayers.ksで実装したので、
;  0.9a 相当に戻した
; Ver 0.95 2014/05/29
; ・autoMode中にボタンクリックしてもautoModeを解除できないのを防ぐ
;  ため、disable時はプライマリレイヤにクリックが伝播するよう新しい
;  クラスを作成
; Ver 0.9a2013/11/28
; ・Krclick.ksにあわせるために、*rclick_load→*krclick_loadなどに変更
; Ver 0.9 2011/12/04
; ・ボタンを指定するIDをkey=からname=に変更。loadImages()にkey=が
;  そのままわたって、黒色(key=0)が画像の透明キーとして利用されて
;  しまっていたため。
; Ver 0.8 2011/07/30
; ・skip可否はkag.nextSkipEnabled をチェックするように変更
; ・history表示可否はkag.historyEnabledをチェックするように変更
; Ver 0.7 2011/06/20
; ・calltarget=を追加。extraConductorを使って[call]する。
; Ver 0.6 2011/02/21
; ・sysbtn 作成時、無指定なら enabled = kag.inStable にするよう変更
; ・[sysbutton_setopt]で実はsetOptionsを呼んでなかったのを修正
; Ver 0.5 2011/01/01
; ・KLayersとKLayersPluginOnMessageを参照するよう変更
; Ver 0.3 2010/11/27
; ・KLayersPlugin 変更に伴い、インターフェース部分を変更。
; ・focusable だけだとフォーカス時の画像を表示しないので、
;  showfocusimage=true/false を設定できるように追加。
; ・KLayersPluginに統合したため、ExtSystemButtonsクラスを廃止。
; ・ExtSystemButton で初期化時に name を設定し忘れてたので追加。
; Ver 0.2 2010/11/23
; ・focusable(def=true) を指定できるようにした。指定すると
;  キーボードフォーカスが使用可能となる。
; ・name メンバは最初からLayerクラスに存在するから定義を削除
; Ver 0.1 2010/11/23
; 初期リリース
[call storage="KLayers.ks"]
[iscript]
global.extsystembutton_obj = new KLayersPluginOnMessage('extsystembutton');
kag.addPlugin(global.extsystembutton_obj);
// 以下はシステムボタンが押された時の動作サンプル関数。使っても使わなくても
// よし。使う場合は、
// [sysbutton graphic="xxx" exp="SysBtn_onSkipButtonClick()"]
// のように使う。
// SKIPボタンが押された
function SysBtn_onSkipButtonClick()
{
if (!kag.nextSkipEnabled)
return;
if (typeof kag.skipToNextStopMenuItem != "undefined" &&
kag.skipToNextStopMenuItem.enabled)
kag.onSkipToNextStopMenuItemClick(kag);
// 以下はMenuが削除されてても動くように
else
kag.skipToStop();
}
// 自動読進ボタンが押された
function SysBtn_onAutoReadButtonClick()
{
if(typeof kag.autoModeMenuItem != "undefined" &&
kag.autoModeMenuItem.enabled)
kag.onAutoModeMenuItemClick(kag);
}
// 履歴ボタンが押された
function SysBtn_onHistoryButtonClick()
{
if (!kag.historyEnabled)
return;
if (typeof kag.showHistoryMenuItem != "undefined" &&
kag.showHistoryMenuItem.enabled)
kag.onShowHistoryMenuItemClick(kag);
// 以下はMenuが削除されてても動くように
else
kag.showHistory();
}
// テキスト消去ボタンが押された
function SysBtn_onTextHideButtonClick()
{
kag.hideMessageLayerByUser();
}
// セーブ ボタンが押されたら ks ファイルを呼び出し
function SysBtn_onSaveButtonClick()
{
if(kag.canStore())
kag.callExtraConductor('Krclick.ks', '*krclick_save');
}
// ロード ボタンが押されたら ks ファイルを呼び出し
function SysBtn_onLoadButtonClick()
{
if(kag.canRestore())
kag.callExtraConductor('Krclick.ks', '*krclick_load');
}
// メニュー ボタンが押されたら ks ファイルを呼び出し
function SysBtn_onMenuButtonClick()
{
kag.callExtraConductor('Krclick.ks', '*krclick_menu');
}
[endscript]
; システムボタンを追加する
[macro name="sysbutton"]
[eval exp="mp.classobj = 'KAnimButtonLayer'" cond="mp.classobj == void"]
; 文字列をオブジェクトに変換
[eval exp="mp.classobj = Scripts.eval(mp.classobj)"]
; kag.inStable にあわせて enabled を設定
[eval exp="mp.enabled = kag.inStable" cond="mp.enabled === void"]
[eval exp="global.extsystembutton_obj.add(mp.name, mp.classobj, mp.page, mp)"]
[endmacro]
; システムボタンを削除する
[macro name="sysbutton_erase"]
[eval exp="global.extsystembutton_obj.del(mp.name, mp.page)"]
[endmacro]
; システムボタンを設定する
[macro name="sysbutton_setopt"]
[eval exp="global.extsystembutton_obj.setOptions(mp.name, mp.page, mp)"]
[endmacro]
[return]