void VBasePlayer::AdvanceViewStates(float deltaTime) { for (int i = 0; i < NUMPSPRITES; i++) { VViewState& St = ViewStates[i]; // a null state means not active if (St.State) { // drop tic count and possibly change state // a -1 tic count never changes if (St.StateTime != -1.0) { St.StateTime -= deltaTime; if (eventCheckDoubleFiringSpeed()) { // [BC] Apply double firing speed. St.StateTime -= deltaTime; } if (St.StateTime <= 0.0) { St.StateTime = 0.0; SetViewState(i, St.State->NextState); } } } } }
void GAMEMAP::KeyUpProc(int iKey) { switch(iKey) { case VK_RIGHT: rmain.movex=0; break; case VK_LEFT: rmain.movex=0; break; case KEY_X: //跳 break; case KEY_Z: //FIRE iBeginFire=0; break; } SetViewState(STATE_VIEW_STOP); }
void CLeftView::UseBothLeftFirst() { if (!IsRightViewGood()) return; int nFirstViewLine = 0; // first view line in selection int nLastViewLine = 0; // last view line in selection if (!IsWritable()) return; if (!GetViewSelection(nFirstViewLine, nLastViewLine)) return; int nNextViewLine = nLastViewLine + 1; // first view line after selected block CUndo::GetInstance().BeginGrouping(); // right original become added for (int viewLine = nFirstViewLine; viewLine <= nLastViewLine; viewLine++) { if (!IsStateEmpty(GetViewState(viewLine))) { SetViewState(viewLine, DIFFSTATE_REMOVED); } } SaveUndoStep(); // your block is done, now insert their block int viewindex = nNextViewLine; for (int viewLine = nFirstViewLine; viewLine <= nLastViewLine; viewLine++) { viewdata line = m_pwndRight->GetViewData(viewLine); if (IsStateEmpty(line.state)) { line.state = DIFFSTATE_EMPTY; } else { if (line.state!=DIFFSTATE_NORMAL) { m_pwndRight->SetViewState(viewLine, DIFFSTATE_NORMAL); line.state = DIFFSTATE_NORMAL; } SetModified(); } InsertViewData(viewindex++, line); } SaveUndoStep(); // now insert an empty block in right view int nCount = nLastViewLine - nFirstViewLine + 1; m_pwndRight->InsertViewEmptyLines(nFirstViewLine, nCount); m_pwndRight->Invalidate(); SaveUndoStep(); // clean up int nRemovedLines = CleanEmptyLines(); SaveUndoStep(); UpdateViewLineNumbers(); SaveUndoStep(); CUndo::GetInstance().EndGrouping(); // final clean up ClearSelection(); SetupAllViewSelection(nFirstViewLine, 2*nLastViewLine - nFirstViewLine - nRemovedLines + 1); BuildAllScreen2ViewVector(); RefreshViews(); }