//=========================================================
// HandleAnimEvent - catches the monster-specific messages
// that occur when tagged animation frames are played.
//
// Returns number of events handled, 0 if none.
//=========================================================
void COtis :: HandleAnimEvent( MonsterEvent_t *pEvent )
{
	switch( pEvent->event )
	{
		case OTIS_AE_SHOOT:
			Eagle();
		break;

		case OTIS_AE_DRAW:
			// otis's bodygroup switches here so he can pull gun from holster
			SetBodygroup( OT_GUN_GROUP, OT_GUN_DRAWN );
			m_fGunDrawn = TRUE;
		break;

		case OTIS_AE_HOLSTER:
			// change bodygroup to replace gun in holster
			SetBodygroup( OT_GUN_GROUP, OT_GUN_HOLSTER );
			m_fGunDrawn = FALSE;
		break;

		default:
			CTalkMonster::HandleAnimEvent( pEvent );
	}
}
Exemple #2
0
EXPORT(void) FlipScreen()
{
    if (SDL_MUSTLOCK(SDLScreenBuffer))
        if (SDL_LockSurface(SDLScreenBuffer) != 0)
            return;

    int pitch = SDLScreenBuffer->pitch / sizeof(BGRA);

    if (Config.scale)
    {

        switch (Config.filter)
        {

            case I_NONE:
                DirectScale((dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

            case I_SCALE2X:
                Scale2x(    (dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

            case I_EAGLE:
                Eagle(      (dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

            case I_HQ2X:
                hq2x(       (dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

            case I_2XSAI:
                _2xSaI(     (dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

            case I_SUPER_2XSAI:
                Super2xSaI( (dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

            case I_SUPER_EAGLE:
                SuperEagle( (dword*)SDLScreenBuffer->pixels, pitch, (dword*)ScreenBuffer, ScreenBufferWidth, ScreenBufferHeight);
                break;

        }
    }
    else
    {
        BGRA* dst = (BGRA*)SDLScreenBuffer->pixels;
        BGRA* src = ScreenBuffer;

        for (int i = 0; i < ScreenBufferHeight; ++i)
        {
            memcpy(dst, src, ScreenBufferWidth * sizeof(BGRA));
            dst += pitch;
            src += ScreenBufferWidth;
        }
    }

    if (SDL_MUSTLOCK(SDLScreenBuffer))
        SDL_UnlockSurface(SDLScreenBuffer);

    SDL_Flip(SDLScreenBuffer);

}