objsort.hsp

sample\hgimg3\objsort.hsp » Plain Format

#include "hgimg3.as"

	;	オブジェクトソート・サンプル
	;	(スペースキーでソートON/OFFを切り替えられます)
	;
	randomize
	screen 0,640,480,0
	cls 4

	smode=0
	sdim sortprt,64,2
	sortprt(0)="SORT:OFF"
	sortprt(1)="SORT:ON"
	fobj=-1
	lobj=-1

*boot
	hgini

	;	テクスチャフォント表示の準備
	;
	setfont 16,16,12,1	; font Tex select(cx,cy,px,mode)
	texload "fontchr.bmp"	; フォントテクスチャの登録

	;	Xモデル登録
	;
	addxfile m_xmodel,"font_a.x"	; モデルを読み込む
	z=10.0
	repeat 5
	regobj xobj, m_xmodel		; オブジェクトの登録
	setpos xobj, rnd(20)-10, rnd(20)-10, z	; 初期座標を設定
	setefx xobj, $80
	z-=1.5
	if cnt=0 : fobj=xobj
	loop

	;	モデル登録
	;
	setuv 0,0,256,256
	addplate m_plate,1,3,3
	texload2 "tree.tga"

	;	オブジェクトの登録
	;
	z=20.0
	repeat 50
	regobj obj, m_plate	; オブジェクトの登録
	setpos obj, rnd(20)-10, rnd(20)-10, rnd(30)-10	; 初期座標を設定
	;setpos obj, rnd(20)-10, rnd(20)-10, z	; 初期座標を設定
	;setefx obj, $2ff
	z-=0.5
	lobj=obj
	loop

	;	表示の準備
	;
	clscolor $80			; 背景色の設定
	setpos HGOBJ_CAMERA, 0,-5,30	; カメラ位置の設定
	frame=0
	scfade=0
	scfadev=256
	gosub *fadein

*main
	gosub *alldraw
	stick key,15+64
	if key&128 : goto *main2
	if key&$30 : gosub *excmode

	;	カメラをカーソルキーで動かす
	;
	if key&4 : addpos HGOBJ_CAMERA, -0.2, 0.0
	if key&1 : addpos HGOBJ_CAMERA, 0.2, 0.0
	if key&64 {
		if key&2 : addpos HGOBJ_CAMERA, 0,0, 0.2
		if key&8 : addpos HGOBJ_CAMERA, 0,0, -0.2
	} else {
		if key&2 : addpos HGOBJ_CAMERA, 0, 0.2
		if key&8 : addpos HGOBJ_CAMERA, 0, -0.2
	}

	goto *main

*excmode
	smode=smode^1
	obj=fobj
	repeat lobj-fobj+1
	if smode {
		setobjmode obj, OBJ_SORT, 0
	} else {
		setobjmode obj, OBJ_SORT, 1
	}
	obj++
	loop
	return

*main2
	gosub *fadeout
	repeat
	gosub *alldraw
	if scfadev=256 : break
	loop

*owari
	end


*alldraw
	;	フレーム描画のサブルーチン
	;
	hgdraw				; 描画
	fprt sortprt(smode),8,8
	if scfade {			; フェード処理
		scfadev += scfade
		if scfadev>255 : scfadev=256
		if scfadev<1 : scfadev=0 : scfade=0 
		color 0,0,0:gmode 3,640,480,scfadev
		hgrect 320,240,0
	}
	hgsync 15			; 時間待ち
	frame++

	return

*fadein
	scfade=-4
	return
*fadeout
	scfade=4
	return