CDW オプションとスクロールUIを実装した


2022年 6月 3日
 
 
 メインのゲーム画面からオプション画面への切り替えを作った。


 
 
 スクロール UI(スクロジカル・ユーザー・インターフェイス、適当)の考えにより、切り替えは画面をスクロールする事で切り替える。
 
 
 メイン画面とオプション画面への切り替えは縦にスクロールする事で切り替える。

(スクロール中)

 当然、横スクロールはマップのスクロールで使っているため。
 
 

 オプションの画面は今の所「オプション1」「オプション2」「プレイヤーチェンジ」ができてる。

 まだ出来てないのは「SAVE LOAD」
 
 
 オプション同士は左右のスクロールで切り替える。

(スクロール中)

 
 
 切り替えスクロールは専用のソースを作ってスクロール表示させた後、それぞれの画面ソースへ飛ぶようにしている。

 切り替えスクロールのソース

#deffunc op_sc_put int _op_sc_putf

	op_sc_putf=_op_sc_putf

	switch op_sc_putf
	 case 0 ; マッププット
	  sc_mput
	  stk_put
	 swbreak
	 case 1 : opt_put  : swbreak ; オプション1
	 case 2 : opt_put2 : swbreak ; オプション2
	 case 3 ; プレイヤーチェンジ
	  sc_mput 3	; スクロールマップ表示
	  pc_put	; プレイヤーチェンジエリア表示
	 swbreak

	swend

	return


*opt_scroll ; オプション切り替え

	switch opt_scf ; スクロール向きフラグ

	 case 1 ; 上スクロール
	  olx=0 : oly=0
	  repeat
	   oly-=60
	   redraw 0
	    py=oly    : op_sc_put ospf ; 元の
	    py=wy+oly : op_sc_put optf ; 次の
	   redraw 1
	   await 1000/50
	   if oly<=-wy : oly=0 : break
	  loop
	 swbreak

	 case 2 ; 下スクロール
	  olx=0 : oly=0
	  repeat
	   oly+=60
	   redraw 0
	    py=-wy+oly : op_sc_put optf ; 次の
	    py=oly     : op_sc_put ospf ; 元の
	   redraw 1
	   await 1000/50
	   if oly>=wy : oly=0 : break
	  loop
	 swbreak

	 case 3 ; 左スクロール
	  olx=0 : ly=0
	  repeat
	   olx-=60
	   redraw 0
	    px=olx    : op_sc_put ospf ; 元の
	    px=wx+olx : op_sc_put optf ; 次の
	   redraw 1
	   await 1000/50
	   if olx<=-wx : olx=0 : break
	  loop
	 swbreak

	 case 4 ; 右スクロール
	  olx=0 : oly=0
	  repeat
	   olx+=60
	   redraw 0
	    px=-wx+olx : op_sc_put optf ; 次の
	    px=olx     : op_sc_put ospf ; 元の
	   redraw 1
	   await 1000/50
	   if olx>=wx : olx=0 : break
	  loop
	 swbreak

	swend

	px=0 : py=0

	return


*option ; オプション

	optf=optgf

	repeat
	 gosub *opt_scroll

	 switch optf
	  case 1 : gosub *option_1  : swbreak
	  case 2 : gosub *option_2  : swbreak
	  case 3 : gosub *pc_change : swbreak
	 swend

	 if mainf!5 or optf=0 : break
	loop

	if optf=0 : gosub *opt_scroll

	return

 
 
 切り替え時、まず *optionに飛ぶ、そこから *opt_scrollに飛んでスクロール処理をする。

 opt_scfの値により 1=上へ、2=下へ、3=左へ、4=右へ、スクロール処理する。

 表示処理は op_sc_putで行う、スクロール元 ospf、スクロール先 optfの値により、どの画面を表示するか決める。
 
 
 表示座標は、通常の表示座標に全て px,pyを足す事によって出している。

 オプションの表示ソース

#deffunc opt_put

	gmode 2

; 背景
	pos px,py : celput opt1w

; option
	pos  157+px,24+py : celput gsft24w

; Map display speed
	pos 40+px,ot_mdy1+py : celput gsft16w

	repeat 5,1
	 pos gs_mdx(cnt)+px,ot_mdy2+py : celput fg50piw,cnt
	loop
	pos gs_mdx(bpwt1f)-25+px,ot_mdy2-25+py : celput gswd1w,0,0.8,0.8


; Battle display speed
	pos 113+px,ot_bdy1+py : celput gsft17w

	repeat 5,1
	 pos gs_bdx(cnt)+px,ot_bdy2+py : celput fg50piw,cnt
	loop
	pos gs_bdx(bpwt2f)-25+px,ot_bdy2-25+py : celput gswd1w,0,0.8,0.8


; 戦闘表示
	pos 80+px,ot_cly1+py : celput gsft18w

	pos gs_c13x1+px,ot_cly2+py : celput gsft19w
	pos gs_c13x2+px,ot_cly2+py : celput gsft20w
	if btl_putf=0 : pos gs_c13x1-42+px,ot_cly2+2+py : celput guidew ; USE
	if btl_putf=1 : pos gs_c13x2-42+px,ot_cly2+2+py : celput guidew ; RANDOM


; 枠
	gmulcolor 255,255,255

	repeat 12
	 pos 40+cnt*40+px,py     : celput gswk5w
	 pos 40+cnt*40+px,920+py : celput gswk8w
	loop
	repeat 22
	 pos px    ,40+cnt*40+py : celput gswk6w
	 pos 500+px,40+cnt*40+py : celput gswk7w
	loop
	pos px    ,py   : celput gswk1w
	pos 500+px,py   : celput gswk2w
	pos px    ,920+py : celput gswk3w
	pos 500+px,920+py : celput gswk4w


; 操作変更
	pos gs_btx1+px,gs_bty1+py : celput gsbt1w
	pos 71+px,878+py : celput gsft23w

; option2
	pos gs_btx2+px,gs_bty2+py : celput gsbt1w
	pos 308+px,878+py : celput gsft22w


	return

 全ての posに +px、+pyされてるのが分かると思う。

 スクロールさせるので無ければ、この +px、+pyはいらない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です