Пример #1
0
void CBaseStreamControl::NotifyFilterState( FILTER_STATE new_state, REFERENCE_TIME tStart )
{
    CAutoLock lck(&m_CritSec);

    // or we will get confused
    if (m_FilterState == new_state)
    return;

    switch (new_state)
    {
        case State_Stopped:

            DbgLog((LOG_TRACE,2,TEXT("Filter is STOPPED")));

        // execute any pending starts and stops in the right order,
        // to make sure all notifications get sent, and we end up
        // in the right state to begin next time (??? why not?)

        if (m_tStartTime != MAX_TIME && m_tStopTime == MAX_TIME) {
        ExecuteStart();
        } else if (m_tStopTime != MAX_TIME && m_tStartTime == MAX_TIME) {
        ExecuteStop();
        } else if (m_tStopTime != MAX_TIME && m_tStartTime != MAX_TIME) {
        if (m_tStartTime <= m_tStopTime) {
            ExecuteStart();
            ExecuteStop();
        } else {
            ExecuteStop();
            ExecuteStart();
        }
        }
        // always start off flowing when the graph starts streaming
        // unless told otherwise
        m_StreamState = STREAM_FLOWING;
            m_FilterState = new_state;
            break;

        case State_Running:

            DbgLog((LOG_TRACE,2,TEXT("Filter is RUNNING")));

            m_tRunStart = tStart;
            // fall-through

        default: // case State_Paused:
            m_FilterState = new_state;
    }
    // unblock!
    m_StreamEvent.Set();
}
void LompatKe (InfoPlayer *X, AddressOfPetak Pt)
/*Mengubah posisi pemain menuju ke petak 'pt' karena berhenti di world travel*/
{
    (*X).posisi = Pt;
    if(Info(Pt).id_petak == 1) ExecuteStart();
    else if(Info(Pt).id_petak == 3) GetBonus();
    else if(Info(Pt).id_petak == 9) Info(global.currentPlayer).penjara = true;
    else if(Info(Pt).id_petak == 13 || Info(Pt).id_petak == 21 || Info(Pt).id_petak == 29) DrawCards();
    else if(Info(Pt).id_petak == 31) PayTax();
    else if(isKota(Pt) || isTempatWisata(Pt)) BayarSewa();
}
Пример #3
0
enum CBaseStreamControl::StreamControlState CBaseStreamControl::CheckSampleTimes
( __in const REFERENCE_TIME * pSampleStart, __in const REFERENCE_TIME * pSampleStop )
{
    CAutoLock lck(&m_CritSec);

    ASSERT(!m_bIsFlushing);
    ASSERT(pSampleStart && pSampleStop);

    // Don't ask me how I came up with the code below to handle all 19 cases
    // - DannyMi

    if (m_tStopTime >= *pSampleStart)
    {
        if (m_tStartTime >= *pSampleStop)
        return m_StreamState;		// cases  8 11 12 15 17 18 19
    if (m_tStopTime < m_tStartTime)
        ExecuteStop();			// case 10
    ExecuteStart();                         // cases 3 5 7 9 13 14
    return m_StreamState;
    }

    if (m_tStartTime >= *pSampleStop)
    {
        ExecuteStop();                          // cases 6 16
        return m_StreamState;
    }

    if (m_tStartTime <= m_tStopTime)
    {
    ExecuteStart();
    ExecuteStop();
        return m_StreamState;		// case 1
    }
    else
    {
    ExecuteStop();
    ExecuteStart();
        return m_StreamState;		// cases 2 4
    }
}
void MajuNLangkah (InfoPlayer *X, ListPetak L, int N)
/*Mengubah posisi pemain sebanyak N langkah kedepan.
 Jumlah langkah tergantung dari roll dadu (N>=2 dan N<=12). */
{
    int i;
    AddressOfPetak P = (*X).posisi;
    for(i=0; i<N; i++)
    {
        P = Next(P);
        if(Info(P).id_petak == 1) ExecuteStart();
    }

    (*X).posisi = P;
    printf("\nAnda melangkah dan sampai ke petak ");
    PrintKata(InfoPetak(P).nama_petak);
    puts("");
    if(Info(P).id_petak == 3) GetBonus();
    else if(Info(P).id_petak == 9) MasukPenjara(X, L);
    else if(Info(P).id_petak == 13 || Info(P).id_petak == 21 || Info(P).id_petak == 29) DrawCards();
    else if(Info(P).id_petak == 31) PayTax();
    else if(isKota(P) || isTempatWisata(P))
    {
        printf("Saat ini anda berada di:\n");
        PrintPetak(Info(Info(global.currentPlayer).posisi).nama_petak);
        BayarSewa();
    }
    else if (isWorldCup(P))
    {
        printf("Saat ini anda berada di Petak World Cup\n");
    }
    else if (isWorldTravel(P))
    {
        printf("Saat ini anda berada di Petak World Travel.\n");
    }

}