/* ------------------------------------------- ・Draw() : 描画処理処理関数 描画はスプライトを使用 -------------------------------------------- */ void CSceneTitle::Draw() { /* ----- 各表示矩形を設定 ----- */ RECT bg_rc = {0, 0, 640, 480}, logo_rc = {0, 0, 360, 240}, cirno_rc = {0, 0, 424, 424}, start_rc = {0, 0, 136, 48}, option_rc = {0, 0, 136, 48}, end_rc = {0, 0, 136, 48}, cursor_rc = {0, 0, 64, 64}; /* ----- 各表示位置を設定 ----- */ D3DXVECTOR3 center(0, 0, 0); D3DXVECTOR3 bg_pos(0, 0, 0), logo_pos(10, 50, 0), cirno_pos(216, 56, 0), start_pos(107, 294, 0), option_pos(107, 344, 0), end_pos(107, 394, 0), cursor_pos((float)m_Cursor.x, (float)m_Cursor.y, 0); CDxGraphic::m_pD3DXSprite->Begin( D3DXSPRITE_ALPHABLEND ); CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Title_BG.png")), &bg_rc, ¢er, &bg_pos, 0xFFFFFFFF ); // タイトル背景 CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Title_Cirno.dds")), &cirno_rc, ¢er, &cirno_pos, 0xFFFFFFFF ); // チルノ CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Title_Logo.dds")), &logo_rc, ¢er, &logo_pos, 0xFFFFFFFF ); // タイトルロゴ CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Title_StartPanel.dds")), &start_rc, ¢er, &start_pos, 0xFFFFFFFF ); // すたーとパネル CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Title_OptionPanel.dds")), &option_rc, ¢er, &option_pos, 0xFFFFFFFF ); // おぷしょんパネル CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Title_EndPanel.dds")), &end_rc, ¢er, &end_pos, 0xFFFFFFFF ); // おわるパネル CDxGraphic::m_pD3DXSprite->Draw( CTextureManager::GetTexture(_T("img\\Snow_S.dds")), &cursor_rc, ¢er, &cursor_pos, 0xFFFFFFFF ); // 雪カーソル CDxGraphic::m_pD3DXSprite->End(); }
void draw::show_boss_intro_sprites(short boss_id, bool show_fall) { UNUSED(show_fall); unsigned int intro_frames_n = 0; //int intro_frames_rollback = 0; st_position boss_pos(20, -37); st_position sprite_size; graphicsLib_gSurface bgCopy, boss_graphics; std::string graph_filename = FILEPATH + "data/images/sprites/enemies/" + std::string(game_data.game_npcs[boss_id].graphic_filename); sprite_size.x = game_data.game_npcs[boss_id].frame_size.width; sprite_size.y = game_data.game_npcs[boss_id].frame_size.height; graphLib.surfaceFromFile(graph_filename.c_str(), &boss_graphics); graphLib.initSurface(st_size(RES_W, RES_H), &bgCopy); graph_filename = FILEPATH + "data/images/backgrounds/stage_boss_intro.png"; graphLib.surfaceFromFile(graph_filename.c_str(), &bgCopy); st_position bg_pos(0, (RES_H/2)-(bgCopy.height/2)); graphLib.copyArea(bg_pos, &bgCopy, &graphLib.gameScreen); update_screen(); int sprite_pos_y = RES_H/2 - sprite_size.y/2; for (int i=0; i<ANIM_FRAMES_COUNT; i++) { if (game_data.game_npcs[boss_id].sprites[ANIM_TYPE_INTRO][i].used == true) { intro_frames_n++; } } // fall into position while (boss_pos.y < sprite_pos_y) { boss_pos.y += 4; graphLib.copyArea(bg_pos, &bgCopy, &graphLib.gameScreen); graphLib.copyArea(st_rectangle(0, 0, sprite_size.x, sprite_size.y), st_position(boss_pos.x, boss_pos.y), &boss_graphics, &graphLib.gameScreen); graphLib.wait_and_update_screen(5); } graphLib.wait_and_update_screen(500); // show intro sprites if (intro_frames_n > 1) { for (int i=0; i<ANIM_FRAMES_COUNT; i++) { if (game_data.game_npcs[boss_id].sprites[ANIM_TYPE_INTRO][i].used == true) { //std::cout << "i: " << i << ", used: " << game_data.game_npcs[boss_id].sprites[ANIM_TYPE_INTRO][i].used << ", duration: " << game_data.game_npcs[boss_id].sprites[ANIM_TYPE_INTRO][i].duration << std::endl; graphLib.copyArea(bg_pos, &bgCopy, &graphLib.gameScreen); graphLib.copyArea(st_rectangle(sprite_size.x * game_data.game_npcs[boss_id].sprites[ANIM_TYPE_INTRO][i].sprite_graphic_pos_x, 0, sprite_size.x, sprite_size.y), st_position(boss_pos.x, boss_pos.y), &boss_graphics, &graphLib.gameScreen); graphLib.wait_and_update_screen(game_data.game_npcs[boss_id].sprites[ANIM_TYPE_INTRO][i].duration); } } } else { // just frow first sprite graphLib.copyArea(bg_pos, &bgCopy, &graphLib.gameScreen); graphLib.copyArea(st_rectangle(0, 0, sprite_size.x, sprite_size.y), st_position(boss_pos.x, boss_pos.y), &boss_graphics, &graphLib.gameScreen); graphLib.wait_and_update_screen(200); } }