This commit is contained in:
Paul 2001-05-01 20:23:32 +00:00
parent d696597924
commit 9c548b05e2
7 changed files with 54 additions and 1 deletions

View file

@ -1688,6 +1688,18 @@ void CPlayer::setPlayerCollisionSize(int _x,int _y,int _w,int _h)
setCollisionSize(_w,_h); setCollisionSize(_w,_h);
setCollisionCentreOffset(_x,_y); setCollisionCentreOffset(_x,_y);
} }
void CPlayer::getPlayerCollisionSize(int *_x,int *_y,int *_w,int *_h)
{
DVECTOR offset,size;
offset=getCollisionCentreOffset();
size=getCollisionSize();
*_x=offset.vx;
*_y=offset.vy;
*_w=size.vx;
*_h=size.vy;
}
/*=========================================================================== /*===========================================================================
end */ end */

View file

@ -337,6 +337,7 @@ public:
}; };
void resetPlayerCollisionSizeToBase(); void resetPlayerCollisionSizeToBase();
void setPlayerCollisionSize(int _x,int _y,int _w,int _h); void setPlayerCollisionSize(int _x,int _y,int _w,int _h);
void getPlayerCollisionSize(int *_x,int *_y,int *_w,int *_h);

View file

@ -62,6 +62,10 @@ void CPlayerModeChop::enter()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
int chopcsx=0;
int chopcsy=-30;
int chopcsw=80;
int chopcsh=60;
void CPlayerModeChop::think() void CPlayerModeChop::think()
{ {
// If we're chopping then restore the 'real' anim number/frame before // If we're chopping then restore the 'real' anim number/frame before
@ -78,6 +82,8 @@ void CPlayerModeChop::think()
if(!m_chopping&&getPadInputDown()&PI_ACTION&&canAttackFromThisState()) if(!m_chopping&&getPadInputDown()&PI_ACTION&&canAttackFromThisState())
{ {
m_chopFrame=0; m_chopFrame=0;
getPlayerCollisionSize(&m_savedCSX,&m_savedCSY,&m_savedCSW,&m_savedCSH);
setPlayerCollisionSize(chopcsx,chopcsy,chopcsw,chopcsh);
m_chopping=true; m_chopping=true;
} }
@ -92,6 +98,7 @@ void CPlayerModeChop::think()
m_player->setAnimNo(m_savedAnimNo); m_player->setAnimNo(m_savedAnimNo);
m_player->setAnimFrame(m_savedAnimFrame); m_player->setAnimFrame(m_savedAnimFrame);
m_chopping=false; m_chopping=false;
setPlayerCollisionSize(m_savedCSX,m_savedCSY,m_savedCSW,m_savedCSH);
} }
} }
} }
@ -132,6 +139,28 @@ ATTACK_STATE CPlayerModeChop::getAttackState()
} }
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPlayerModeChop::setPlayerCollisionSize(int _x,int _y,int _w,int _h)
{
if(m_chopping)
{
m_savedCSX=_x;
m_savedCSY=_y;
m_savedCSW=_w;
m_savedCSY=_h;
}
else
{
CPlayerModeBase::setPlayerCollisionSize(_x,_y,_w,_h);
}
}
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:

View file

@ -45,6 +45,8 @@ public:
virtual ATTACK_STATE getAttackState(); virtual ATTACK_STATE getAttackState();
virtual void setPlayerCollisionSize(int _x,int _y,int _w,int _h);
private: private:
int canAttackFromThisState(); int canAttackFromThisState();
@ -52,6 +54,8 @@ private:
int m_chopFrame; int m_chopFrame;
int m_chopping; int m_chopping;
int m_savedCSX,m_savedCSY,m_savedCSW,m_savedCSH;
}; };

View file

@ -480,6 +480,11 @@ void CPlayerModeBase::setPlayerCollisionSize(int _x,int _y,int _w,int _h)
{ {
m_player->setPlayerCollisionSize(_x,_y,_w,_h); m_player->setPlayerCollisionSize(_x,_y,_w,_h);
} }
void CPlayerModeBase::getPlayerCollisionSize(int *_x,int *_y,int *_w,int *_h)
{
m_player->getPlayerCollisionSize(_x,_y,_w,_h);
}
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:

View file

@ -146,7 +146,8 @@ public:
int isOnEdge(); int isOnEdge();
int canMoveLeft(); int canMoveLeft();
int canMoveRight(); int canMoveRight();
void setPlayerCollisionSize(int _x,int _y,int _w,int _h); virtual void setPlayerCollisionSize(int _x,int _y,int _w,int _h);
virtual void getPlayerCollisionSize(int *_x,int *_y,int *_w,int *_h);
void moveLeft(); void moveLeft();
void moveRight(); void moveRight();

View file

@ -141,6 +141,7 @@ public:
// -- Collision -- // -- Collision --
public: public:
DVECTOR getCollisionCentre() {return m_collisionCentre;} DVECTOR getCollisionCentre() {return m_collisionCentre;}
DVECTOR getCollisionCentreOffset() {return m_collisionCentreOffset;}
int getCollisionRadius() {return m_collisionRadius;} int getCollisionRadius() {return m_collisionRadius;}
CRECT getCollisionArea() {return m_collisionArea;} CRECT getCollisionArea() {return m_collisionArea;}
s16 getCollisionAngle() {return m_collisionAngle;} // pkg - move to CNpcPlatform? s16 getCollisionAngle() {return m_collisionAngle;} // pkg - move to CNpcPlatform?