コード例 #1
0
ファイル: noShip.cpp プロジェクト: ikharbeq/s25client
/// Zeichnet normales Fahren auf dem Meer ohne irgendwelche Güter
void noShip::DrawDriving(int& x, int& y)
{
    // Interpolieren zwischen beiden Knotenpunkten
    CalcWalkingRelative(x, y);

    LOADER.GetImageN("boot_z", 13 + ((GetCurMoveDir() + 3) % 6) * 2)->Draw(x, y, 0, 0, 0, 0, 0, 0, COLOR_SHADOW);
    LOADER.GetImageN("boot_z", 12 + ((GetCurMoveDir() + 3) % 6) * 2)->Draw(x, y);
}
コード例 #2
0
ファイル: noShip.cpp プロジェクト: viksuhor/s25client
/// Zeichnet normales Fahren auf dem Meer ohne irgendwelche Güter
void noShip::DrawDriving(DrawPoint& drawPt)
{
    // Interpolieren zwischen beiden Knotenpunkten
    drawPt += CalcWalkingRelative();

    LOADER.GetImageN("boot_z", 13 + ((GetCurMoveDir() + 3) % 6) * 2)->Draw(drawPt, 0, 0, 0, 0, 0, 0, COLOR_SHADOW);
    LOADER.GetImageN("boot_z", 12 + ((GetCurMoveDir() + 3) % 6) * 2)->Draw(drawPt);
}
コード例 #3
0
ファイル: noAnimal.cpp プロジェクト: ikharbeq/s25client
void noAnimal::Draw(int x, int y)
{
    // Tier zeichnen

    /*char str[255];
    sprintf(str,"%u",obj_id);
    LOADER.GetFontN("resource",0)->Draw(x,y,str,0,0xFFFF0000);*/

    switch(state)
    {
        default:
            break;
        case STATE_WALKINGUNTILWAITINGFORHUNTER:
        case STATE_WALKING:
        {
            // Laufend (bzw. Ente schwimmend zeichnen)

            // Interpolieren zwischen beiden Knotenpunkten
            CalcWalkingRelative(x, y);

            unsigned ani_step = GAMECLIENT.Interpolate(ASCENT_ANIMATION_STEPS[ascent], current_ev) % ANIMALCONSTS[species].animation_steps;

            // Zeichnen
            LOADER.animal_cache[species][GetCurMoveDir()][ani_step].draw(x, y);

            // Bei Enten und Schafen: Soll ein Sound gespielt werden?
            if(species == SPEC_DUCK || species == SPEC_SHEEP)
            {
                unsigned int now = VIDEODRIVER.GetTickCount();
                // Wurde der Soundzeitpunkt schon überschritten?
                if(now > sound_moment)
                {
                    // Wenns in dem jeweiligen Rahmen liegt, Sound abspielen
                    if((now < sound_moment + 1000) && !GAMECLIENT.IsPaused())
                        LOADER.GetSoundN("sound", (species == SPEC_SHEEP) ? 94 : 95)->Play(50 + rand() % 70, false);

                    // Neuen Zeitpunkt errechnen
                    sound_moment = now + 8000 + rand() % 5000;
                }
            }

        } break;
        case STATE_WAITINGFORHUNTER:
        case STATE_PAUSED:
        {
            // Stehend zeichnen
            LOADER.animal_cache[species][GetCurMoveDir()][0].draw(x, y);
        } break;
        case STATE_DEAD:
        {
            if (LOADER.animal_cache[species][0][ANIMAL_MAX_ANIMATION_STEPS].isGenerated())
            {
                LOADER.animal_cache[species][0][ANIMAL_MAX_ANIMATION_STEPS].draw(x, y);
            }
        } break;
        case STATE_DISAPPEARING:
        {
            // Alpha-Wert ausrechnen
            unsigned char alpha = 0xFF - GAMECLIENT.Interpolate(0xFF, current_ev);

            // Gibts ein Leichenbild?
            if (LOADER.animal_cache[species][0][ANIMAL_MAX_ANIMATION_STEPS].isGenerated())
            {
                LOADER.animal_cache[species][0][ANIMAL_MAX_ANIMATION_STEPS].draw(x, y, SetAlpha(COLOR_WHITE, alpha));
            }
            else
            {
                // Stehend zeichnen
                LOADER.animal_cache[species][GetCurMoveDir()][0].draw(x, y, SetAlpha(COLOR_WHITE, alpha));
            }

        } break;
    }

}