|
From: SakirSoft <sak...@us...> - 2005-09-23 23:47:08
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29380 Added Files: helper.cpp helper.h Log Message: Helper class for player helpers --- NEW FILE: helper.cpp --- #include "global.h" CHelperPlayer::CHelperPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm, CControllerExecuter *exe,CCmdManager *cmd,CSoundManager *snd,bool bOwnPal) : CPlayer::CPlayer(sff,air,state,vm,exe,cmd,snd,bOwnPal) { bHelperValid = true; nId = 0; nPosType = 1; bKeyCtrl = false; nSuperMoveTime = 0; nPauseMoveTime = 0; m_pVM = vm; m_pExe = exe; ResetPlayer(); bRightFaced=true; bAlive=true; bAutoTurn=true; bWalk=true; bDebugInfo=false; bHitDefPresit=false; bHitCounterPresit=false; bMoveHitPresit=false; bHitDef=false; bPause=false; bChangeState = false; bHitPause = false; bHitTarget = false; bPosFreez = false; bPhysicsUpdated = false; nLife=1000; nPower=2000; nStateTime=0; nStateType=0; nPhysic=0; nMoveType=0; //x=y=0; xVel=0; yVel=0; nSprPrio=5; AttackerPlayer = 0; nBackEdgeBodyDist = 0; nBackEdgeDist = 0; nFrontEdgeBodyDist = 0; nFrontEdgeDist = 0; nMoveContact = nMoveHit = nMoveGuarded = 0; nDelayedStateNumber = -1; nHitPauseTime = 0; bHitPause = false; bShakePause = false; fDefence = 0.0; bAlpha = false; dest_alpha = 0; src_alpha = 0; fAngle=45.0; player = 0; SetGroundValue( mugen->GetEngine()->GetGroundValue() ); /* CPlayer::SetPosY( 0 ); CPlayer::SetPosX ( 0 );*/ SetDebug(false); } CHelperPlayer::~CHelperPlayer() { } void CHelperPlayer::Think() { CPlayer::Pause(bPause); if( !bPause ) { CheckHelperStatus(); } DrawPlayer(); } bool CHelperPlayer::isValid() { return bHelperValid; } void CHelperPlayer::CheckHelperStatus() { bHitTarget = false; UpDateFacing(); CalcBackEdgeDist(); HandlePhysic(); CheckMoveTriggers(); CheckLifeStatus(); CheckHitBySlots(); list<CBaseObject*>* ObjList = mugen->GetEngine()->GetObjectList(); for( BI i = ObjList->begin(); i != ObjList->end(); ++i) { CBaseObject* object = *i; if( object->GetType() == CBaseObject::PlayerObject ) { CPlayer *opponent = reinterpret_cast<CPlayer*>(object); if(opponent->nTeamID != nTeamID) { //only check for player which are not in ouer team m_pVM->SetPlayers(this,opponent); m_pExe->SetPlayer(this,opponent); CheckHelperFSM(); HandleHitDef(opponent); HandleGetHitState(); } } } UpDateHitPause(); //we hit a target so disable the hit def ) if( bHitTarget ) { bHitDef = false; SetHitPause( myGetHitVar.pauseTime ); } //only update the state time if we ar not maked a changestate if(!bChangeState && !bPause && !bHitPause) nStateTime++; ResetFlags(); } void CHelperPlayer::CheckHelperFSM() { CheckNormalState(); if( bKeyCtrl ) { CheckSpecialState(); CheckInternalState(); } } void CHelperPlayer::SetState(s32 nStateNumber) { ChangeState( nStateNumber ); } void CHelperPlayer::SetHelperPosX( float x_pos ) { switch( nPosType ) { //postype = p1 & p2 case 1: case 2: if( player->GetRightFaced() ) x = x_pos + player->GetPosX(); else x = -x_pos + player->GetPosX(); break; //postpye = front case 3: if( !player->GetRightFaced() ) x = x_pos ; else x = 320 - x_pos; break; //postpye = back case 4: if( player->GetRightFaced() ) x = x_pos ; else x = 320 - x_pos; break; //postpye = left case 5: x = x_pos ; break; //postpye = right case 6: x = 320 - x_pos; break; } } void CHelperPlayer::SetHelperPosY( float y_pos ) { y = y_pos + player->GetPosY()+ player->GetGroundValue(); } void CHelperPlayer::SetFacing( int facing ) { switch( nPosType ) { //postype = p1 & p2 case 1: case 2: if( player->GetRightFaced() && facing == 1 ) FaceRight(); if( player->GetRightFaced() && facing == -1 ) FaceLeft(); if( !player->GetRightFaced() == facing == 1 ) FaceLeft(); if( !player->GetRightFaced() && facing == -1 ) FaceRight(); break; //postpye = front case 3: break; //postpye = back case 4: break; } } --- NEW FILE: helper.h --- // Open Mugen is a redevelopment of Elecbyte's M.U.G.E.N wich will be 100% compatible to it // Copyright (C) 2004 Sahin Vardar // // If you know bugs or have a wish on Open Muegn // Feel free and email me: sa...@ho... ICQ:317502935 // Web: http://openmugen.sourceforge.net/ // -------------------------------------------------------------------------- // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #ifndef __HELPER__H #define __HELPER__H class CHelperPlayer : public CPlayer { bool bHelperValid; char strHelperName[255]; int nId; int nPosType; bool bKeyCtrl; bool bPause; int nSuperMoveTime ; int nPauseMoveTime ; CVirtualMachine *m_pVM; CControllerExecuter *m_pExe; void CheckHelperStatus(); void CheckHelperFSM(); CPlayer *player; CPlayer *parent; public: CHelperPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm,CControllerExecuter *exe,CCmdManager *cmd,CSoundManager *snd,bool bOwnPal); ~CHelperPlayer(); int GetType() {return CBaseObject::HelperObject;} void Think(); bool isValid(); void Pause(bool pause) {bPause = pause; CPlayer::Pause(bPause); } void SetInput( bool *input ) { inputs = input;} void SetName(char *strName); void SetId(int id ) { nId = id; } void SetPosType(int type ) { nPosType=type; } void SetState(s32 nStateNumber); void SetPlayer(CPlayer *p) { player = p; } void SetHelperPosX( float x_pos ); void SetHelperPosY( float y_pos ); void SetKeyCtrl( bool key ) { bKeyCtrl = key;} void SetSuperMoveTime( int time ) { nSuperMoveTime = time; } void SetPauseMoveTime( int time ) { nPauseMoveTime = time; } void SetFacing( int facing ); void DestroySelf() { bHelperValid = false; } void SetParent(CPlayer *p) { parent = p; } CPlayer *GetParent() {return parent;} }; #endif |