//弾丸の描画 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);//描画形式を戻す }
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); } } }
//敵の描画 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 ); } } }
//自機描画 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 ); } } }
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); } } } }
//動画表示 void MyDrawMovie::ContentView() { if (!CheckHandleASyncLoad(handle)) { SetDrawMode(DX_DRAWMODE_BILINEAR); DrawRotaGraphF(x, y, ex / SIZE_RATE, 0, handle, TRUE, TRUE); //描画 SetDrawMode(DX_DRAWMODE_NEAREST); } }
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; }
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 );*/ } } }
//自機ショット描画 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); } } }
//ボム描画 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); } }
//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); } } }
//敵描画 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); } } }
//自機描画 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 ); } }
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) ; } } }
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) ; } } }
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); }
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); } }
//弾丸の描画 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(); } }
//弾丸の描画 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);//描画形式を戻す }
//画像表示 void MyDrawGraph::ContentView() { SetDrawMode(DX_DRAWMODE_BILINEAR); DrawRotaGraphF(x, y, ex / SIZE_RATE, 0, handle, TRUE, FALSE); //描画 SetDrawMode(DX_DRAWMODE_NEAREST); }
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); }
//自機描画 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(); }
void graph_ch(){ DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[0][ch.img],TRUE); }