/*
W[
 effect_maker

*/

title "GtFNg"
screen 0,500,500
objsize 150,50
pos 100,50

button goto"n߂",*no3
stop

#module easy_draw;ȒPɉʕ`p
#deffunc all int r,int g,int b
color r,g,b
boxf
return
#global


#module effect_maker;GtFNgpW[
#deffunc effect_input int effect_max 
	dim effect_flag,effect_max
	ddim effect_type,effect_max
	ddim effect_size_x,effect_max
	ddim effect_size_y,effect_max
	ddim effect_x,effect_max
	ddim effect_y,effect_max
	ddim effect_time,effect_max
	ddim effect_timed,effect_max
	ddim effect_gravity,effect_max
	;dim effect_startx,effect_max
	;dim effect_starty,effect_max
	ddim effect_deg,effect_max
	ddim effect_speed,effect_max
	ddim effect_r,effect_max
	ddim effect_g,effect_max
	ddim effect_b,effect_max
return

;GtFNǧ̐
#deffunc effect_spown int count ,double x, double y,double size_x, double size_y, double deg, double rang_deg ,double idou_speed, int tag
;effect_spown o@XW@YW@XTCY@YTCY@N_ƂȂpx@ˊpx@GtFNg̑x

repeat count,1
n = cnt
	repeat length(effect_flag)
		if effect_flag(cnt) = 0{
			effect_type(cnt) = temp_type
			effect_x(cnt) = x
			effect_y(cnt) = y
			effect_size_x(cnt) = size_x
			effect_size_y(cnt) = size_y
			effect_flag(cnt) = tag
			effect_speed(cnt) = double(idou_speed)
			effect_r(cnt) = double(effect_r_temp)
			effect_g(cnt) = double(effect_g_temp)
			effect_b(cnt) = double(effect_b_temp)
			effect_time(cnt) = 0 
			effect_timed(cnt) = temp_time
			effect_gravity(cnt) = temp_gravity
			effect_deg(cnt) = double(deg)
			if count \ 2 = 1 & count ! 1{
			effect_deg(cnt) = double(deg - (rang_deg/2) + (rang_deg * (n-1) / (count-1)))}
			if count \ 2 = 0{
			effect_deg(cnt) = double(deg - (rang_deg/2) + (rang_deg * n / (count)))}
			
			break}
	loop
loop
return

;GtFNgJ[wp
#deffunc effect_color double r,double g, double b
effect_r_temp = double(r)
effect_g_temp = double(g)
effect_b_temp = double(b)
return

;GtFNgf[^̎wp
#deffunc effect_data double time, double gravity, int type
;effect_data ԁ@d(100`-100)+-@type=0:ωȂ,1:XɏȂ,2:Xɑ傫Ȃ
temp_time = time
temp_gravity = gravity
temp_type = type
return

;GtFNgf[^̑
#deffunc effect_add int tag,double x, double y,double size_x, double size_y ,double deg ,double idou_speed, double r,double g, double b, double gravity
;effect_add ޑΏ۔ԍ@XW@YW@XTCY@YTCY@px@ړx@ԁ@@΁@d
repeat length(effect_flag)
	if effect_flag(cnt) = tag{
			effect_x(cnt) += x
			effect_y(cnt) += y
			effect_size_x(cnt) += size_x
			effect_size_y(cnt) += size_y
			effect_speed(cnt) += double(idou_speed)
			effect_r(cnt) = double(limit(effect_r(cnt)+r,0,255))
			effect_g(cnt) = double(limit(effect_g(cnt)+g,0,255))
			effect_b(cnt) = double(limit(effect_b(cnt)+b,0,255))
			effect_gravity(cnt) += gravity
			effect_deg(cnt) += deg
			}
loop
return

;GtFNg̈ړ(vZ)
#deffunc effect_idou
repeat length(effect_flag)
		if effect_flag(cnt) > 0{
			if effect_time(cnt) > effect_timed(cnt){effect_flag(cnt) = 0}
			effect_time(cnt)++
			
			;gravityvZ
			deg_2 = abs(effect_deg(cnt) \ 360)
			deg_3 = 0
			if 0 <= deg_2 & deg_2 < 90{
				deg_3 = 1}
			if 90 < deg_2 & deg_2 < 270{
				deg_3 = -1}
			if 270 < deg_2 & deg_2 <= 360{
				deg_3 = 1}
				
			if 90 = deg_2{deg_3 = 0}
			if 270 = deg_2{deg_3= 0}
			
			effect_deg(cnt) += ((effect_gravity(cnt) * 90)/1000 * deg_3) 
			if deg_3 = 0{
				if effect_gravity(cnt) > 0{
					effect_deg(cnt) = double(90)}
				if effect_gravity(cnt) < 0{
					effect_deg(cnt) = double(270)}}
			;main vZ
			effect_x(cnt) =cos(deg2rad(effect_deg(cnt))) * effect_speed(cnt) +effect_x(cnt)
			effect_y(cnt) =sin(deg2rad(effect_deg(cnt))) * effect_speed(cnt) +effect_y(cnt)
		}
loop
return

;SGtFNg̕`
#deffunc effect_draw
repeat length(effect_flag)
	if effect_flag(cnt) > 0{
		if effect_type(cnt) = 0{;ωȂ
			size_change = 100}
		if effect_type(cnt) = 1{;XɏĂ
			size_change = (effect_timed(cnt) - effect_time(cnt))*100 / effect_timed(cnt)}
		if effect_type(cnt) = 2{;Xɑ傫
			size_change = (effect_timed(cnt) + effect_time(cnt))*(100+rnd(50)) / effect_timed(cnt)}
			
		color effect_r(cnt),effect_g(cnt),effect_b(cnt)
		boxf int(effect_x(cnt))-effect_size_x(cnt) * size_change/100 ,int(effect_y(cnt))-effect_size_y(cnt) * size_change/100 ,int(effect_x(cnt))+effect_size_x(cnt) * size_change/100 ,int(effect_y(cnt))+effect_size_y(cnt) * size_change/100
		}
loop
return
#global

*no3
	gsel 0
	temp_x = double(ginfo(12)/2)
	temp_y = double(ginfo(13)/2)
	clrobj
	effect_max = 2000
	effect_input effect_max
	screen 0,500,800,0,0,0
	repeat 5,1
	screen cnt,450,800,0,500,0
	title str(cnt)
	loop
	gsel 1,1
	
	ddim point,15,5
	ddim rang_point,15,5
	ddim add_point,15,5
	
	repeat 5,0
	gsel cnt+1
	temp = cnt
		repeat 15
		if cnt = 12{
			pos 0,cnt*50 + 50
			input point(cnt,0)
			pos 100,cnt*50+50
			input rang_point(cnt,0)}
			
		if cnt ! 12{
		if cnt = 13{point(cnt,temp) = temp_x}
		if cnt = 14{point(cnt,temp) = temp_y}
		pos 0,cnt*50 + 50
		input point(cnt,temp)
		if cnt ! 8{
		pos 100,cnt*50+50
		input rang_point(cnt,temp)
		if cnt ! 0&cnt ! 4{
		pos 350,cnt*50+50
		input add_point(cnt,temp)}}}
		loop
	loop
	
	repeat 5,1
	gsel cnt
	pos 0,0
	mes "GtFNgNO."+cnt+"p[^"
	pos 0,20
	mes "萔"
	pos 100,20
	mes ""
	pos 350,20
	mes ""
	
	pos 170,50
	mes "{"
	pos 170,100
	mes "XTCY"
	pos 170,150
	mes "YTCY"
	pos 170,200
	mes "px(N_)"
	pos 170,250
	mes "px(˓x)"
	pos 170,300
	mes "x"
	pos 170,350
	mes "\n(w肪Ȃꍇ1)"
	pos 170,400
	mes "d\n(0F0)"
	pos 170,450
	mes "^Cv0~2Ή\n(Ă݂Ă)"
	pos 170,500
	mes "F()"
	pos 170,550
	mes "F()"
	pos 170,600
	mes "F()"
	pos 170,650
	mes "vZx\n{l1()"
	pos 170,700
	mes "XW"
	pos 170,750
	mes "YW"
	loop
	main_time = 0
	gsel 0
	pos 400,0
	objsize 100,20
	chkbox "wiF()",black
*main3
	gsel 0
	redraw 0
	if black = 0{
	all 255,255,255
	color 0,0,0}
	if black = 1{
	all 0,0,0
	color 255,255,255}

	pos 0,0
	mes "ENbNĂŒ~\nEnterŏI"
	getkey re,2
	if re = click_buffer{
		repeat 5
		effect_data limit(point(6,cnt),1)+rnd(limit(rang_point(6,cnt),1)), point(7,cnt)+rnd(limit(rang_point(7,cnt),1)) ,point(8,cnt)
		;effect_data ԁ@d(100`-100)+-@type=0:ωȂ,1:XɏȂ,2:Xɑ傫Ȃ

		effect_color point(9,cnt)+rnd(limit(rang_point(9,cnt),1)),point(10,cnt)+rnd(limit(rang_point(10,cnt),1)),point(11,cnt)+rnd(limit(rang_point(11,cnt),1))
		;GtFNgJ[wp

		effect_spown point(0,cnt)+rnd(limit(rang_point(0,cnt),1)),point(13,cnt)+rnd(limit(rang_point(13,cnt),1)),point(14,cnt)+rnd(limit(rang_point(14,cnt),1)),point(1,cnt)+rnd(limit(rang_point(1,cnt),1)),point(2,cnt)+rnd(limit(rang_point(2,cnt),1)),point(3,cnt)+rnd(limit(rang_point(3,cnt),1)),point(4,cnt)+rnd(limit(rang_point(4,cnt),1)),point(5,cnt)+rnd(limit(rang_point(5,cnt),1)),cnt+1
		;effect_spown o@XW@YW@XTCY@YTCY@N_ƂȂpx@ˊpx@GtFNg̑x
		loop}

	
	stick moob
	if moob=32{ end }
	if moob=1024{
		if click_buffer=0{
			click_buffer=1
		}else{ click_buffer=0 }}

	if main_time > limit(point(12),1) + rnd(limit(rang_point(12),1)){
		main_time = 0
		repeat 5
		effect_add cnt+1,add_point(13,cnt),add_point(14,cnt),add_point(1,cnt),add_point(2,cnt),add_point(3,cnt),add_point(5,cnt),add_point(9,cnt),add_point(10,cnt),add_point(11,cnt),add_point(7,cnt)
		;effect_add ޑΏ۔ԍ@XW@YW@XTCY@YTCY@px@ړx@ԁ@@΁@d
		loop
		effect_idou;SGtFNg̈ړ
	}
	effect_draw;SGtFNg̕`
	
	redraw 1

	gsel 1
	redraw 0
	
	
	redraw 1
	main_time ++
	await 10
goto *main3

