arusave.hsp

sample\ssaver\arusave.hsp » Plain Format

	;
	;	HSPによるスクリーンセーバーサンプル
	;	「あるがーまんスクリーンセーバー for HSP3」
	;		onion software/onitama 1997-2005
	;
	;	・作成のしかた
	;
	;	1. スクリプトエディタを起動して、arusave.hspをロードする。
	;	2. [CTRL]+[F9]キーでarusave.scrが作成されます。
	;	3. arusave.scrを選択して右クリックメニューの「インストール」で
	;	   スクリーンセーバーを設定することができます。
	;	   パスワードによるスクリーンセーバーのロックには対応していません。
	;
	;-------------------------------------------------------------------------------
	;  このスクリプトについて
	;	この「あるがーまんスクリーンセーバー」は、HSPを使ったスクリーンセーバー
	;	の最も単純なモデルです。このリストをもとに、新しいスクリーンセーバーを
	;	作ってみてください。各パートの始まりと重要な部分にはコメントを入れて
	;	ありますので、参考にしてみてください。
	;-------------------------------------------------------------------------------
	;
	;  スクリーンセーバースタートアップ
	;	スクリーンセーバー開始時は、以下のスイッチがコマンドライン
	;	に指定されているので、それによりプログラム処理を振り分ける。
	;	  /P プレビュー(小さな画面に表示されるモード)
	;	  /S フルスクリーン(実際のスクリーンセーバー画面を実行)
	;	  /C コンフィグ(設定画面を表示)
	;
	;-------------------------------------------------------------------------------
	;  実行ファイルの作成パラメーター
	;
	#pack "aruface.bmp"
	#packopt name "arusave"
	#packopt type 2
	#packopt xsize 320	; 設定画面の横サイズ
	#packopt ysize 200	; 設定画面の縦サイズ
	;-------------------------------------------------------------------------------
	;
	s=dir_cmdline:a=peek(s,1)		; コマンドラインの2文字目を取り出す
	if (a>='A')&(a<='Z') : a+=32		; 大文字を小文字に変換する
	if a='p' : goto *sspre			; プレビュー
	if a='s' : goto *ssproc			; フルスクリーン
	if a='c' : goto *sscfg			; コンフィグ
	if a=0   : goto *sscfg			; コンフィグ
	;
	;	コマンドラインがどれでもない時はエラーを表示。
	;	HSPスクリプトエディタでためしに実行してみる場合には、
	;	HSPメニュー「起動オプション」を選んで、「/s」や「/p」などの
	;	スイッチを指定してコンパイル+実行をしてください。
	;
	dialog "Unknown switch ["+s+"]"
	end

*sscfg
	;  コンフィグ(設定画面)
	;	このスクリプトでは単にタイトルを表示しています。
	;	実際は、スクリーンセーバーの状態やモードなどを設定します。
	;	その場合は、設定を保存しておくファイルを作ってbload,bsave命令
	;	などで管理しておくといいでしょう。
	;
	tt="あるがーまんスクリーンセーバー"
	title tt
	gosub *faceload
	gsel 0
	width 320,200
	cls:pos 4,8
	mes tt
	mes "(HSP3 screen saver sample version)"
	mes "copyright 1997-2005 / onitama"
	pos 4,80:gcopy 3,0,0,sx,sy
	pos 220,140:button "OK",*ssend
	stop
*ssend
	end

*sspre
	;  プレビュー画面
	;	ここでは、スクリーンセーバーを選択した時に見える、小さな
	;	画面内でのプレビューの処理をしています。
	;	プレビューモードでは、HSPのメイン画面(ウインドゥID0)が、
	;	プレビュー画面に合わせて小さくなっていますので、まず
	;	ginfo_winx,ginfo_winyのシステム変数で画面のサイズを取得してから
	;	その中に描画するようにしてください。
	;	ここでは、単に画像を表示しているだけですが、フルスクリーン
	;	のスクリーンセーバーがどんな大きさの画面にも対応していれば、
	;	ginfo_winx,ginfo_winyの値をもとに実際のスクリーンセーバー処理を
	;	行なうのがいいでしょう。
	;
	cls 4
	gosub *faceload
	gsel 0
	x=(ginfo_winx-sx)/2:y=(ginfo_winy-sy)/2
	pos x,y:gcopy 3,0,0,sx,sy
	stop

*ssproc
	;  フルスクリーン
	;	ここは、実際に実行されるスクリーンセーバー本体の処理です。
	;	まず、ginfo_dispx,ginfo_dispyの情報をもとに全画面の大きさの
	;	ウインドゥを作成します。このための命令は、
	;		bgscr 2,ax,ay,0,0,0,ax,ay
	;	です。これで、ウインドゥID2に全画面の256色パレットモードの
	;	ウインドゥが作成され、その中を描画できるようになります。
	;	ここで描画された内容が、そのままスクリーンセーバーの実行画面
	;	となります。スクリーンセーバーからの復帰チェックは行なう必要
	;	はありません。スクリーンセーバーの実行中にマウスを動かすと、
	;	自動的に中断され復帰するようになっています。
	;	スクリプトエディタから実行された時は、マウスを動かしても復帰
	;	しませんので、[ALT]+[F4]を押して実行を終了させてください。
	;
	randomize			; 起動のたびに違う乱数を作る
	gosub *faceload			; ID3に画像をロード

	ax=ginfo_dispx:ay=ginfo_dispy	; ax,ayにスクリーンセーバーが動作する
					; 画面サイズを入れておく。スクリプト
					; エディタから実行する時は、コメントに
					; なっている下の2行を使うと便利。

	bgscr 2,ax,ay,0,0,0,ax,ay	; ID2にフルスクリーン画面を作成

	cls 4				; 黒で画面クリア
	gmode 0,sx,sy			; コピーのモードとサイズを設定

*ssini
	;	各種変数の初期化
	;
	px=0:pp=1:a=sx/2:pz=rnd(a):pz=(pz+a)*2
	x=sx+pz:y=sy+pz
	mx=ax-x:my=ay-y
	xx=rnd(mx):yy=rnd(my)
	xx=x/2+xx:yy=y/2+yy
*sslp
	;	あるがーまん表示メインループ
	;
	x=sx+px:y=sy+px:mx=x/2:my=y/2
	pos xx-mx,yy-my:gzoom x,y,3
	px+=pp
	if px=0 : goto *ssnext
	if px=pz : pp=-1
	await 10
	goto *sslp
*ssnext
	;	1回の表示が終了。再び表示へ戻る
	;
	zx=xx-mx:zy=yy-my
	color 0,0,0:boxf zx,zy,zx+x,zy+y
	goto *ssini


*faceload
	;  サプルーチン : あるがーまんの画像を読み込む
	;	ID3の画面に、あるがーまん画像を読み込みます。
	;	読み込んだ画像のサイズを、sx,syという変数に入れて
	;	終了します。sx,syはその後、別画面に転送する時に使用
	;	されます。読み込むファイルを、「aruface.bmp」から
	;	別のファイルに変えることもできます。その場合は、
	;	必ず256色の画像ファイルにしてください。また、サイズ
	;	は自由ですがあまり大きすぎると色々な場所に表示できなく
	;	なってしまいます。(あるがーまんは80x80ドットの画像です)
	;
	buffer 3,120,120
	picload "aruface.bmp"
	sx=ginfo_winx:sy=ginfo_winy
	wx=sx*2:wy=sy*2
	return