From abf676161d824c486fa8f241ed668b0c6382436d Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 21 Apr 2001 17:29:15 +0000 Subject: [PATCH] --- source/enemy/npc.cpp | 2 +- source/enemy/nsdart.cpp | 21 ++++++++++++++++++--- source/enemy/nsjfish.cpp | 16 ++++++++++++++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index d9241fc70..6256b3143 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -725,7 +725,7 @@ void CNpcEnemy::init() DVECTOR ofs = getCollisionSize(); m_drawOffset.vx = 0; - m_drawOffset.vy = 0; + m_drawOffset.vy = -( ofs.vy >> 1 ); setCollisionCentreOffset( 0, -( ofs.vy >> 1 ) ); diff --git a/source/enemy/nsdart.cpp b/source/enemy/nsdart.cpp index 8cbaf3bfe..10017fa2b 100644 --- a/source/enemy/nsdart.cpp +++ b/source/enemy/nsdart.cpp @@ -39,14 +39,29 @@ void CNpcSquidDartEnemy::render() DVECTOR renderPos; DVECTOR offset = CLevel::getCameraPos(); - renderPos.vx = Pos.vx - offset.vx; - renderPos.vy = Pos.vy - offset.vy; + int frame = 6 + ( m_frame >> 8 ); + + int spriteWidth = m_spriteBank->getFrameWidth( frame ); + int spriteHeight = m_spriteBank->getFrameHeight( frame ); + + renderPos.vx = Pos.vx - offset.vx + m_drawOffset.vx; + + if ( m_reversed ) + { + renderPos.vx += spriteWidth >> 1; + } + else + { + renderPos.vx -= spriteWidth >> 1; + } + + renderPos.vy = Pos.vy - offset.vy - ( spriteHeight >> 1 ) + m_drawOffset.vy; if ( renderPos.vx >= 0 && renderPos.vx <= VidGetScrW() ) { if ( renderPos.vy >= 0 && renderPos.vy <= VidGetScrH() ) { - SprFrame = m_spriteBank->printFT4(6 + (m_frame>>8),renderPos.vx,renderPos.vy,m_reversed,0,10); + SprFrame = m_spriteBank->printFT4(frame,renderPos.vx,renderPos.vy,m_reversed,0,10); setRGB0( SprFrame, 255, 128, 255 ); } } diff --git a/source/enemy/nsjfish.cpp b/source/enemy/nsjfish.cpp index ef5947270..5aa8677ea 100644 --- a/source/enemy/nsjfish.cpp +++ b/source/enemy/nsjfish.cpp @@ -46,9 +46,21 @@ void CNpcSmallJellyfishEnemy::render() // Render DVECTOR renderPos; DVECTOR offset = CLevel::getCameraPos(); + int spriteWidth = m_spriteBank->getFrameWidth( m_frame >> 8 ); + int spriteHeight = m_spriteBank->getFrameHeight( m_frame >> 8 ); - renderPos.vx = Pos.vx - offset.vx; - renderPos.vy = Pos.vy - offset.vy; + renderPos.vx = Pos.vx - offset.vx + m_drawOffset.vx; + + if ( m_reversed ) + { + renderPos.vx += spriteWidth >> 1; + } + else + { + renderPos.vx -= spriteWidth >> 1; + } + + renderPos.vy = Pos.vy - offset.vy - ( spriteHeight >> 1 ) + m_drawOffset.vy; if ( renderPos.vx >= 0 && renderPos.vx <= VidGetScrW() ) {