|
From: SakirSoft <sak...@us...> - 2005-09-06 20:46:29
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4562 Modified Files: ControllerExecuter.cpp SffManager.cpp SffManager.h StateParser.cpp StateParser.h VM.cpp VideoSystem.cpp VideoSystem.h engine.cpp engine.h main.cpp player.cpp player.h structs.h Log Message: some more controllers are working now Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- ControllerExecuter.cpp 1 Sep 2005 20:13:24 -0000 1.2 +++ ControllerExecuter.cpp 6 Sep 2005 20:46:04 -0000 1.3 @@ -194,6 +194,8 @@ void CControllerExecuter::AngleMul() void CControllerExecuter::AngleSet() { ANGLEDRAW *temp = (ANGLEDRAW*)lpController; + + m_CurrentPlayer->SetAngle( m_pVM->Execute( temp->value ) ); PrintMessage("TODO:Implement AngleSet"); } @@ -301,9 +303,11 @@ void CControllerExecuter::FallEnvShake() void CControllerExecuter::DefenceMulSet() { - DEFENCEMULSET *temp = (DEFENCEMULSET*)lpController; + DEFENCEMULSET *temp = (DEFENCEMULSET*)lpController; - PrintMessage("TODO: implement DefenceMulSet controller"); + m_CurrentPlayer->SetDefenceValue( m_pVM->Execute( temp->vlaue ) ); + + // PrintMessage("test: implement DefenceMulSet controller"); } void CControllerExecuter::Explod() { @@ -345,6 +349,7 @@ void CControllerExecuter::Explod() explod->SetAccelY(m_pVM->Execute(temp->accel_y) ); mugen->GetEngine()->AddObject( explod ); + // m_CurrentPlayer->AddExplodToPlayer( explod ); PrintMessage("Complete the controller: Explod controller"); @@ -420,11 +425,12 @@ void CControllerExecuter::HitVelSet() void CControllerExecuter::HitFallSet() { HITFALLSET *temp = (HITFALLSET*)lpController; - PrintMessage("TODO: implement Hitt controller"); + PrintMessage("TODO: implement HitFallSet controller"); } void CControllerExecuter::HitFallDamage() { - PrintMessage("TODO: implement HitFallDamage controller"); + //PrintMessage("TODO: implement HitFallDamage controller"); + m_CurrentPlayer->HitFallDamage(); } void CControllerExecuter::NotHitBy() @@ -780,6 +786,7 @@ void CControllerExecuter::HitDef() hitvar.animtype = temp->nAnimType; hitvar.airtype = temp->nAirType; hitvar.damage = (int)m_pVM->Execute(temp->damage,0); + hitvar.fall_damage =(int)m_pVM->Execute(temp->fall_damage); hitvar.guardDamage = (int)m_pVM->Execute( temp->guardDamge ); hitvar.fall = (int)m_pVM->Execute(temp->fall,0); hitvar.slidetime =(int)m_pVM->Execute(temp->ground_slidetime,0); @@ -969,6 +976,16 @@ void CControllerExecuter::VarAdd() void CControllerExecuter::VarRangeSet() { VARRANGESET *temp = (VARRANGESET*)lpController; + + int start = m_pVM->Execute( temp->first ); + int end = m_pVM->Execute( temp->last ); + + if( temp->fvalue ) + m_CurrentPlayer->fVarRangeSet(m_pVM->Execute(temp->fvalue),start,end); + + if( temp->value ) + m_CurrentPlayer->iVarRangeSet(m_pVM->Execute(temp->value),start,end); + PrintMessage("TODO: implement VarRangeSet()"); } @@ -1055,7 +1072,10 @@ void CControllerExecuter::AttackDist() void CControllerExecuter::AttackMulSet() { ATTACKDIST *temp = (ATTACKDIST*)lpController; - PrintMessage("TODO: implement AttackMulSet"); + + m_CurrentPlayer->SetAttackValue( m_pVM->Execute( temp->value ) ); + + //PrintMessage("TODO: implement AttackMulSet"); } @@ -1100,13 +1120,16 @@ void CControllerExecuter::EnvColor() void CControllerExecuter::ExplodBindTime() { EXPLODEBINDTIME *temp = (EXPLODEBINDTIME*)lpController; + + PrintMessage("TODO: implement ExplodBindTime"); } void CControllerExecuter::Gravity() { - PrintMessage("TODO: implement Gravity"); +// PrintMessage("TODO: implement Gravity"); + m_CurrentPlayer->VelAddY( m_CurrentPlayer->ConstData.Movement.yaccl ); } void CControllerExecuter::Helper() @@ -1183,6 +1206,7 @@ void CControllerExecuter::ModifyExplod() void CControllerExecuter::MoveHitReset() { PrintMessage("TODO: implement MoveHitReset controller"); + m_CurrentPlayer->MoveHitReset(); } void CControllerExecuter::Offset() @@ -1228,7 +1252,12 @@ void CControllerExecuter::Pause() void CControllerExecuter::PlayerPush() { PLAYERPUSH *temp = (PLAYERPUSH*)lpController; - PrintMessage("TODO: implement PlayerPush controller"); + + if( m_pVM->Execute( temp->value ) > 0) + m_CurrentPlayer->SetPlayerPush( true ); + else + m_CurrentPlayer->SetPlayerPush( false ); + // PrintMessage("TODO: implement PlayerPush controller"); } Index: SffManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- SffManager.cpp 30 Aug 2005 15:09:17 -0000 1.1.1.1 +++ SffManager.cpp 6 Sep 2005 20:46:04 -0000 1.2 @@ -54,6 +54,7 @@ CSffManager::CSffManager(CSffManager *pS ColorPallet = pSuperClass->GetPal(); nFlags=CVideoSystem::BLT_NORMAL; nTimer = 0; + FxPallet = new SDL_Color[256]; } @@ -65,7 +66,8 @@ CSffManager::~CSffManager() FreeManager(); delete[] ColorPallet; delete[] FxPallet; - } + }else + delete[] FxPallet; } @@ -159,7 +161,7 @@ bool CSffManager::LoadActToSff(const cha } //blt function -void CSffManager::BlitSprite(s16 nGroupNumber,s16 nImageNumber,s16 x, s16 y,float x_scale,float y_scale) +void CSffManager::BlitSprite(s16 nGroupNumber,s16 nImageNumber,s16 x, s16 y,float x_scale,float y_scale,bool bAlpha,int dest,int src,float rotate) { //search the Sprite int the list int i=FindSprite(nGroupNumber,nImageNumber); @@ -185,17 +187,50 @@ void CSffManager::BlitSprite(s16 nGroupN SDL_Color *pPal=sprite->ColorPallet; + + + if( bSharedPal ) pPal = ColorPallet; if( bFxPal && bSharedPal ) pPal = FxPallet; + + /*for( int i=1;i<255;i++) + { + u8 r,g,b; + + /* FxPallet[i].r=pPal[i].r; //grayscale effect + FxPallet[i].g=pPal[i].r; + FxPallet[i].b=pPal[i].r; + + FxPallet[0].r=255; + FxPallet[0].g=0; + FxPallet[0].b=255; + + FxPallet[i].r = 255-pPal[i].r; + FxPallet[i].g = 255-pPal[i].g; + FxPallet[i].b = 255-pPal[i].b; //invers color + + FxPallet[0].r=255; + FxPallet[0].g=0; + FxPallet[0].b=255; + + + + + } + + + + pPal = &FxPallet[0]; */ + mugen->GetVideo()->AddBlit(sprite,x,y,x_scale,y_scale, (nFlags & CVideoSystem::BLT_MASKED) == CVideoSystem::BLT_MASKED, - nSprPrior,nFlags,0,pPal); + nSprPrior,nFlags,rotate,pPal,bAlpha,dest,src); } @@ -248,7 +283,7 @@ void CSffManager::PrepareAnim2(s32 nAnim //Blit the given animation -void CSffManager::BlitAnim(s16 x, s16 y,float x_scale,float y_scale) +void CSffManager::BlitAnim(s16 x, s16 y,float x_scale,float y_scale,bool bAlpha,int dest,int src,float rotate) { if(Anim==0) return; @@ -272,7 +307,7 @@ void CSffManager::BlitAnim(s16 x, s16 y, BlitSprite(Anim->AnimationElement[nCurrentImage].nGroupNumber, Anim->AnimationElement[nCurrentImage].nImageNumber, - x,y,x_scale,y_scale); + x,y,x_scale,y_scale,bAlpha,dest,src,rotate); nFlags = saveFlags; Index: SffManager.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- SffManager.h 30 Aug 2005 15:09:17 -0000 1.1.1.1 +++ SffManager.h 6 Sep 2005 20:46:04 -0000 1.2 @@ -151,8 +151,8 @@ public: u32 GetBltFlags() {return nFlags;} //x and y value are the axis value not the left corner of the image - void BlitSprite(s16 nGroupNumber,s16 nImageNumber,s16 x, s16 y,float x_scale=1.0,float y_scale=1.0); - void BlitAnim(s16 x, s16 y,float x_scale=1.0,float y_scale=1.0); + void BlitSprite(s16 nGroupNumber,s16 nImageNumber,s16 x, s16 y,float x_scale=1.0,float y_scale=1.0,bool bAlpha = false,int dest =0,int source = 0,float rotate=0); + void BlitAnim(s16 x, s16 y,float x_scale=1.0,float y_scale=1.0,bool bAlpha = false,int dest=0,int src=0,float rotate=0); // prepare the animation for the first game tick void PrepareAnim(s32 nAnim,u16 nCurrElem=1); void PrepareAnim2(s32 nAnim,ActionElement *Anim2,u16 nCurrElem=1); Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- StateParser.cpp 1 Sep 2005 20:13:24 -0000 1.2 +++ StateParser.cpp 6 Sep 2005 20:46:04 -0000 1.3 @@ -2974,13 +2974,13 @@ void CStateParser::ParseVarRangeSet() if( !tok.CheckToken("=") ) Error("expected ="); - temp->vlaue = GenerateInstruction(); + temp->value = GenerateInstruction(); }else if(tok.CheckToken("fvalue")) { if( !tok.CheckToken("=") ) Error("expected ="); - temp->fvlaue = GenerateInstruction(); + temp->fvalue = GenerateInstruction(); }else if(tok.CheckToken("first")) { if( !tok.CheckToken("=") ) Index: StateParser.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- StateParser.h 30 Aug 2005 15:09:29 -0000 1.1.1.1 +++ StateParser.h 6 Sep 2005 20:46:04 -0000 1.2 @@ -821,8 +821,8 @@ struct ANGLEDRAW struct VARRANGESET { - INSTRUCTION* vlaue; - INSTRUCTION* fvlaue; + INSTRUCTION* value; + INSTRUCTION* fvalue; INSTRUCTION* first; INSTRUCTION* last; Index: VM.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- VM.cpp 1 Sep 2005 20:13:24 -0000 1.2 +++ VM.cpp 6 Sep 2005 20:46:04 -0000 1.3 @@ -1586,7 +1586,7 @@ void CVirtualMachine::HitOver() void CVirtualMachine::HitPauseTime() { - m_Stack.Push(0,"#"); + m_Stack.Push(m_CurrentPlayer->GetHitPause(),"#"); } void CVirtualMachine::HitShakeOver() @@ -1598,10 +1598,19 @@ void CVirtualMachine::HitShakeOver() void CVirtualMachine::HitVel() { PopValue(); - temp1=m_pop.Value; //Pop the component value //1==X 2==y + if(m_Stack.Pop().Value==1) + { + m_Stack.Push(-m_CurrentPlayer->GetVelX(),"#"); + }//Else y value + else + { + //default + m_Stack.Push(-m_CurrentPlayer->GetVelY(),"#"); + } + m_Stack.Push(0,"#"); } @@ -1609,7 +1618,7 @@ void CVirtualMachine::HitVel() //ID return the ID number of the player void CVirtualMachine::PlayerIdent() { - // m_Stack.Push((float)m_CurrentPlayer->PlRtInfo.nID,"#"); + m_Stack.Push((float)m_CurrentPlayer->GetPlayerId(),"#"); } Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- VideoSystem.cpp 1 Sep 2005 20:13:24 -0000 1.2 +++ VideoSystem.cpp 6 Sep 2005 20:46:04 -0000 1.3 @@ -156,7 +156,7 @@ void CVideoSystem::Draw() //SDL_SoftStretch(work,0,screen,0); //SDL_UpdateRect(screen,0,0,640,480); - SDL_Flip(screen); + SDL_Flip(screen); @@ -263,7 +263,7 @@ SDL_Surface * CVideoSystem::CreateSurfac } -void CVideoSystem::AddBlit(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,int SprPrior,int nFlag,int rotate ,SDL_Color *pFX) +void CVideoSystem::AddBlit(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,int SprPrior,int nFlag,float rotate ,SDL_Color *pFX,bool bAlpha,int dest,int src) { BlitList[nBltCount].lpSprite = lpSprite; BlitList[nBltCount].x = x; @@ -275,6 +275,11 @@ void CVideoSystem::AddBlit(SFFSPRITE *lp BlitList[nBltCount].rotate = rotate; BlitList[nBltCount].PallFX = pFX; BlitList[nBltCount].nBlitFlag = nFlag; + BlitList[nBltCount].bAlpha = bAlpha; + BlitList[nBltCount].dest_alpha = dest; + BlitList[nBltCount].source_alpha = src; + + nBltCount++; @@ -302,12 +307,13 @@ void CVideoSystem::BltImage(BltList * sp { //set the used Pal for this blit pUsedPal = sprite->PallFX; - + + if( (sprite->nBlitFlag & BLT_NORMAL) == BLT_NORMAL) - NormalBlt( sprite->lpSprite,sprite->x,sprite->y,sprite->xScale,sprite->yScale,sprite->bMasked); + NormalBlt( sprite->lpSprite,sprite->x,sprite->y,sprite->xScale,sprite->yScale,sprite->bMasked,sprite->rotate,sprite->bAlpha,sprite->dest_alpha,sprite->source_alpha); if( (sprite->nBlitFlag & BLT_FLIPH) == BLT_FLIPH) - NormalFlipH( sprite->lpSprite,sprite->x,sprite->y,sprite->xScale,sprite->yScale,sprite->bMasked); + NormalFlipH( sprite->lpSprite,sprite->x,sprite->y,sprite->xScale,sprite->yScale,sprite->bMasked,sprite->rotate,sprite->bAlpha,sprite->dest_alpha,sprite->source_alpha); // delete sprite->lpSprite->byPcxFile; } @@ -336,7 +342,7 @@ void CVideoSystem::DrawAllImages() } -void CVideoSystem::NormalBlt(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask) +void CVideoSystem::NormalBlt(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src) { u32 nColorKey = SDL_MapRGB(work->format,pUsedPal[0].r,pUsedPal[0].g,pUsedPal[0].b); @@ -362,7 +368,7 @@ void CVideoSystem::NormalBlt(SFFSPRITE * } -void CVideoSystem::NormalFlipH(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask) +void CVideoSystem::NormalFlipH(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src) { u32 nColorKey = SDL_MapRGB(work->format,pUsedPal[0].r,pUsedPal[0].g,pUsedPal[0].b); @@ -388,12 +394,12 @@ void CVideoSystem::NormalFlipH(SFFSPRITE } -void CVideoSystem::NormalFlipV(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask) +void CVideoSystem::NormalFlipV(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src) { } -void CVideoSystem::NormalFlipHV(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask) +void CVideoSystem::NormalFlipHV(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src) { } @@ -415,6 +421,7 @@ u16 CVideoSystem::MapRGB(Uint8 red,Uint SDL_Surface *CVideoSystem::ApplyPalEffect( SDL_Surface* sprite , SDL_Color *palEffect) { + if( palEffect != 0) SDL_SetColors( sprite, palEffect,0,256); Index: VideoSystem.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- VideoSystem.h 30 Aug 2005 15:09:31 -0000 1.1.1.1 +++ VideoSystem.h 6 Sep 2005 20:46:04 -0000 1.2 @@ -38,8 +38,11 @@ struct BltList float yScale; int nBlitFlag; int nSprPrio; - int rotate; + float rotate; SDL_Color *PallFX; + bool bAlpha; + int dest_alpha; + int source_alpha; }; @@ -102,16 +105,18 @@ enum RECTTYPES void DrawLine(Sint16 x,Sint16 y,Sint16 x1,Sint16 y1,Uint8 R,Uint8 G,Uint8 B); void DrawText(s16 x,s16 y,char *strText,...); - void AddBlit(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,int SprPrior ,int nFlag ,int rotate = 0,SDL_Color *pFX =0); + void AddBlit(SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,int SprPrior ,int nFlag ,float rotate = 0,SDL_Color *pFX =0,bool bAlpha = false,int dest=0,int src = 0); void AddRect(Sint16 x,Sint16 y,Sint16 w,Sint16 h,u8 R,u8 G,u8 B,u8 nAlpha,int nPrio,int type); void DrawAllImages(); void BltImage(BltList *sprite); //normal Blt - void NormalBlt (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask); - void NormalFlipH (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask); - void NormalFlipV (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask); - void NormalFlipHV (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask); + void NormalBlt (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src); + void NormalFlipH (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src); + void NormalFlipV (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src); + void NormalFlipHV (SFFSPRITE *lpSprite,s16 x,s16 y,float xScale,float yScale,bool bMask,float rotate,bool bAlpha,int dest,int src); + +// void ParallaxBlt(SFFSPRITE *lpSprite,s16 start_x,s16 start_y,s16, SDL_Surface* CreateSurface(int x,int y); SDL_Surface *CreateSurfaceFromSffSprite(SFFSPRITE *lpSprite); Index: engine.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/engine.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- engine.cpp 30 Aug 2005 15:09:07 -0000 1.1.1.1 +++ engine.cpp 6 Sep 2005 20:46:04 -0000 1.2 @@ -128,6 +128,8 @@ void CEngine::InitEngine(CMemManager *m, //Set all needed pointer to need class by class player player1.SetPointers(v,m->GetAllocater(P1),t,this,ipP1); player2.SetPointers(v,m->GetAllocater(P2),t,this,ipP2); + // player3.SetPointers(v,m->GetAllocater(P2),t,this,ipP2); + /* player3.SetPointers(v,m->GetAllocater(P3),t,this); player4.SetPointers(v,m->GetAllocater(P4),t,this);*/ @@ -136,6 +138,7 @@ void CEngine::InitEngine(CMemManager *m, This value should be read out the stage def*/ player1.SetGroundValue(220); player2.SetGroundValue(220); + // player3.SetGroundValue(220); //this values also should read out of the stage def @@ -144,6 +147,8 @@ void CEngine::InitEngine(CMemManager *m, player2.SetPosX(70); player2.SetPosY(0); + + memset(&playerdef,0,sizeof(playerdef)); LoadPlayerDef("chars" PATH_SEP_STR "kfm" PATH_SEP_STR "kfm.def",playerdef); @@ -153,6 +158,8 @@ void CEngine::InitEngine(CMemManager *m, LoadPlayerDef("chars" PATH_SEP_STR "kfm" PATH_SEP_STR "kfm.def",playerdef); player2.LoadPlayer(playerdef); + // player3.LoadPlayer(playerdef); + // player2.FaceLeft(); player2.TurnPlayer(); @@ -160,11 +167,12 @@ void CEngine::InitEngine(CMemManager *m, player1.nTeamID=1; player2.nTeamID=2; + // player3.nTeamID=2; AddObject(&player1); AddObject(&player2); - + Index: engine.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/engine.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- engine.h 30 Aug 2005 15:09:07 -0000 1.1.1.1 +++ engine.h 6 Sep 2005 20:46:04 -0000 1.2 @@ -7,7 +7,7 @@ typedef list<CBaseObject*>::iterator BI; class CEngine { -CPlayer player1,player2;/*,player3,player4;*/ +CPlayer player1,player2;/*player3,player4;*/ //this containt the global list with all players and helper CPlayer *m_PlayerList[maxPlayer]; //common sound and fightfx Index: main.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/main.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- main.cpp 30 Aug 2005 15:09:10 -0000 1.1.1.1 +++ main.cpp 6 Sep 2005 20:46:04 -0000 1.2 @@ -23,7 +23,7 @@ int main(int argc, char **argv) #if defined(_WIN32) && defined(_DEBUG) -//this is going to need to go away i think +//this is going to need to go away i think :SakirSoft is only for debugin with dev-c++ chdir( "C:\\OpenMugen\\BIN" ); #endif Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- player.cpp 1 Sep 2005 20:13:24 -0000 1.2 +++ player.cpp 6 Sep 2005 20:46:04 -0000 1.3 @@ -60,6 +60,11 @@ CPlayer::CPlayer() nHitPauseTime = 0; bHitPause = false; bShakePause = false; + fDefence = 0.0; + bAlpha = false; + dest_alpha = 0; + src_alpha = 0; + fAngle=45.0; TargetListNum = 0; memset( TargetList,0,sizeof(CPlayer*)); @@ -542,7 +547,7 @@ void CPlayer::HandleHitDef(CPlayer *oppo //Is the opponent guarding this hit? if( opponent->GetDistX() <= GetAttackDist() && IsHitDef() && - opponent->IsHoldBack() ) + opponent->IsHoldBack() && opponent->GetMoveType() == idle ) { HandleGuard( opponent , bP1Hit); bGuard = true; @@ -550,7 +555,9 @@ void CPlayer::HandleHitDef(CPlayer *oppo if( bP1Hit && IsHitDef() && !bGuard ) - HandleHit( opponent ); + HandleHit( opponent ); + + } @@ -672,6 +679,18 @@ void CPlayer::CalcCornerPushVelOff( CPla /* ================================================================================ +Adds damage to the opponent +================================================================================ +*/ +void CPlayer::AddDamage(s16 nDamageAmount,CPlayer *opponent) +{ + nDamageAmount = ( nDamageAmount * fAttackPower ) / opponent->GetDefenceValue(); + opponent->LifeAdd( -nDamageAmount ); + +} + +/* +================================================================================ Handles a hit PlayHit sound, apply hit pause, Create spark.... ================================================================================ @@ -718,7 +737,9 @@ void CPlayer::HandleHit(CPlayer *opponen else mugen->GetEngine()->PlaySnd(myGetHitVar.snd_grp,myGetHitVar.snd_item); - opponent->LifeAdd( -myGetHitVar.damage ); + // opponent->LifeAdd( -myGetHitVar.damage / fDefence ); + + AddDamage( myGetHitVar.damage, opponent ); /*Apply hit pause */ @@ -726,7 +747,7 @@ void CPlayer::HandleHit(CPlayer *opponen pause->SetPauseTime( myGetHitVar.pauseTime ); mugen->GetEngine()->AddObject( pause );*/ - SetHitPause( myGetHitVar.pauseTime ); + //SetHitPause( myGetHitVar.pauseTime ); opponent->SetShakePause( myGetHitVar.hitshaketime ); CSffManager *p = myGetHitVar.bPlayerSpark ? GetSff() : mugen->GetEngine()->GetEngineSff(); @@ -760,6 +781,8 @@ void CPlayer::HandleHit(CPlayer *opponen */ void CPlayer::HandleGuard(CPlayer *opponent,bool bP1Hit) { + + if( opponent->GetStateNumber() < 120 || opponent->GetStateNumber() > 140 ) opponent->ChangeState(120); @@ -913,11 +936,11 @@ void CPlayer::HandlePushBehavior(CPlayer or we high enough to jump over the player TODO:Handle air push */ - if(nBodyDistanceX <= 0 && ( opponent->GetPosY() == GetPosY()) && - ( GetRightFaced() != opponent->GetRightFaced() ) ) + if(nBodyDistanceX <= 0 && ( opponent->GetPosY() == GetPosY()) && nBodyDistanceX > -20 && + ( GetRightFaced() != opponent->GetRightFaced() ) && bPlayerPush ) { opponent->PushPlayer(nBodyDistanceX); - xVel*=ConstData.Movement.standFriction; + PushPlayer(nBodyDistanceX); } } @@ -930,15 +953,24 @@ In teammode this should only check for n */ void CPlayer::HandleTurn(CPlayer *opponent) { + if( GetMoveType() != idle ) + return; //This is for turning - if( (nDistanceX < 0) && GetPosY() == 0 && (nCurrStateNumber == 0) && + if( (nDistanceX < 0) && GetPosY() == 0 /* && (nCurrStateNumber == 0)*/ && (nCurrAnimNumber != 5 ) ) { - TurnPlayer(); - ChangeAnim(5); - } + + if( nCurrStateNumber == 0 ) + ChangeAnim(5); + + if( nCurrStateNumber == 11 ) + ChangeAnim(6); + + } + + @@ -1036,7 +1068,11 @@ void CPlayer::CheckGlobalStatus() //we hit a target so disable the hit def ) if( bHitTarget ) + { bHitDef = false; + SetHitPause( myGetHitVar.pauseTime ); + + } } @@ -1071,6 +1107,7 @@ void CPlayer::Think() } DrawPlayer(); + RemoveInvalidExplod(); @@ -1083,7 +1120,7 @@ Updates the MoveHit, MoveGuarded and Mov */ void CPlayer::CheckMoveTriggers() { - if( GetMoveType() != attack ) + if( GetMoveType() != attack || bHitPause ) return; if( nMoveHit ) @@ -1174,6 +1211,8 @@ void CPlayer::ResetFlags() bPhysicsUpdated = false; x_offset = 0; y_offset = 0; + x_scale = ConstData.Size.xScale; + y_scale = ConstData.Size.yScale; } // debug info of the player @@ -1210,11 +1249,12 @@ void CPlayer::Debug() m_pVideoSystem->DrawText(0,90,"NumTargets %i",TargetListNum ); m_pVideoSystem->DrawText(0,100,"BackEdgeBodydist =%f | BackEdge = %f ",nBackEdgeBodyDist,nBackEdgeDist); m_pVideoSystem->DrawText(0,110,"MoveContact %i | MoveHit %i | MoveGuarded %i",nMoveContact, - /*nMoveHit*/InHitVar.hittime, + nMoveHit, nMoveGuarded); m_pVideoSystem->DrawText(0,120,"HitBy1 = %i | NotHitBy1 = %i",HitBySlot1.nTime,NotHitBySlot1.nTime); m_pVideoSystem->DrawText(0,130,"HitBy2 = %i | NotHitBy2 = %i",HitBySlot2.nTime,NotHitBySlot2.nTime); - m_pVideoSystem->DrawText(0,140,"HitTime %i| HitPause =%i",nHitPauseTime,/*bHitPause*/HitShakeOver()); + m_pVideoSystem->DrawText(0,140,"HitTime = %i| HitPause =%i | HitShakeOver %i",nHitPauseTime,bHitPause,HitShakeOver()); + m_pVideoSystem->DrawText(0,150,"Defence = %f | AttackPower = %f | ExplodNum %i",fDefence,fAttackPower,m_ExplodList.size()); @@ -1280,6 +1320,7 @@ void CPlayer::ResetPlayer() nFront=ConstData.Size.nGroundFront; nBack=ConstData.Size.nGroundBack; bChangeState=false; + bPlayerPush = true; nStateTime=0; nStateType=0; @@ -1291,6 +1332,10 @@ void CPlayer::ResetPlayer() bShakePause = false; x_offset = 0; y_offset = 0; + fDefence = ConstData.Data.nDefence /100.0; + fAttackPower = ConstData.Data.nAttack / 100.0; + x_scale = ConstData.Size.xScale; + y_scale = ConstData.Size.yScale; memset(intPresistIndex,0,sizeof(intPresistIndex)); memset(floatPresistIndex,0,sizeof(floatPresistIndex)); @@ -1431,7 +1476,8 @@ void CPlayer::ChangeAnim2(s32 nAnimNumbe void CPlayer::DrawPlayer() { m_pSffManager->SetPause(bPause || bHitPause); - m_pSffManager->BlitAnim((s16)x+x_offset,(s16)y+y_offset); + m_pSffManager->BlitAnim((s16)x+x_offset,(s16)y+y_offset,x_scale,y_scale,bAlpha,dest_alpha,src_alpha,fAngle); + //draw debug info if(bDebugInfo) @@ -1687,6 +1733,53 @@ void CPlayer::UpDateHitPause() nHitPauseTime--; } + +void CPlayer::fVarRangeSet( float value , int start, int end ) +{ + if( end > 39 ) + throw(CError("VarRangeSet error: last param is to big")); + + if( start < 0) + throw(CError("VarRangeSet error: first param is to small")); + + + for( int i= start; i<end;i++) + floatPresistIndex[i]=value; +} + +void CPlayer::iVarRangeSet( float value, int start, int end ) +{ + if( end > 59 ) + throw(CError("VarRangeSet error: last param is to big")); + + if( start < 0) + throw(CError("VarRangeSet error: first param is to small")); + + for( int i= start; i<end;i++) + intPresistIndex[i]=value; + +} +void CPlayer::AddExplodToPlayer(CExplod *explod) +{ + m_ExplodList.push_back( explod ); +} + +void CPlayer::RemoveInvalidExplod() +{ + /* list<CExplod *>::iterator i=m_ExplodList.begin(); + int size = m_ExplodList.size(); + + for(int j=0;j<size;j++) + { + CExplod *explod = *i; + if( !explod->isValid() ) + { + m_ExplodList.erase( i ); + i=m_ExplodList.begin(); + size= m_ExplodList.size(); + } + }*/ +} /* ================================================================================ Function to geting Player informations Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- player.h 1 Sep 2005 20:13:24 -0000 1.2 +++ player.h 6 Sep 2005 20:46:04 -0000 1.3 @@ -251,7 +251,7 @@ CGameTimer *m_pTimer; CVirtualMachine *m_pVMachine; CControllerExecuter *m_pControllerExec; CEngine *m_pEngine; - +list<CExplod*> m_ExplodList; CInputProcessor *m_pInputProcessor; CCmdManager *m_pCmdManager; @@ -279,6 +279,10 @@ float x,y; float x_offset; float y_offset; float xVel,yVel; +float x_scale; +float y_scale; +float fAngle; +bool bDrawAngel; float nGround; float nBodyDistanceX; //distance between front float nBodyDistanceY; //distance between front @@ -292,6 +296,8 @@ float nFrontEdgeDist; int nMoveContact; int nMoveHit; int nMoveGuarded; +float fDefence; +float fAttackPower; s32 nCurrAnimNumber; s32 nPrevStateNumber; s32 nCurrStateNumber; @@ -318,11 +324,15 @@ bool bIsHelper; bool bChangeState; bool bPause; bool inputs[ GAME_INPUT_COUNT ]; +bool bAlpha; +int dest_alpha; +int src_alpha; //this are some special flags of the player they will be restet after a tick to true bool bAutoTurn; bool bWalk; bool bPosFreez; bool bPhysicsUpdated; +bool bPlayerPush; char strCommand[255]; PLSTATEDEF *lpCurrStatedef; //ints are floats !!!!!!! @@ -495,6 +505,8 @@ enum HitPrior void SetAttacker(CPlayer *attacker) {AttackerPlayer = attacker; } void TurnPlayer(); void CalcBackEdgeDist(); + void AddExplodToPlayer(CExplod *explod); + void RemoveInvalidExplod(); //trigger functions bool IsCommand(char* strCommand); @@ -551,7 +563,16 @@ enum HitPrior void TargetDrop(bool bKeepOne,s16 nExcludeId); void SetHitPause( int nPauseTime ) { nHitPauseTime = nPauseTime; bHitPause = true;} void SetShakePause( int nPauseTime ) {nHitPauseTime = nPauseTime; bShakePause = true;} - + int GetHitPause() {return nHitPauseTime;} + float GetDefenceValue() {return fDefence;} + void SetDefenceValue( float value ) { fDefence = value;} + void SetAttackValue( float value ) {fAttackPower = value;} + void MoveHitReset() {nMoveContact = nMoveHit = nMoveGuarded = 0; } + void HitFallDamage() { LifeAdd( -(s16)(InHitVar.fall_damage / fDefence) );} + void fVarRangeSet( float value , int start, int end ); + void iVarRangeSet( float value, int start, int end ); + void SetAngle( float angle ) { fAngle = angle;} + void SetPlayerPush( bool bPush ) { bPlayerPush = bPush; } private: void AddTargetToList(CPlayer *target); @@ -585,6 +606,7 @@ private: void ResetFlags(); void CalculateValues(CPlayer *opponent); void UpDateHitPause(); + void AddDamage(s16 nDamageAmount,CPlayer *opponent); }; Index: structs.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/structs.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- structs.h 30 Aug 2005 15:09:29 -0000 1.1.1.1 +++ structs.h 6 Sep 2005 20:46:04 -0000 1.2 @@ -12,12 +12,12 @@ typedef signed long s32; class CError { -char strMessage[100]; +char strMessage[255]; public: CError(const char* strError,...) { - char string[100]; // Temporary string + char string[255]; // Temporary string va_list ap; // Pointer To List Of Arguments va_start(ap, strError); // Parses The String For Variables |