Beispiel #1
0
//弾丸の描画
void graph_bullet(){
	int i,j,eff;
	double disp_angle;
	SetDrawMode( DX_DRAWMODE_BILINEAR ) ;//線形補完描画
	for(i=0;i<SHOT_MAX;i++){//敵の弾幕数分ループ
		if(shot[i].flag>0){//弾幕データがオンなら
			for(j=0;j<SHOT_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
				if(shot[i].bullet[j].flag!=0){//弾データがオンなら
					if(shot[i].bullet[j].eff==1)
						SetDrawBlendMode( DX_BLENDMODE_ADD, 255) ;
					if(bullet_info[shot[i].bullet[j].knd].kaiten==1)
						disp_angle=PI2*(shot[i].bullet[j].cnt%120)/120;
					else
						disp_angle=shot[i].bullet[j].angle+PI/2;

					DrawRotaGraphF(
						shot[i].bullet[j].x+FX+dn.x, shot[i].bullet[j].y+FY+dn.y,
						1.0, disp_angle,
						img_bullet[shot[i].bullet[j].knd][shot[i].bullet[j].col],TRUE);

					if(shot[i].bullet[j].eff==1)
						SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
				}
			}
		}
	}
	boss_assist_img();
	//ボス
	if(boss_shot.flag>0){//弾幕データがオンなら
		for(j=0;j<BOSS_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
			if(boss_shot.bullet[j].flag!=0){//弾データがオンなら
				eff=0;
				if(boss_shot.bullet[j].kaiten==1)
					disp_angle=PI2*(boss_shot.bullet[j].cnt%120)/120;
				else
					disp_angle=boss_shot.bullet[j].angle+PI/2;
				if(boss_shot.bullet[j].eff_detail==1){//風雨にも負けず用弾エフェクト
					SetDrawBlendMode( DX_BLENDMODE_ADD, 100+GetRand(155)),eff=1 ;
					DrawRotaGraphF(
						boss_shot.bullet[j].x+FX+dn.x, boss_shot.bullet[j].y+FY+dn.y,
						1.3, disp_angle,
						img_bullet[boss_shot.bullet[j].knd][boss_shot.bullet[j].col],TRUE);
				}
				if(boss_shot.bullet[j].eff==1)
					SetDrawBlendMode( DX_BLENDMODE_ADD, 255),eff=1 ;
				if(boss_shot.bullet[j].eff==2)
					SetDrawBlendMode( DX_BLENDMODE_ADD, 255+GetRand(100)),eff=1 ;
				DrawRotaGraphF(
					boss_shot.bullet[j].x+FX+dn.x, boss_shot.bullet[j].y+FY+dn.y,
					1.0, disp_angle,
					img_bullet[boss_shot.bullet[j].knd][boss_shot.bullet[j].col],TRUE);

				if(eff==1)
					SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
			}
		}
	}
	SetDrawMode(DX_DRAWMODE_NEAREST);//描画形式を戻す
}
Beispiel #2
0
void graph_item(){
	int i;
	for(i=0;i<ITEM_MAX;i++){
		if(item[i].flag==1){
			DrawRotaGraphF(item[i].x+FX+dn.x,item[i].y+FY+dn.y,item[i].r,PI2*(count%120)/120,img_item[item[i].knd][1],TRUE);
			DrawRotaGraphF(item[i].x+FX+dn.x,item[i].y+FY+dn.y,item[i].r*0.8,-PI2*(count%120)/120,img_item[item[i].knd][1],TRUE);
			DrawRotaGraphF(item[i].x+FX+dn.x,item[i].y+FY+dn.y,item[i].r,0,img_item[item[i].knd][0],TRUE);
		}
	}
}
Beispiel #3
0
//敵の描画
void graph_enemy(){
	if(enemy.flag != 0){
		if(ch.bcnt > 0){
			double rand = 2.0;
			double ang = PI2/(ch.bcnt%6);
			DrawRotaGraphF( enemy.x+(rand*cos(ang)), enemy.y+(rand*sin(ang)), 1.0f, 0.0f, img_enemy[enemy.img], TRUE );
		}else{
			DrawRotaGraphF( enemy.x, enemy.y, 1.0f, 0.0f, img_enemy[enemy.img], TRUE );
		}
	}
}
Beispiel #4
0
//自機描画
void graph_ch(){
	if(ch.flag!=0){
		if(ch.bcnt > 0){
			double rand = 2.0;
			double ang = PI2/(ch.bcnt%6);
			DrawRotaGraphF( ch.x+(rand*cos(ang)), ch.y+(rand*sin(ang)), 1.0f, 0.0f, img_ch[ch.img], TRUE );
		}else{
			DrawRotaGraphF(ch.x,ch.y,1.0f,0.0f,img_ch[ch.img],TRUE);
		}
		if(CheckStatePad(configpad.slow)>0 && ch.slow_flag==0){ //低速移動中なら当たり判定表示
			DrawRotaGraphF( ch.x, ch.y, 1.0f, 2.0*PI*(count%120)/120, img_etc[0], TRUE );
		}
	}
}
Beispiel #5
0
void Obj::Draw(){

	// 非表示設定か、範囲外でなければ
	if (HP != -2 || (-TILE_SIZE < y && y < SCREEN_SIZE_Y + TILE_SIZE)){
		if (!Walk){
			DrawRotaGraphF(x, y, ExRate, Angle, ImageHandle[0][0 + AnimetionControl], TRUE, FALSE);
		} else {
			if (vx != 0 || vy != 0){
				DrawRotaGraphF(x, y, ExRate, Angle, ImageHandle[0][1 + AnimetionControl], TRUE, FALSE);
			} else {
				DrawRotaGraphF(x, y, ExRate, Angle, ImageHandle[0][0], TRUE, FALSE);
			}
		}
	}
}
Beispiel #6
0
//動画表示
void MyDrawMovie::ContentView() {
	if (!CheckHandleASyncLoad(handle)) {
		SetDrawMode(DX_DRAWMODE_BILINEAR);
		DrawRotaGraphF(x, y, ex / SIZE_RATE, 0, handle, TRUE, TRUE); //描画
		SetDrawMode(DX_DRAWMODE_NEAREST);
	}
}
Beispiel #7
0
void boss_assist_img(){

	int j,eff;
	double disp_angle;

	if(boss_shot.flag > 0){//弾幕データがオンなら
		for(j=0; j < 5; j++){//その弾幕が持つ弾の最大数分ループ
			if(boss_shot.assist[j].flag != 0){//弾データがオンなら
				//計算部//
				boss_shot.assist[j].x += cos(boss_shot.assist[j].angle) * boss_shot.assist[j].spd;
				boss_shot.assist[j].y += sin(boss_shot.assist[j].angle) * boss_shot.assist[j].spd;
				boss_shot.assist[j].cnt ++;
				//ここまで//
				eff = 0;
				if(boss_shot.assist[j].kaiten==1)
					disp_angle = PI2*(boss_shot.assist[j].cnt%120)/120;
				else
					disp_angle = boss_shot.assist[j].angle+PI/2;
				if(boss_shot.assist[j].eff == 1)
					SetDrawBlendMode(DX_BLENDMODE_ADD, 255),eff = 1;
				if(boss_shot.assist[j].eff == 2)
					SetDrawBlendMode(DX_BLENDMODE_ADD, 255+GetRand(100)),eff = 1 ;
				if(boss_shot.assist[j].c_flag == 0)
					DrawRotaGraphF((float)boss_shot.assist[j].x, (float)boss_shot.assist[j].y, 1.0, disp_angle, img_bullet[boss_shot.assist[j].knd][boss_shot.assist[j].col], TRUE);
				else
					DrawRotaGraph2F((float)boss_shot.assist[j].x, (float)boss_shot.assist[j].y, (float)boss_shot.assist[j].cx, (float)boss_shot.assist[j].cy, 1.0, disp_angle, img_bullet[boss_shot.assist[j].knd][boss_shot.assist[j].col], TRUE);

				if(eff == 1)
					SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
			}
		}
	}

	return;
}
Beispiel #8
0
void graph_lazer(){
	int i;
	SetDrawMode( DX_DRAWMODE_BILINEAR ) ;//線形補完描画
	for(i=0;i<LAZER_MAX;i++){//敵の弾幕数分ループ
		if(lazer[i].flag>0){//弾幕データがオンなら
			SetDrawBlendMode( DX_BLENDMODE_ADD, 255) ;
			DrawRotaGraphF(//発射位置のエフェクトを描画
				lazer[i].startpt.x+FX,lazer[i].startpt.y+FY,1.0,0,
				img_lazer_moto[lazer[i].knd][lazer[i].col],TRUE
			);
			DrawModiGraphF(//レーザーを描画
				lazer[i].disppt[0].x+FX, lazer[i].disppt[0].y+FY, 
				lazer[i].disppt[1].x+FX, lazer[i].disppt[1].y+FY, 
				lazer[i].disppt[2].x+FX, lazer[i].disppt[2].y+FY, 
				lazer[i].disppt[3].x+FX, lazer[i].disppt[3].y+FY, 
				img_lazer[lazer[i].knd][lazer[i].col],TRUE
			);
			SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
/*			myDrawSquare(//当たり判定範囲を表示
				lazer[i].outpt[0].x+FX,lazer[i].outpt[0].y+FY,
				lazer[i].outpt[1].x+FX,lazer[i].outpt[1].y+FY,
				lazer[i].outpt[2].x+FX,lazer[i].outpt[2].y+FY,
				lazer[i].outpt[3].x+FX,lazer[i].outpt[3].y+FY
			);*/
		}
	}
}
Beispiel #9
0
//自機ショット描画
void graph_cshot(){
	for(int i=0;i<CSHOT_MAX;i++){
		if(cshot[i].flag>0){
			DrawRotaGraphF(cshot[i].x+FX+dn.x,cshot[i].y+FY+dn.y,1,0,img_cshot[cshot[i].knd],TRUE);
		}
	}
}
Beispiel #10
0
//ボム描画
void graph_bom(){
	if(ch.bcnt > 0){
		double rand = 2.0;
		double ang = PI2/(ch.bcnt%6);
		DrawRotaGraphF(ch.x+(rand*cos(ang)),ch.y+(rand*sin(ang)),1.0f,0.0f,img_bom,TRUE);
	}
}
Beispiel #11
0
//child描画
void graph_child(){
	int i;
	for(i=0;i<CHILD_MAX;i++){
		if(child[i].flag==1){
			DrawRotaGraphF(child[i].x+FX+dn.x,child[i].y+FY+dn.y,child[i].range,PI2*(count%60)/60,img_etc[6],TRUE);
		}
	}
}
Beispiel #12
0
//敵描画
void graph_enemy(){
	int i;
	for(i=0;i<ENEMY_MAX;i++){
		if(enemy[i].flag==1){
			DrawRotaGraphF(enemy[i].x+FX+dn.x,enemy[i].y+FY+dn.y,1.0f,0.0f,img_enemy[0][enemy[i].img],TRUE);
		}
	}
}
Beispiel #13
0
//自機描画
void graph_ch(){
	double sx,sy,ny=(sin(2.0*PI*(count%50)/50)*3),ang=2.0*PI*(count%120)/120;

	if(CheckStatePad(configpad.slow)>0)//低速移動中なら
		sx=15,sy=15+ny;//引き寄せる
	else
		sx=30,sy=30+ny;//普通の位置に

	DrawRotaGraphF( ch.x-sx+FX, ch.y+sy+FY, 1.0f,  ang, img_chetc[2], TRUE );
	DrawRotaGraphF( ch.x+sx+FX, ch.y+sy+FY, 1.0f, -ang, img_chetc[2], TRUE );

	if(ch.mutekicnt%2==0){//無敵中なら点滅
		//自機表示
		DrawRotaGraphF(ch.x+FX+dn.x,ch.y+FY+dn.y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
		if(CheckStatePad(configpad.slow)>0)//低速移動中なら当たり判定表示
			DrawRotaGraphF( ch.x+FX, ch.y+FY, 1.0f, 2.0*PI*(count%120)/120, img_chetc[0], TRUE );
	}
}
Beispiel #14
0
void graph_effect(){
	for(int i=0;i<EFFECT_MAX;i++){
		if(effect[i].flag>0){
			if(effect[i].eff==1)//エフェクトが光エフェクトなら
				SetDrawBlendMode( DX_BLENDMODE_ADD, effect[i].brt) ;
			DrawRotaGraphF(effect[i].x+FIELD_X,effect[i].y+FIELD_Y,effect[i].r,effect[i].ang,effect[i].img,TRUE);
			if(effect[i].eff==1)
				SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
		}
	}
}
Beispiel #15
0
void graph_effect(int knd){
	for(int i=0;i<EFFECT_MAX;i++){
		if(effect[i].flag>0 && effect[i].knd==knd){
			if(effect[i].eff==1)//エフェクトが光エフェクトなら
				SetDrawBlendMode( DX_BLENDMODE_ADD, (int)effect[i].brt) ;
			if(effect[i].eff==2)//エフェクトがαエフェクトなら
				SetDrawBlendMode( DX_BLENDMODE_ALPHA, (int)effect[i].brt) ;
			DrawRotaGraphF(effect[i].x+FX+dn.x,effect[i].y+FY+dn.y,effect[i].r,effect[i].ang,effect[i].img,TRUE);
			if(effect[i].eff==1 || effect[i].eff==2)
				SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
		}
	}
}
Beispiel #16
0
void graph_boss_effect(){
	SetDrawBlendMode( DX_BLENDMODE_ALPHA, 150) ;
	DrawRotaGraphF(boss.dx+FX,   boss.dy+FY,
				   (0.4+0.05*sin(PI2/360*(count%360)))*3,
				   2*PI*(count%580)/580,
				   img_etc[5], TRUE);
	DrawRotaGraphF(boss.dx+FX,   boss.dy+FY,
				   (0.5+0.1*sin(PI2/360*(count%360)))*2,
				   2*PI*(count%340)/340,img_etc[2],	TRUE);
	DrawRotaGraphF(boss.dx+60*sin(PI2/153*(count%153))+FX,
				   boss.dy+80*sin(PI2/120*(count%120))+FY,
				   0.4+0.05*sin(PI2/120*(count%120)),
				   2*PI*(count%30)/30,img_etc[6],	TRUE);
	DrawRotaGraphF(boss.dx+60*sin(PI2/200*((count+20)%200))+FX,
				   boss.dy+80*sin(PI2/177*((count+20)%177))+FY,
				   0.3+0.05*sin(PI2/120*(count%120)), 
				   2*PI*(count%35)/35,img_etc[6],	TRUE);
	SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
	DrawRotaGraphF(boss.dx+60*sin(PI2/230*((count+40)%230))+FX,
				   boss.dy+80*sin(PI2/189*((count+40)%189))+FY,
				   0.6+0.05*sin(PI2/120*(count%120)),
				   2*PI*(count%40)/40,img_etc[6],	TRUE);
}
Beispiel #17
0
void graph_boss(){
	int i;
	if(boss.flag==0)return;
	graph_boss_effect();
	DrawRotaGraphF(boss.dx+FX+dn.x,boss.dy+FY+dn.y,
		1.0f,0.0f,img_dot_riria[0],TRUE);
	if(boss.hp_max==0){printfDx("graph_boss内0割り\n");return;}
	for(i=0;i<FMX*0.98*boss.hp/boss.hp_max;i++){
		if(boss.back_knd[boss.knd]==1)
			DrawGraph(3+FX+i+dn.x,2+FY+dn.y,img_etc[7],FALSE);
		else
			DrawGraph(3+FX+i+dn.x,2+FY+dn.y,img_etc[1],FALSE);
	}
}
Beispiel #18
0
//弾丸の描画
void graph_bullet(){
	int j;
	double disp_angle;
	SetDrawMode( DX_DRAWMODE_BILINEAR );//線形補完描画
	for(j=0;j<BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
		if(bullet[j].flag!=0){//弾データがオンなら
			disp_angle=bullet[j].angle+PI/2;

			DrawRotaGraphF(bullet[j].x, bullet[j].y, 1.0, disp_angle,
				img_bullet[bullet[j].knd][bullet[j].col],TRUE);
		}
	}
	if(ch.bcnt){
		bdelete();
	}
}
Beispiel #19
0
//弾丸の描画
void graph_bullet(){
	int i,j;
	SetDrawMode( DX_DRAWMODE_BILINEAR ) ;//線形補完描画
	for(i=0;i<SHOT_MAX;i++){//敵の弾幕数分ループ
		if(shot[i].flag>0){//弾幕データがオンなら
			for(j=0;j<SHOT_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
				if(shot[i].bullet[j].flag!=0){//弾データがオンなら
					if(shot[i].bullet[j].eff==1)
						SetDrawBlendMode( DX_BLENDMODE_ADD, 255) ;

					DrawRotaGraphF(
						shot[i].bullet[j].x+FIELD_X+dn.x, shot[i].bullet[j].y+FIELD_Y+dn.y,
						1.0, shot[i].bullet[j].angle+PI/2,
						img_bullet[shot[i].bullet[j].knd][shot[i].bullet[j].col],TRUE);

					if(shot[i].bullet[j].eff==1)
						SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
				}
			}
		}
	}
	SetDrawMode(DX_DRAWMODE_NEAREST);//描画形式を戻す
}
Beispiel #20
0
//画像表示
void MyDrawGraph::ContentView() {
	SetDrawMode(DX_DRAWMODE_BILINEAR);
	DrawRotaGraphF(x, y, ex / SIZE_RATE, 0, handle, TRUE, FALSE); //描画
	SetDrawMode(DX_DRAWMODE_NEAREST);
}
Beispiel #21
0
int DrawRotaGraphF( double xd, double yd, double ExRate, double Angle, int GrHandle, int TransFlag, int TurnFlag = FALSE  ) {
	return DrawRotaGraphF((float)xd,(float)yd,ExRate,Angle,GrHandle,TransFlag,TurnFlag);
}
Beispiel #22
0
//自機描画
void graph_ch(){
	if(ch.mutekicnt%2==0)
		DrawRotaGraphF(ch.x+FIELD_X+dn.x,ch.y+FIELD_Y+dn.y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
}
void Scene_TestDangeon::Draw() const{
	TCHAR buf[64];

	// 背景の描画
	int tmpX = backX-BACKTILE_SIZE;
	int tmpY = backY-BACKTILE_SIZE;
	while(tmpY < WND_HEIGHT){
		while(tmpX < WND_WIDTH){
			DrawGraph(tmpX, tmpY, g_image.icon.tile, 0);
			tmpX += BACKTILE_SIZE;
		}
		tmpY += BACKTILE_SIZE;
		tmpX = backX - BACKTILE_SIZE;
	}


	TCHAR	menuTitle[MAX_TESTDANGEON_MENU][128] = {
		_T("出発する"), 
		_T("パーティの編成"), 
		_T("ステータス・装備"),
		_T("アイテム"),
		_T("人形の合成"),
		_T("休憩する"),
		_T("セーブ"),
		_T("リセット"),
		_T("BGM音量"),
		_T("SE音量"),
		_T("オートセーブ"),
		_T("ゲームを終了する"),
#ifdef MYGAME_USE_DEBUGTOOLS
		_T("デバッグメニュー"),
#endif // MYGAME_USE_DEBUGTOOLS
	};

	TCHAR debugMenuTitle[MAX_TESTDANGEON_DEBUGMENU][128] = {
		_T("全回復"),
		_T("チュートリアルクリア状態にする"),
		_T("ステージ1クリア状態にする"),
		_T("ステージ2クリア状態にする"),
		_T("ステージ3クリア状態にする"),
		_T("ステージ4クリア状態にする"),
		_T("ステージ5クリア状態にする"),
		_T("ステージ6クリア状態にする"),
		_T("人形の作成"),
		_T("戻る"),
	};

	TCHAR	menuAcc[MAX_TESTDANGEON_MENU][128] = {
		_T("ステージを選択して出発します。"), 
		_T("パーティ編成をします。"), 
		_T("メンバーのステータス確認・装備変更をします。"),
		_T("アイテムを確認・使用します。"),
		_T("2体の人形を合成して新しい人形を作成します。"),
		_T("少しの時間休んで、TPとMPを少し回復します。"),
		_T("セーブします。(ロードは自動で行われます)"),
		_T("ゲームデータをリセットします。"),
		_T("BGMの音量を変更します。(左右キー)"),
		_T("SEの音量を変更します。(左右キー)"),
		_T("オートセーブの設定をします。(左右キー)"),
		_T("ゲームを終了します。"),
#ifdef MYGAME_USE_DEBUGTOOLS
		_T("デバッグメニューを開きます"),
#endif // MYGAME_USE_DEBUGTOOLS
	};

	TCHAR	debugMenuAcc[MAX_TESTDANGEON_DEBUGMENU][128] = {
		_T("TPとMPを全回復します。"),
		_T("チュートリアルをクリアしたような感じにします。"),
		_T("ステージ1をクリアしたような感じにします。"),
		_T("ステージ2をクリアしたような感じにします。"),
		_T("ステージ3をクリアしたような感じにします。"),
		_T("ステージ4をクリアしたような感じにします。"),
		_T("ステージ5をクリアしたような感じにします。"),
		_T("ステージ6をクリアしたような感じにします。"),
		_T("新しい人形を生み出します。"),
		_T("メインメニューに戻ります。"),
	};


	TCHAR	menuAcc_noDoll[128] 
		= _T("戦闘メンバーを設定して下さい。");


	TCHAR	stageTitle[MAX_TESTDANGEON_STAGE+1][128] = {
		_T("チュートリアル1 ダンジョンに行こう"), 
		_T("チュートリアル2 仲間を増やそう"), 
		_T("チュートリアル3 力を合わせよう"), 
		_T("Stage1 はじまりの森"), 
		_T("Stage2 木々を抜けて"), 
		_T("Stage3 立ちふさがる者"), 
		_T("Stage4 古き森の守護者"), 
		_T("Stage5 迷いの森の中で"), 
		_T("Stage6 妖精小戦争"), 
		_T("やめる"), 
	};

	// 背景の枠の描画
	DrawBox(90, 45, 580, 515, GetColor(127, 191, 159), 1);
	DrawBox(50, 30, 540, 500, GetColor(223, 239, 232), 1);

	// 人形の描画
	WORD dollType=0, dollFace=0, dollAttr=0;
	int hDollImage = -1;
	int tmp = backDoll;
	if(state != SCNSTATE_TESTDANGEON_CHOOSEMAP){
		if(tmp != -1){
			dollType = tmp/(DOLL_FACE_NUM*DOLL_ATTR_NUM);
			tmp -= dollType*DOLL_FACE_NUM*DOLL_ATTR_NUM;
			dollFace = tmp/DOLL_ATTR_NUM;
			tmp -= dollFace*DOLL_ATTR_NUM;
			dollAttr = tmp;
			hDollImage = g_image.GetDollIconHandle(
				dollType*DOLL_TYPE_PER_GROUP, dollFace, dollAttr);
		}
		if(hDollImage != -1){
			DrawRotaGraphF(
				630, 400+20*sin(2.0*M_PI*(sceneTime-90)/720),
				1.0, 0,
				hDollImage, 1);
		}
	}else{
		DrawComment();
	}

	// 文字の描画
	int color;
	switch(state){
	case SCNSTATE_TESTDANGEON_MAINMENU:
	case SCNSTATE_TESTDANGEON_BDOLLMANAGE:
	case SCNSTATE_TESTDANGEON_ITEMMANAGE:
	case SCNSTATE_TESTDANGEON_RESET_YESNO:
	case SCNSTATE_TESTDANGEON_CHECK_MAPRESULT:
		for(int n=0; n<MAX_TESTDANGEON_MENU; n++){
			if(s_main.index == n){
				color = TESTDANGEON_SELECTEDCOLOR;
			}else if(s_main.isActive[n]){
				color = TESTDANGEON_UNSELECTEDCOLOR;
			}else{
				color = TESTDANGEON_DISABLEDCOLOR;
			}
			DrawStringToHandle(80+3, 50+30*n+3, 
				menuTitle[n], color, g_font.hInfo);
		}
		// BGMのボリューム表示
		TCHAR buf[16];
		wsprintf(buf, _T("%3d"), (int)g_cfg.BGM);
		DrawStringToHandle(
			200+120+3, 50+30*TESTDANGEON_MENU_BGM+3,
			buf, TESTDANGEON_SELECTEDCOLOR,
			g_font.hInfo);

		// SEのボリューム表示
		wsprintf(buf, _T("%3d"), (int)g_cfg.SE);
		DrawStringToHandle(
			200+120+3, 50+30*TESTDANGEON_MENU_SE+3,
			buf, TESTDANGEON_SELECTEDCOLOR,
			g_font.hInfo);

		// SEのオートセーブのON/OFF表示

		DrawStringToHandle(
			200+120+3, 50+30*TESTDANGEON_MENU_AUTOSAVE+3,
			r_aliceInfo.GetAutoSave() ? _T("ON") : _T("OFF"),
			TESTDANGEON_SELECTEDCOLOR,
			g_font.hInfo);
		/*
		// 回復しました。の文字
		if(healedCount > 0 && healedCount < TESTDANGEON_HEALED_TIME){
			SetDrawBlendMode(DX_BLENDMODE_ALPHA,
				min(255, min(32*healedCount, 12*(TESTDANGEON_SAVED_TIME-healedCount))));
			DrawStringToHandle(
				200+100+3, 50+30*TESTDANGEON_MENU_HEALALL+3,
				_T("回復しました。"), TESTDANGEON_SELECTEDCOLOR, 
				g_font.hInfo);
		}*/
		// セーブしました。の文字
		if(savedCount > 0 && savedCount < TESTDANGEON_SAVED_TIME){
			SetDrawBlendMode(DX_BLENDMODE_ALPHA,
				min(255, min(32*savedCount, 12*(TESTDANGEON_SAVED_TIME-savedCount))));
			DrawStringToHandle(
				200+100+3, 50+30*TESTDANGEON_MENU_SAVE+3,
				_T("セーブしました。"), TESTDANGEON_SELECTEDCOLOR, 
				g_font.hInfo);
		}
		SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);

		break;
	case SCNSTATE_TESTDANGEON_CHOOSEMAP:
		for(int n=0; n<MAX_TESTDANGEON_STAGE+1; n++){
			if(s_sub.index == n){
				color = TESTDANGEON_SELECTEDCOLOR;
			}else{
				color = TESTDANGEON_UNSELECTEDCOLOR;
			}
			if(n >= MAX_TESTDANGEON_STAGE){
				DrawStringToHandle(80+3, 50+30*n+3, 
					stageTitle[n], color, g_font.hInfo);
			}else if(s_sub.isActive[n]){
				DrawStringToHandle(80+3, 50+30*n+3, 
					stageTitle[n], color, g_font.hInfo);
			}
		}	
		break;
	case SCNSTATE_TESTDANGEON_CHOOSEDEBUG:
		for(int n=0; n<MAX_TESTDANGEON_DEBUGMENU; n++){
			if(s_debug.index == n){
				color = TESTDANGEON_SELECTEDCOLOR;
			}else{
				color = TESTDANGEON_UNSELECTEDCOLOR;
			}
			if(n >= MAX_TESTDANGEON_STAGE){
				DrawStringToHandle(80+3, 50+30*n+3, 
					debugMenuTitle[n], color, g_font.hInfo);
			}else if(s_debug.isActive[n]){
				DrawStringToHandle(80+3, 50+30*n+3, 
					debugMenuTitle[n], color, g_font.hInfo);
			}
		}	
		break;
	}

	// 説明の描画
	int width = 0;
	switch(state){
	case SCNSTATE_TESTDANGEON_MAINMENU:
		if(!s_main.isActive[TESTDANGEON_MENU_DANGEON] && s_main.index == 1){
			// 例外的なメッセージ表示
			width = GetDrawStringWidthToHandle(menuAcc_noDoll,
				strlen(menuAcc_noDoll), g_font.hInfo);
			DrawStringToHandle((WND_WIDTH-width)/2, WND_HEIGHT-FONTSIZE_INFO-10, 
				menuAcc_noDoll, GetColor(0, 0, 0), g_font.hInfo);
		}else{
			width = GetDrawStringWidthToHandle(menuAcc[s_main.index],
				strlen(menuAcc[s_main.index]), g_font.hInfo);
			DrawStringToHandle((WND_WIDTH-width)/2, WND_HEIGHT-FONTSIZE_INFO-10, 
				menuAcc[s_main.index], GetColor(0, 0, 0), g_font.hInfo);
		}
		break;
	case SCNSTATE_TESTDANGEON_CHOOSEDEBUG:
		width = GetDrawStringWidthToHandle(debugMenuAcc[s_debug.index],
			strlen(debugMenuAcc[s_debug.index]), g_font.hInfo);
		DrawStringToHandle((WND_WIDTH-width)/2, WND_HEIGHT-FONTSIZE_INFO-10, 
			debugMenuAcc[s_debug.index], GetColor(0, 0, 0), g_font.hInfo);
		break;
	}


	// アリスの挑戦回数
	/*
	wsprintf(buf, _T("挑戦回数:%d回"), (int)r_aliceInfo.GetTryNum());
	DrawStringToHandle(
		10, 10, buf,
		GetColor(32, 32, 32), 
		g_font.hInfo);

		*/

	/*
	// 説明ウィンドウ表示する/しないの表示
	DrawStringToHandle(360-((s_main.index==11)?4:0)+3, 50+30*11+3,
		g_trialAliceFile.data.tutorialHint ? 
		_T("毎回表示") : _T("初回のみ"),
		TESTDANGEON_SHADOWCOLOR,
		(s_main.index == 11) ? TESTDANGEON_SHADOWCOLOR2 : TESTDANGEON_SHADOWCOLOR,
		g_font.hInfo);
	DrawStringToHandle(360-((s_main.index==11)?4:0), 50+30*11,
		g_trialAliceFile.data.tutorialHint ? 
		_T("毎回表示") : _T("初回のみ"),
		(s_main.index == 11) ? TESTDANGEON_SELECTEDCOLOR : TESTDANGEON_UNSELECTEDCOLOR,
		g_font.hInfo);
		*/

	// ウィンドウの描画
	if(!w_hint.GetClosed()){
		SetDrawBlendMode(DX_BLENDMODE_ALPHA, 128);
		DrawBox(0, 0, WND_WIDTH, WND_HEIGHT, GetColor(0, 0, 0), 1);
		SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255);
	}
	/*
	if(w_hint.GetState() == Window_Base::CLOSING){
		g_trialAliceFile.data.firstHint = true;
	}
	*/

	w_bDollManage.Draw();

	// アイテムウィンドウと小ウィンドウ
	w_itemManage.Draw();
	(w_itemManage.GetNoticeWindowPtr())->Draw();
	(w_itemManage.GetDollNoticeWindowPtr())->Draw();
	w_hint.Draw();
	w_yesno.Draw();

	DrawTimeAndMP(r_aliceInfo.GetTime(), r_aliceInfo.GetMP(), 0, 0);

	// DrawGraph(0, 0, g_image.icon.skillKey[0], 1);

	// シーン切り替えのフェードの描画
	DrawReserveFade();
}
Beispiel #24
0
void graph_ch(){
	DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
}