デフォルト値を変える
Posted 2013.02.11 in 流動指向ゲームエンジン『Fooo』
Foooでは命令のパラメータの記述を任意に省くことができる。
パラメータの指定を省いた時には仕様上決められた値が自動的に使われるが、
この値のことを一般に『デフォルト値』と言う。既定値、初期値などとも言われる。
ちかごろ巷で
「もち、デフォ買いっスよ!」
などという言い回しを聞くことがあると思うが、
そのデフォとはこのデフォルトのことだ。
デフォルト値は便利なのだが、仕様上のデフォルト値は
あらゆるケースを想定しているわけではなく、とりあえずの値にすぎないので
デフォルト値がまったく期待にそぐわない値である場合がある。
「テキストデーカーのデフォルトの文字サイズが小さすぎる!」といったケースだ。
デフォルト値が期待しているものと異なると、
結局そのパラメータを毎回指定せねばならずものすごい手間が発生する。
#base_param文
そこでFoooにはデフォルト値を自由に変更するための機能がある。
それが#base_param文だ。
使い方は非常に簡単で、命令文のように記述できる。
#base_param CreateBalloon(style="普通")
CreateBalloon命令のstyleパラメータのデフォルト値は仕様上は “” だが、
この記述でデフォルト値が “普通” に変わる。
それでは組み込んでみよう。
style 普通 { face="MS ゴシック", size=32 }
style 小 { size=24 }
style つぶやき { interval=100, speed=250, effect="Rise" }
#base_param CreateBalloon(style="普通")
#base_param CreateFrame(outline_shape="Vivide"
, outline_color=white, outline_thick=8)
method Main()
{
CreateImage(name="背景", image="背景.png"
, x=0, y=0);
CreateNode(name="コマ1"
, x=642, y=0, sx=0%);
CreateWindow(name="コマ1/窓"
, w=405, h=720, ox="Center", propagation="CancelParentZoom");
CreateImage(name="コマ1/窓/画像", image="コマ1.png"
, x=20, y=324, ox="Center", oy="Middle", sx=110%, sy=110%
, sampling="BieLinear");
CreateOutline(name="コマ1/枠"
, w=405, h=720, shape="Fade", color=RGBA(0,0,0,64), thick=8
, ox="Center", adaptive=true);
CreateFrame(name="コマ2", image="コマ2.png"
, x="OutRight", y=65);
CreateFrame(name="コマ3", image="コマ3.png"
, x=407, y=505, ox="Center", oy="Middle", sx=0%, sy=0%
, outline_color=black);
CreateBalloon(name="台詞1"
, text="それにしても...<BR>腹(はら)が減(へ)った"
, x=585, y=65, shape="Dumpling", w=300, h=185, tail=-30);
CreateBalloon(name="コマ3/台詞2"
, style="小", text="<FONT style='つぶやき'>クククク…"
, x=63, y=15, shape="Rock", w=220, h=125, tail=160);
CreateColor(name="幕", color=white, w=1280, h=720, blend="Add");
Enter(to="背景");
Enter(to="コマ1");
Enter(to="コマ1/窓");
Enter(to="コマ1/窓/画像");
Enter(to="コマ1/枠");
Enter(to="幕");
wait 500;
Zoom(to="コマ1", time=1000, sx=100%, step="DecSin");
Move(to="コマ1/窓/画像", time=1000, x=-20, step="DecSin");
Opaque(to="幕", time=1000, alpha=0%, step="DecSin");
WaitDecor();
Enter(to="コマ2");
Move(to="コマ2", time=800, x=780, step="Dec3");
WaitDecor();
Enter(to="台詞1", effect="Bound");
WaitDecor();
Enter(to="コマ3");
Zoom(to="コマ3", time=1000, sx=100%, sy=100%, step="AccSig");
wait 600;
Enter(to="コマ3/台詞2", effect="Expand");
WaitDecor();
}
今回の例ではほんの少し記述がすっりした程度だが、
もっと長いスクリプトの場合、デフォルト値の指定は非常に重要になってくる。