//============================================================== // タイトルの実行 //============================================================== int CTitle::Run(void) { // ゲームの初期化 Init(); // フェードイン SetFade(FADE_IN, 8.0f); UpdateFade(); // BGM再生 m_BGM.Release(); m_BGM.Load("../Resource/BGM/OP.wav"); m_BGM.SetVolume(MAX_VOL); m_BGM.Play(DSBPLAY_LOOPING); return 0; }
BOOL CGumpEditorDoc::OnNewDocument() { if (!CDialogEditorDemoDoc::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) SetName(""); SetAlpha(0); SetFade(0,0); SetEventHandler("","","","",""); SetShapeName(""); m_objs.Clear(); m_objs.SetVirtualSize(CSize(m_iDefWidth,m_iDefHeight)); return TRUE; }
void CGumpEditorDoc::OnSettings() { CGumpEditorView* pView = (CGumpEditorView*)FindView(RUNTIME_CLASS(CGumpEditorView)); if (!pView) return; CDEditor& editor = pView->GetDEditor(); CDialogSettings dlg; dlg.m_width = editor.GetVirtualSize().cx; dlg.m_height = editor.GetVirtualSize().cy; dlg.m_gridWidth = editor.GetGridSize().cx; dlg.m_gridHeight = editor.GetGridSize().cy; editor.GetMargins( dlg.m_marginLeft, dlg.m_marginTop, dlg.m_marginRight, dlg.m_marginBottom ); dlg.m_strName = GetName(); dlg.m_iAlpha = GetAlpha(); dlg.m_iFlags = GetFlags(); dlg.m_iFadeAlpha = GetFadeAlpha(); dlg.m_iFadeTime = GetFadeTime(); dlg.m_strShapeName = GetShapeName(); GetEventHandler(dlg.m_strEvClick, dlg.m_strEvClose, dlg.m_strEvMouseUp, dlg.m_strEvMouseDown, dlg.m_strEvKeyPressed); if( dlg.DoModal() == IDOK ) { editor.SetGridSize( CSize( dlg.m_gridWidth, dlg.m_gridHeight ) ); editor.SetVirtualSize( CSize( dlg.m_width, dlg.m_height ) ); editor.SetMargins( dlg.m_marginLeft, dlg.m_marginTop, dlg.m_marginRight, dlg.m_marginBottom ); SetName(dlg.m_strName); SetAlpha(dlg.m_iAlpha); SetFlags(dlg.m_iFlags); SetFade(dlg.m_iFadeAlpha, dlg.m_iFadeTime); SetShapeName(dlg.m_strShapeName); SetEventHandler(dlg.m_strEvClick, dlg.m_strEvClose, dlg.m_strEvMouseUp, dlg.m_strEvMouseDown, dlg.m_strEvKeyPressed); editor.RedrawWindow(); } }
/****************************************************************************** * 関数名:UpdatePause * * 引数 : * 戻り値: * 説明 : ******************************************************************************/ void UpdatePause( void ) { for( int cnt = 0 ; cnt < PAUSE_TEX_MAX ; cnt++ ) { VERTEX_2D *pVtx; g_pause[cnt].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 ); //頂点カラー設定 for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ ) { pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 255 , 255 , 255 ); } g_pause[cnt].pVtxBuffPause -> Unlock(); } switch( g_pausePattarn ) { case PAUSE_CONTINUE: { VERTEX_2D *pVtx; g_pause[1].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 ); //頂点カラー設定 for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ ) { pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 0 , 0 , 255 ); } g_pause[1].pVtxBuffPause -> Unlock(); break; } case PAUSE_RETRY: { VERTEX_2D *pVtx; g_pause[2].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 ); //頂点カラー設定 for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ ) { pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 0 , 0 , 255 ); } g_pause[2].pVtxBuffPause -> Unlock(); break; } case PAUSE_QUIT: { VERTEX_2D *pVtx; g_pause[3].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 ); //頂点カラー設定 for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ ) { pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 0 , 0 , 255 ); } g_pause[3].pVtxBuffPause -> Unlock(); break; } } //ポーズ中の処理 if( g_bPause == true ) { //上に移動 if( GetKeyboardTrigger( DIK_W ) ) { if( g_pausePattarn == PAUSE_CONTINUE ) { g_pausePattarn = PAUSE_QUIT; } else if( g_pausePattarn == PAUSE_QUIT ) { g_pausePattarn = PAUSE_RETRY; } else { g_pausePattarn = PAUSE_CONTINUE; } } //下に移動 else if( GetKeyboardTrigger( DIK_S ) ) { if( g_pausePattarn == PAUSE_CONTINUE ) { g_pausePattarn = PAUSE_RETRY; } else if( g_pausePattarn == PAUSE_RETRY ) { g_pausePattarn = PAUSE_QUIT; } else { g_pausePattarn = PAUSE_CONTINUE; } } //enterを押した時の処理 if( GetKeyboardTrigger( DIK_RETURN ) ) { if( g_pausePattarn == PAUSE_CONTINUE ) { g_bPause = false; } else if( g_pausePattarn == PAUSE_RETRY ) { SetFade( FADE_OUT , MODE_GAME ); } else { SetFade( FADE_OUT , MODE_SELECT ); } } } }
BOOL CGumpEditorDoc::OnOpenDocument(LPCTSTR lpszPathName) { XML::Parser parser; XML::Node* form=NULL,* document=NULL; XML::Node* section = NULL,* value = NULL; CSize sizeForm(m_iDefWidth,m_iDefHeight); try { parser.loadData(lpszPathName); document = parser.parseDocument(); form = document->findNode("form"); if(!form ) throw; form->lookupAttribute("width", (int&)sizeForm.cx); form->lookupAttribute("height", (int&)sizeForm.cy); int alpha=0,flags=0; std::string shape; form->lookupAttribute("alpha", alpha); form->lookupAttribute("flags", flags); form->lookupAttribute("shape", shape); m_objs.Clear(); m_objs.SetVirtualSize(sizeForm); SetAlpha(alpha); SetFlags(flags); SetShapeName(shape.c_str()); } catch (...) { return FALSE; } int alpha=0,time=0; std::string onclick, onclose, onmouseup, onmousedown, onkeypressed; XML::Node* fade_node = form->findNode("fade"); if (fade_node) { fade_node->lookupAttribute("alpha", alpha); fade_node->lookupAttribute("time", time); } XML::Node* event_node = form->findNode("event"); if (event_node) { event_node->lookupAttribute("onclick", onclick); event_node->lookupAttribute("onclose", onclose); event_node->lookupAttribute("onmouseup", onmouseup); event_node->lookupAttribute("onmousedown", onmousedown); event_node->lookupAttribute("onkeypressed", onkeypressed); } SetFade(alpha, time); SetEventHandler(onclick.c_str(), onclose.c_str(), onmouseup.c_str(), onmousedown.c_str(), onkeypressed.c_str()); int idx=0; XML::Node* control = NULL; while (control = form->findNode("control", idx++)) { CDiagramEntity* obj = CDiagramControlFactory::CreateFromString(control); if (obj) m_objs.Add(obj); } m_objs.SetModified( FALSE ); delete document; document=NULL; return TRUE; }
//============================================================================= // 更新処理 //============================================================================= void UpdateGameManager(void) { #ifdef _DEBUG if(GetKeyboardTrigger(DIK_F1)) { g_nGameMode = SELECTMODE_PLAY; } if(GetKeyboardTrigger(DIK_F2)) { g_nGameMode = SELECTMODE_WALLEDIT; } if(GetKeyboardTrigger(DIK_F3)) { g_nGameMode = SELECTMODE_GIMMICKEDIT; } if(GetKeyboardTrigger(DIK_F4)) { g_nGameMode = SELECTMODE_PLAYEREDIT; } if(GetKeyboardTrigger(DIK_F5)) { g_nGameMode = SELECTMODE_DELETE; } if(GetKeyboardTrigger(DIK_F6)) { g_nGameMode = SELECTMODE_SCENECHANGE; } if(GetKeyboardTrigger(DIK_F7)) { g_nGameMode = SELECTMODE_PLAYERBAR_NUM; } if(GetKeyboardTrigger(DIK_F8)) { g_nGameMode = SELECTMODE_ITEMNUMEDIT; } if(g_nGameMode != SELECTMODE_PLAY) GetBackG()[BACKGROUND_EDIT_NET].bUse = true; else GetBackG()[BACKGROUND_EDIT_NET].bUse = false; #endif switch (g_nGameMode) { case SELECTMODE_PLAY: { PrintDebugProc("【ゲームモード】\n"); if(GetTimeCounter()->fCurrentTime > TIME_15) g_bIsPlay = false; if(!g_bIsPlay) { if(IsMouseRightTriggered()) { int nGimNum = -1; int nItemNum = GetItemNum()->nItemLockTime; bool bIsLock = false; if(IsGimmickLock(&nGimNum, &bIsLock, &nItemNum) == true) { if(bIsLock == true) { SetItem(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), ITEM_TYPE_01, nGimNum); UpdataItemNum(-1); } else { DeleteItem(nGimNum); UpdataItemNum(1); } } } } break; } case SELECTMODE_WALLEDIT: { PrintDebugProc("【壁を編集するモード】\n"); WallCreateMode(); break; } case SELECTMODE_GIMMICKEDIT: { PrintDebugProc("【ギミック編集モード】\n"); GimmickCreateMode(); break; } case SELECTMODE_PLAYEREDIT: { PrintDebugProc("【プレイヤー編集モード】\n"); if(IsMouseLeftPressed()) IsMouseHitPlayer(); PlayerEdit(); break; } case SELECTMODE_DELETE: { PrintDebugProc("【削除モード】\n"); DeleteGimmick(); DeleteWall(); break; } case SELECTMODE_SCENECHANGE: { PrintDebugProc("【ステージ切り替えるモード】\n"); if(IsMouseRightTriggered()) { if(*GetSceneNum() < SCENE_TYPE_MAX) (*GetSceneNum())++; if(*GetSceneNum() == SCENE_TYPE_MAX) *GetSceneNum() = 0; g_bIsSceneInit = true; } if(g_bIsSceneInit == true) { g_bIsSceneInit = false; switch (*GetSceneNum()) { case SCENE_01: // 从文件中读取 LoadData(SCENE_01); break; case SCENE_02: // 从文件中读取 LoadData(SCENE_02); break; case SCENE_03: // 从文件中读取 LoadData(SCENE_03); break; case SCENE_04: // 从文件中读取 LoadData(SCENE_04); break; case SCENE_05: // 从文件中读取 LoadData(SCENE_05); break; default: break; } // 読み込むデータを初期化 InitDataPlayer(); InitDataWall(); InitDataGimmick(); InitDataPlayerbar(); for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { // 根据补完的数据对机关场景进行位置和运动预处理 SetupGimmickTrack(nCntGim); *GetCleanupSwitch() = false; } } break; } case SELECTMODE_PLAYERBAR_NUM: { PrintDebugProc("【時間軸編集モード】\n"); PrintDebugProc("数字キー「1」 時間軸数:1\n"); PrintDebugProc("数字キー「2」 時間軸数:2\n"); PrintDebugProc("数字キー「3」 時間軸数:3\n"); if(GetKeyboardTrigger(DIK_1)) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { //if(g_pPlaybar_GM[nCntPlayBar].bUse == true) g_pPlaybar_GM[nCntPlayBar].bUse = false; } for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { if(g_pGimmick_GM[nCntGim].bUse) { g_pGimmick_GM[nCntGim].nPriorityNum01 = -1; g_pGimmick_GM[nCntGim].nPriorityNum02 = -1; g_pGimmick_GM[nCntGim].nPriorityNum03 = -1; } } SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1); PlaybarNumCount(); } if(GetKeyboardTrigger(DIK_2)) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { //if(g_pPlaybar_GM[nCntPlayBar].bUse == true) g_pPlaybar_GM[nCntPlayBar].bUse = false; } for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { if(g_pGimmick_GM[nCntGim].bUse) { g_pGimmick_GM[nCntGim].nPriorityNum01 = -1; g_pGimmick_GM[nCntGim].nPriorityNum02 = -1; g_pGimmick_GM[nCntGim].nPriorityNum03 = -1; } } SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1); SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_2); PlaybarNumCount(); } if(GetKeyboardTrigger(DIK_3)) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { //if(g_pPlaybar_GM[nCntPlayBar].bUse == true) g_pPlaybar_GM[nCntPlayBar].bUse = false; } for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { if(g_pGimmick_GM[nCntGim].bUse) { g_pGimmick_GM[nCntGim].nPriorityNum01 = -1; g_pGimmick_GM[nCntGim].nPriorityNum02 = -1; g_pGimmick_GM[nCntGim].nPriorityNum03 = -1; } } SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1); SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_2); SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_3); PlaybarNumCount(); } break; } case SELECTMODE_ITEMNUMEDIT: { PrintDebugProc("【アイテム個数編集モード】\n"); PrintDebugProc("【メニュー】 【アイテム】 【個数】\n"); PrintDebugProc("数字キー「1」 時間固定アイテム:%d\n\n", g_pItemNum_GM->nItemLockTime); if(GetKeyboardTrigger(DIK_1)) { g_nMenuSelect_GM = 1; } switch (g_nMenuSelect_GM) { case 1: PrintDebugProc("矢印キー【左】、【右】 【プラス/マイナス 1】\n"); PrintDebugProc("矢印キー【上】、【下】 【プラス/マイナス 5】\n"); if(GetKeyboardRepeat(DIK_LEFT)) { g_pItemNum_GM->nItemLockTime -= 1; if(g_pItemNum_GM->nItemLockTime < 0) g_pItemNum_GM->nItemLockTime = 0; } if(GetKeyboardRepeat(DIK_RIGHT)) { g_pItemNum_GM->nItemLockTime += 1; if(g_pItemNum_GM->nItemLockTime > 9) g_pItemNum_GM->nItemLockTime = 9; } if(GetKeyboardRepeat(DIK_DOWN)) { g_pItemNum_GM->nItemLockTime -= 5; if(g_pItemNum_GM->nItemLockTime < 0) g_pItemNum_GM->nItemLockTime = 0; } if(GetKeyboardRepeat(DIK_UP)) { g_pItemNum_GM->nItemLockTime += 5; if(g_pItemNum_GM->nItemLockTime > 9) g_pItemNum_GM->nItemLockTime = 9; } break; default: break; } } default: break; } if(!g_bIsPlay) { switch (*GetSceneNum()) { case SCENE_01: PrintDebugProc("【SCENE_01】\n"); // 今のシーンをセーフする if(IsMouseCenterTriggered()) SaveData(SCENE_01); break; case SCENE_02: PrintDebugProc("【SCENE_02】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_02); break; case SCENE_03: PrintDebugProc("【SCENE_03】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_03); break; case SCENE_04: PrintDebugProc("【SCENE_04】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_04); break; case SCENE_05: PrintDebugProc("【SCENE_05】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_05); break; default: break; } } switch(*GetMode()) { case GAMEMODE_LOGO: break; case GAMEMODE_TITLE: { if(GetKeyboardTrigger(DIK_RETURN) || IsMouseLeftTriggered()) SetFade(FADE_OUT, FADE_IN, GAMEMODE_STAGE_SELECT); break; } case GAMEMODE_STAGE_SELECT: { g_bIsStop = true; g_bIsPlay = false; if(GetKeyboardTrigger(DIK_RETURN)) SetFade(FADE_OUT, FADE_IN, GAMEMODE_GAME); if(IsMouseLeftTriggered()) { int pIconNum = 0; if(IsMouseHitIcon(&pIconNum) == true) { *GetSceneNum() = GetGameElement()[pIconNum].nType; g_bIsSceneInit = true; } } if(g_bIsSceneInit == true) { g_bIsSceneInit = false; switch (*GetSceneNum()) { case SCENE_01: // 从文件中读取 LoadData(SCENE_01); break; case SCENE_02: // 从文件中读取 LoadData(SCENE_02); break; case SCENE_03: // 从文件中读取 LoadData(SCENE_03); break; case SCENE_04: // 从文件中读取 LoadData(SCENE_04); break; case SCENE_05: // 从文件中读取 LoadData(SCENE_05); break; default: break; } // 読み込むデータを初期化 InitDataPlayer(); InitDataWall(); InitDataGimmick(); InitDataPlayerbar(); for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { // 根据补完的数据对机关场景进行位置和运动预处理 SetupGimmickTrack(nCntGim); *GetCleanupSwitch() = false; } //*GetMode() = GAMEMODE_GAME; SetFade(FADE_OUT, FADE_IN, GAMEMODE_GAME); } break; } case GAMEMODE_GAME: break; case GAMEMODE_END: break; default: break; } }
//============================================================================= // 更新処理 //============================================================================= void UpdatePlayer(void) { D3DXVECTOR3 nextPos; //次に移動する位置 D3DXVECTOR2 Intersection; //坂道との交点 // プレーヤー最大範囲と最小範囲の更新 g_aPlayer[0].fMaxX = g_aPlayer[0].pos.x + g_aPlayer[0].fWidth / 4; g_aPlayer[0].fMinX = g_aPlayer[0].pos.x - g_aPlayer[0].fWidth / 4; g_aPlayer[0].fMaxY = g_aPlayer[0].pos.y + g_aPlayer[0].fHeight / 2; g_aPlayer[0].fMinY = g_aPlayer[0].pos.y - g_aPlayer[0].fHeight / 2; if(!*GetIsStop() && !*GetIsPause()) { //移動する処理 { //水平移動に関する g_aPlayer[0].bIsHit = false; nextPos = D3DXVECTOR3(g_aPlayer[0].pos.x + g_aPlayer[0].move.x, g_aPlayer[0].pos.y, 0.0f); //坂との当たった場合 if(IsHitBySlope(nextPos, &Intersection, false)) { g_aPlayer[0].bIsHit = true; } else {//坂と当たっていない、かつ坂の上にある場合 if(g_aPlayer[0].bIsOnSlope) { //位置補正 g_aPlayer[0].pos.y = Intersection.y - g_aPlayer[0].size.y / 2; } } //壁に対する当たり判定 if(IsHitByWall(nextPos,false)) { g_aPlayer[0].bIsHit = true; //方向逆転 g_aPlayer[0].move.x *= -1.0f; g_aPlayer[0].bIsChangeDir = g_aPlayer[0].bIsChangeDir ? false : true; g_aPlayer[0].bIsGoLeft = !g_aPlayer[0].bIsGoLeft; } //移動可能な道があるか if(g_aPlayer[0].bIsOnfloor) { //歩く道がなければ if(!CheckCanWalk(g_aPlayer[0].move.x, g_aPlayer[0].bIsGoLeft)) { g_aPlayer[0].bIsHit = true; } } if(!g_aPlayer[0].bIsHit) { //水平移動の移動量を加算 g_aPlayer[0].pos.x = nextPos.x; } //垂直移動処理 nextPos = D3DXVECTOR3(g_aPlayer[0].pos.x, g_aPlayer[0].pos.y + g_aPlayer[0].move.y, 0.0f); //坂の上でない場合 if(g_aPlayer[0].bIsOnSlope == false) { if(IsHitBySlope(nextPos, &Intersection,true)) { g_aPlayer[0].bIsHit = true; } else { if(g_aPlayer[0].bIsOnSlope) { g_aPlayer[0].pos.y = Intersection.y - g_aPlayer[0].size.y / 2; } } } if(IsHitByWall(nextPos,true)) { g_aPlayer[0].bIsHit = true; } //坂道の上でも、オブジェクトでも当たっていない if(g_aPlayer[0].bIsOnSlope == false && g_aPlayer[0].bIsHit == false) { g_aPlayer[0].pos.y = nextPos.y; } } //アニメション処理 g_aPlayer[0].nCounterAnim++; // 移動方向 if(g_aPlayer[0].bIsChangeDir == false) { if( (g_aPlayer[0].nCounterAnim % TIME_CHANGE_PLAYER_MOTION) == 0 ) g_aPlayer[0].nPatternAnim = (( g_aPlayer[0].nPatternAnim + 1 ) % (NUM_ANIM_PATTERN_X9_Y1 - 1)); SetVertexPlayer(0, 1, 1); SetTexturePlayer(0, g_aPlayer[0].nPatternAnim, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2); } else { if( (g_aPlayer[0].nCounterAnim % TIME_CHANGE_PLAYER_MOTION) == 0 ) g_aPlayer[0].nPatternAnim = (( g_aPlayer[0].nPatternAnim + 1 ) % (NUM_ANIM_PATTERN_X9_Y1 - 1)); SetVertexPlayer(0, 1, 1); SetTexturePlayer(0, g_aPlayer[0].nPatternAnim + NUM_ANIM_PATTERN_X9_Y1, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2); } if(g_aPlayer[0].bIsHitByGimmick == true) { if(g_aPlayer[0].bIsChangeDir == false) { SetVertexPlayer(0, 1, 1); SetTexturePlayer(0, NUM_ANIM_PATTERN_X9_Y1 - 1, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2); } else { SetVertexPlayer(0, 1, 1); SetTexturePlayer(0, NUM_ANIM_PATTERN_X9_Y2 - 1, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2); } } } else if(*GetIsStop() == true) { if(*GetGameMode() != SELECTMODE_PLAYEREDIT) { g_aPlayer[0].pos = g_aPlayer[0].posSave; g_aPlayer[0].fSpeedX = abs(g_aPlayer[0].fSpeedX); g_aPlayer[0].bIsChangeDir = false; } //g_aPlayer[0].bIsHit = false; g_aPlayer[0].bIsHitByGimmick = false; g_aPlayer[0].bIsOnfloor = false; SetVertexPlayer(0, 1, 1); SetTexturePlayer(0, 0, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2); } if(IsPlayerReachGoal(0, 0, 0) == true) { // 获得当前关卡的号码 int* nCurrentSceneNum = GetSceneNum(); int* nLastSceneNum = GetLastSceneNum(); if(*nCurrentSceneNum > *nLastSceneNum) *nLastSceneNum = *nCurrentSceneNum; // // 获得当前关卡记录 包含关卡数量及是否被攻略 SCENE* tempScene = GetScene(); if(!(tempScene[*nCurrentSceneNum].bIsClear)) { tempScene[*nCurrentSceneNum].bIsClear = true; (*nLastSceneNum)++; } *GetIsStop() = true; *GetIsPlay() = false; SetFade(FADE_OUT, FADE_IN, GAMEMODE_STAGE_SELECT); } }