#TouhouDanmakufu[Single]
#ScriptVersion[3]
#Title["Pre Nue&Kogasa Dialogue"]
#Text["Pre Nue&Kogasa Dialogue"]

let unknownObj = ObjPrim_Create(OBJ_SPRITE_2D);
let unknownAlpha = 255;	
let nueUnknown = false;

let glowy = "script/thdcs/system/effects/glowymirror.png";

#include "script/thdcs/system/shotlibrary.txt"
#include "script/thdcs/functions/function_common.txt"
#include "script/thdcs/functions/function_global.txt"
#include "script/thdcs/functions/function_bosseff.txt"

@Initialize {
	renderBoss(23);
	renderBoss2(24);
	SetCommonData("isDialogue",true);
	SetCommonData("bossAttackType",0);
	SetCommonData("bossCircleType",0);
	ObjMove_SetDestAtWeight(bossObj,GetCenterX-64,100,20,30);
	ObjMove_SetDestAtWeight(boss2Obj,GetCenterX+64,100,20,30);
	SetAutoDeleteObject(true);
	mainTask;
} 

@Event { 
	alternative(GetEventType()) 
	case(EV_REQUEST_LIFE) { 
		SetScriptResult(1);
	}
} 

@MainLoop {
    boss2X = ObjMove_GetX(boss2Obj);
    boss2Y = ObjMove_GetY(boss2Obj);
    SetCommonData("boss2X", boss2X);
    SetCommonData("boss2Y", boss2Y);
    yield;
}

@Finalize { } 

task mainTask { 
	yield;
	exploEffect(GetCenterX,GetCenterY-120,5,5.2);
	unknownBall(GetCenterX,GetCenterY-120);
	control;
} 

// movement including intro
task control {
	PlaySFX(SFX_BALLMOVE);
	PlaySFX(SFX_CIRCSTART);
	let dir = 90;
	let r = 0;
	ObjMove_SetPosition(bossObj,GetCenterX,GetClipMinY-1024);
	ObjMove_SetPosition(boss2Obj,GetCenterX,GetClipMinY-1024);
	
	// ball anim
	loop(180) {
		ObjRender_SetPosition(unknownObj,GetCenterX+25*cos(dir),GetCenterY-128+25*sin(dir),0);
		r++;
		dir+=8;
		yield;
	}
	
	// girl appears
	exploEffect(ObjRender_GetX(unknownObj),ObjRender_GetY(unknownObj),5,5.2);
	unknownAlpha = 0;
	ObjMove_SetPosition(bossObj,ObjRender_GetX(unknownObj),ObjRender_GetY(unknownObj));
	ObjMove_SetPosition(boss2Obj,ObjRender_GetX(unknownObj),ObjRender_GetY(unknownObj));
	
	ObjMove_SetDestAtWeight(bossObj,ObjRender_GetX(bossObj)-64,ObjRender_GetY(bossObj),15,30);
	ObjMove_SetDestAtWeight(boss2Obj,ObjRender_GetX(boss2Obj)+64,ObjRender_GetY(boss2Obj),15,30);
	PlaySFX(SFX_FAULT);
	wait(60);

	eventListener; 
	let path = "script/thdcs/functions/function_dialogue.txt";
	let id = LoadScript(path);
	StartScript(id);
	let dialogueScriptID = GetCommonData("dialogueScriptID",0);
	NotifyEvent(dialogueScriptID,EV_USER,5);
	while(!IsCloseScript(id)) {
		yield;
	}	
	
	scriptEnding;	
}

// glowy mirror
task unknownBall(x,y) {
	let obj2 = ObjPrim_Create(OBJ_SPRITE_2D);
	
	let partc = 0;
	let parts = 0;
	let partspin = 0;
	
	ObjPrim_SetTexture(unknownObj,glowy);
	ObjRender_SetBlendType(unknownObj,BLEND_ADD_ARGB);
	ObjRender_SetAlpha(unknownObj,unknownAlpha);
	Obj_SetRenderPriorityI(unknownObj,30);
	ObjRender_SetPosition(unknownObj,x,y,0);
	ObjRender_SetScaleXYZ(unknownObj,parts,parts,0);
	ObjSprite2D_SetSourceRect(unknownObj,0,0,128,128);
	ObjSprite2D_SetDestCenter(unknownObj);
	
	ObjPrim_SetTexture(obj2,glowy);
	ObjRender_SetBlendType(obj2,BLEND_ADD_ARGB);
	ObjRender_SetAlpha(obj2,unknownAlpha);
	Obj_SetRenderPriorityI(obj2,30);
	ObjRender_SetPosition(obj2,x,y,0);
	ObjRender_SetScaleXYZ(obj2,parts,parts,0);
	ObjSprite2D_SetSourceRect(obj2,0,0,128,128);
	ObjSprite2D_SetDestCenter(obj2);	

	colorMixer(obj2,255,255,255,255);
	
	while(! Obj_IsDeleted(unknownObj)) {
		
		if(nueUnknown) { 
			ObjRender_SetPosition(unknownObj,ObjRender_GetX(bossObj),ObjRender_GetY(bossObj),0); 
			ObjRender_SetPosition(obj2,ObjRender_GetX(bossObj),ObjRender_GetY(bossObj),0); 
		}
		if(!nueUnknown) { 
			ObjRender_SetPosition(obj2,ObjRender_GetX(unknownObj),ObjRender_GetY(unknownObj),0);
		}
		ObjRender_SetAlpha(unknownObj,unknownAlpha);
		ObjRender_SetAlpha(obj2,unknownAlpha);		
		ObjRender_SetScaleXYZ(unknownObj,0.5,0.5,0);
		ObjRender_SetAngleZ(unknownObj,partspin);
		ObjRender_SetScaleXYZ(obj2,parts,parts,0);
		ObjRender_SetAngleZ(obj2,-partspin);
		
		partspin+=20;
		parts = rand(0.9,1.1);
		yield;
	}
}

task eventListener {
	let trigEv = 0;
}	

task scriptEnding {
	ObjEnemy_SetLife(bossObj,-1);
	DeleteShotAll(TYPE_ALL, TYPE_ITEM);
	Obj_Delete(bossObj);

	CloseScript(GetOwnScriptID);
}
 