/*ぴくとらべらー 偉大なる故 横井軍平さんと ポケットカメラの製作スタッフさんたちに捧ぐ*/ !母艦設計=「母艦の可視はオフ」 BGMボリューム@「default」=350 SEボリューム@「default」=250 背景変更=1 クリック許可=0 拡大率=1 基準拡大率=1 フェード=1 デバック=1 表示Xとは整数 表示Yとは整数 調査Xとは整数 調査Yとは整数 背景基本色=$000000//222222//333333//414944//19354e ロードイメージとはイメージ ロードイメージについて 可視はオフ ワークエリアとはイメージ ワークエリアについて 可視はオフ リサイズエリアとはイメージ リサイズエリアについて 可視はオフ ヨビエリアとはイメージ ヨビエリアについて 可視はオフ クリックウィンドウとはフォーム クリックウィンドウについて スタイルは「枠なし」 親部品は母艦 Wは16 Hは16 クリックアニメとはイメージ クリックアニメについて 可視はオフ ローディングとはラベル ローディングについて 透明はオフ 背景色は黒色 文字色は白色 テキストは「{\n} 読み込み中です... {\n}」 可視はオフ 母艦について 背景色は背景基本色//黒色 タイトルは『startup...』//pictravel』 クライアントHは350 クライアントWは550 終了可能はオフ ファイルドロップ許可はオン 母艦のファイルドロップされた時は 母艦のドロップファイルをドロップチェック 背景変更はオン 母艦のサイズ変更した時は 背景変更はオン 母艦のアクティブ時は 背景変更はオン 母艦の閉じた時は 母艦の可視はオフ 音エイリアス全開放 母艦の終了可能はオン 終わる 母艦のマウス押した時は 調査X=母艦のマウスX 調査Y=母艦のマウスY もしクリック許可が1ならば 「select」をSE再生 調査X,調査Yへクリックエフェクト 母艦のマウス離した時は もしクリック許可が1ならば 調査X,調査Yを(拡大率*基準拡大率)の表示X,表示Yでリンクチェック //タイマー ルーパーとはタイマー ルーパーの値は500 ルーパーの時満ちた時は もし((背景変更==1)&&(母艦のクライアントW>210)&&(母艦のクライアントH>210))ならば 背景変更=0 位置=母艦の背景更新 表示X=位置[0] 表示Y=位置[1] ●背景読み込み({参照渡し}Fの) /** * 背景用のデータを読み込む関数です * 背景に表示する画像のロードはこの関数を通して行ってください */ クリック許可=0 ローディング=「{\n} 読み込み中です... {\n}」 ローディングを中央移動 ローディングの可視はオン 母艦の描画処理反映 ルーパーの停止 Rとは整数=10 エラー監視 ロードイメージの画像はF エラーならば ロードイメージを背景基本色で画面クリア R=0 基準拡大率=ロードイメージの背景最適化 ルーパーの開始 ローディングの可視はオフ 拡大率=0 フェード=1 Rを戻す ●背景最適化({グループ=?}OBJの) /** * 巨大なファイルを読み込んだときのメモリ不足防止関数です。 * 構造的にデスクトップのサイズ以上の画像を表示できないので * あらかじめロードしたデータをリサイズしておきます */ Rとは整数=1 もし((OBJ→H>デスクトップH)||(OBJ→W>デスクトップW))ならば ローディング=「{\n} データの最適化中です... {\n}」 ローディングを中央移動 母艦の描画処理反映 R=OBJをデスクトップW,デスクトップHで画像フィット Rを戻す ●背景更新({グループ=?}OBJの) /** * 背景の更新が必要になった時に呼び出される関数です * 背景のリサイズとワークエリアへの反映、 * そしてOBJへ読み込んだ背景を描画します */ OEとは実数=拡大率 #背景のリサイズ リサイズエリアのWはロードイメージのW リサイズエリアのHはロードイメージのH リサイズエリアを黒色で画面クリア リサイズエリアの0,0へロードイメージを画像コピー 拡大率=拡大率のリサイズエリアを(母艦のクライアントW-(母艦のクライアントW/6/*15*/)),(母艦のクライアントH-(母艦のクライアントH/9/*15*/))で画像フィット #ワークエリアの更新 もしOEが拡大率でなければ ワークエリアのWはリサイズエリアのW ワークエリアのHはリサイズエリアのH ワークエリアを黒色で画面クリア ワークエリアの0,0へリサイズエリアを画像コピー リサイズエリアを黒色で画面クリア #背景の設定 ローカルX=((母艦のクライアントW-ワークエリアのW)/2)//-10 ローカルY=((母艦のクライアントH-ワークエリアのH)/2)//-20 もしフェードが1ならば フェード=0 OBJのローカルX,ローカルYへワークエリアでフェード切り替え 違えば OBJを背景基本色で画面クリア OBJのローカルX,ローカルYへワークエリアを画像コピー OBJの描画処理反映 もし((リンクリストの行数>0)||(デバック=1))ならば クリック許可=1 「{ローカルX}{\n}{ローカルY}」を戻す ●画像フィット({実数=0}OEの{グループ=?}OBJをW,Hで) Eとは実数 E1とは実数=(W/(OBJ→W)) E2とは実数=(H/(OBJ→H)) もしE1」を空に正規表現置換の配列上下空行削除 Rを戻す ●リンクチェック({整数}cX,{整数}cYを{実数}exの{実数}vX,{実数}vYで) cX=INT((cX-vX)/ex) cY=INT((cY-vY)/ex) もしデバックがオンならば 母艦のタイトルは「{cX}:{cY}」 リンクリストを反復 もし((対象[0]<=cX)&&(対象[1]<=cY)&&(対象[2]>=cX)&&(対象[3]>=cY))ならば 対象[4]を「;」で区切るをコマンド実行 抜ける 「{cX}{\n}{cY}」を戻す ●コマンド実行({文字列}Cを) Rとは文字列=0 Cを反復 ckとは文字列=対象を「:」で区切る ck[0]で条件分岐 「jump」ならば もしck[1]が存在ならば ck[1]のトリップ読み込み 背景変更はオン 「se」ならば ck[1]をSE再生 「mapset」ならば リンクリスト=トリップデータのck[1]でリンク作成 Rを戻す ●設定タグ認識({文字列}Listで) Commandとは文字列 Tarとは文字列 Addとは文字列 List=Listの「{\n}」を空に置換 List=Listの「><」を「>{\n}<」に置換 Listを反復 Command=対象の「>」を空に置換の「<」を空に置換を「 」で区切る Command[0]で条件分岐 「music」ならば Tar=対象の「music」から「target」をタグ属性取得の「{\n}」を空に置換 Add=対象の「music」から「src」をタグ属性取得の「{\n}」を空に置換の「/」を「\」に置換 「{作業フォルダの終端パス追加}{Add}」をTarでBGM開く TarをBGM再生 「se」ならば Tar=対象の「se」から「target」をタグ属性取得の「{\n}」を空に置換 Add=対象の「se」から「src」をタグ属性取得の「{\n}」を空に置換の「/」を「\」に置換 「{作業フォルダの終端パス追加}{Add}」をTarでSE開く /*タグ命令拡張--------------------------------------------*/ ●XML_E2GET({参照渡し}Data,{文字列}Tag,{文字列}Type,{文字列}Elem) /** *XML Element to get *XML属性指定取得のエイリアスです。 */ (DataからTagでTypeのElemをXML属性指定取得)を戻す ●XML属性指定取得({参照渡し}Dataから{文字列}Tagで{文字列}Typeの{文字列}Elemを) /** * 渡されたXMLから指定された属性を持つ指定したタグの内容を返します * 「{\t}&{\t}」が区切り文字として使用されます。 * TODO:CDATA領域のエスケープ * * ex: XMLからcardでidの1をXML属性指定取得 * 説明 データからidに1の値を持つcardタグを求めます */ Nとは整数=-1 Targetとは文字列=Dataの「{\n}」を「{\t}&{\t}」に置換 Target=TargetからTagの階層タグ切り出し ATagとは文字列=Tagの「.*\/」を「」へ正規表現置換 Targetを反復 ADataとは文字列=対象の「>{\t}&{\t}」を「>{\n}」に置換の0を配列切り取る AElemとは文字列=ADataのATagからTypeをタグ属性取得の「{\n}」を空に置換 もしAElemがElemならば もし(N==-1)ならば N=回数-1 違えば Nに(回数-1)を配列追加 Rとは文字列=空 Nを反復 もし(N==-1)ならば R=空 違えば R=Target[対象]の「{\t}&{\t}」を「{\n}」に置換&「{\n}」&R Rを戻す /*画面効果関係--------------------------------------------*/ ●フェード切り替え({グループ=?}OBJ1の{実数=0}X,{実数=0}Yへ{グループ}OBJ2で) クリックウィンドウの可視はオフ ヨビエリアのW=OBJ1→W ヨビエリアのH=OBJ1→H ヨビエリアを背景基本色で画面クリア ヨビエリアのINT(X),INT(Y)へOBJ2を画像コピー 5回 OBJ1の0,0へヨビエリアを(回数*20)で画像半透明コピー OBJ1の描画処理反映 0.02秒待つ ここまで ●クリックエフェクト({実数=0}RX,{実数=0}RYへ) もし(RX>(母艦のクライアントW-9))ならば RX=(母艦のクライアントW-9) もし(RY>(母艦のクライアントH-9))ならば RY=(母艦のクライアントH-9) クリックウィンドウの可視はオフ クリックウィンドウのXは(RX-7) クリックウィンドウのYは(RY-7) 母艦の(RX-7),(RY-7),16,16をクリックウィンドウの0,0へ画像部分コピー クリックウィンドウの可視はオン 4回 母艦の(RX-7),(RY-7),16,16をクリックウィンドウの0,0へ画像部分コピー クリックアニメをクリックウィンドウの0,(-((回数-1)*16))へ画像合成 クリックウィンドウの描画処理反映 0.05秒待つ 0.05秒待つ クリックウィンドウの可視はオフ ●クリックアニメ読み込み({文字列}Fの) Rとは整数=1 エラー監視 クリックアニメの画像はF エラーならば クリックアニメのW=16 クリックアニメのH=64 クリックアニメを黒色で画面クリア R=0 Rを戻す /*音響効果関係--------------------------------------------*/ BGMエイリアスとは配列 SEエイリアスとは配列 ●標準SEロード 「data/page.wav」を「enter」でSE開く 「data/tramp.wav」を「select」でSE開く ●BGM再生({文字列}Sを) SをBGMボリューム@Sで「ボリューム設定」とMコン Sを「repeat」で「再生」とMコン ●BGM開く({参照渡し}Fを{文字列}Sで) N=BGMエイリアスでSを音エイリアスチェック もしNが1ならば BGMボリューム@S=BGMボリューム@「default」 もしFが空ならば SをMコン 違えば Rとは文字列=SをFで「開く」とMコン Rを戻す ●SE再生({文字列}Sを) Sを「0」で「シーク」とMコン SをSEボリューム@Sで「ボリューム設定」とMコン Sを「再生」とMコン ●SE開く({参照渡し}Fを{文字列}Sで) Nとは整数=SEエイリアスでSを音エイリアスチェック もしNが1ならば SEボリューム@S=SEボリューム@「default」 もしFが空ならば SをMコン 違えば Rとは文字列=SをFで「開く」とMコン Rを戻す ●音エイリアスチェック({参照渡し}Lで{文字列}Sを) Rとは文字列=-1 Lを反復 もし対象がSならば SをMコン R=0 もし(R!=0)ならば LにSを配列追加 R=1 Rを戻す ●全エイリアスボリューム反映 BGMエイリアスを反復 対象をBGMボリューム@対象で「ボリューム設定」とMコン SEエイリアスを反復 対象をSEボリューム@対象で「ボリューム設定」とMコン ●全エイリアスミュート BGMエイリアスを反復 対象を0で「ボリューム設定」とMコン SEエイリアスを反復 対象を0で「ボリューム設定」とMコン ●BGMエイリアス開放 BGMエイリアスを反復 もし(対象==「music」)でなければ 対象をMコン BGMエイリアス=「music」 ●SEエイリアス開放 SEエイリアスを反復 もし((対象==「enter」)||(対象==「select」))でなければ 対象をMコン SEエイリアス=「enter{\n}select」 ●音エイリアス全開放 BGMエイリアスを反復 対象をMコン SEエイリアスを反復 対象をMコン BGMエイリアスは空 SEエイリアスは空 /*------------------------------------------------------------- 関数:Mコン //共通 ex「開く」: 「music」を「{File}」で「開く」とMコン ex「再生」: 「music」を「repeat」で「再生」とMコン ex「停止」: 「music」を「停止」とMコン ex「シーク」: 「music」を「10」で「シーク」とMコン ex「閉じる」: 「music」をMコン //ビデオ専用 ex「ウィンドウ設定」: 「video」を「{Handle}」で「ウィンドウ設定」とMコン ex「サイズ設定」: 「video」を「0 0 100 100」で「サイズ設定」とMコン (c)2007 canot ---------------------------------------------------------------*/ ●Mコン(Obを{参照渡し=「」}Exで{文字列=「」}Conと) mconSとは文字列=1 エラー監視 Conで条件分岐 「開く」ならば 「{Ex}」が存在 もしそれがはいならば 「open "{Ex[0]}" alias {Ob} type mpegvideo {Ex[1]}」をMCI送信 「set {Ob} time format milliseconds」をMCI送信 mconS=「status {Ob} length」をMCI送信 違えば mconS=-1 「位置情報フォーマット」ならば 「set {Ob} time format {Ex}」をMCI送信//milliseconds mconS=「status {Ob} length」をMCI送信 「再生」ならば "play {Ob} {Ex}"をMCI送信 「停止」ならば "pause {Ob}"をMCI送信 「シーク」ならば "seek {Ob} to {Ex}"をMCI送信 「位置取得」ならば mconS="status {Ob} position"をMCI送信 「ウィンドウ設定」ならば "window {Ob} handle {Ex}"をMCI送信 「サイズ設定」ならば "put {Ob} destination at {Ex[0]}"をMCI送信 「ボリューム設定」ならば "setaudio {Ob} volume to {Ex}"をMCI送信 「速度設定」ならば "set {Ob} speed {Ex}"をMCI送信 違えば "close {Ob}"をMCI送信 エラーならば mconS=-1//「{エラーメッセージ}」 mconSを戻す メイン