/// 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); }
/// 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); }
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; } }