void SayA( unsigned char attrib, register char *cp ) { unsigned char far *scptr = CurrentPos(); unsigned char far *scend = ScrPtr( 80, 25 ); while (*cp) { switch( *cp ) { case '\n': scptr = (unsigned char far *) ((long) scptr + (long) 160 ); case '\r': scptr = (unsigned char far *) ( ( ( (long) scptr - (long) VIDSEG ) / (long) 160 ) * (long) 160 + (long) VIDSEG ); cp++; break; case BELL: Beep(); cp++; break; case TAB: scptr = (unsigned char far *) ( (long) scptr / 16 * 16 ); cp++; break; default: *scptr++ = *cp++; *scptr++ = attrib; break; } if ( scptr > scend ) { ScrollUp( 1, 1, 80, 25, 1 ); scptr -= 160; } } RestoreCurPos( scptr ); }
void RepCharAttr( int times, unsigned char attrib, unsigned char c ) { unsigned char far *scptr = CurrentPos(); while ( times-- ) { *scptr++ = c; *scptr++ = attrib; } }
void CDoor::ResetCollision() { for (int i = 0; i < m_Length - 1; i++) { vec2 CurrentPos(m_Pos.x + (m_Direction.x * i), m_Pos.y + (m_Direction.y * i)); if (GameServer()->Collision()->CheckPoint(CurrentPos) || GameServer()->Collision()->GetTile(m_Pos.x, m_Pos.y) || GameServer()->Collision()->GetFTile(m_Pos.x, m_Pos.y)) break; else GameServer()->Collision()->SetDCollisionAt( m_Pos.x + (m_Direction.x * i), m_Pos.y + (m_Direction.y * i), TILE_STOPA, 0/*Flags*/, m_Number); } }