You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(13) |
Nov
(1) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(17) |
Aug
(1) |
Sep
(7) |
Oct
|
Nov
|
Dec
|
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 |
From: SakirSoft <sak...@us...> - 2005-09-23 23:39:39
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27997 Modified Files: ControllerExecuter.cpp GameObjects.cpp GameObjects.h StateParser.cpp StateParser.h VM.cpp VM.h VideoSystem.cpp engine.cpp engine.h global.h player.cpp player.h Log Message: alot of changes Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- ControllerExecuter.cpp 19 Sep 2005 16:12:34 -0000 1.6 +++ ControllerExecuter.cpp 23 Sep 2005 23:39:27 -0000 1.7 @@ -464,6 +464,7 @@ void CControllerExecuter::HitBy() void CControllerExecuter::AllPalFX() { PALFX *temp = (PALFX*)lpController; + PrintMessage("TODO: implement AllPalFX controller"); } @@ -471,7 +472,37 @@ void CControllerExecuter::AllPalFX() void CControllerExecuter::PalFX() { PALFX *temp = (PALFX*)lpController; - PrintMessage("TODO: implement PalFX controller"); + + int time = m_pVM->Execute( temp->time , 0); + + int add_r = m_pVM->Execute( temp->add_r , 0); + int add_g = m_pVM->Execute( temp->add_g , 0); + int add_b = m_pVM->Execute( temp->add_b , 0); + + int mul_r = m_pVM->Execute( temp->mul_r , 256); + int mul_g = m_pVM->Execute( temp->mul_g , 256); + int mul_b = m_pVM->Execute( temp->mul_b , 256); + + int ampl_r = m_pVM->Execute( temp->ampl_r , 0); + int ampl_g = m_pVM->Execute( temp->ampl_g , 0); + int ampl_b = m_pVM->Execute( temp->ampl_b , 0); + int period = m_pVM->Execute( temp->periode,0); + + bool bInvet = m_pVM->Execute( temp->invertall ) > 0; + + CPalFX *fx = new CPalFX( m_CurrentPlayer->GetSff() ); + + fx->SetTime(time); + fx->SetAddValues(add_r,add_g,add_b); + fx->SetMulValues(mul_r,mul_g,mul_b); + fx->SetSinPall(ampl_r,ampl_g,ampl_b,period); + fx->SetInvertAll(bInvet); + + + mugen->GetEngine()->AddObject( fx ); + + + // PrintMessage("TODO: implement PalFX controller"); } @@ -748,6 +779,7 @@ void CControllerExecuter::SuperPause() explod->SetPosY( m_pVM->Execute(temp->pos_y) ); explod->SetSprPrio(6+1); + explod->SetId(-111); //special ID mugen->GetEngine()->AddObject( explod ); @@ -790,6 +822,8 @@ void CControllerExecuter::HitDef() { HITDEF *temp=(HITDEF*)lpController; + + HitVar hitvar; memset(&hitvar,0,sizeof(HitVar)); @@ -1092,7 +1126,7 @@ void CControllerExecuter::AppendToClipbo void CControllerExecuter::AttackDist() { ATTACKDIST *temp = (ATTACKDIST*)lpController; - PrintMessage("TODO: implement AttackDist"); + m_CurrentPlayer->SetAttackDist( m_pVM->Execute( temp->value) ); } void CControllerExecuter::AttackMulSet() @@ -1133,6 +1167,11 @@ void CControllerExecuter::ClearClipboard void CControllerExecuter::DestroySelf() { + if ( m_CurrentPlayer->IsHelper() ) + { + CHelperPlayer *h = reinterpret_cast<CHelperPlayer*>(m_CurrentPlayer); + h->DestroySelf(); + } PrintMessage("TODO: implement DestroySelf"); } @@ -1161,6 +1200,33 @@ void CControllerExecuter::Gravity() void CControllerExecuter::Helper() { HELPER *temp = (HELPER*)lpController; + + CHelperPlayer *h = m_CurrentPlayer->CreateHelper( m_pVM->Execute( temp->ownpal) > 0 ); + + + memcpy( &h->ConstData,&m_CurrentPlayer->ConstData, sizeof( PlayerConst ) ); + memcpy( &h->defInfo, &m_CurrentPlayer->defInfo, sizeof( PlayerDef ) ); + h->nTeamID = m_CurrentPlayer->nTeamID; + h->SetPlayer(m_CurrentPlayer); + h->ResetPlayer(); + + if( temp->nPosType == 2) + h->SetPlayer(m_Player2); + + h->SetPosType(temp->nPosType); + + h->SetHelperPosX(m_pVM->Execute(temp->pos_x ) ); + h->SetHelperPosY(m_pVM->Execute(temp->pos_y ) ); + h->SetKeyCtrl( m_pVM->Execute( temp->keyctrl) > 0 ); + h->SetSuperMoveTime( m_pVM->Execute( temp->supermovetime ) ); + h->SetPauseMoveTime( m_pVM->Execute( temp->pausemovetime ) ); + h->SetFacing( m_pVM->Execute( temp->facing, 1) ); + h->SetState( m_pVM->Execute( temp->stateno ) ); + + + + mugen->GetEngine()->AddObject( h ); + PrintMessage("TODO: implement Helper"); } @@ -1223,10 +1289,8 @@ void CControllerExecuter::LifeSet() LIFESET *temp = (LIFESET*)lpController; s16 nAmount = (s16)m_pVM->Execute( temp->value ); - m_CurrentPlayer->LifeSet(nAmount); - PrintMessage("TODO: implement LifeSet controller"); } void CControllerExecuter::ModifyExplod() @@ -1237,14 +1301,16 @@ void CControllerExecuter::ModifyExplod() void CControllerExecuter::MoveHitReset() { - PrintMessage("TODO: implement MoveHitReset controller"); + // PrintMessage("TODO: implement MoveHitReset controller"); m_CurrentPlayer->MoveHitReset(); } void CControllerExecuter::Offset() { OFFSET *temp = (OFFSET*)lpController; - PrintMessage("TODO: implement Offset controller"); + + m_CurrentPlayer->SetOffsetX( m_pVM->Execute( temp->x ) ); + m_CurrentPlayer->SetOffsetY( m_pVM->Execute( temp->y ) ); } @@ -1278,7 +1344,7 @@ void CControllerExecuter::Pause() mugen->GetEngine()->AddObject( pause ); - PrintMessage("test Pause controller"); + // PrintMessage("test Pause controller"); } void CControllerExecuter::PlayerPush() @@ -1300,7 +1366,7 @@ void CControllerExecuter::PowerAdd() s16 power = (s16)m_pVM->Execute( temp->value ); m_CurrentPlayer->AddPower(power); - PrintMessage("test: implement PowerAdd controller"); + // PrintMessage("test: implement PowerAdd controller"); } @@ -1310,7 +1376,7 @@ void CControllerExecuter::PowerSet() s16 power = (s16)m_pVM->Execute( temp->value ); m_CurrentPlayer->SetPower( power ); - PrintMessage("test: implement PowerSet controller"); + //PrintMessage("test: implement PowerSet controller"); } Index: GameObjects.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- GameObjects.cpp 19 Sep 2005 08:06:06 -0000 1.3 +++ GameObjects.cpp 23 Sep 2005 23:39:27 -0000 1.4 @@ -21,6 +21,7 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "global.h" +const float pi2 = 2*3.141592653589f; /* ================================================================================ @@ -137,6 +138,15 @@ void CExplod::SetPosX( float x ) x_pos = -x + player->GetPosX(); break; + + //postpye = front + case 3: + if( !player->GetRightFaced() ) + x_pos = x ; + else + x_pos = 320 - x; + break; + //postpye = back case 4: if( player->GetRightFaced() ) @@ -144,6 +154,14 @@ void CExplod::SetPosX( float x ) else x_pos = 320 - x; + break; + //postpye = left + case 5: + x_pos = x ; + break; + //postpye = right + case 6: + x_pos = 320 - x; break; } @@ -549,3 +567,115 @@ void CBindPlayer::UpDateState() } +/* +================================================================================ +PallFx object +================================================================================ +*/ +CPalFX::CPalFX(CSffManager *p) +{ + m_pSff = p; + m_pSff->SetPalFX(); + orgin = m_pSff->GetPal(); + fx = m_pSff->GetPalFX(); + bValid = true; + bPause = false; + t = 2; + +} + +CPalFX::~CPalFX() +{ + m_pSff->DisabelFX(); +} + +void CPalFX::Think() +{ + assert( m_pSff != 0 ); + + if( time <= 0) + bValid = false; + + + if( bInvertAll ) + Invert(); + + if( period > 0) + SinAdd(); + else + Normal(); + + + if( !bPause ) + time--; + + +} + + +void CPalFX::Invert() +{ + for(int i=0;i<256;i++) + { + fx[i].r = 255-orgin[i].r; + fx[i].g = 255-orgin[i].g; + fx[i].b = 255-orgin[i].b; //invers color + } + fx[0].r = orgin[0].r; + fx[0].g = orgin[0].g; + fx[0].b = orgin[0].r; + +} + +void CPalFX::SinAdd() +{ + int r,b,g; + + if( t > period ) + t=0; + + + for(int i=0;i<256;i++) + { + r = ( orgin[i].r+add_r + ampl_r*sin(pi2*(t/period) ) )* mul_r/256; + g = ( orgin[i].g+add_g + ampl_g*sin(pi2*(t/period) ) )* mul_g/256; + b = ( orgin[i].b+add_b + ampl_b*sin(pi2*(t/period) ) )* mul_b/256; + + fx[i].r = r > 255 ? 255 : r; + fx[i].g = g > 255 ? 255 : g; + fx[i].b = b > 255 ? 255 : b; + } + + + if( !bPause ) + t++; + + + + +} + +void CPalFX::Normal() +{ + int r,b,g; + + for(int i=0;i<256;i++) + { + r=(orgin[i].r+add_r) * mul_r/256; + g=(orgin[i].g+add_g) * mul_g/256;; + b=(orgin[i].g+add_b) * mul_b/256;; + + fx[i].r = r > 255 ? 255 : r; + fx[i].g = g > 255 ? 255 : g; + fx[i].b = b > 255 ? 255 : b; + + } + +} + + + + + + + Index: GameObjects.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- GameObjects.h 30 Aug 2005 15:09:09 -0000 1.1.1.1 +++ GameObjects.h 23 Sep 2005 23:39:27 -0000 1.2 @@ -45,7 +45,8 @@ public: HitByObject, NotHitByObject, ProjectileObject, - PlayerObject //helpers are also players but players cant get invalide + PlayerObject, + HelperObject, }; @@ -236,4 +237,50 @@ public: }; +/* +================================================================================ +PallFX object +================================================================================ +*/ +class CPalFX:public CBaseObject +{ + bool bPause; + bool bValid; + int time; + float t; + int add_r, add_g, add_b; + int mul_r, mul_g, mul_b; + int ampl_r, ampl_g, ampl_b, period; + bool bInvertAll; + int color; + SDL_Color *orgin; + SDL_Color *fx; + CSffManager *m_pSff; + void Invert(); + void SinAdd(); + void Normal(); +public: + CPalFX( CSffManager *p ); + ~CPalFX(); + + void SetTime(int t) {time = t;} + void SetAddValues(int r,int g,int b) { add_r = r; add_g = g; add_b = b; } + void SetMulValues(int r,int g,int b) { mul_r = r; mul_g = g; mul_b = b; } + void SetSinPall(int r,int g,int b,int t) { ampl_r = r; ampl_g = g; ampl_b = b; period = t;} + void SetInvertAll( bool bInvert ) { bInvertAll = bInvert;} + void SetColorLevel(int level) { color = level; } + + //Base function of the object + int GetType() {return CBaseObject::PalFxObject;} + void Think(); + bool isValid(){return bValid;} + void Pause(bool pause){bPause=pause;} + + + +}; + + + + #endif Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- StateParser.cpp 19 Sep 2005 08:06:06 -0000 1.6 +++ StateParser.cpp 23 Sep 2005 23:39:27 -0000 1.7 @@ -1437,12 +1437,14 @@ void CStateParser::Primary() } - // parrent + // parent if( i == 110 ) { if( !tok.CheckToken(",") ) Error("you must insert an ',' after a trigger redirection"); + StateManager->AddInstruction(OP_Parent,0,"#"); EvaluateExpression(); + StateManager->AddInstruction(OP_RESTORE,0,"#"); return; } @@ -1452,7 +1454,9 @@ void CStateParser::Primary() { if( !tok.CheckToken(",") ) Error("you must insert an ',' after a trigger redirection"); + StateManager->AddInstruction(OP_Root,0,"#"); EvaluateExpression(); + StateManager->AddInstruction(OP_RESTORE,0,"#"); return; } @@ -1465,6 +1469,7 @@ void CStateParser::Primary() if( tok.CheckToken("(") ) { EvaluateExpression(); + if( !tok.CheckToken(")") ) Error("missing ')'"); }else @@ -1472,7 +1477,7 @@ void CStateParser::Primary() StateManager->AddInstruction(OP_PUSH,-1,"#"); if( i == 117 ) - Error("PlayerId need and ID expression!"); + Error("PlayerId need an ID expression!"); } @@ -1509,6 +1514,9 @@ void CStateParser::Primary() } EvaluateExpression(); + + StateManager->AddInstruction(OP_RESTORE,0,"#"); + return; @@ -2705,35 +2713,35 @@ void CStateParser::ParsePalFX() if( !tok.CheckToken("=") ) Error("expected ="); - temp->add_r = tok.GetInt(); + temp->add_r = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->add_g = tok.GetInt(); + temp->add_g = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->add_b = tok.GetInt(); + temp->add_b = GenerateInstruction(); }else if(tok.CheckToken("mul") ) { if( !tok.CheckToken("=") ) Error("expected ="); - temp->mul_r = tok.GetInt(); + temp->mul_r = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->mul_g = tok.GetInt(); + temp->mul_g = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->mul_b = tok.GetInt(); + temp->mul_b = GenerateInstruction(); }else if(tok.CheckToken("sinadd") ) { if( !tok.CheckToken("=") ) Error("expected ="); - temp->ampl_r = tok.GetInt(); + temp->ampl_r = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->ampl_g = tok.GetInt(); + temp->ampl_g = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->ampl_b = tok.GetInt(); + temp->ampl_b = GenerateInstruction(); if( tok.CheckToken(",") ) - temp->periode = tok.GetInt(); + temp->periode = GenerateInstruction(); }else if( tok.CheckToken("invertall") ) Index: StateParser.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- StateParser.h 19 Sep 2005 08:06:06 -0000 1.5 +++ StateParser.h 23 Sep 2005 23:39:27 -0000 1.6 @@ -955,10 +955,10 @@ struct HITFALLSET struct PALFX { INSTRUCTION* time; - s32 add_r,add_g,add_b; - s32 mul_r,mul_g,mul_b; - s32 ampl_r, ampl_g, ampl_b; - s32 periode; + INSTRUCTION* add_r,*add_g,*add_b; + INSTRUCTION* mul_r,*mul_g,*mul_b; + INSTRUCTION* ampl_r, *ampl_g,*ampl_b; + INSTRUCTION* periode; INSTRUCTION* invertall; INSTRUCTION* color ; Index: VM.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- VM.cpp 6 Sep 2005 20:46:04 -0000 1.3 +++ VM.cpp 23 Sep 2005 23:39:27 -0000 1.4 @@ -190,6 +190,15 @@ void CVirtualMachine::InitFunctTable() pFuncTable[139]=&CVirtualMachine::MODOP; pFuncTable[140]=&CVirtualMachine::Save; pFuncTable[141]=&CVirtualMachine::Restore; + pFuncTable[142]=&CVirtualMachine::SwitchParent; + pFuncTable[143]=&CVirtualMachine::SwitchRoot; + pFuncTable[144]=&CVirtualMachine::SwitchHelper; + pFuncTable[145]=&CVirtualMachine::SwitchTarget; + pFuncTable[146]=&CVirtualMachine::SwitchPartner; + pFuncTable[147]=&CVirtualMachine::SwitchEnemy; + pFuncTable[148]=&CVirtualMachine::SwitchEnemyNear; + pFuncTable[149]=&CVirtualMachine::SwitchPlayerID; + } @@ -1661,7 +1670,7 @@ void CVirtualMachine::InGuardDist() //Is helper void CVirtualMachine::IsHelper() { - m_Stack.Push(0,"#"); + m_Stack.Push(m_CurrentPlayer->IsHelper(),"#"); } //IsHomeTeam @@ -2249,4 +2258,40 @@ void CVirtualMachine::Restore() } +void CVirtualMachine::SwitchParent() +{ + +} +void CVirtualMachine::SwitchRoot() +{ + +} +void CVirtualMachine::SwitchHelper() +{ + +} + +void CVirtualMachine::SwitchTarget() +{ + +} + +void CVirtualMachine::SwitchPartner() +{ + +} + +void CVirtualMachine::SwitchEnemy() +{ + +} +void CVirtualMachine::SwitchEnemyNear() +{ + +} + +void CVirtualMachine::SwitchPlayerID() +{ + +} Index: VM.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- VM.h 30 Aug 2005 15:09:33 -0000 1.1.1.1 +++ VM.h 23 Sep 2005 23:39:27 -0000 1.2 @@ -184,6 +184,15 @@ void MODOP(); void Save(); void Restore(); +void SwitchParent(); +void SwitchRoot(); +void SwitchHelper(); +void SwitchTarget(); +void SwitchPartner(); +void SwitchEnemy(); +void SwitchEnemyNear(); +void SwitchPlayerID(); + void InitFunctTable(); void SetPlayers(CPlayer *p1,CPlayer *p2); void SetEngine(CEngine *engine){m_pEngine=engine;} Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- VideoSystem.cpp 19 Sep 2005 08:06:06 -0000 1.5 +++ VideoSystem.cpp 23 Sep 2005 23:39:27 -0000 1.6 @@ -149,12 +149,12 @@ void CVideoSystem::Draw() // DrawText(265,10,"%2.2f FPS",nFps); - // SDL_BlitSurface(work,NULL,screen,NULL); + // SDL_BlitSurface(work,NULL,screen,NULL); // scale2x(work,screen); FilterImage(); //SDL_SoftStretch(work,0,screen,0); - SDL_UpdateRect(screen,0,0,640,480); + SDL_UpdateRect(screen,0,0,640,480); // SDL_Flip(screen); Index: engine.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/engine.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- engine.cpp 19 Sep 2005 08:06:06 -0000 1.3 +++ engine.cpp 23 Sep 2005 23:39:27 -0000 1.4 @@ -13,6 +13,7 @@ CEngine::CEngine() bPause=false; bPreIntro = false; nEngineState = EnginePreIntro; + nGroundVaue = 220; //this should be read out from th BG Stage def } @@ -148,10 +149,7 @@ 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); player1.LoadPlayer(playerdef); @@ -161,7 +159,7 @@ void CEngine::InitEngine(CMemManager *m, player2.LoadPlayer(playerdef); - player1.GetSff()->LoadActToSff("chars/kfm/kfm.act"); + player1.GetSff()->LoadActToSff("chars/kfm/kfm2.act"); player2.GetSff()->LoadActToSff("chars/kfm/kfm3.act"); // player3.LoadPlayer(playerdef); Index: engine.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/engine.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- engine.h 19 Sep 2005 08:06:06 -0000 1.3 +++ engine.h 23 Sep 2005 23:39:27 -0000 1.4 @@ -30,7 +30,8 @@ CMemManager *m_pMemManager; CVideoSystem *m_pVideoSystem; CGameTimer *m_pTimer; int nHowManyPlayers; -int nEngineState; +int nEngineState; +int nGroundVaue; int m_JoyCount; CJoystickInfo* m_pJoyInfo; bool bPause; @@ -82,7 +83,8 @@ public: CGameTimer *GetTimer(){return m_pTimer;} int GetPlayerCount(){return nHowManyPlayers;} CPlayer **GetPlayerList(){return m_PlayerList;} - void AssertIntro() {bPreIntro = true;} + void AssertIntro() {bPreIntro = true;} + int GetGroundValue() {return nGroundVaue;} }; Index: global.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/global.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- global.h 19 Sep 2005 08:06:06 -0000 1.2 +++ global.h 23 Sep 2005 23:39:27 -0000 1.3 @@ -25,6 +25,7 @@ #include "structs.h" using namespace std; //used class +class CHelperPlayer; class CPlayer; class CVirtualMachine; class CGameTimer; @@ -60,6 +61,7 @@ class CStateManager; #include "StateManager.h" #include "ControllerExecuter.h" #include "player.h" +#include "helper.h" #include "VM.h" #include "engine.h" #include "game.h" Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- player.cpp 19 Sep 2005 16:12:34 -0000 1.7 +++ player.cpp 23 Sep 2005 23:39:27 -0000 1.8 @@ -68,6 +68,8 @@ CPlayer::CPlayer() TargetListNum = 0; memset( TargetList,0,sizeof(CPlayer*)); + + SetRoot( this ); //this should be a unique player id number @@ -77,10 +79,7 @@ CPlayer::CPlayer() bIsHelper=false; - strcpy(strCommand,"none"); - memset(&inputs,0,sizeof(inputs)); - m_pSffManager = new CSffManager; m_pAirManager = new CAirManager; m_pStateManager = new CStateManager; @@ -88,6 +87,12 @@ CPlayer::CPlayer() m_pControllerExec = new CControllerExecuter; m_pVMachine = new CVirtualMachine; m_pSndManager = new CSoundManager; + inputs = new bool[ GAME_INPUT_COUNT ]; + +// m_pVideoSystem = mugen->GetVideo(); + + strcpy(strCommand,"none"); + memset(inputs,0,sizeof(bool) * GAME_INPUT_COUNT); //keep a copy of it to restore a player from costum states from the opponent player m_OrginStateManager = m_pStateManager; @@ -95,9 +100,43 @@ CPlayer::CPlayer() } -CPlayer::CPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm) +CPlayer::CPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm,CControllerExecuter *exe,CCmdManager *cmd,CSoundManager *snd,bool bOwnPal) { - bIsHelper=true; + m_pSffManager = new CSffManager( sff , bOwnPal ); + + m_pSffManager->PrepareAnim(0); + m_pSffManager->SetBltFlags(CVideoSystem::BLT_NORMAL | CVideoSystem::BLT_MASKED); + m_pSffManager->SetSprPrior(5); + + m_pAirManager = air; + m_pStateManager = state; + m_pCmdManager = cmd; + m_pControllerExec = exe; + m_pVMachine = vm; + m_pSndManager = snd; + + strcpy(strCommand,"none"); + + m_pVideoSystem = mugen->GetVideo(); + + m_OrginStateManager = m_pStateManager; + m_OpponentStateManager = 0; + lpCurrStatedef = 0; + + /* strcpy(strCommand,"none"); + memset(&inputs,0,sizeof(inputs)); + */ + nBackEdgeBodyDist = 0; + nBackEdgeDist = 0; + nFrontEdgeBodyDist = 0; + nFrontEdgeDist = 0; + + + + + ResetPlayer(); + + bIsHelper=true; } CPlayer::~CPlayer() @@ -113,9 +152,12 @@ CPlayer::~CPlayer() delete m_pControllerExec; delete m_pVMachine; delete m_pSndManager; + delete []inputs; - } + } + else + delete m_pSffManager; } //Set all the pointers to all the managers void CPlayer::SetPointers(CVideoSystem *p,CAllocater *a,CGameTimer *t,CEngine *e,CInputProcessor *ip) @@ -179,7 +221,9 @@ bool CPlayer::LoadPlayer(PlayerDef playe PrintMessage("----Loading Player %s----",defInfo.info.strDisplayName); PrintMessage("Parsing %s",playerdef.files.strCmd); - StateParser.ParseStateFile(playerdef.files.strCmd,m_pStateManager,m_pAlloc); + StateParser.ParseStateFile(playerdef.files.strCmd,m_pStateManager,m_pAlloc); + + PrintMessage("Parsing common1.cns"); StateParser.ParseStateFile("data/common1.cns",m_pStateManager,m_pAlloc); @@ -236,7 +280,7 @@ void CPlayer::HandlePhysic() if ( bPosFreez || bPhysicsUpdated || bHitPause) return; - if( GetStateNumber() == 0 && ( GetPosY() > 0 || GetPosY() < 0 ) ) + if( GetStateNumber() == 0 && ( GetPosY() > 0 /*|| GetPosY() < 0 ) */) ) this->SetPosY(0); bPhysicsUpdated = true; @@ -304,6 +348,9 @@ void CPlayer::HandleFSM() { CheckSpecialState(); + + if( bChangeState ) + return; CheckNormalState(); CheckInternalState(); } @@ -707,11 +754,13 @@ void CPlayer::CalcCornerPushVelOff( CPla if( opponent->GetStateType() == stand && myGetHitVar.nHitAttr == air ) myGetHitVar.cornerpush_veloff = 0; - if( opponent->GetStateType() == air ) + if( opponent->GetStateType() == air ) myGetHitVar.cornerpush_veloff = myGetHitVar.air_corerpush_velloff; if( opponent->GetStateType() == liedown ) myGetHitVar.cornerpush_veloff = myGetHitVar.down_cornerpush_veloff; + + } @@ -912,6 +961,8 @@ void CPlayer::HandleGuard(CPlayer *oppon { opponent->AddPower(myGetHitVar.nGetGpower ); + opponent->SetShakePause( myGetHitVar.hitshaketime ); + /*Play guard sound*/ if( myGetHitVar.bGuardPlayerSnd ) PlaySnd(myGetHitVar.guard_snd_grp,myGetHitVar.guard_snd_item); @@ -1122,7 +1173,7 @@ Calculates the back edge distance of the void CPlayer::CalcBackEdgeDist() { nBackEdgeDist = GetRightFaced() ? GetPosX() : 320 - GetPosX() ; - nBackEdgeBodyDist = GetRightFaced() ? GetPosX() - nBack : 321 - GetPosX() -nBack; + nBackEdgeBodyDist = GetRightFaced() ? GetPosX() - nBack : 320 - GetPosX() -nBack +1; nFrontEdgeDist = GetRightFaced() ? 320 - GetPosX() : GetPosX(); nFrontEdgeBodyDist = GetRightFaced() ? 320 - GetPosX() - nFront: GetPosX() - nFront; @@ -1196,6 +1247,7 @@ void CPlayer::CheckGlobalStatus() bHitDef = false; SetHitPause( myGetHitVar.pauseTime ); + } @@ -1341,11 +1393,17 @@ void CPlayer::ResetFlags() bAutoTurn=true; bPosFreez = false; bPhysicsUpdated = false; - x_offset = 0; - y_offset = 0; x_scale = ConstData.Size.xScale; y_scale = ConstData.Size.yScale; nPower = 3000; + nBack=ConstData.Size.nGroundFront; + nFront=ConstData.Size.nGroundBack; + + if( !bShakePause ) + { + x_offset = 0; + y_offset = 0; + } } // debug info of the player @@ -1353,6 +1411,8 @@ void CPlayer::Debug() { ActionElement *Anim=m_pSffManager->GetCurrAnimation(); + list<CBaseObject*>* ObjList = m_pEngine->GetObjectList(); + if( Anim == 0 ) return; @@ -1387,7 +1447,7 @@ void CPlayer::Debug() 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 | HitShakeOver %i",nHitPauseTime,bHitPause,HitShakeOver()); - m_pVideoSystem->DrawText(0,150,"Defence = %f | AttackPower = %f | ExplodNum %i",fDefence,fAttackPower,bHitPause); + m_pVideoSystem->DrawText(0,150,"Defence = %f | AttackPower = %f | ExplodNum ",fDefence,fAttackPower); @@ -1469,6 +1529,10 @@ void CPlayer::ResetPlayer() fAttackPower = ConstData.Data.nAttack / 100.0; x_scale = ConstData.Size.xScale; y_scale = ConstData.Size.yScale; + yVel = 0; + xVel = 0; + + memset(intPresistIndex,0,sizeof(intPresistIndex)); memset(floatPresistIndex,0,sizeof(floatPresistIndex)); @@ -1483,9 +1547,9 @@ void CPlayer::ResetPlayer() memset(&NotHitBySlot1,0,sizeof(NotHitBySlot1)); memset(&NotHitBySlot2,0,sizeof(NotHitBySlot2)); - - - ChangeState(191); + bChangeState = true; + + ChangeState(0); } @@ -1608,7 +1672,7 @@ void CPlayer::ChangeAnim2(s32 nAnimNumbe //Draw the Player void CPlayer::DrawPlayer() { - m_pSffManager->SetPause(bPause || bHitPause); + m_pSffManager->SetPause(bPause || bHitPause || bChangeState); m_pSffManager->BlitAnim((s16)x+x_offset,(s16)y+y_offset,x_scale,y_scale,bAlpha,dest_alpha,src_alpha,fAngle); @@ -1913,6 +1977,21 @@ void CPlayer::RemoveInvalidExplod() } }*/ } + + +/* +================================================================================ +Creates a new pointer to an helper +================================================================================ +*/ +CHelperPlayer* CPlayer::CreateHelper( bool bOwnPal ) +{ + CHelperPlayer *h = new CHelperPlayer( m_pSffManager, m_pAirManager , m_pStateManager , m_pVMachine,m_pControllerExec ,m_pCmdManager, m_pSndManager, bOwnPal ); + h->SetInput( inputs ); + h->SetRoot( root ); + h->SetParent( this ); + return h; +} /* ================================================================================ Function to geting Player informations Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- player.h 19 Sep 2005 16:12:34 -0000 1.6 +++ player.h 23 Sep 2005 23:39:27 -0000 1.7 @@ -249,6 +249,7 @@ const int MaxTargets = 20; class CPlayer :public CBaseObject { +public: CAllocater *m_pAlloc; CVideoSystem *m_pVideoSystem; CSffManager *m_pSffManager; @@ -265,6 +266,8 @@ list<CExplod*> m_ExplodList; CInputProcessor *m_pInputProcessor; CCmdManager *m_pCmdManager; +CPlayer *root; +//CPlayer *parent; //Variable which holds a hit information HitVar myGetHitVar; @@ -333,7 +336,7 @@ bool bAlive; bool bIsHelper; bool bChangeState; bool bPause; -bool inputs[ GAME_INPUT_COUNT ]; +bool *inputs; bool bAlpha; int dest_alpha; int src_alpha; @@ -439,13 +442,14 @@ enum HitPrior //default construtor to create a root player CPlayer(); //construtor to create an instance of an helper - CPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm); + CPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm,CControllerExecuter *exe,CCmdManager *cmd,CSoundManager *snd,bool bOwnPal); ~CPlayer(); //BaseClass functions - int GetType() {return CBaseObject::PlayerObject;} + virtual int GetType() {return CBaseObject::PlayerObject;} virtual void Think(); - bool isValid(); + virtual bool isValid(); + virtual void Pause(bool pause); //// void SetPointers(CVideoSystem *p,CAllocater *a,CGameTimer *t,CEngine *e,CInputProcessor *ip); bool LoadPlayer(PlayerDef playerdef); @@ -485,7 +489,7 @@ enum HitPrior void SetStateType(u8 nType); void SetPhysicType(u8 nType); void SetMoveType(u8 nType); - void Pause(bool pause); + //Set the the ground value of the stage void SetGroundValue(float yLimit); float GetGroundValue(); @@ -522,7 +526,11 @@ enum HitPrior void CalcBackEdgeDist(); void AddExplodToPlayer(CExplod *explod); void RemoveInvalidExplod(); - + void SetOffsetX(float x) { x_offset = x;} + void SetOffsetY(float y) { y_offset = y;} + void SetRoot(CPlayer *r) { root = r; } + CPlayer *GetRoot() { return root;} + // CPlayer *GetParent() { return parent;} //trigger functions bool IsCommand(char* strCommand); bool IsPlayerAlive(); @@ -570,6 +578,7 @@ enum HitPrior s16 GetPlayerId() {return nPlayerID;} u32 GetStateTime(); HitVar &GetVarHit(); + HitVar &GetHitVar() {return myGetHitVar;} u8 GetSprPrio(); CSffManager *GetSff(); CAirManager *GetAir(){ return m_pAirManager; } @@ -588,7 +597,9 @@ enum HitPrior void iVarRangeSet( float value, int start, int end ); void SetAngle( float angle ) { fAngle = angle;} void SetPlayerPush( bool bPush ) { bPlayerPush = bPush; } -private: + CHelperPlayer* CreateHelper( bool bOwnPal ); + bool IsHelper() { return bIsHelper;} +//private: bool IsOpponentInHitableState(CPlayer *opponent); bool IsOpponentInGuardableState(CPlayer *opponent); void AddTargetToList(CPlayer *target); |
From: SakirSoft <sak...@us...> - 2005-09-19 16:12:45
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23907 Modified Files: ControllerExecuter.cpp player.cpp player.h Log Message: hitfag and guardflag param work now in the hitdef controller Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- ControllerExecuter.cpp 16 Sep 2005 11:35:04 -0000 1.5 +++ ControllerExecuter.cpp 19 Sep 2005 16:12:34 -0000 1.6 @@ -847,6 +847,11 @@ void CControllerExecuter::HitDef() hitvar.bHitOnce = m_pVM->Execute(temp->hitonce,1) > 0; hitvar.bKill = m_pVM->Execute(temp->kill_flag,1) > 0; + hitvar.nGetPower = m_pVM->Execute( temp->p1power , hitvar.damage ); + hitvar.nGetGpower= m_pVM->Execute( temp->p1power , hitvar.damage > 0 ? hitvar.damage /2 : 0 ); + hitvar.nHitFlag = temp->hitFlag > 0 ? temp->hitFlag : CPlayer::MID | CPlayer::AIR | CPlayer::FALL ; + hitvar.nGuardFlag= temp->guardFlag > 0 ? temp->guardFlag : CPlayer::MID | CPlayer::AIR ; + //Set guard dist Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- player.cpp 19 Sep 2005 08:06:06 -0000 1.6 +++ player.cpp 19 Sep 2005 16:12:34 -0000 1.7 @@ -560,7 +560,7 @@ void CPlayer::HandleHitDef(CPlayer *oppo //Is the opponent guarding this hit? if( opponent->GetDistX() <= GetAttackDist() && IsHitDef() && - opponent->IsHoldBack() && opponent->GetMoveType() == idle ) + opponent->IsHoldBack() && opponent->GetMoveType() == idle && IsOpponentInGuardableState( opponent ) ) { HandleGuard( opponent , bP1Hit); bGuard = true; @@ -592,7 +592,7 @@ void CPlayer::HandleHitDef(CPlayer *oppo } } - if( bP1Hit && IsHitDef() && !bGuard ) + if( bP1Hit && IsHitDef() && !bGuard && IsOpponentInHitableState( opponent ) ) HandleHit( opponent ); @@ -752,6 +752,57 @@ void CPlayer::HitFallDamage() /* ================================================================================ +Checks the hitflags defined by a hit def against the opponent current state +================================================================================ +*/ +bool CPlayer::IsOpponentInHitableState(CPlayer *opponent) +{ + if( ( myGetHitVar.nHitFlag & CPlayer::GETHITSTATE ) != 0 && (opponent->GetMoveType() != hit) ) + return false; + + if( ( myGetHitVar.nHitFlag & CPlayer::NOTGETHITSTATE ) != 0 && (opponent->GetMoveType() == hit) ) + return false; + + if( ( opponent->GetStateType() == stand ) && ( myGetHitVar.nHitFlag & CPlayer::HIGH ) != 0 ) + return true; + + if( ( opponent->GetStateType() == crouch ) && ( myGetHitVar.nHitFlag & CPlayer::LOW ) != 0 ) + return true; + + if( ( opponent->GetStateType() == air ) && ( myGetHitVar.nHitFlag & CPlayer::AIR ) != 0 ) + return true; + + if( ( opponent->GetStateType() == liedown ) && ( myGetHitVar.nHitFlag & CPlayer::LYINGDOWN ) != 0 ) + return true; + + return false; +} + +bool CPlayer::IsOpponentInGuardableState(CPlayer *opponent) +{ + if( ( myGetHitVar.nGuardFlag & CPlayer::GETHITSTATE ) != 0 && (opponent->GetMoveType() != hit) ) + return false; + + if( ( myGetHitVar.nGuardFlag & CPlayer::NOTGETHITSTATE ) != 0 && (opponent->GetMoveType() == hit) ) + return false; + + if( ( opponent->GetStateType() == stand ) && ( myGetHitVar.nGuardFlag & CPlayer::HIGH ) != 0 ) + return true; + + if( ( opponent->GetStateType() == crouch ) && ( myGetHitVar.nGuardFlag & CPlayer::LOW ) != 0 ) + return true; + + if( ( opponent->GetStateType() == air ) && ( myGetHitVar.nGuardFlag & CPlayer::AIR ) != 0 ) + return true; + + if( ( opponent->GetStateType() == liedown ) && ( myGetHitVar.nGuardFlag & CPlayer::LYINGDOWN ) != 0 ) + return true; + + return false; +} + +/* +================================================================================ Handles a hit PlayHit sound, apply hit pause, Create spark.... ================================================================================ @@ -782,6 +833,8 @@ void CPlayer::HandleHit(CPlayer *opponen opponent->SetupGetHit(); + opponent->AddPower( myGetHitVar.nGetPower ); + if( myGetHitVar.p1StateNo != -1 ) @@ -820,7 +873,7 @@ void CPlayer::HandleHit(CPlayer *opponen CExplod *explod = new CExplod( new CSffManager( p ), myGetHitVar.spark_nr, opponent ); - myGetHitVar.spark_y += GetPosY(); + // myGetHitVar.spark_y += opponent->GetPosY(); explod->SetPosX( myGetHitVar.spark_x); explod->SetPosY( myGetHitVar.spark_y); @@ -857,6 +910,7 @@ void CPlayer::HandleGuard(CPlayer *oppon if( bP1Hit ) { + opponent->AddPower(myGetHitVar.nGetGpower ); /*Play guard sound*/ if( myGetHitVar.bGuardPlayerSnd ) @@ -1559,8 +1613,8 @@ void CPlayer::DrawPlayer() //draw debug info - /*if(bDebugInfo) - Debug();*/ + if(bDebugInfo) + Debug(); } /* ================================================================================ Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- player.h 19 Sep 2005 08:06:06 -0000 1.5 +++ player.h 19 Sep 2005 16:12:34 -0000 1.6 @@ -225,6 +225,10 @@ struct HitVar int p2SprPrio; bool bHitOnce; bool bKill; + s16 nGetPower; + s16 nGetGpower; + u8 nHitFlag; + u8 nGuardFlag; }; @@ -585,7 +589,8 @@ enum HitPrior void SetAngle( float angle ) { fAngle = angle;} void SetPlayerPush( bool bPush ) { bPlayerPush = bPush; } private: - + bool IsOpponentInHitableState(CPlayer *opponent); + bool IsOpponentInGuardableState(CPlayer *opponent); void AddTargetToList(CPlayer *target); bool CheckState(PLSTATE* tempState); bool CheckClsn1Collision(ClsnRECT Clsn1,ClsnRECT Clsn2); |
From: SakirSoft <sak...@us...> - 2005-09-16 11:35:14
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20093 Modified Files: AirManager.cpp AirManager.h CmdManager.cpp ControllerExecuter.cpp StateParser.cpp StateParser.h player.cpp Log Message: Changed ClsnRect from ints to floats for Fixed HitPause Handling Fixed Clsn scaling and Image scaling depending on players def values Index: AirManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/AirManager.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- AirManager.cpp 30 Aug 2005 15:09:03 -0000 1.1.1.1 +++ AirManager.cpp 16 Sep 2005 11:35:04 -0000 1.2 @@ -282,14 +282,14 @@ void CAirManager::OpenAir(char *strFileN } else if( tok.CheckTokenIsNumber() ) { - int values[5]; + float values[5]; for( int v = 0; v < 5; v++ ) { if( !tok.CheckTokenIsNumber() ) { } - values[ v ] = tok.GetInt(); + values[ v ] = tok.GetFloat(); if( v < 4 ) { Index: AirManager.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/AirManager.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- AirManager.h 30 Aug 2005 15:09:03 -0000 1.1.1.1 +++ AirManager.h 16 Sep 2005 11:35:04 -0000 1.2 @@ -34,8 +34,8 @@ enum struct ClsnRECT { - s16 x,y; - s16 h,w; + float x,y; + float h,w; }; //Clsn Struct to hold one Clns Rectangle with type Index: CmdManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/CmdManager.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- CmdManager.cpp 12 Sep 2005 20:04:17 -0000 1.2 +++ CmdManager.cpp 16 Sep 2005 11:35:04 -0000 1.3 @@ -484,7 +484,7 @@ void CCmdManager::Update( bool* gameInpu //copy the detected command it to the command buffer strcpy( strCommandBuffer[nBufferIndex], m_CurrCommandName); - // PrintMessage("%s",m_CurrCommandName); + // PrintMessage("%s",m_CurrCommandName); if( ++nBufferIndex >= MaxCommandBuffer) nBufferIndex=0; Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- ControllerExecuter.cpp 12 Sep 2005 20:04:17 -0000 1.4 +++ ControllerExecuter.cpp 16 Sep 2005 11:35:04 -0000 1.5 @@ -690,7 +690,7 @@ void CControllerExecuter::TargetState() void CControllerExecuter::PlaySnd() { PLAYSND *temp = (PLAYSND*)lpController; - int SndGrp = temp->group_no; + int SndGrp = m_pVM->Execute(temp->group_no); int SndItem = (int)m_pVM->Execute(temp->item_no); if(temp->bFightSnd) Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- StateParser.cpp 12 Sep 2005 20:04:17 -0000 1.4 +++ StateParser.cpp 16 Sep 2005 11:35:04 -0000 1.5 @@ -2836,20 +2836,9 @@ void CStateParser::ParsePlaySnd() if( !tok.CheckToken("=") ) Error("expected ="); - - char strPlaySound[20]; - strcpy(strPlaySound,tok.GetToken()); - - if( ( strPlaySound[0] == 'F' ) || ( strPlaySound[0] == 'f' ) ) - { - temp->bFightSnd = true; - strPlaySound[0]= '0'; - temp->group_no= atoi(strPlaySound); - - } - else - temp->group_no= atoi(strPlaySound); - + temp->bFightSnd = tok.CheckToken("F"); + temp->group_no= GenerateInstruction(); + if(tok.CheckToken(",") ) temp->item_no = GenerateInstruction(); Index: StateParser.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- StateParser.h 12 Sep 2005 20:04:17 -0000 1.3 +++ StateParser.h 16 Sep 2005 11:35:04 -0000 1.4 @@ -961,7 +961,7 @@ struct PALFX struct PLAYSND { bool bFightSnd; - s32 group_no; + INSTRUCTION* group_no; INSTRUCTION* item_no; INSTRUCTION* volume; INSTRUCTION* channel; Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- player.cpp 12 Sep 2005 20:04:17 -0000 1.4 +++ player.cpp 16 Sep 2005 11:35:04 -0000 1.5 @@ -163,10 +163,10 @@ bool CPlayer::LoadPlayer(PlayerDef playe defInfo=playerdef; memset(&ConstData,0,sizeof(ConstData)); - if( defInfo.info.mugenVersion.day != 31 || +/* if( defInfo.info.mugenVersion.day != 31 || defInfo.info.mugenVersion.month != 12 || defInfo.info.mugenVersion.year != 2005 ) - throw(CError("This Charackter (%s) is not supported by OpenMugen yet\nIt will be a intern or extern converter avaibale\n ",defInfo.info.strDisplayName) ); + throw(CError("This Charackter (%s) is not supported by OpenMugen yet\nIt will be a intern or extern converter avaibale\n ",defInfo.info.strDisplayName) );*/ CStateParser StateParser; //rest memory allocater @@ -505,17 +505,20 @@ ClsnRECT CPlayer::ConvertClsnRectToGloba if(!bRightFaced) { - temp.w = abs(clsn.ClsnRect.x-clsn.ClsnRect.w); - temp.h = abs(clsn.ClsnRect.h-clsn.ClsnRect.y); - temp.x = clsn.ClsnRect.x > clsn.ClsnRect.w ? (-clsn.ClsnRect.x)+x : (-clsn.ClsnRect.w)+x; - temp.y = clsn.ClsnRect.y < clsn.ClsnRect.h ? clsn.ClsnRect.y+y : clsn.ClsnRect.h+y; + temp.w = fabs(clsn.ClsnRect.x*x_scale-clsn.ClsnRect.w*x_scale); + temp.h = fabs(clsn.ClsnRect.h*y_scale-clsn.ClsnRect.y*y_scale); + temp.x = clsn.ClsnRect.x > clsn.ClsnRect.w ? (-clsn.ClsnRect.x*x_scale)+x : (-clsn.ClsnRect.w*x_scale)+x; + temp.y = clsn.ClsnRect.y < clsn.ClsnRect.h ? clsn.ClsnRect.y*y_scale+y : clsn.ClsnRect.h*y_scale+y; + + + } else { - temp.w = abs(clsn.ClsnRect.x-clsn.ClsnRect.w); - temp.h = abs(clsn.ClsnRect.h-clsn.ClsnRect.y); - temp.x = clsn.ClsnRect.x < clsn.ClsnRect.w ? clsn.ClsnRect.x+x : clsn.ClsnRect.w+x; - temp.y = clsn.ClsnRect.y < clsn.ClsnRect.h ? clsn.ClsnRect.y+y : clsn.ClsnRect.h+y; + temp.w = fabs(clsn.ClsnRect.x*x_scale-clsn.ClsnRect.w*x_scale); + temp.h = fabs(clsn.ClsnRect.h*y_scale-clsn.ClsnRect.y*y_scale); + temp.x = clsn.ClsnRect.x < clsn.ClsnRect.w ? clsn.ClsnRect.x*x_scale+x : clsn.ClsnRect.w*x_scale+x; + temp.y = clsn.ClsnRect.y < clsn.ClsnRect.h ? clsn.ClsnRect.y*y_scale+y : clsn.ClsnRect.h*y_scale+y; } @@ -936,11 +939,12 @@ funcion is in its name ;-) bool CPlayer::CheckClsn1Collision(ClsnRECT Clsn1,ClsnRECT Clsn2) { //taken from SDL_CollideBoundingBox from the SDL Collid lib - if(Clsn2.x + Clsn2.w < Clsn1.x) return 0; //just checking if their - if(Clsn2.x > Clsn1.x + Clsn1.w) return 0; //bounding boxes even touch + if( (Clsn2.x + Clsn2.w) < Clsn1.x) return 0; //just checking if their + if( Clsn2.x > (Clsn1.x + Clsn1.w)) return 0; //bounding boxes even touch - if(Clsn2.y + Clsn2.h < Clsn1.y) return 0; - if(Clsn2.y > Clsn1.y + Clsn1.h) return 0; + if( (Clsn2.y + Clsn2.h ) < Clsn1.y) return 0; + if( Clsn2.y > (Clsn1.y + Clsn1.h) ) return 0; + return 1; @@ -1106,8 +1110,8 @@ void CPlayer::CheckGlobalStatus() m_pVMachine->SetPlayers(this,opponent); m_pControllerExec->SetPlayer(this,opponent); HandleFSM(); - HandlePushBehavior(opponent); HandleHitDef(opponent); + HandlePushBehavior(opponent); HandleGetHitState(); } @@ -1149,17 +1153,21 @@ void CPlayer::Think() m_pCmdManager->Update( inputs, bRightFaced ); m_pInputProcessor->Update( inputs, m_pEngine->GetJoyCount(), m_pEngine->GetJoyInfo() ); + CheckGlobalStatus(); m_pSffManager->SetSprPrior(nSprPrio); - + UpDateHitPause(); + //only update the state time if we ar not maked a changestate if(!bChangeState && !bPause && !bHitPause) nStateTime++; ResetFlags(); UpDateFacing(); - UpDateHitPause(); + + + } DrawPlayer(); @@ -1311,7 +1319,7 @@ void CPlayer::Debug() 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 | HitShakeOver %i",nHitPauseTime,bHitPause,HitShakeOver()); - m_pVideoSystem->DrawText(0,150,"Defence = %f | AttackPower = %f | ExplodNum %i",fDefence,fAttackPower,m_ExplodList.size()); + m_pVideoSystem->DrawText(0,150,"Defence = %f | AttackPower = %f | ExplodNum %i",fDefence,fAttackPower,bHitPause); @@ -1373,7 +1381,7 @@ void CPlayer::ResetPlayer() //he is alive again bAlive=true; bCtrl=true; - nLife=1;//ConstData.Data.nLife; + nLife=ConstData.Data.nLife; nFront=ConstData.Size.nGroundFront; nBack=ConstData.Size.nGroundBack; bChangeState=false; |
From: SakirSoft <sak...@us...> - 2005-09-12 20:04:31
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30337 Modified Files: CmdManager.cpp ControllerExecuter.cpp GameObjects.cpp SoundSystem.cpp StateParser.cpp StateParser.h VideoSystem.cpp player.cpp player.h Log Message: Completed some HitDef related stuff like Kill flag and HitFallVel controller Index: CmdManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/CmdManager.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- CmdManager.cpp 30 Aug 2005 15:09:05 -0000 1.1.1.1 +++ CmdManager.cpp 12 Sep 2005 20:04:17 -0000 1.2 @@ -508,7 +508,7 @@ bool CCmdManager::CommandInBuffer(char * if( strcmp(strCommand,strCommandBuffer[i]) == 0 ) { - //PrintMessage("%s == %s",strCommandBuffer[i],strCommand); + // PrintMessage("%s == %s",strCommandBuffer[i],strCommand); return true; } } Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- ControllerExecuter.cpp 6 Sep 2005 20:46:04 -0000 1.3 +++ ControllerExecuter.cpp 12 Sep 2005 20:04:17 -0000 1.4 @@ -204,12 +204,21 @@ void CControllerExecuter::AssertSpecial( { ASSERTSPECIAL *temp = (ASSERTSPECIAL*)lpController; - PrintMessage("TODO:Implement assert special"); + // PrintMessage("TODO:Implement assert special"); - if(temp->nFlag1 == 1) + for(int i=0; i<3 ;i++ ) { - mugen->GetEngine()->AssertIntro(); - } + + if(temp->nFlag[i] == 1) + { + mugen->GetEngine()->AssertIntro(); + } + + if(temp->nFlag[i] == 10) + m_CurrentPlayer->DisableTurn(); + + + } } @@ -439,8 +448,7 @@ void CControllerExecuter::NotHitBy() int nTime = m_pVM->Execute(temp->time,1); m_CurrentPlayer->SetNotHitBySlot(temp->attackType,temp->attackAttr,nTime,temp->slot); - - + // PrintMessage("Test: implement NotHitBy controller"); } @@ -450,8 +458,7 @@ void CControllerExecuter::HitBy() int nTime = m_pVM->Execute(temp->time,1); m_CurrentPlayer->SetHitBySlot(temp->attackType,temp->attackAttr,nTime,temp->slot); - - PrintMessage("TODO: implement HitBy controller"); + } void CControllerExecuter::AllPalFX() @@ -717,6 +724,9 @@ void CControllerExecuter::SuperPause() s32 nAnim = (s32)m_pVM->Execute(temp->nAnimNo,-1); s32 snd_grp = (s32)m_pVM->Execute(temp->snd_grp,-1); s32 snd_item = (s32)m_pVM->Execute(temp->snd_item,-1); + s16 n_Power = (s16)m_pVM->Execute(temp->poweradd,0); + + m_CurrentPlayer->AddPower(n_Power); //play sound if( snd_grp != -1) @@ -799,7 +809,6 @@ void CControllerExecuter::HitDef() hitvar.yaccel = m_pVM->Execute(temp->yaccel,m_CurrentPlayer->ConstData.Movement.yaccl); hitvar.fall_recovertime = m_pVM->Execute(temp->fall_recovertime,4); hitvar.recovertime = m_CurrentPlayer->ConstData.Data.nLieDownTime; - hitvar.fall_yvel = m_pVM->Execute(temp->fall_yvelocity,-4.5); hitvar.groundtype = temp->nGroundType; hitvar.pauseTime = (int)m_pVM->Execute(temp->p1_pausetime); hitvar.hitshaketime = (int)m_pVM->Execute(temp->p2_shaketime); @@ -810,6 +819,8 @@ void CControllerExecuter::HitDef() hitvar.spark_x = m_pVM->Execute(temp->spark_x); hitvar.spark_y = m_pVM->Execute(temp->spark_y); hitvar.fall = m_pVM->Execute(temp->fall); + hitvar.fall_xvel = m_pVM->Execute(temp->fall_xvelocity,-333); + hitvar.fall_yvel = m_pVM->Execute(temp->fall_yvelocity,-4.5); hitvar.guard_spark_no= m_pVM->Execute(temp->guardsparkno,m_CurrentPlayer->ConstData.Data.nGuardSparkNr); hitvar.bPlayerSpark = temp->bPlayerSpark; hitvar.guardPauseTime = m_pVM->Execute( temp->p1_Gpausetime,hitvar.pauseTime ); @@ -827,6 +838,16 @@ void CControllerExecuter::HitDef() hitvar.air_corerpush_velloff = m_pVM->Execute( temp->airguard_cornerpush_veloff , hitvar.cornerpush_veloff ); hitvar.down_cornerpush_veloff = m_pVM->Execute( temp->down_cornerpush_veloff , hitvar.cornerpush_veloff ); + hitvar.hit_prior = temp->nHitPrior > 0 ? temp->nHitClass : 4; + hitvar.hit_type = temp->nHitClass; + + hitvar.p1SprPrio = m_pVM->Execute(temp->p1sprpriority,1); + hitvar.p2SprPrio = m_pVM->Execute(temp->p2sprpriority,0); + + hitvar.bHitOnce = m_pVM->Execute(temp->hitonce,1) > 0; + hitvar.bKill = m_pVM->Execute(temp->kill_flag,1) > 0; + + //Set guard dist m_CurrentPlayer->SetAttackDist( m_pVM->Execute(temp->guard_dist,m_CurrentPlayer->ConstData.Size.nAttackDist) ); @@ -1149,8 +1170,14 @@ void CControllerExecuter::HitAdd() void CControllerExecuter::HitFallVel() { HitVar &hitvar=m_CurrentPlayer->GetVarHit(); - float yVel= hitvar.fall_yvel; - m_CurrentPlayer->VelSetY(yVel); + hitvar.fall_yvel; + hitvar.fall_xvel; + + if( hitvar.fall_yvel != -333 ) + m_CurrentPlayer->VelSetY(hitvar.fall_yvel); + + if( hitvar.fall_xvel != -333 ) + m_CurrentPlayer->VelSetX(hitvar.fall_xvel); // PrintMessage("HitFallVel %f",yVel); } @@ -1183,7 +1210,7 @@ void CControllerExecuter::LifeAdd() m_CurrentPlayer->LifeSet(nLife); - PrintMessage("Test: implement LifeAdd controller"); +// PrintMessage("Test: implement LifeAdd controller"); } void CControllerExecuter::LifeSet() Index: GameObjects.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- GameObjects.cpp 30 Aug 2005 15:09:08 -0000 1.1.1.1 +++ GameObjects.cpp 12 Sep 2005 20:04:17 -0000 1.2 @@ -429,7 +429,7 @@ void CSuperPause::UpDateState() //darken the screen if( bDarken ) - mugen->GetVideo()->AddRect(0,0,319,239,0,0,0,128,5,CVideoSystem::RECT_FILLED); + mugen->GetVideo()->AddRect(0,0,640,480,0,0,0,128,5,CVideoSystem::RECT_FILLED); if( bPause ) Index: SoundSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SoundSystem.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- SoundSystem.cpp 1 Sep 2005 20:13:24 -0000 1.2 +++ SoundSystem.cpp 12 Sep 2005 20:04:17 -0000 1.3 @@ -46,12 +46,15 @@ bool CSoundSystem::InitSound() linked->minor, linked->patch); - if( Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1) + if( Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 1024) == -1) throw(CError("Unable to init SDL_mixer")); // Mix_SetPostMix(noEffect,0); Mix_AllocateChannels(MIXER_NUMBER_CHANNELS); + + /* LoadMusic("music/test.mp3"); + PlayMusic(); */ PrintMessage("----End of Init SoundSytem----"); Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- StateParser.cpp 6 Sep 2005 20:46:04 -0000 1.3 +++ StateParser.cpp 12 Sep 2005 20:04:17 -0000 1.4 @@ -2200,19 +2200,19 @@ void CStateParser::ParseAssertSpecial() if( !tok.CheckToken("=") ) Error("expected ="); - temp->nFlag1 = GetAssertSpecialParam(tok.GetToken() ); + temp->nFlag[0] = GetAssertSpecialParam(tok.GetToken() ); }else if( tok.CheckToken("flag2") ) { if( !tok.CheckToken("=") ) Error("expected ="); - temp->nFlag2 = GetAssertSpecialParam(tok.GetToken() ); + temp->nFlag[1] = GetAssertSpecialParam(tok.GetToken() ); }else if( tok.CheckToken("flag3") ) { if( !tok.CheckToken("=") ) Error("expected ="); - temp->nFlag3 = GetAssertSpecialParam(tok.GetToken() ); + temp->nFlag[2] = GetAssertSpecialParam(tok.GetToken() ); }else Error("wrong AssertSpecial Param"); @@ -3425,7 +3425,7 @@ void CStateParser::ParseNotHitBy() else if( tok.CheckToken("HP") ) temp->attackAttr[i]=CPlayer::HyperProjectile; else - Error("worng attr parameter in NotHitBy controller"); + Error("worng attr parameter in NotHit0By controller"); i++; Index: StateParser.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- StateParser.h 6 Sep 2005 20:46:04 -0000 1.2 +++ StateParser.h 12 Sep 2005 20:04:17 -0000 1.3 @@ -251,10 +251,8 @@ struct PLSTATEDEF struct ASSERTSPECIAL { - u8 nFlag1; - u8 nFlag2; - u8 nFlag3; - + u8 nFlag[3]; + }; struct MAKEDUST Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- VideoSystem.cpp 6 Sep 2005 20:46:04 -0000 1.3 +++ VideoSystem.cpp 12 Sep 2005 20:04:17 -0000 1.4 @@ -69,7 +69,7 @@ bool CVideoSystem::InitSystem() //Set Video mode and get main Surface - screen=SDL_SetVideoMode(640,480,nColorDepth,SDL_SWSURFACE/*|SDL_FULLSCREEN*/|SDL_DOUBLEBUF); + screen=SDL_SetVideoMode(640,480,nColorDepth,SDL_HWSURFACE/*|SDL_FULLSCREEN/*|SDL_DOUBLEBUF*/); //Check the surface for validate if(screen==NULL) { @@ -152,7 +152,7 @@ void CVideoSystem::Draw() SDL_BlitSurface(work,NULL,screen,NULL); //scale2x(work,screen); - // FilterImage(); + // FilterImage(); //SDL_SoftStretch(work,0,screen,0); //SDL_UpdateRect(screen,0,0,640,480); @@ -349,8 +349,8 @@ void CVideoSystem::NormalBlt(SFFSPRITE * SDL_Surface *lpTemp =ApplyPalEffect( lpSprite->sprite,pUsedPal); SDL_Surface *lpSurface =sge_transform_surface(lpTemp,nColorKey, 0,xScale,yScale,0); - - + + x-=(s16)lpSprite->x*xScale; y-=(s16)lpSprite->y*yScale; @@ -375,6 +375,8 @@ void CVideoSystem::NormalFlipH(SFFSPRITE SDL_Surface *lpTemp =ApplyPalEffect( lpSprite->sprite,pUsedPal); SDL_Surface *lpSurface =sge_transform_surface(lpTemp,nColorKey, 0,-xScale,yScale,0); + + x-=(lpSprite->PcxHeader.widht- lpSprite->x)*xScale; y-=lpSprite->y*yScale; @@ -408,7 +410,6 @@ SDL_Surface *CVideoSystem::CreateSurface { SDL_RWops *rwop = SDL_RWFromMem(lpSprite->rawData, lpSprite->nLenghtInByte ); SDL_Surface *temp = IMG_LoadTyped_RW(rwop,1,"PCX"); - return temp; Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- player.cpp 6 Sep 2005 20:46:04 -0000 1.3 +++ player.cpp 12 Sep 2005 20:04:17 -0000 1.4 @@ -194,7 +194,7 @@ bool CPlayer::LoadPlayer(PlayerDef playe m_pSffManager->LoadSffFile(playerdef.files.strSprite); - m_pSffManager->LoadActToSff(/*playerdef.files.strPal[0]*/"chars/kfm/kfm4.act"); + m_pSffManager->LoadActToSff(playerdef.files.strPal[0]); //Make always masked blit m_pSffManager->SetBltFlags(CVideoSystem::BLT_NORMAL | CVideoSystem::BLT_MASKED); m_pSffManager->PrepareAnim(0); @@ -553,6 +553,31 @@ void CPlayer::HandleHitDef(CPlayer *oppo bGuard = true; } + if( IsHitDef() && opponent->IsHitDef() && bP1Hit ) + { + if( GetHitPriority() < opponent->GetHitPriority() ) + ResetHitDef(); + + //tiebreaking behavior + /* + Hit vs. Hit: both P1 and P2 are hit + Hit vs. Miss: Hit hits, Miss misses + Hit vs. Dodge: No hits + Dodge vs. Dodge: No hits + Dodge vs. Miss: No hits + Miss vs. Miss: No hits + */ + if( GetHitPriority() == opponent->GetHitPriority() ) + { + if( ( GetHitClass() == Hit ) && ( opponent->GetHitClass() == Miss) ) + opponent->ResetHitDef(); + else + bP1Hit = false; + + + + } + } if( bP1Hit && IsHitDef() && !bGuard ) HandleHit( opponent ); @@ -685,10 +710,33 @@ Adds damage to the opponent void CPlayer::AddDamage(s16 nDamageAmount,CPlayer *opponent) { nDamageAmount = ( nDamageAmount * fAttackPower ) / opponent->GetDefenceValue(); + s16 nLifeOfOpponent = opponent->GetLife() - nDamageAmount ; + + //When kill flag is disable it is not possible to KO the opponent + if( nLifeOfOpponent <= 0 && !myGetHitVar.bKill ) + { + opponent->LifeSet( 1 ); + return; + } opponent->LifeAdd( -nDamageAmount ); } +void CPlayer::HitFallDamage() +{ + s16 nDamageAmount = (s16)(InHitVar.fall_damage / fDefence); + s16 nLifeOfOpponent = GetLife() - nDamageAmount ; + + if( nLifeOfOpponent <= 0 && !InHitVar.fall_kill) + { + LifeSet( 1 ); + return; + } + + LifeAdd( -nDamageAmount ); + +} + /* ================================================================================ Handles a hit @@ -704,6 +752,10 @@ void CPlayer::HandleHit(CPlayer *opponen opponent->SetAttacker( this ); + SetSprPrio( myGetHitVar.p1SprPrio + 5 ); + opponent->SetSprPrio( myGetHitVar.p2SprPrio + 5 ); + + if(myGetHitVar.groundtype == 3 ) opponent->ChangeStateNextFrame(5070); @@ -763,9 +815,13 @@ void CPlayer::HandleHit(CPlayer *opponen mugen->GetEngine()->AddObject( explod ); + //add target to list AddTargetToList( opponent ); + if( myGetHitVar.bHitOnce ) + ResetHitDef(); + /*bHitDef=false; */ bHitTarget = true; @@ -936,7 +992,7 @@ void CPlayer::HandlePushBehavior(CPlayer or we high enough to jump over the player TODO:Handle air push */ - if(nBodyDistanceX <= 0 && ( opponent->GetPosY() == GetPosY()) && nBodyDistanceX > -20 && + if(nBodyDistanceX <= 0 && ( opponent->GetPosY() == GetPosY()) && nBodyDistanceX > -30 && ( GetRightFaced() != opponent->GetRightFaced() ) && bPlayerPush ) { opponent->PushPlayer(nBodyDistanceX); @@ -953,7 +1009,7 @@ In teammode this should only check for n */ void CPlayer::HandleTurn(CPlayer *opponent) { - if( GetMoveType() != idle ) + if( GetMoveType() != idle || !bAutoTurn) return; //This is for turning if( (nDistanceX < 0) && GetPosY() == 0 /* && (nCurrStateNumber == 0)*/ && @@ -1213,6 +1269,7 @@ void CPlayer::ResetFlags() y_offset = 0; x_scale = ConstData.Size.xScale; y_scale = ConstData.Size.yScale; + nPower = 3000; } // debug info of the player @@ -1316,7 +1373,7 @@ void CPlayer::ResetPlayer() //he is alive again bAlive=true; bCtrl=true; - nLife=ConstData.Data.nLife; + nLife=1;//ConstData.Data.nLife; nFront=ConstData.Size.nGroundFront; nBack=ConstData.Size.nGroundBack; bChangeState=false; @@ -1352,7 +1409,7 @@ void CPlayer::ResetPlayer() - ChangeState(0); + ChangeState(191); } Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- player.h 6 Sep 2005 20:46:04 -0000 1.3 +++ player.h 12 Sep 2005 20:04:17 -0000 1.4 @@ -219,6 +219,12 @@ struct HitVar float cornerpush_veloff; float down_cornerpush_veloff; float air_corerpush_velloff; + int hit_prior; + int hit_type; + int p1SprPrio; + int p2SprPrio; + bool bHitOnce; + bool bKill; }; @@ -466,6 +472,9 @@ enum HitPrior void FaceRight(); void SetCtrl(bool ctrl); void SetHitDef(); + void ResetHitDef() {bHitDef = false;} + int GetHitPriority() { return myGetHitVar.hit_prior;} + int GetHitClass() { return myGetHitVar.hit_type ;} bool IsHitDef(); void SetHitVar(HitVar hitvar); void SetInHitVar(HitVar hitvar); @@ -477,6 +486,7 @@ enum HitPrior void SetGroundValue(float yLimit); float GetGroundValue(); void PushPlayer(float nPushValue); + void DisableTurn() {bAutoTurn =false;} void SetHitBySlot(u8 *type,u8 *attr,int nTime, int slot); void SetNotHitBySlot(u8 *type,u8 *attr,int nTime, int slot); @@ -487,6 +497,7 @@ enum HitPrior u32 GetCurrentAnimTime(); u32 GetDuringTime(); // void EnterHitPause( int nPauseTime ) { nHitPauseTime = nPauseTime; bHitPause = true; m_pSffManager->SetPause( true ); } + void SetSprPrio(u8 nPrio) { nSprPrio = nPrio; } //Player Controllers void ChangeState(s32 nSateNumber,CStateManager *pOtherStateDef = 0); @@ -568,7 +579,7 @@ enum HitPrior 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 HitFallDamage(); void fVarRangeSet( float value , int start, int end ); void iVarRangeSet( float value, int start, int end ); void SetAngle( float angle ) { fAngle = angle;} |
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 |
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26851 Modified Files: ControllerExecuter.cpp SoundSystem.cpp StateParser.cpp VM.cpp VideoSystem.cpp player.cpp player.h Log Message: HitPause and HitShake now works correct HitDefAttr trigger works NotHitBy and HitBy Controller works Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- ControllerExecuter.cpp 30 Aug 2005 15:09:07 -0000 1.1.1.1 +++ ControllerExecuter.cpp 1 Sep 2005 20:13:24 -0000 1.2 @@ -795,6 +795,7 @@ void CControllerExecuter::HitDef() hitvar.fall_yvel = m_pVM->Execute(temp->fall_yvelocity,-4.5); hitvar.groundtype = temp->nGroundType; hitvar.pauseTime = (int)m_pVM->Execute(temp->p1_pausetime); + hitvar.hitshaketime = (int)m_pVM->Execute(temp->p2_shaketime); hitvar.snd_grp = (int)m_pVM->Execute(temp->snd_grp); hitvar.snd_item = (int)m_pVM->Execute(temp->snd_item); hitvar.bPlayerSnd = temp->bPlayerSound; @@ -896,11 +897,8 @@ void CControllerExecuter::VelAdd() if(temp->x_value) m_CurrentPlayer->VelAddX(m_pVM->Execute(temp->x_value)); if(temp->y_value) - { m_CurrentPlayer->VelAddY(m_pVM->Execute(temp->y_value)); - // throw(CError("%f",m_pVM->Execute(temp->y_value))); - - } + } @@ -1237,14 +1235,21 @@ void CControllerExecuter::PlayerPush() void CControllerExecuter::PowerAdd() { POWERADD *temp=(POWERADD*)lpController; - PrintMessage("TODO: implement PowerAdd controller"); + + s16 power = (s16)m_pVM->Execute( temp->value ); + m_CurrentPlayer->AddPower(power); + + PrintMessage("test: implement PowerAdd controller"); } void CControllerExecuter::PowerSet() { POWERADD *temp=(POWERADD*)lpController; - PrintMessage("TODO: implement PowerSet controller"); + s16 power = (s16)m_pVM->Execute( temp->value ); + m_CurrentPlayer->SetPower( power ); + + PrintMessage("test: implement PowerSet controller"); } @@ -1284,26 +1289,114 @@ void CControllerExecuter::ReversalDef() void CControllerExecuter::TargetDrop() { TARGETDROP *temp = (TARGETDROP*)lpController; - PrintMessage("TODO: implement TargetDrop controller"); + + bool bKeepOne = m_pVM->Execute( temp->keepone , 1 ) > 0; + s16 excludeID = m_pVM->Execute( temp->excludeID, -1); + + m_CurrentPlayer->TargetDrop( bKeepOne,excludeID); + + PrintMessage("test: implement TargetDrop controller"); } void CControllerExecuter::TargetPowerAdd() { TARGETPOWERADD *temp = (TARGETPOWERADD*)lpController; - PrintMessage("TODO: implement TargetPowerAdd controller"); + + s16 power = m_pVM->Execute( temp->add_amt ); + s16 nTargetId = m_pVM->Execute(temp->id,-1); + + if( nTargetId == -1 ) + { + int nHowManyTargtes = 0; + CPlayer **list = m_CurrentPlayer->GetAllTargets(nHowManyTargtes); + + for( int i = 0;i < nHowManyTargtes;i++) + { + list[i]->AddPower( power ); + } + + }else + { + CPlayer *target = m_CurrentPlayer->GetTargetById(nTargetId); + + if( target ) + { + target->AddPower( power ); + } + } + PrintMessage("test: implement TargetPowerAdd controller"); } void CControllerExecuter::TargetVelAdd() { TARGETVEL *temp = (TARGETVEL*)lpController; - PrintMessage("TODO: implement TargetVelAdd controller"); + + s16 nTargetId = m_pVM->Execute(temp->id,-1); + + if( nTargetId == -1 ) + { + int nHowManyTargtes = 0; + CPlayer **list = m_CurrentPlayer->GetAllTargets(nHowManyTargtes); + + for( int i = 0;i < nHowManyTargtes;i++) + { + // list[i]->AddPower( power ); + if(temp->x_vel) + list[i]->VelAddX(m_pVM->Execute(temp->x_vel)); + if(temp->y_vel) + list[i]->VelAddY(m_pVM->Execute(temp->y_vel)); + } + + }else + { + CPlayer *target = m_CurrentPlayer->GetTargetById(nTargetId); + + if( target ) + { + if(temp->x_vel) + target->VelAddX(m_pVM->Execute(temp->x_vel)); + if(temp->y_vel) + target->VelAddY(m_pVM->Execute(temp->y_vel)); + } + } + PrintMessage("test: implement TargetVelAdd controller"); } void CControllerExecuter::TargetVelSet() { TARGETVEL *temp = (TARGETVEL*)lpController; - PrintMessage("TODO: implement TargetVelSet controller"); + s16 nTargetId = m_pVM->Execute(temp->id,-1); + + if( nTargetId == -1 ) + { + int nHowManyTargtes = 0; + CPlayer **list = m_CurrentPlayer->GetAllTargets(nHowManyTargtes); + + for( int i = 0;i < nHowManyTargtes;i++) + { + // list[i]->AddPower( power ); + if(temp->x_vel) + list[i]->VelSetX(m_pVM->Execute(temp->x_vel)); + if(temp->y_vel) + list[i]->VelSetY(m_pVM->Execute(temp->y_vel)); + } + + }else + { + CPlayer *target = m_CurrentPlayer->GetTargetById(nTargetId); + + if( target ) + { + if(temp->x_vel) + target->VelSetX(m_pVM->Execute(temp->x_vel)); + if(temp->y_vel) + target->VelSetY(m_pVM->Execute(temp->y_vel)); + } + } + + + PrintMessage("test: implement TargetVelSet controller"); } void CControllerExecuter::Trans() Index: SoundSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SoundSystem.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- SoundSystem.cpp 30 Aug 2005 15:09:17 -0000 1.1.1.1 +++ SoundSystem.cpp 1 Sep 2005 20:13:24 -0000 1.2 @@ -55,7 +55,7 @@ bool CSoundSystem::InitSound() PrintMessage("----End of Init SoundSytem----"); - SetSoundVolume(10); + SetSoundVolume(25); return true; } Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- StateParser.cpp 30 Aug 2005 15:09:28 -0000 1.1.1.1 +++ StateParser.cpp 1 Sep 2005 20:13:24 -0000 1.2 @@ -1490,6 +1490,75 @@ void CStateParser::Primary() return; } + //HitDefAttr trigger + if( i == 31 ) + { + if ( !tok.CheckToken("=") ) + Error("expected an = "); + + char strTemp[100]; + strcpy(strTemp,tok.GetToken()); + + int nNumberOfArg1 = strlen( strTemp ); + + for( int i=0;i< nNumberOfArg1; i++) + { + char c = toupper( strTemp[i] ); + + switch( c ) + { + case 'S': + StateManager->AddInstruction(OP_PUSH,stand,"#"); + break; + + case 'C': + StateManager->AddInstruction(OP_PUSH,crouch,"#"); + break; + + case 'A': + StateManager->AddInstruction(OP_PUSH,air,"#"); + break; + + default: + Error("wrong paramerter for value1 in HitDefAttr"); + break; + } + } + + StateManager->AddInstruction(OP_PUSH,nNumberOfArg1,"#"); + + int nNumberOfArg2 = 0; + + while( tok.CheckToken(",") ) + { + if( tok.CheckToken("NA") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::NormalAttack,"#"); + else if( tok.CheckToken("NT") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::NormalThrow,"#"); + else if( tok.CheckToken("NP") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::NormalProjectile,"#"); + else if( tok.CheckToken("SA") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::SpecialAttack,"#"); + else if( tok.CheckToken("ST") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::SpecialThrow,"#"); + else if( tok.CheckToken("SP") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::SpecialProjectile,"#"); + else if( tok.CheckToken("HA") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::HyperAttack,"#"); + else if( tok.CheckToken("HT") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::HyperThrow,"#"); + else if( tok.CheckToken("HP") ) + StateManager->AddInstruction(OP_PUSH,CPlayer::HyperProjectile,"#"); + else + Error("worng attr parameter in HitDefAttr trigger"); + + nNumberOfArg2++; + + } + + StateManager->AddInstruction(OP_PUSH,nNumberOfArg2,"#"); + } + //handle command trigger if( i == 16 ) { Index: VM.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- VM.cpp 30 Aug 2005 15:09:33 -0000 1.1.1.1 +++ VM.cpp 1 Sep 2005 20:13:24 -0000 1.2 @@ -1542,6 +1542,31 @@ void CVirtualMachine::HitCount() void CVirtualMachine::HitDefAttr() { + PopValue(); + int nNumberOfArg2 = m_pop.Value; + u8 Arg2[10]; + + for( int i=0;i< nNumberOfArg2;i++) + { + PopValue(); + Arg2[i] = m_pop.Value; + } + + PopValue(); + int nNumberOfArg1 = m_pop.Value; + u8 Arg1[10]; + + for( int i=0; i< nNumberOfArg1;i++) + { + PopValue(); + Arg1[i] = m_pop.Value; + } + + bool bHitDefAttr = m_CurrentPlayer->HitDefAttr(Arg1,nNumberOfArg1,Arg2,nNumberOfArg2); + m_Stack.Push(bHitDefAttr,"#"); + + + // PrintMessage("%i->%i",nNumberOfArg1,nNumberOfArg2); } void CVirtualMachine::HitFall() { @@ -1566,7 +1591,7 @@ void CVirtualMachine::HitPauseTime() void CVirtualMachine::HitShakeOver() { - m_Stack.Push(1,"#"); + m_Stack.Push(m_CurrentPlayer->HitShakeOver(),"#"); } //HitVel [component] Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- VideoSystem.cpp 30 Aug 2005 15:09:31 -0000 1.1.1.1 +++ VideoSystem.cpp 1 Sep 2005 20:13:24 -0000 1.2 @@ -102,7 +102,7 @@ void CVideoSystem::LoadFont() throw(CError("arial.ttf not found")); sge_TTF_SetFontStyle(lpTTF, SGE_TTF_NORMAL); - sge_TTF_AAOff(); + // sge_TTF_AAOff(); } //Takes a screen shot and save it to the screen shot folder @@ -244,9 +244,9 @@ void CVideoSystem::DrawText(s16 x,s16 y, va_end(ap); sge_tt_textout(work,lpTTF,string,x,y, - SDL_MapRGB(screen->format,255,255,255),11,255); - - + SDL_MapRGB(screen->format,255,255,255),0,255); + + } //Creates a SDL Surface SDL_Surface * CVideoSystem::CreateSurface(int x,int y) Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- player.cpp 30 Aug 2005 15:09:13 -0000 1.1.1.1 +++ player.cpp 1 Sep 2005 20:13:24 -0000 1.2 @@ -56,8 +56,10 @@ CPlayer::CPlayer() nFrontEdgeBodyDist = 0; nFrontEdgeDist = 0; nMoveContact = nMoveHit = nMoveGuarded = 0; -/* nHitPauseTime = 0; - bHitPause = true;*/ + nDelayedStateNumber = -1; + nHitPauseTime = 0; + bHitPause = false; + bShakePause = false; TargetListNum = 0; memset( TargetList,0,sizeof(CPlayer*)); @@ -83,7 +85,8 @@ CPlayer::CPlayer() m_pSndManager = new CSoundManager; //keep a copy of it to restore a player from costum states from the opponent player - m_OrginStateManager = m_pStateManager; + m_OrginStateManager = m_pStateManager; + m_OpponentStateManager = 0; } @@ -223,7 +226,7 @@ Handles the players Physic void CPlayer::HandlePhysic() { - if ( bPosFreez || bPhysicsUpdated) + if ( bPosFreez || bPhysicsUpdated || bHitPause) return; if( GetStateNumber() == 0 && ( GetPosY() > 0 || GetPosY() < 0 ) ) @@ -355,6 +358,9 @@ Checks all the triggers in the current s */ bool CPlayer::CheckState(PLSTATE* tempState) { + if( !tempState->bIgnorPause && bHitPause ) + return false; + bool bTriggerAll=true; bool bTrigger=true; u8 nTriggerType; @@ -524,6 +530,10 @@ We have to check the red clsn1 boxes of */ void CPlayer::HandleHitDef(CPlayer *opponent) { + if( bHitPause ) + return; + + bool bP1Hit=false; bool bP2Hit=false; @@ -670,22 +680,21 @@ void CPlayer::HandleHit(CPlayer *opponen { if (opponent->IsNotHitBy( myGetHitVar.nHitType,myGetHitVar.nHitAttr ) ) return; - - + opponent->SetInHitVar(myGetHitVar); opponent->SetAttacker( this ); if(myGetHitVar.groundtype == 3 ) - opponent->ChangeState(5070); + opponent->ChangeStateNextFrame(5070); else if( opponent->GetStateType() == air ) - opponent->ChangeState(5020); + opponent->ChangeStateNextFrame(5020); else if( opponent->GetStateType() == liedown ) - opponent->ChangeState(5080); + opponent->ChangeStateNextFrame(5080); else - opponent->ChangeState(5000); + opponent->ChangeStateNextFrame(5000); opponent->SetupGetHit(); @@ -695,12 +704,11 @@ void CPlayer::HandleHit(CPlayer *opponen ChangeState( myGetHitVar.p1StateNo ); if( myGetHitVar.p2StateNo != -1 ) - opponent->ChangeState( myGetHitVar.p2StateNo, m_OrginStateManager ); - + opponent->ChangeStateNextFrame( myGetHitVar.p2StateNo, m_OrginStateManager ); + SetHitVel( opponent ); CalcCornerPushVelOff( opponent ); - - + if( opponent->GetBackEdgeBodyDist() <= 0 ) VelSetX( myGetHitVar.cornerpush_veloff ); @@ -714,10 +722,13 @@ void CPlayer::HandleHit(CPlayer *opponen /*Apply hit pause */ - CPause *pause = new CPause(); + /* CPause *pause = new CPause(); pause->SetPauseTime( myGetHitVar.pauseTime ); - mugen->GetEngine()->AddObject( pause ); + mugen->GetEngine()->AddObject( pause );*/ + SetHitPause( myGetHitVar.pauseTime ); + opponent->SetShakePause( myGetHitVar.hitshaketime ); + CSffManager *p = myGetHitVar.bPlayerSpark ? GetSff() : mugen->GetEngine()->GetEngineSff(); CExplod *explod = new CExplod( new CSffManager( p ), @@ -826,7 +837,7 @@ This handles the players behavior when h */ void CPlayer::HandleGetHitState() { - if( GetMoveType() != hit) + if( GetMoveType() != hit || bShakePause) return; //InHitVar.slidetime--; @@ -983,6 +994,7 @@ void CPlayer::CheckGlobalStatus() /*CPlayer *p2=m_pEngine->GetPlayerList();*/ list<CBaseObject*>* ObjList = m_pEngine->GetObjectList(); + bHitTarget = false; UpDateFacing(); @@ -1015,16 +1027,18 @@ void CPlayer::CheckGlobalStatus() } } - - - + + if( nDelayedStateNumber > -1 ) + { + ChangeState( nDelayedStateNumber, m_OpponentStateManager ); + nDelayedStateNumber = -1; + } //we hit a target so disable the hit def ) if( bHitTarget ) bHitDef = false; - - + } /* ================================================================================ @@ -1040,7 +1054,6 @@ void CPlayer::Think() if( !bPause ) { - m_pCmdManager->Update( inputs, bRightFaced ); m_pInputProcessor->Update( inputs, m_pEngine->GetJoyCount(), m_pEngine->GetJoyInfo() ); @@ -1049,11 +1062,12 @@ void CPlayer::Think() m_pSffManager->SetSprPrior(nSprPrio); //only update the state time if we ar not maked a changestate - if(!bChangeState && !bPause) + if(!bChangeState && !bPause && !bHitPause) nStateTime++; ResetFlags(); UpDateFacing(); + UpDateHitPause(); } DrawPlayer(); @@ -1158,6 +1172,8 @@ void CPlayer::ResetFlags() bAutoTurn=true; bPosFreez = false; bPhysicsUpdated = false; + x_offset = 0; + y_offset = 0; } // debug info of the player @@ -1198,6 +1214,8 @@ void CPlayer::Debug() 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()); + } @@ -1267,6 +1285,12 @@ void CPlayer::ResetPlayer() nStateType=0; nPhysic=0; nMoveType=0; + nDelayedStateNumber = -1; + nHitPauseTime = 0; + bHitPause = false; + bShakePause = false; + x_offset = 0; + y_offset = 0; memset(intPresistIndex,0,sizeof(intPresistIndex)); memset(floatPresistIndex,0,sizeof(floatPresistIndex)); @@ -1406,8 +1430,8 @@ void CPlayer::ChangeAnim2(s32 nAnimNumbe //Draw the Player void CPlayer::DrawPlayer() { - m_pSffManager->SetPause(bPause); - m_pSffManager->BlitAnim((s16)x,(s16)y); + m_pSffManager->SetPause(bPause || bHitPause); + m_pSffManager->BlitAnim((s16)x+x_offset,(s16)y+y_offset); //draw debug info if(bDebugInfo) @@ -1465,6 +1489,57 @@ CPlayer **CPlayer::GetAllTargets(int &in return TargetList; } +/* +================================================================================ +TargetDrop + excludeID = id_no (int) + Any targets with target ID number not equal to id_no will be + dropped from the player's target list. Defaults to -1 (drop all + targets). + keepone = value (int) + If value is nonzero, then at most one target is kept on the + player's target list. If there are multiple targets whose target + ID number is the same as id_no, one will be picked at random and + the rest will be dropped. This behavior is useful in throws, to + keep from throwing multiple opponents simultaneously. If value is + 0, then all targets with the appropriate ID number will be kept. + keepone defaults to 1. +================================================================================ +*/ +void CPlayer::TargetDrop(bool bKeepOne,s16 nExcludeId) +{ + if( bKeepOne ) + TargetListNum = 1; + else if ( nExcludeId == -1 ) + { + TargetListNum = 0; + memset( TargetList,0,sizeof(CPlayer*)); + + } + + if( nExcludeId ) + { + CPlayer *temp = 0; + + for ( int i = 0; i < TargetListNum; i++ ) + { + if( TargetList[i]->GetPlayerId() == nExcludeId ) + temp = TargetList[i]; + } + + if( temp ) + { + TargetList[0] = temp; + TargetListNum = 1; + + } + else + TargetListNum = 0; + + + } +} + void CPlayer::SetHitBySlot(u8 *type,u8 *attr,int nTime, int slot) { if( slot == 1) @@ -1557,6 +1632,63 @@ bool CPlayer::IsHitBy(u8 type,u8 attr) /* ================================================================================ +HitDefAttr Trigger +================================================================================ +*/ +bool CPlayer::HitDefAttr(u8 *Arg1,int nNrArg1,u8 *Arg2,int nNrArg2) +{ + if( GetMoveType() != attack ) + return false; + + bool bType = false; + bool bAttr = nNrArg2 > 0 ? true : false; + + for( int i=0;i<nNrArg1;i++) + { + if( myGetHitVar.nHitType == Arg1[i] ) + { + bType = true; + break; + } + } + + for( int i=0;i<nNrArg2;i++ ) + { + if( myGetHitVar.nHitAttr== Arg2[i] ) + { + bAttr = true; + break; + } + } + + + return bAttr && bType; +} + +/* +================================================================================ +Function to geting Player informations +================================================================================ +*/ +void CPlayer::UpDateHitPause() +{ + if( nHitPauseTime == 0) + { + bHitPause = false; + bShakePause = false; + } + + if( bShakePause ) + { + x_offset = GetStateTime() % 2 ? 1:-1; + } + + if(bHitPause || bShakePause) + nHitPauseTime--; + +} +/* +================================================================================ Function to geting Player informations ================================================================================ */ Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- player.h 30 Aug 2005 15:09:14 -0000 1.1.1.1 +++ player.h 1 Sep 2005 20:13:24 -0000 1.2 @@ -245,11 +245,13 @@ CSffManager *m_pSffManager; CSoundManager *m_pSndManager; CAirManager *m_pAirManager; CStateManager *m_pStateManager; +CStateManager *m_OrginStateManager; +CStateManager *m_OpponentStateManager; CGameTimer *m_pTimer; CVirtualMachine *m_pVMachine; CControllerExecuter *m_pControllerExec; CEngine *m_pEngine; -CStateManager *m_OrginStateManager; + CInputProcessor *m_pInputProcessor; CCmdManager *m_pCmdManager; @@ -257,8 +259,9 @@ CCmdManager *m_pCmdManager; //Variable which holds a hit information HitVar myGetHitVar; HitVar InHitVar; -/*int nHitPauseTime; -bool bHitPause;*/ +int nHitPauseTime; +bool bHitPause; +bool bShakePause; CPlayer* TargetList[MaxTargets]; int TargetListNum; @@ -273,6 +276,8 @@ HitByAttr NotHitBySlot2; //Player information float x,y; +float x_offset; +float y_offset; float xVel,yVel; float nGround; float nBodyDistanceX; //distance between front @@ -290,6 +295,7 @@ int nMoveGuarded; s32 nCurrAnimNumber; s32 nPrevStateNumber; s32 nCurrStateNumber; +s32 nDelayedStateNumber; u32 nStateTime; u8 nStateType; u8 nPhysic; @@ -474,6 +480,8 @@ enum HitPrior //Player Controllers void ChangeState(s32 nSateNumber,CStateManager *pOtherStateDef = 0); + void ChangeStateNextFrame( s32 nSateNumber,CStateManager *pOtherStateDef = 0 ) { nDelayedStateNumber = nSateNumber; m_OpponentStateManager = pOtherStateDef; } //change the state delayed by one frame + void DisableNextFrameState() { nDelayedStateNumber = -1; } void ChangeAnim(s32 nAnimNumber,u16 nCurrElem=1); void ChangeAnim2(s32 nAnimNumber,u16 nCurrElem=1); void SetIntVar(int index,float value); @@ -522,12 +530,16 @@ enum HitPrior bool GetRightFaced(); bool IsNotHitBy(u8 type,u8 attr); bool IsHitBy(u8 type,u8 attr); + bool HitShakeOver() { return bShakePause && nHitPauseTime > 0 ? false : true;} + bool HitDefAttr(u8 *Arg1,int nNrArg1,u8 *Arg2,int nNrArg2); s16 GetLife(); u8 GetMoveType(); u8 GetStateType(); s32 GetStateNumber(); s32 GetPrevStateNumber(); s16 GetPower(); + void SetPower(s16 power) { nPower = power; } + void AddPower(s16 power) { nPower += power; } s16 GetPlayerId() {return nPlayerID;} u32 GetStateTime(); HitVar &GetVarHit(); @@ -536,6 +548,9 @@ enum HitPrior CAirManager *GetAir(){ return m_pAirManager; } CPlayer *GetTargetById(s16 id); CPlayer **GetAllTargets(int &indexSize); + void TargetDrop(bool bKeepOne,s16 nExcludeId); + void SetHitPause( int nPauseTime ) { nHitPauseTime = nPauseTime; bHitPause = true;} + void SetShakePause( int nPauseTime ) {nHitPauseTime = nPauseTime; bShakePause = true;} private: @@ -569,6 +584,7 @@ private: void StandPhysic(); void ResetFlags(); void CalculateValues(CPlayer *opponent); + void UpDateHitPause(); }; |
From: SakirSoft <sak...@us...> - 2005-08-30 15:09:45
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3218 Log Message: no message Status: Vendor Tag: SakirSoft Release Tags: arelease N OpenMugen/src/VM.h N OpenMugen/src/VM.cpp N OpenMugen/src/VideoSystem.h N OpenMugen/src/VideoSystem.cpp N OpenMugen/src/tokenizer.h N OpenMugen/src/tokenizer.cpp N OpenMugen/src/Timer.h N OpenMugen/src/structs.h N OpenMugen/src/StateParser.h N OpenMugen/src/StateParser.cpp N OpenMugen/src/StateManager.h N OpenMugen/src/StateManager.cpp N OpenMugen/src/Stack.h N OpenMugen/src/Stack.cpp N OpenMugen/src/SoundSystem.h N OpenMugen/src/SoundSystem.cpp N OpenMugen/src/SffManager.h N OpenMugen/src/SffManager.cpp N OpenMugen/src/SDL_framerate.h N OpenMugen/src/SDL_framerate.cpp N OpenMugen/src/SDLManager.h N OpenMugen/src/SDLManager.cpp N OpenMugen/src/scale2xSDL.cpp N OpenMugen/src/scale2x.h N OpenMugen/src/scale2x.cpp N OpenMugen/src/player.h N OpenMugen/src/player.cpp N OpenMugen/src/MemManager.h N OpenMugen/src/MemManager.cpp N OpenMugen/src/main.cpp N OpenMugen/src/Input.h N OpenMugen/src/Input.cpp N OpenMugen/src/global.h N OpenMugen/src/global.cpp N OpenMugen/src/GameObjects.h N OpenMugen/src/GameObjects.cpp N OpenMugen/src/game.h N OpenMugen/src/game.cpp N OpenMugen/src/engine.h N OpenMugen/src/engine.cpp N OpenMugen/src/ControllerExecuter.h N OpenMugen/src/ControllerExecuter.cpp N OpenMugen/src/CmdManager.h N OpenMugen/src/CmdManager.cpp N OpenMugen/src/assert.h N OpenMugen/src/assert.cpp N OpenMugen/src/array.h N OpenMugen/src/AirManager.h N OpenMugen/src/AirManager.cpp N OpenMugen/src/memtest/nommgr.h N OpenMugen/src/memtest/mmgr.h N OpenMugen/src/memtest/mmgr.cpp No conflicts created by this import ***** Bogus filespec: - Imported sources |
From: SakirSoft <sak...@us...> - 2005-07-11 19:58:14
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13190 Modified Files: Makefile.win OpenMugen.dev OpenMugen.layout VideoSystem.cpp global.h Log Message: no message Index: Makefile.win =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/Makefile.win,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- Makefile.win 11 Jul 2005 16:12:15 -0000 1.10 +++ Makefile.win 11 Jul 2005 19:57:39 -0000 1.11 @@ -7,12 +7,12 @@ WINDRES = windres.exe RES = OBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) LINKOBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) -LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image -march=pentium4 -msse2 +LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image INCS = -I"D:/Development/tools/Dev-Cpp/include" CXXINCS = -I"D:/Development/tools/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2" -I"D:/Development/tools/Dev-Cpp/include" BIN = ../BIN/OpenMugen.exe -CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG -march=pentium4 -msse2 -CFLAGS = $(INCS) -Dmain=SDL_main -march=pentium4 -msse2 +CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG +CFLAGS = $(INCS) -Dmain=SDL_main RM = rm -f .PHONY: all all-before all-after clean clean-custom Index: OpenMugen.dev =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.dev,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- OpenMugen.dev 11 Jul 2005 16:12:15 -0000 1.10 +++ OpenMugen.dev 11 Jul 2005 19:57:40 -0000 1.11 @@ -27,7 +27,7 @@ CustomMakefile= IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 -CompilerSettings=00000000000000000000ib +CompilerSettings=0000000000000000000000 [Unit1] FileName=main.cpp Index: OpenMugen.layout =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.layout,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -p -r1.16 -r1.17 --- OpenMugen.layout 11 Jul 2005 16:12:15 -0000 1.16 +++ OpenMugen.layout 11 Jul 2005 19:57:40 -0000 1.17 @@ -3,31 +3,31 @@ CursorCol=3 CursorRow=28 TopLine=1 LeftChar=1 -Open=0 +Open=1 Top=0 [Editors] -Focused=33 -Order=23,24,33,20,48,19,18,17,28,27,7,0,37,36,1,4,47,8,46 +Focused=7 +Order=23,24,33,20,48,19,18,17,28,27,7,0,37,36,1,4,47,8,46,14,31,2,5,30,21 [Editor_0] Open=1 Top=0 -CursorCol=1 -CursorRow=1 -TopLine=1 +CursorCol=27 +CursorRow=32 +TopLine=16 LeftChar=1 [Editor_1] Open=1 Top=0 -CursorCol=32 -CursorRow=79 -TopLine=39 +CursorCol=15 +CursorRow=26 +TopLine=16 LeftChar=1 [Editor_2] -Open=0 +Open=1 Top=0 CursorCol=1 CursorRow=74 -TopLine=51 +TopLine=36 LeftChar=1 [Editor_3] Open=0 @@ -40,15 +40,15 @@ LeftChar=1 Open=1 Top=0 CursorCol=22 -CursorRow=23 -TopLine=1 +CursorRow=38 +TopLine=7 LeftChar=1 [Editor_5] -Open=0 +Open=1 Top=0 CursorCol=2 CursorRow=95 -TopLine=58 +TopLine=64 LeftChar=1 [Editor_6] Open=0 @@ -59,10 +59,10 @@ TopLine=13 LeftChar=1 [Editor_7] Open=1 -Top=0 -CursorCol=1 -CursorRow=312 -TopLine=275 +Top=1 +CursorCol=54 +CursorRow=60 +TopLine=53 LeftChar=1 [Editor_8] Open=1 @@ -144,16 +144,16 @@ LeftChar=1 [Editor_20] Open=1 Top=0 -CursorCol=29 -CursorRow=220 -TopLine=192 +CursorCol=22 +CursorRow=182 +TopLine=147 LeftChar=1 [Editor_21] -Open=0 +Open=1 Top=0 CursorCol=13 CursorRow=68 -TopLine=28 +TopLine=1 LeftChar=1 [Editor_22] Open=0 @@ -212,18 +212,18 @@ CursorRow=12 TopLine=1 LeftChar=1 [Editor_30] -Open=0 +Open=1 Top=0 CursorCol=17 CursorRow=20 -TopLine=3 +TopLine=1 LeftChar=1 [Editor_31] -Open=0 +Open=1 Top=0 -CursorCol=27 -CursorRow=15 -TopLine=112 +CursorCol=80 +CursorRow=92 +TopLine=71 LeftChar=1 [Editor_32] Open=0 @@ -234,7 +234,7 @@ TopLine=16 LeftChar=1 [Editor_33] Open=1 -Top=1 +Top=0 CursorCol=25 CursorRow=487 TopLine=449 @@ -299,7 +299,7 @@ Top=0 Open=0 Top=0 CursorCol=1 -CursorRow=4 +CursorRow=8 TopLine=1 LeftChar=1 [Editor_43] @@ -328,7 +328,7 @@ Open=1 Top=0 CursorCol=21 CursorRow=114 -TopLine=109 +TopLine=1 LeftChar=1 [Editor_47] Open=1 Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -p -r1.11 -r1.12 --- VideoSystem.cpp 11 Jul 2005 16:12:15 -0000 1.11 +++ VideoSystem.cpp 11 Jul 2005 19:57:40 -0000 1.12 @@ -57,7 +57,7 @@ bool CVideoSystem::InitSystem() { PrintMessage("CVideoSystem::InitSystem()"); //Set Video mode and get main Surface - screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE/*|SDL_FULLSCREEN|*/|SDL_DOUBLEBUF); + screen=SDL_SetVideoMode(320,240,16,SDL_HWSURFACE|SDL_FULLSCREEN/*|*|SDL_DOUBLEBUF*/); //Check the surface for validate if(screen==NULL) { @@ -106,7 +106,7 @@ void CVideoSystem::Draw() DrawAllImages(); nowTime=SDL_GetTicks(); - if(nowTime > lastTime+250) + if(nowTime > lastTime+500) { nFps=(float)nFpsCount*1000 / (nowTime-lastTime); nFpsCount=0; @@ -116,10 +116,10 @@ void CVideoSystem::Draw() DrawText(265,10,"%2.2f FPS",nFps); - // SDL_BlitSurface(work,NULL,screen,NULL); + SDL_BlitSurface(work,NULL,screen,NULL); //scale2x(work,screen); - FilterImage(); - //SDL_SoftStretch(work,0,screen,0); + // FilterImage(); +// SDL_SoftStretch(work,0,screen,0); //SDL_UpdateRect(screen,0,0,640,480); SDL_Flip(screen); Index: global.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/global.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- global.h 2 Jul 2005 17:13:05 -0000 1.7 +++ global.h 11 Jul 2005 19:57:41 -0000 1.8 @@ -3,7 +3,7 @@ //Version #define VER "PreAlpha" -#define OMTITLE "OpenMugen PreAlpha Demo 26.6.2005" +#define OMTITLE "OpenMugen PreAlpha Demo 11.7.2005" #include "SDL.h" #include "SDL_image.h" |
From: SakirSoft <sak...@us...> - 2005-07-11 16:12:25
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30201 Modified Files: ControllerExecuter.cpp GameObjects.cpp Makefile.win OpenMugen.dev OpenMugen.layout SffManager.cpp SffManager.h VideoSystem.cpp global.cpp player.cpp player.h Log Message: no message Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -p -r1.11 -r1.12 --- ControllerExecuter.cpp 9 Jul 2005 21:53:14 -0000 1.11 +++ ControllerExecuter.cpp 11 Jul 2005 16:12:14 -0000 1.12 @@ -455,7 +455,11 @@ void CControllerExecuter::BGPalFX() void CControllerExecuter::PosFreez() { POSFREEZ *temp = (POSFREEZ*)lpController; - PrintMessage("TODO: implement PosFreez controller"); + + bool bFreez = m_pVM->Execute( temp->value ) > 0; + m_CurrentPlayer->SetPosFreez( bFreez ); + + // PrintMessage("TODO: implement PosFreez controller"); } @@ -505,13 +509,66 @@ void CControllerExecuter::TargetBind() } } - PrintMessage("Test: implement TargetBind controller"); + // PrintMessage("Test: implement TargetBind controller"); } void CControllerExecuter::TargetFacing() { TARGETFACING *temp = (TARGETFACING*)lpController; - PrintMessage("TODO: implement TargetFacing controller"); + s16 nTargetId = m_pVM->Execute(temp->id,-1); + int facing = m_pVM->Execute(temp->value,-1); + + if( nTargetId == -1 ) + { + int nHowManyTargtes = 0; + CPlayer **list = m_CurrentPlayer->GetAllTargets(nHowManyTargtes); + + for( int i = 0;i < nHowManyTargtes;i++) + { + if( facing == 1 ) + { + if( m_CurrentPlayer->GetRightFaced() ) + list[i]->FaceRight(); + else + list[i]->FaceLeft(); + + }else + { + if( !m_CurrentPlayer->GetRightFaced() ) + list[i]->FaceRight(); + else + list[i]->FaceLeft(); + + } + + } + + }else + { + CPlayer *target = m_CurrentPlayer->GetTargetById(nTargetId); + + if( target ) + { + if( facing == 1 ) + { + if( m_CurrentPlayer->GetRightFaced() ) + target->FaceRight(); + else + target->FaceLeft(); + + }else + { + if( !m_CurrentPlayer->GetRightFaced() ) + target->FaceRight(); + else + target->FaceLeft(); + + } + + } + } + + // PrintMessage("Test: implement TargetFacing controller"); } void CControllerExecuter::TargetLifeAdd() @@ -548,7 +605,7 @@ void CControllerExecuter::TargetState() } - PrintMessage("TODO: implement TargetState controller"); + // PrintMessage("TODO: implement TargetState controller"); } @@ -622,6 +679,8 @@ void CControllerExecuter::SuperPause() mugen->GetEngine()->AddObject( pause ); + m_CurrentPlayer->GetSff()->SetSprPrior(6); + PrintMessage("Test SuperPause :TODO Add unhitable, poweradd,p2defmul"); } @@ -880,8 +939,8 @@ void CControllerExecuter::VarSet() void CControllerExecuter::Turn() { - PrintMessage("TODO: turn"); - + PrintMessage("Turn"); + m_CurrentPlayer->TurnPlayer(); } void CControllerExecuter::ScreenBound() Index: GameObjects.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- GameObjects.cpp 9 Jul 2005 21:51:08 -0000 1.6 +++ GameObjects.cpp 11 Jul 2005 16:12:15 -0000 1.7 @@ -375,8 +375,7 @@ CSuperPause::~CSuperPause() void CSuperPause::Think() { - if( !bPause ) - UpDateState(); + UpDateState(); } bool CSuperPause::isValid() @@ -413,14 +412,19 @@ void CSuperPause::UpDateState() if( object->GetType() != CBaseObject::PauseObject ) object->Pause(false); } + + return; } //darken the screen if( bDarken ) - mugen->GetVideo()->AddRect(0,0,319,239,0,0,0,128,6,CVideoSystem::RECT_FILLED); + mugen->GetVideo()->AddRect(0,0,319,239,0,0,0,128,5,CVideoSystem::RECT_FILLED); + + if( bPause ) + return; //the pause begins after nMoveTime is 0 if( nTime > 0 && nMoveTime == 0) Index: Makefile.win =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/Makefile.win,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- Makefile.win 6 Jul 2005 19:01:25 -0000 1.9 +++ Makefile.win 11 Jul 2005 16:12:15 -0000 1.10 @@ -1,18 +1,18 @@ # Project: OpenMugen # Makefile created by Dev-C++ 4.9.9.2 -CPP = g++.exe -D__DEBUG__ -CC = gcc.exe -D__DEBUG__ +CPP = g++.exe +CC = gcc.exe WINDRES = windres.exe RES = OBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) LINKOBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) -LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image -g3 +LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image -march=pentium4 -msse2 INCS = -I"D:/Development/tools/Dev-Cpp/include" CXXINCS = -I"D:/Development/tools/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2" -I"D:/Development/tools/Dev-Cpp/include" BIN = ../BIN/OpenMugen.exe -CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG -g3 -CFLAGS = $(INCS) -Dmain=SDL_main -g3 +CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG -march=pentium4 -msse2 +CFLAGS = $(INCS) -Dmain=SDL_main -march=pentium4 -msse2 RM = rm -f .PHONY: all all-before all-after clean clean-custom Index: OpenMugen.dev =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.dev,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- OpenMugen.dev 6 Jul 2005 19:01:25 -0000 1.9 +++ OpenMugen.dev 11 Jul 2005 16:12:15 -0000 1.10 @@ -27,7 +27,7 @@ CustomMakefile= IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 -CompilerSettings=0000000000000001000000 +CompilerSettings=00000000000000000000ib [Unit1] FileName=main.cpp Index: OpenMugen.layout =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.layout,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -p -r1.15 -r1.16 --- OpenMugen.layout 9 Jul 2005 21:53:14 -0000 1.15 +++ OpenMugen.layout 11 Jul 2005 16:12:15 -0000 1.16 @@ -6,21 +6,21 @@ LeftChar=1 Open=0 Top=0 [Editors] -Focused=48 -Order=23,24,33,20,48 +Focused=33 +Order=23,24,33,20,48,19,18,17,28,27,7,0,37,36,1,4,47,8,46 [Editor_0] -Open=0 +Open=1 Top=0 CursorCol=1 CursorRow=1 TopLine=1 LeftChar=1 [Editor_1] -Open=0 +Open=1 Top=0 CursorCol=32 CursorRow=79 -TopLine=40 +TopLine=39 LeftChar=1 [Editor_2] Open=0 @@ -37,11 +37,11 @@ CursorRow=57 TopLine=31 LeftChar=1 [Editor_4] -Open=0 +Open=1 Top=0 -CursorCol=2 -CursorRow=706 -TopLine=666 +CursorCol=22 +CursorRow=23 +TopLine=1 LeftChar=1 [Editor_5] Open=0 @@ -58,18 +58,18 @@ CursorRow=27 TopLine=13 LeftChar=1 [Editor_7] -Open=0 +Open=1 Top=0 -CursorCol=8 -CursorRow=297 -TopLine=286 +CursorCol=1 +CursorRow=312 +TopLine=275 LeftChar=1 [Editor_8] -Open=0 +Open=1 Top=0 -CursorCol=29 +CursorCol=35 CursorRow=99 -TopLine=78 +TopLine=60 LeftChar=1 [Editor_9] Open=0 @@ -121,32 +121,32 @@ CursorRow=184 TopLine=147 LeftChar=1 [Editor_17] -Open=0 +Open=1 Top=0 -CursorCol=71 -CursorRow=159 -TopLine=124 +CursorCol=3 +CursorRow=118 +TopLine=97 LeftChar=1 [Editor_18] -Open=0 +Open=1 Top=0 -CursorCol=76 -CursorRow=221 -TopLine=202 +CursorCol=30 +CursorRow=73 +TopLine=156 LeftChar=1 [Editor_19] -Open=0 +Open=1 Top=0 -CursorCol=1 -CursorRow=437 -TopLine=411 +CursorCol=35 +CursorRow=286 +TopLine=254 LeftChar=1 [Editor_20] Open=1 Top=0 -CursorCol=16 -CursorRow=827 -TopLine=803 +CursorCol=29 +CursorRow=220 +TopLine=192 LeftChar=1 [Editor_21] Open=0 @@ -191,17 +191,17 @@ CursorRow=372 TopLine=1 LeftChar=1 [Editor_27] -Open=0 +Open=1 Top=0 CursorCol=41 CursorRow=308 TopLine=304 LeftChar=1 [Editor_28] -Open=0 +Open=1 Top=0 -CursorCol=2 -CursorRow=28 +CursorCol=15 +CursorRow=56 TopLine=28 LeftChar=1 [Editor_29] @@ -234,10 +234,10 @@ TopLine=16 LeftChar=1 [Editor_33] Open=1 -Top=0 -CursorCol=58 -CursorRow=508 -TopLine=489 +Top=1 +CursorCol=25 +CursorRow=487 +TopLine=449 LeftChar=1 [Editor_34] Open=0 @@ -254,18 +254,18 @@ CursorRow=429 TopLine=414 LeftChar=1 [Editor_36] -Open=0 +Open=1 Top=0 -CursorCol=30 -CursorRow=363 -TopLine=352 +CursorCol=2 +CursorRow=374 +TopLine=364 LeftChar=1 [Editor_37] -Open=0 +Open=1 Top=0 CursorCol=15 CursorRow=1434 -TopLine=1411 +TopLine=1417 LeftChar=1 [Editor_38] Open=0 @@ -324,25 +324,25 @@ CursorRow=87 TopLine=46 LeftChar=1 [Editor_46] -Open=0 +Open=1 Top=0 -CursorCol=2 -CursorRow=30 -TopLine=103 +CursorCol=21 +CursorRow=114 +TopLine=109 LeftChar=1 [Editor_47] -Open=0 +Open=1 Top=0 -CursorCol=18 -CursorRow=225 -TopLine=202 +CursorCol=28 +CursorRow=43 +TopLine=11 LeftChar=1 [Editor_48] Open=1 -Top=1 -CursorCol=21 -CursorRow=224 -TopLine=193 +Top=0 +CursorCol=11 +CursorRow=416 +TopLine=382 LeftChar=1 [Editor_49] Open=0 Index: SffManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- SffManager.cpp 9 Jul 2005 21:50:19 -0000 1.9 +++ SffManager.cpp 11 Jul 2005 16:12:15 -0000 1.10 @@ -23,8 +23,7 @@ before the LoadSffFile CSffManager::CSffManager() { - xScaleValue=1.0; - yScaleValue=1.0; + lpSffPool=0; bSuperClass = true; bSharedPal = false; @@ -51,8 +50,6 @@ CSffManager::CSffManager(CSffManager *pS lpSffPool = pSuperClass->GetSffPool(); nSprPrior = 5; m_pAirManger = pSuperClass->GetAirManager(); - xScaleValue=1.0; - yScaleValue=1.0; bSharedPal = pSuperClass->IsSharedPal(); ColorPallet = pSuperClass->GetPal(); nFlags=CVideoSystem::BLT_NORMAL; @@ -240,7 +237,16 @@ void CSffManager::PrepareAnim2(s32 nAnim void CSffManager::BlitAnim(s16 x, s16 y,float x_scale,float y_scale) { if(Anim==0) - return; + return; + + u32 saveFlags = nFlags; + + if( ( saveFlags & CVideoSystem::BLT_FLIPH ) && ( Anim->AnimationElement[nCurrentImage].FlipFlags == HFLIPFLAG ) ) + nFlags = CVideoSystem::BLT_NORMAL | CVideoSystem::BLT_MASKED; + + if( ( saveFlags & CVideoSystem::BLT_NORMAL ) && ( Anim->AnimationElement[nCurrentImage].FlipFlags == HFLIPFLAG ) ) + nFlags = CVideoSystem::BLT_FLIPH | CVideoSystem::BLT_MASKED; + if( nFlags & CVideoSystem::BLT_FLIPH ) x -= Anim->AnimationElement[nCurrentImage].x; @@ -254,6 +260,8 @@ void CSffManager::BlitAnim(s16 x, s16 y, Anim->AnimationElement[nCurrentImage].nImageNumber, x,y,x_scale,y_scale); + nFlags = saveFlags; + if( bPause ) { return; Index: SffManager.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- SffManager.h 9 Jul 2005 21:50:19 -0000 1.8 +++ SffManager.h 11 Jul 2005 16:12:15 -0000 1.9 @@ -114,9 +114,8 @@ private: int nSprPrior; int FindSprite(s16 nGroupNumber,s16 nImageNumber); void DecodeSffFile(); - float xScaleValue,yScaleValue; //hold the current Animation - ActionElement *Anim; + ActionElement *Anim; public: CSffManager(); Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- VideoSystem.cpp 9 Jul 2005 21:53:14 -0000 1.10 +++ VideoSystem.cpp 11 Jul 2005 16:12:15 -0000 1.11 @@ -57,7 +57,7 @@ bool CVideoSystem::InitSystem() { PrintMessage("CVideoSystem::InitSystem()"); //Set Video mode and get main Surface - screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE/*|SDL_FULLSCREEN/*|SDL_DOUBLEBUF*/); + screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE/*|SDL_FULLSCREEN|*/|SDL_DOUBLEBUF); //Check the surface for validate if(screen==NULL) { @@ -116,9 +116,10 @@ void CVideoSystem::Draw() DrawText(265,10,"%2.2f FPS",nFps); - //SDL_BlitSurface(work,NULL,screen,NULL); + // SDL_BlitSurface(work,NULL,screen,NULL); //scale2x(work,screen); FilterImage(); + //SDL_SoftStretch(work,0,screen,0); //SDL_UpdateRect(screen,0,0,640,480); SDL_Flip(screen); Index: global.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/global.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- global.cpp 2 Jul 2005 17:13:05 -0000 1.2 +++ global.cpp 11 Jul 2005 16:12:15 -0000 1.3 @@ -12,7 +12,7 @@ void PrintMessage(char *str,...) vsprintf(string, str, ap); // Converts Symbols To Actual Numbers va_end(ap); -#ifdef _XBOX +/*#ifdef _XBOX pLogFile=fopen("d:\\log.txt","a+"); #else pLogFile=fopen("log.txt","a+"); @@ -20,7 +20,7 @@ void PrintMessage(char *str,...) fprintf(pLogFile,string); fprintf(pLogFile,"\n"); - fclose(pLogFile); + fclose(pLogFile);*/ printf(string); Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -p -r1.12 -r1.13 --- player.cpp 9 Jul 2005 21:51:41 -0000 1.12 +++ player.cpp 11 Jul 2005 16:12:15 -0000 1.13 @@ -38,6 +38,8 @@ CPlayer::CPlayer() bHitDef=false; bPause=false; bHitTarget = false; + bPosFreez = false; + bPhysicsUpdated = false; nLife=1000; nPower=2000; nStateTime=0; @@ -212,6 +214,10 @@ Handles the players Physic void CPlayer::HandlePhysic() { + if ( bPosFreez || bPhysicsUpdated) + return; + + bPhysicsUpdated = true; if(bRightFaced) x+=xVel; @@ -628,6 +634,7 @@ void CPlayer::HandleHit(CPlayer *opponen opponent->SetupGetHit(); + if( myGetHitVar.p1StateNo != -1 ) ChangeState( myGetHitVar.p1StateNo ); @@ -804,10 +811,7 @@ void CPlayer::HandlePushBehavior(CPlayer if( (nDistanceX < 0) && ( y == nGround ) && (nCurrAnimNumber != 5 ) && (nCurrStateNumber == 0) ) { - if(GetRightFaced()) - FaceLeft(); - else - FaceRight(); + TurnPlayer(); ChangeAnim(5); } @@ -860,7 +864,7 @@ void CPlayer::CheckGlobalStatus() bHitTarget = false; - HandlePhysic(); + UpDateFacing(); for( BI i = ObjList->begin(); i != ObjList->end(); ++i) @@ -876,6 +880,7 @@ void CPlayer::CheckGlobalStatus() m_pVMachine->SetPlayers(this,opponent); m_pControllerExec->SetPlayer(this,opponent); HandleFSM(); + HandlePhysic(); HandlePushBehavior(opponent); HandleHitDef(opponent); HandleGetHitState(); @@ -952,6 +957,8 @@ void CPlayer::ResetFlags() bChangeState=false; bWalk=true; bAutoTurn=true; + bPosFreez = false; + bPhysicsUpdated = false; } // debug info of the player @@ -1023,6 +1030,16 @@ void CPlayer::ShowClsn() } +void CPlayer::TurnPlayer() +{ + if(GetRightFaced()) + FaceLeft(); + else + FaceRight(); + + UpDateFacing(); +} + //Resets the player after a match void CPlayer::ResetPlayer() { @@ -1169,7 +1186,7 @@ void CPlayer::DrawPlayer() //draw debug info if(bDebugInfo) - Debug(); + Debug(); } /* ================================================================================ Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- player.h 9 Jul 2005 21:51:41 -0000 1.9 +++ player.h 11 Jul 2005 16:12:15 -0000 1.10 @@ -282,6 +282,8 @@ bool inputs[ GAME_INPUT_CO //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; char strCommand[255]; PLSTATEDEF *lpCurrStatedef; //ints are floats !!!!!!! @@ -441,8 +443,10 @@ enum HitPrior void SetSysFloatVar(int index,float value); void PlaySnd(s32 nGpr,s32 nItem,bool bLooped=false,u8 nLeftPan=255,u8 nRightPan=255); void SetAttackDist(float dist); + void SetPosFreez( bool freez ) { bPosFreez = freez; } void RestoreState() {m_pStateManager = m_OrginStateManager; } void SetAttacker(CPlayer *attacker) {AttackerPlayer = attacker; } + void TurnPlayer(); //trigger functions char *GetCommand(); |
From: SakirSoft <sak...@us...> - 2005-07-09 21:53:24
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2552 Modified Files: ControllerExecuter.cpp OpenMugen.layout StateParser.cpp StateParser.h VM.h VideoSystem.cpp Log Message: no message Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- ControllerExecuter.cpp 6 Jul 2005 19:01:25 -0000 1.10 +++ ControllerExecuter.cpp 9 Jul 2005 21:53:14 -0000 1.11 @@ -276,6 +276,15 @@ void CControllerExecuter::ChangeAnim2() s32 nAnimAction=0; CHANGEANIM *temp=(CHANGEANIM*)lpController; + if(temp->value) + nAnimAction=(s32)m_pVM->Execute(temp->value); + if(temp->elem_no) + nCurrElement=(u16)m_pVM->Execute(temp->elem_no); + + m_CurrentPlayer->ChangeAnim2(nAnimAction,nCurrElement); + + + PrintMessage("TODO: implement ChangeAnim2 controller"); } @@ -459,7 +468,44 @@ void CControllerExecuter::SprPriority() void CControllerExecuter::TargetBind() { TARGETBIND *temp = (TARGETBIND*)lpController; - PrintMessage("TODO: implement TargetBind controller"); + s16 nTargetId = m_pVM->Execute(temp->id,-1); + float x_pos = m_pVM->Execute(temp->pos_x); + float y_pos = m_pVM->Execute(temp->pos_y); + int time = m_pVM->Execute(temp->time,1); + + if( nTargetId == -1 ) + { + int nHowManyTargtes = 0; + CPlayer **list = m_CurrentPlayer->GetAllTargets(nHowManyTargtes); + + for( int i = 0;i < nHowManyTargtes;i++) + { + CBindPlayer * bind = new CBindPlayer( list[i] , m_CurrentPlayer ); + bind->SetBindPosX( x_pos ); + bind->SetBindPosY( y_pos ); + bind->SetTime( time ); + + mugen->GetEngine()->AddObject( bind ); + + } + + }else + { + CPlayer *target = m_CurrentPlayer->GetTargetById(nTargetId); + + if( target ) + { + CBindPlayer * bind = new CBindPlayer( target , m_CurrentPlayer ); + bind->SetBindPosX( x_pos ); + bind->SetBindPosY( y_pos ); + bind->SetTime( time ); + + mugen->GetEngine()->AddObject( bind ); + + } + } + + PrintMessage("Test: implement TargetBind controller"); } void CControllerExecuter::TargetFacing() @@ -477,6 +523,31 @@ void CControllerExecuter::TargetLifeAdd( void CControllerExecuter::TargetState() { TARGETSTATE *temp = (TARGETSTATE*)lpController; + s16 nTargetId = m_pVM->Execute(temp->id,-1); + s32 StateNo = m_pVM->Execute(temp->value); + + if( nTargetId == -1 ) + { + int nHowManyTargtes = 0; + CPlayer **list = m_CurrentPlayer->GetAllTargets(nHowManyTargtes); + + for( int i = 0;i < nHowManyTargtes;i++) + { + list[i]->ChangeState(StateNo); + + } + + }else + { + CPlayer *target = m_CurrentPlayer->GetTargetById(nTargetId); + + if( target ) + { + target->ChangeState(StateNo); + } + } + + PrintMessage("TODO: implement TargetState controller"); } @@ -500,8 +571,9 @@ void CControllerExecuter::PlaySnd() void CControllerExecuter::SelfState() { CHANGESTATE *temp=(CHANGESTATE*)lpController; - - PrintMessage("TODO: implement SelfState controller"); + m_CurrentPlayer->RestoreState(); + ChangeState(); + } void CControllerExecuter::SuperPause() @@ -609,6 +681,9 @@ void CControllerExecuter::HitDef() hitvar.bGuardPlayerSnd = temp->bPlayerGuardSound; hitvar.guard_snd_grp = m_pVM->Execute(temp->snd_guard_grp,6); hitvar.guard_snd_item = m_pVM->Execute(temp->snd_guard_item,0); + hitvar.p1StateNo = m_pVM->Execute(temp->p1stateno,-1); + hitvar.p2StateNo = m_pVM->Execute(temp->p2stateno,-1); + hitvar.isbound = true; //Set guard dist m_CurrentPlayer->SetAttackDist( m_pVM->Execute(temp->guard_dist,m_CurrentPlayer->ConstData.Size.nAttackDist) ); Index: OpenMugen.layout =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.layout,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -p -r1.14 -r1.15 --- OpenMugen.layout 6 Jul 2005 19:01:25 -0000 1.14 +++ OpenMugen.layout 9 Jul 2005 21:53:14 -0000 1.15 @@ -6,14 +6,14 @@ LeftChar=1 Open=0 Top=0 [Editors] -Focused=39 -Order=39,-1 +Focused=48 +Order=23,24,33,20,48 [Editor_0] Open=0 Top=0 CursorCol=1 -CursorRow=14 -TopLine=22 +CursorRow=1 +TopLine=1 LeftChar=1 [Editor_1] Open=0 @@ -26,8 +26,8 @@ LeftChar=1 Open=0 Top=0 CursorCol=1 -CursorRow=92 -TopLine=17 +CursorRow=74 +TopLine=51 LeftChar=1 [Editor_3] Open=0 @@ -39,16 +39,16 @@ LeftChar=1 [Editor_4] Open=0 Top=0 -CursorCol=6 -CursorRow=281 -TopLine=259 +CursorCol=2 +CursorRow=706 +TopLine=666 LeftChar=1 [Editor_5] Open=0 Top=0 -CursorCol=4 -CursorRow=93 -TopLine=63 +CursorCol=2 +CursorRow=95 +TopLine=58 LeftChar=1 [Editor_6] Open=0 @@ -60,9 +60,9 @@ LeftChar=1 [Editor_7] Open=0 Top=0 -CursorCol=1 -CursorRow=135 -TopLine=99 +CursorCol=8 +CursorRow=297 +TopLine=286 LeftChar=1 [Editor_8] Open=0 @@ -117,36 +117,36 @@ LeftChar=1 Open=0 Top=0 CursorCol=28 -CursorRow=146 -TopLine=127 +CursorRow=184 +TopLine=147 LeftChar=1 [Editor_17] Open=0 Top=0 -CursorCol=24 -CursorRow=102 -TopLine=81 +CursorCol=71 +CursorRow=159 +TopLine=124 LeftChar=1 [Editor_18] Open=0 Top=0 -CursorCol=11 -CursorRow=231 -TopLine=215 +CursorCol=76 +CursorRow=221 +TopLine=202 LeftChar=1 [Editor_19] Open=0 Top=0 -CursorCol=26 -CursorRow=203 -TopLine=420 +CursorCol=1 +CursorRow=437 +TopLine=411 LeftChar=1 [Editor_20] -Open=0 +Open=1 Top=0 -CursorCol=18 -CursorRow=1016 -TopLine=1007 +CursorCol=16 +CursorRow=827 +TopLine=803 LeftChar=1 [Editor_21] Open=0 @@ -163,24 +163,24 @@ CursorRow=33 TopLine=1 LeftChar=1 [Editor_23] -Open=0 +Open=1 Top=0 -CursorCol=16 -CursorRow=1589 -TopLine=1583 -LeftChar=5 +CursorCol=21 +CursorRow=852 +TopLine=830 +LeftChar=1 [Editor_24] -Open=0 +Open=1 Top=0 CursorCol=16 -CursorRow=188 -TopLine=153 +CursorRow=34 +TopLine=12 LeftChar=1 [Editor_25] Open=0 Top=0 -CursorCol=2 -CursorRow=83 +CursorCol=23 +CursorRow=30 TopLine=20 LeftChar=1 [Editor_26] @@ -193,16 +193,16 @@ LeftChar=1 [Editor_27] Open=0 Top=0 -CursorCol=8 -CursorRow=175 -TopLine=217 +CursorCol=41 +CursorRow=308 +TopLine=304 LeftChar=1 [Editor_28] Open=0 Top=0 -CursorCol=3 -CursorRow=78 -TopLine=22 +CursorCol=2 +CursorRow=28 +TopLine=28 LeftChar=1 [Editor_29] Open=0 @@ -214,16 +214,16 @@ LeftChar=1 [Editor_30] Open=0 Top=0 -CursorCol=16 -CursorRow=34 -TopLine=47 +CursorCol=17 +CursorRow=20 +TopLine=3 LeftChar=1 [Editor_31] Open=0 Top=0 CursorCol=27 CursorRow=15 -TopLine=1 +TopLine=112 LeftChar=1 [Editor_32] Open=0 @@ -233,11 +233,11 @@ CursorRow=33 TopLine=16 LeftChar=1 [Editor_33] -Open=0 +Open=1 Top=0 -CursorCol=68 -CursorRow=611 -TopLine=587 +CursorCol=58 +CursorRow=508 +TopLine=489 LeftChar=1 [Editor_34] Open=0 @@ -249,23 +249,23 @@ LeftChar=1 [Editor_35] Open=0 Top=0 -CursorCol=45 -CursorRow=209 -TopLine=460 +CursorCol=26 +CursorRow=429 +TopLine=414 LeftChar=1 [Editor_36] Open=0 Top=0 -CursorCol=17 -CursorRow=200 -TopLine=183 +CursorCol=30 +CursorRow=363 +TopLine=352 LeftChar=1 [Editor_37] Open=0 Top=0 -CursorCol=51 -CursorRow=3853 -TopLine=3818 +CursorCol=15 +CursorRow=1434 +TopLine=1411 LeftChar=1 [Editor_38] Open=0 @@ -275,8 +275,8 @@ CursorRow=28 TopLine=1 LeftChar=1 [Editor_39] -Open=1 -Top=1 +Open=0 +Top=0 CursorCol=34 CursorRow=167 TopLine=155 @@ -326,23 +326,23 @@ LeftChar=1 [Editor_46] Open=0 Top=0 -CursorCol=27 -CursorRow=49 -TopLine=1 +CursorCol=2 +CursorRow=30 +TopLine=103 LeftChar=1 [Editor_47] Open=0 Top=0 -CursorCol=16 -CursorRow=100 -TopLine=81 +CursorCol=18 +CursorRow=225 +TopLine=202 LeftChar=1 [Editor_48] -Open=0 -Top=0 -CursorCol=2 -CursorRow=143 -TopLine=106 +Open=1 +Top=1 +CursorCol=21 +CursorRow=224 +TopLine=193 LeftChar=1 [Editor_49] Open=0 Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- StateParser.cpp 2 Jul 2005 17:13:05 -0000 1.6 +++ StateParser.cpp 9 Jul 2005 21:53:14 -0000 1.7 @@ -3104,9 +3104,23 @@ void CStateParser::ParseHitBy() { HITBY *temp = (HITBY*)StateManager->GetController(); - + bool bValue = false; + if( tok.CheckToken("value") ) { + bValue = true; + temp->slot = 1; + } + + if( tok.CheckToken("value2" ) ) + { + bValue = true; + temp->slot = 2; + } + + + if( bValue ) + { if( !tok.CheckToken("=") ) Error("missing \"=\" "); @@ -3116,8 +3130,7 @@ void CStateParser::ParseHitBy() char strAttr[20]; strcpy(strAttr,tok.GetToken()); - u8 nAttrFlag=0; - + int i = 0; while ( strAttr[i] ) { @@ -3125,18 +3138,21 @@ void CStateParser::ParseHitBy() if(strAttr[i] >= 97) strAttr[i]-=32; + if( i > 2 ) + break; + switch(strAttr[i]) { case 'S': - nAttrFlag += stand; + temp->attackType[i] = stand; break; case 'C': - nAttrFlag += crouch; + temp->attackType[i] = crouch; break; case 'A': - nAttrFlag += air; + temp->attackType[i] = air; break; } @@ -3144,160 +3160,70 @@ void CStateParser::ParseHitBy() } - temp->attackType = nAttrFlag; - //Attribute1 - if( tok.CheckToken(",") ) - { - if( tok.CheckToken("NA") ) - temp->attackAttr1=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr1=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr1=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr1=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr1=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr1=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr1=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr1=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr1=CPlayer::HyperProjectile; - else - Error("worng attr parameter in HitBy controller"); - - } - //Attribute2 - if( tok.CheckToken(",") ) + + i=0; + + while( tok.CheckToken(",") ) { if( tok.CheckToken("NA") ) - temp->attackAttr2=CPlayer::NormalAttack; + temp->attackAttr[i]=CPlayer::NormalAttack; else if( tok.CheckToken("NT") ) - temp->attackAttr2=CPlayer::NormalThrow; + temp->attackAttr[i]=CPlayer::NormalThrow; else if( tok.CheckToken("NP") ) - temp->attackAttr2=CPlayer::NormalProjectile; + temp->attackAttr[i]=CPlayer::NormalProjectile; else if( tok.CheckToken("SA") ) - temp->attackAttr2=CPlayer::SpecialAttack; + temp->attackAttr[i]=CPlayer::SpecialAttack; else if( tok.CheckToken("ST") ) - temp->attackAttr2=CPlayer::SpecialThrow; + temp->attackAttr[i]=CPlayer::SpecialThrow; else if( tok.CheckToken("SP") ) - temp->attackAttr2=CPlayer::SpecialProjectile; + temp->attackAttr[i]=CPlayer::SpecialProjectile; else if( tok.CheckToken("HA") ) - temp->attackAttr2=CPlayer::HyperAttack; + temp->attackAttr[i]=CPlayer::HyperAttack; else if( tok.CheckToken("HT") ) - temp->attackAttr2=CPlayer::HyperThrow; + temp->attackAttr[i]=CPlayer::HyperThrow; else if( tok.CheckToken("HP") ) - temp->attackAttr2=CPlayer::HyperProjectile; + temp->attackAttr[i]=CPlayer::HyperProjectile; else Error("worng attr parameter in HitBy controller"); + + i++; } - - //Attribute3 - if( tok.CheckToken(",") ) - { - if( tok.CheckToken("NA") ) - temp->attackAttr3=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr3=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr3=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr3=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr3=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr3=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr3=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr3=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr3=CPlayer::HyperProjectile; - else - Error("worng attr parameter in HitBy controller"); - - } + }else { - //Attribute1 - if( tok.CheckToken("NA") ) - temp->attackAttr1=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr1=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr1=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr1=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr1=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr1=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr1=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr1=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr1=CPlayer::HyperProjectile; - else - Error("worng attr parameter in HitBy controller"); - - //Attribute2 - if( tok.CheckToken(",") ) - { + + int i=0; + + do + { if( tok.CheckToken("NA") ) - temp->attackAttr2=CPlayer::NormalAttack; + temp->attackAttr[i]=CPlayer::NormalAttack; else if( tok.CheckToken("NT") ) - temp->attackAttr2=CPlayer::NormalThrow; + temp->attackAttr[i]=CPlayer::NormalThrow; else if( tok.CheckToken("NP") ) - temp->attackAttr2=CPlayer::NormalProjectile; + temp->attackAttr[i]=CPlayer::NormalProjectile; else if( tok.CheckToken("SA") ) - temp->attackAttr2=CPlayer::SpecialAttack; + temp->attackAttr[i]=CPlayer::SpecialAttack; else if( tok.CheckToken("ST") ) - temp->attackAttr2=CPlayer::SpecialThrow; + temp->attackAttr[i]=CPlayer::SpecialThrow; else if( tok.CheckToken("SP") ) - temp->attackAttr2=CPlayer::SpecialProjectile; + temp->attackAttr[i]=CPlayer::SpecialProjectile; else if( tok.CheckToken("HA") ) - temp->attackAttr2=CPlayer::HyperAttack; + temp->attackAttr[i]=CPlayer::HyperAttack; else if( tok.CheckToken("HT") ) - temp->attackAttr2=CPlayer::HyperThrow; + temp->attackAttr[i]=CPlayer::HyperThrow; else if( tok.CheckToken("HP") ) - temp->attackAttr2=CPlayer::HyperProjectile; + temp->attackAttr[i]=CPlayer::HyperProjectile; else Error("worng attr parameter in HitBy controller"); + + i++; - } - - //Attribute3 - if( tok.CheckToken(",") ) - { - if( tok.CheckToken("NA") ) - temp->attackAttr3=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr3=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr3=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr3=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr3=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr3=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr3=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr3=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr3=CPlayer::HyperProjectile; - else - Error("worng attr parameter in HitBy controller"); - } + }while( tok.CheckToken(",") ); } @@ -3309,7 +3235,7 @@ void CStateParser::ParseHitBy() temp->time = GenerateInstruction(); }else - Error("Unknown token \"%s\" in HitBy controller",tok.GetToken()); + Error("Unknown token \"%s\" inHitBy controller",tok.GetToken()); } @@ -3317,9 +3243,22 @@ void CStateParser::ParseNotHitBy() { HITBY *temp = (HITBY*)StateManager->GetController(); - + bool bValue = false; + if( tok.CheckToken("value") ) { + bValue = true; + temp->slot = 1; + } + + if( tok.CheckToken("value2" ) ) + { + bValue = true; + temp->slot = 2; + } + + if( bValue ) + { if( !tok.CheckToken("=") ) Error("missing \"=\" "); @@ -3338,18 +3277,21 @@ void CStateParser::ParseNotHitBy() if(strAttr[i] >= 97) strAttr[i]-=32; + if( i > 2 ) + break; + switch(strAttr[i]) { case 'S': - nAttrFlag += stand; + temp->attackType[i] = stand; break; case 'C': - nAttrFlag += crouch; + temp->attackType[i] = crouch; break; case 'A': - nAttrFlag += air; + temp->attackType[i] = air; break; } @@ -3357,184 +3299,68 @@ void CStateParser::ParseNotHitBy() } - temp->attackType = nAttrFlag; - //Attribute1 - if( tok.CheckToken(",") ) - { - if( tok.CheckToken("NA") ) - temp->attackAttr1=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr1=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr1=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr1=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr1=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr1=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr1=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr1=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr1=CPlayer::HyperProjectile; - else if( tok.CheckToken("AP") ) - PrintMessage("AP param in nothitby controller"); - else if( tok.CheckToken("AT") ) - PrintMessage("AT param in nothitby controller"); - else - Error("worng attr parameter in HitBy controller"); - - } - //Attribute2 - if( tok.CheckToken(",") ) + + i=0; + + while( tok.CheckToken(",") ) { if( tok.CheckToken("NA") ) - temp->attackAttr2=CPlayer::NormalAttack; + temp->attackAttr[i]=CPlayer::NormalAttack; else if( tok.CheckToken("NT") ) - temp->attackAttr2=CPlayer::NormalThrow; + temp->attackAttr[i]=CPlayer::NormalThrow; else if( tok.CheckToken("NP") ) - temp->attackAttr2=CPlayer::NormalProjectile; + temp->attackAttr[i]=CPlayer::NormalProjectile; else if( tok.CheckToken("SA") ) - temp->attackAttr2=CPlayer::SpecialAttack; + temp->attackAttr[i]=CPlayer::SpecialAttack; else if( tok.CheckToken("ST") ) - temp->attackAttr2=CPlayer::SpecialThrow; + temp->attackAttr[i]=CPlayer::SpecialThrow; else if( tok.CheckToken("SP") ) - temp->attackAttr2=CPlayer::SpecialProjectile; + temp->attackAttr[i]=CPlayer::SpecialProjectile; else if( tok.CheckToken("HA") ) - temp->attackAttr2=CPlayer::HyperAttack; + temp->attackAttr[i]=CPlayer::HyperAttack; else if( tok.CheckToken("HT") ) - temp->attackAttr2=CPlayer::HyperThrow; + temp->attackAttr[i]=CPlayer::HyperThrow; else if( tok.CheckToken("HP") ) - temp->attackAttr2=CPlayer::HyperProjectile; - else if( tok.CheckToken("AP") ) - PrintMessage("AP param in nothitby controller"); - else if( tok.CheckToken("AT") ) - PrintMessage("AT param in nothitby controller"); + temp->attackAttr[i]=CPlayer::HyperProjectile; else - Error("worng attr parameter in HitBy controller"); + Error("worng attr parameter in NotHitBy controller"); + + i++; } - - //Attribute3 - if( tok.CheckToken(",") ) - { - if( tok.CheckToken("NA") ) - temp->attackAttr3=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr3=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr3=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr3=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr3=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr3=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr3=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr3=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr3=CPlayer::HyperProjectile; - else if( tok.CheckToken("AP") ) - PrintMessage("AP param in nothitby controller"); - else if( tok.CheckToken("AT") ) - PrintMessage("AT param in nothitby controller"); - else - Error("worng attr parameter in HitBy controller"); - - } }else { - //Attribute1 - if( tok.CheckToken("NA") ) - temp->attackAttr1=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr1=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr1=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr1=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr1=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr1=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr1=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr1=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr1=CPlayer::HyperProjectile; - else if( tok.CheckToken("AP") ) - PrintMessage("AP param in nothitby controller"); - else if( tok.CheckToken("AT") ) - PrintMessage("AT param in nothitby controller"); - else - Error("worng attr parameter in HitBy controller"); - - //Attribute2 - if( tok.CheckToken(",") ) - { + int i=0; + + do + { if( tok.CheckToken("NA") ) - temp->attackAttr2=CPlayer::NormalAttack; + temp->attackAttr[i]=CPlayer::NormalAttack; else if( tok.CheckToken("NT") ) - temp->attackAttr2=CPlayer::NormalThrow; + temp->attackAttr[i]=CPlayer::NormalThrow; else if( tok.CheckToken("NP") ) - temp->attackAttr2=CPlayer::NormalProjectile; + temp->attackAttr[i]=CPlayer::NormalProjectile; else if( tok.CheckToken("SA") ) - temp->attackAttr2=CPlayer::SpecialAttack; + temp->attackAttr[i]=CPlayer::SpecialAttack; else if( tok.CheckToken("ST") ) - temp->attackAttr2=CPlayer::SpecialThrow; + temp->attackAttr[i]=CPlayer::SpecialThrow; else if( tok.CheckToken("SP") ) - temp->attackAttr2=CPlayer::SpecialProjectile; + temp->attackAttr[i]=CPlayer::SpecialProjectile; else if( tok.CheckToken("HA") ) - temp->attackAttr2=CPlayer::HyperAttack; + temp->attackAttr[i]=CPlayer::HyperAttack; else if( tok.CheckToken("HT") ) - temp->attackAttr2=CPlayer::HyperThrow; + temp->attackAttr[i]=CPlayer::HyperThrow; else if( tok.CheckToken("HP") ) - temp->attackAttr2=CPlayer::HyperProjectile; - else if( tok.CheckToken("AP") ) - PrintMessage("AP param in nothitby controller"); - else if( tok.CheckToken("AT") ) - PrintMessage("AT param in nothitby controller"); + temp->attackAttr[i]=CPlayer::HyperProjectile; else - Error("worng attr parameter in HitBy controller"); + Error("worng attr parameter in NotHitBy controller"); + + i++; - } - - //Attribute3 - if( tok.CheckToken(",") ) - { - if( tok.CheckToken("NA") ) - temp->attackAttr3=CPlayer::NormalAttack; - else if( tok.CheckToken("NT") ) - temp->attackAttr3=CPlayer::NormalThrow; - else if( tok.CheckToken("NP") ) - temp->attackAttr3=CPlayer::NormalProjectile; - else if( tok.CheckToken("SA") ) - temp->attackAttr3=CPlayer::SpecialAttack; - else if( tok.CheckToken("ST") ) - temp->attackAttr3=CPlayer::SpecialThrow; - else if( tok.CheckToken("SP") ) - temp->attackAttr3=CPlayer::SpecialProjectile; - else if( tok.CheckToken("HA") ) - temp->attackAttr3=CPlayer::HyperAttack; - else if( tok.CheckToken("HT") ) - temp->attackAttr3=CPlayer::HyperThrow; - else if( tok.CheckToken("HP") ) - temp->attackAttr3=CPlayer::HyperProjectile; - else if( tok.CheckToken("AP") ) - PrintMessage("AP param in nothitby controller"); - else if( tok.CheckToken("AT") ) - PrintMessage("AT param in nothitby controller"); - else - Error("worng attr parameter in HitBy controller"); - } + }while( tok.CheckToken(",") ); } @@ -3546,7 +3372,7 @@ void CStateParser::ParseNotHitBy() temp->time = GenerateInstruction(); }else - Error("Unknown token \"%s\" in HitBy controller",tok.GetToken()); + Error("Unknown token \"%s\" in NotHitBy controller",tok.GetToken()); } Index: StateParser.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- StateParser.h 2 Jul 2005 17:13:05 -0000 1.5 +++ StateParser.h 9 Jul 2005 21:53:14 -0000 1.6 @@ -372,10 +372,9 @@ struct SPRPRIO struct HITBY { - u8 attackType; - u8 attackAttr1; - u8 attackAttr2; - u8 attackAttr3; + int slot; + u8 attackType[3]; + u8 attackAttr[10]; INSTRUCTION *time; }; Index: VM.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- VM.h 10 Jun 2005 21:35:21 -0000 1.1.1.1 +++ VM.h 9 Jul 2005 21:53:14 -0000 1.2 @@ -31,6 +31,7 @@ class CVirtualMachine CPlayer *m_pPlayer1,*m_pPlayer2; CPlayer *m_CurrentPlayer,*root,*parent; CEngine *m_pEngine; +bool bSfalse; public: CVirtualMachine(); ~CVirtualMachine(); Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- VideoSystem.cpp 6 Jul 2005 19:01:25 -0000 1.9 +++ VideoSystem.cpp 9 Jul 2005 21:53:14 -0000 1.10 @@ -57,7 +57,7 @@ bool CVideoSystem::InitSystem() { PrintMessage("CVideoSystem::InitSystem()"); //Set Video mode and get main Surface - screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE/*|SDL_DOUBLEBUF*/); + screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE/*|SDL_FULLSCREEN/*|SDL_DOUBLEBUF*/); //Check the surface for validate if(screen==NULL) { @@ -106,7 +106,7 @@ void CVideoSystem::Draw() DrawAllImages(); nowTime=SDL_GetTicks(); - if(nowTime > lastTime+500) + if(nowTime > lastTime+250) { nFps=(float)nFpsCount*1000 / (nowTime-lastTime); nFpsCount=0; @@ -118,7 +118,7 @@ void CVideoSystem::Draw() //SDL_BlitSurface(work,NULL,screen,NULL); //scale2x(work,screen); - FilterImage(); + FilterImage(); //SDL_UpdateRect(screen,0,0,640,480); SDL_Flip(screen); |
From: SakirSoft <sak...@us...> - 2005-07-09 21:52:26
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2293 Modified Files: VM.cpp Log Message: Fixed AnimElemtTime trigger Index: VM.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- VM.cpp 6 Jul 2005 18:56:43 -0000 1.5 +++ VM.cpp 9 Jul 2005 21:52:17 -0000 1.6 @@ -206,6 +206,8 @@ float CVirtualMachine::Execute(INSTRUCTI //Rest the Satck for the next execution m_Stack.ResetStack(); + + bSfalse = false; while(pInst[nCurrentIns].n_OpCode!=OP_STOP) { @@ -214,6 +216,14 @@ float CVirtualMachine::Execute(INSTRUCTI // PrintMessage("%s %i %s",strOpCode[pInst[nCurrentIns].n_OpCode],pInst[nCurrentIns].n_OpCode,pInst[nCurrentIns].strValue); //Execute the function (this->*pFuncTable[pInst[nCurrentIns].n_OpCode])(); + + if ( bSfalse ) + { + + m_Stack.Push(0,"#"); + break; + } + nCurrentIns++; } PopValue(); @@ -836,12 +846,18 @@ void CVirtualMachine::AnimeElemTime() m_Stack.Push((float)m_CurrentPlayer->GetCurrentImageTime(),"#"); // PrintMessage("%i",tActionElement->nCurrentImageTime); - } - else + }else if( nElementToCheck > m_CurrentPlayer->GetCurrentImageNr()+1 ) + m_Stack.Push(-1,"#"); + else if( nElementToCheck < m_CurrentPlayer->GetCurrentImageNr()+1 ) + m_Stack.Push(0,"#"); + + /*else { //Should return SFalse - m_Stack.Push(-1,"#"); - } + m_Stack.Push(0,"#"); + //bSfalse = true; + //throw(CError("nope")); + }*/ } @@ -1816,7 +1832,7 @@ void CVirtualMachine::P2BodyDist() }//Else y value else { - fDist = m_CurrentPlayer->GetPosY() - m_pPlayer2->GetPosY(); + fDist = m_CurrentPlayer->GetDistY(); m_Stack.Push(fDist,"#"); } @@ -1824,17 +1840,18 @@ void CVirtualMachine::P2BodyDist() void CVirtualMachine::P2Dist() { - float fDist=0; + float fDist=0; //1 = X Value if(m_Stack.Pop().Value==1) { - m_Stack.Push(0,"#"); + fDist = m_CurrentPlayer->GetDistY(); + m_Stack.Push(fDist,"#"); }//Else y value else { - //default - m_Stack.Push(0,"#"); + fDist = m_CurrentPlayer->GetDistY(); + m_Stack.Push(fDist,"#"); } } @@ -1863,7 +1880,7 @@ void CVirtualMachine::P2StateNo() void CVirtualMachine::P2StateType() { - m_Stack.Push(0,"#"); + m_Stack.Push(m_pPlayer2->GetStateType(),"#"); } void CVirtualMachine::P3Name() |
From: SakirSoft <sak...@us...> - 2005-07-09 21:51:50
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2045 Modified Files: player.cpp player.h Log Message: Add ChangeAnim2 controller Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -p -r1.11 -r1.12 --- player.cpp 6 Jul 2005 19:00:21 -0000 1.11 +++ player.cpp 9 Jul 2005 21:51:41 -0000 1.12 @@ -37,6 +37,7 @@ CPlayer::CPlayer() bMoveHitPresit=false; bHitDef=false; bPause=false; + bHitTarget = false; nLife=1000; nPower=2000; nStateTime=0; @@ -47,6 +48,10 @@ CPlayer::CPlayer() xVel=0; yVel=0; nSprPrio=5; + AttackerPlayer = 0; + + TargetListNum = 0; + memset( TargetList,0,sizeof(CPlayer*)); //this should be a unique player id number @@ -69,6 +74,9 @@ CPlayer::CPlayer() m_pCmdManager = new CCmdManager; m_pSndManager = new CSoundManager; + //keep a copy of it to restore a player from costum states from the opponent player + m_OrginStateManager = m_pStateManager; + } CPlayer::CPlayer(CSffManager *sff,CAirManager *air,CStateManager *state,CVirtualMachine *vm) @@ -84,7 +92,8 @@ CPlayer::~CPlayer() { delete m_pSffManager; delete m_pAirManager; - delete m_pStateManager; + //delete m_pStateManager; + delete m_OrginStateManager; // it is safer delete m_pCmdManager; delete m_pControllerExec; delete m_pVMachine; @@ -601,7 +610,12 @@ PlayHit sound, apply hit pause, Create s */ void CPlayer::HandleHit(CPlayer *opponent) { + opponent->SetInHitVar(myGetHitVar); + + opponent->SetAttacker( this ); + + if(myGetHitVar.groundtype == 3) opponent->ChangeState(5070); @@ -614,6 +628,13 @@ void CPlayer::HandleHit(CPlayer *opponen opponent->SetupGetHit(); + + if( myGetHitVar.p1StateNo != -1 ) + ChangeState( myGetHitVar.p1StateNo ); + + if( myGetHitVar.p2StateNo != -1 ) + opponent->ChangeState( myGetHitVar.p2StateNo, m_OrginStateManager ); + /*play hit sound sound*/ if( myGetHitVar.bPlayerSnd ) PlaySnd(myGetHitVar.snd_grp,myGetHitVar.snd_item); @@ -635,7 +656,11 @@ void CPlayer::HandleHit(CPlayer *opponen mugen->GetEngine()->AddObject( explod ); - bHitDef=false; + //add target to list + AddTargetToList( opponent ); + + /*bHitDef=false; */ + bHitTarget = true; } /* @@ -674,7 +699,9 @@ void CPlayer::HandleGuard(CPlayer *oppon pause->SetPauseTime( myGetHitVar.guardPauseTime); mugen->GetEngine()->AddObject( pause ); - bHitDef=false; + /*bHitDef=false;*/ + bHitTarget = true; + } } /* @@ -775,7 +802,7 @@ void CPlayer::HandlePushBehavior(CPlayer //This is for turning if( (nDistanceX < 0) && ( y == nGround ) && - (nCurrAnimNumber != 5 ) && (nCurrStateNumber != 52) ) + (nCurrAnimNumber != 5 ) && (nCurrStateNumber == 0) ) { if(GetRightFaced()) FaceLeft(); @@ -797,7 +824,7 @@ void CPlayer::HandlePushBehavior(CPlayer TODO:Handle air push */ if(nBodyDistanceX <= 0 && ( opponent->GetPosY() == GetPosY()) && - (nCurrStateNumber != 52) ) + ( GetRightFaced() != opponent->GetRightFaced() ) ) { opponent->PushPlayer(nBodyDistanceX); xVel*=ConstData.Movement.standFriction; @@ -830,6 +857,8 @@ void CPlayer::CheckGlobalStatus() { /*CPlayer *p2=m_pEngine->GetPlayerList();*/ list<CBaseObject*>* ObjList = m_pEngine->GetObjectList(); + + bHitTarget = false; HandlePhysic(); UpDateFacing(); @@ -857,6 +886,10 @@ void CPlayer::CheckGlobalStatus() } + //we hit a target so disable the hit def ) + if( bHitTarget ) + bHitDef = false; + } @@ -870,7 +903,7 @@ ToDo: Handle interaction with other play void CPlayer::Think() { DrawPlayer(); -// ShowClsn(); + // ShowClsn(); if( bPause ) return; @@ -950,6 +983,7 @@ void CPlayer::Debug() m_pVideoSystem->DrawText(0,60,"Life=%i | Power= %i",nLife,nPower); m_pVideoSystem->DrawText(0,70,"Ctrl = %i | Command = %s | facing %i ",bCtrl,strCommand,bRightFaced ? 1 : -1 ); m_pVideoSystem->DrawText(0,80,"P2Dist %f %f", nDistanceX , nDistanceY ); + m_pVideoSystem->DrawText(0,90,"NumTargets %i",TargetListNum ); } @@ -1029,7 +1063,7 @@ void CPlayer::PushPlayer(float nPushValu ======================= This effect to the current state of the player */ -void CPlayer::ChangeState(s32 nStateNumber) +void CPlayer::ChangeState(s32 nStateNumber,CStateManager *pOtherStateDef) { //restet StateTime nStateTime=0; @@ -1044,6 +1078,9 @@ void CPlayer::ChangeState(s32 nStateNumb } } + if( pOtherStateDef > 0 ) + m_pStateManager = pOtherStateDef; + lpCurrStatedef=m_pStateManager->GetStateDef(nStateNumber); // PrintMessage("change state %i",nStateNumber); @@ -1052,6 +1089,8 @@ void CPlayer::ChangeState(s32 nStateNumb if( !bHitDefPresit ) { bHitDef=0; + TargetListNum = 0; + memset( TargetList,0,sizeof(CPlayer*)); } if( lpCurrStatedef==0 ) @@ -1112,6 +1151,16 @@ void CPlayer::ChangeAnim(s32 nAnimNumber nCurrAnimNumber=nAnimNumber; } +void CPlayer::ChangeAnim2(s32 nAnimNumber,u16 nCurrElem) +{ + if( AttackerPlayer ) + { + ActionElement *Anim = AttackerPlayer->GetAir()->GetAction(nAnimNumber); + m_pSffManager->PrepareAnim2(nAnimNumber,Anim,nCurrElem); + + } +} + //Draw the Player void CPlayer::DrawPlayer() { @@ -1137,6 +1186,43 @@ bool CPlayer::IsAnimAviable(s32 nAnim) return true; } +/* +================================================================================ +Adds a target to the players target list +This list gets invalid when a changestate is executed and hitdef presist is false +================================================================================ +*/ +void CPlayer::AddTargetToList(CPlayer *target) +{ + if( TargetListNum == MaxTargets ) + throw(CError("Too many targets")); + + for( int i=0;i < MaxTargets;i++) + { + if( TargetList[i] == target ) + return; + } + + TargetList[TargetListNum] = target; + TargetListNum++; +} + +CPlayer* CPlayer::GetTargetById(s16 id) +{ + for( int i=0;i < TargetListNum;i++) + { + if( TargetList[i]->GetPlayerId() == id ) + return TargetList[i]; + } + return 0; +} + +CPlayer **CPlayer::GetAllTargets(int &indexSize) +{ + indexSize = TargetListNum; + return TargetList; +} + /* ================================================================================ @@ -1191,6 +1277,7 @@ u32 CPlayer::GetDuringTime() void CPlayer::SetPosX(float xPos){x=320/2+xPos;} + void CPlayer::SetPosY(float yPos){y=nGround+yPos;} void CPlayer::PosAddX(float xPos){if (bRightFaced) x+=xPos; else x-=xPos; } void CPlayer::PosAddY(float yPos){y+=yPos;} Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- player.h 6 Jul 2005 18:59:44 -0000 1.8 +++ player.h 9 Jul 2005 21:51:41 -0000 1.9 @@ -208,12 +208,17 @@ struct HitVar bool bPlayerSnd; bool bGuardPlayerSnd; bool bPlayerSpark; + s32 p1StateNo; + s32 p2StateNo; }; + void LoadPlayerDef(const char* strPlayerDef,PlayerDef &playerdef); PlayerConst LoadPlayerConst(const char* strPlayerConst); +const int MaxTargets = 20; + class CPlayer :public CBaseObject { CAllocater *m_pAlloc; @@ -226,6 +231,7 @@ CGameTimer *m_pTimer; CVirtualMachine *m_pVMachine; CControllerExecuter *m_pControllerExec; CEngine *m_pEngine; +CStateManager *m_OrginStateManager; CInputProcessor *m_pInputProcessor; CCmdManager *m_pCmdManager; @@ -234,6 +240,11 @@ CCmdManager *m_pCmdManager; HitVar myGetHitVar; HitVar InHitVar; +CPlayer* TargetList[MaxTargets]; +int TargetListNum; +CPlayer* AttackerPlayer; + + //Player information float x,y; float xVel,yVel; @@ -262,6 +273,7 @@ bool bCtrl; bool bRightFaced; bool bDebugInfo; bool bHitDef; +bool bHitTarget; bool bAlive; bool bIsHelper; bool bChangeState; @@ -351,7 +363,7 @@ enum EffectTeam enum HitPrior { - Hit=0, + Hit=1, Doge, Miss, @@ -384,6 +396,7 @@ enum HitPrior //Set functions void ResetPlayer(); void SetPosX(float xPos); + void SetGlobalPosX(float xPos) {x=xPos;} void SetPosY(float yPos); void PosAddX(float xPos); void PosAddY(float yPos); @@ -419,14 +432,17 @@ enum HitPrior u32 GetDuringTime(); //Player Controllers - void ChangeState(s32 nSateNumber); + void ChangeState(s32 nSateNumber,CStateManager *pOtherStateDef = 0); void ChangeAnim(s32 nAnimNumber,u16 nCurrElem=1); + void ChangeAnim2(s32 nAnimNumber,u16 nCurrElem=1); void SetIntVar(int index,float value); void SetFloatVar(int index,float value); void SetSysIntVar(int index,float value); void SetSysFloatVar(int index,float value); void PlaySnd(s32 nGpr,s32 nItem,bool bLooped=false,u8 nLeftPan=255,u8 nRightPan=255); void SetAttackDist(float dist); + void RestoreState() {m_pStateManager = m_OrginStateManager; } + void SetAttacker(CPlayer *attacker) {AttackerPlayer = attacker; } //trigger functions char *GetCommand(); @@ -459,12 +475,17 @@ enum HitPrior s32 GetStateNumber(); s32 GetPrevStateNumber(); s16 GetPower(); + s16 GetPlayerId() {return nPlayerID;} u32 GetStateTime(); HitVar GetVarHit(); u8 GetSprPrio(); CSffManager *GetSff(); + CAirManager *GetAir(){ return m_pAirManager; } + CPlayer *GetTargetById(s16 id); + CPlayer **GetAllTargets(int &indexSize); private: + void AddTargetToList(CPlayer *target); bool CheckState(PLSTATE* tempState); bool CheckClsn1Collision(ClsnRECT Clsn1,ClsnRECT Clsn2); void ExecuteController(PLSTATE* tempState); |
From: SakirSoft <sak...@us...> - 2005-07-09 21:51:18
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1734 Modified Files: GameObjects.cpp GameObjects.h Log Message: Add CBindObject class for binding controllers Index: GameObjects.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- GameObjects.cpp 6 Jul 2005 18:57:03 -0000 1.5 +++ GameObjects.cpp 9 Jul 2005 21:51:08 -0000 1.6 @@ -208,6 +208,7 @@ void CExplod::UpDateExplodStates() if( rem_time > 0 ) rem_time --; + //the explode will be invalid when its anim is complete if( rem_time == -2 ) { @@ -222,6 +223,8 @@ void CExplod::UpDateExplodStates() if ( rem_time == 1 ) bValid = false; + + } @@ -456,3 +459,80 @@ void CSuperPause::UpDateState() } + + + + + + +/* +================================================================================ +Constructor of BindPlayer object +scr is the player to bound +dest is the player on which is bound +================================================================================ +*/ +CBindPlayer::CBindPlayer( CPlayer *scr, CPlayer *dest ) +{ + bindObject = scr; + bindPoint = dest; + nTime = 1; + x_pos = 0; + y_pos = 0; + bValid = true; + nBindPosType = BindAxis; + bPause = false; + +} + +CBindPlayer::~CBindPlayer() +{ + +} + +void CBindPlayer::Think() +{ + if( !bPause ) + UpDateState(); + +} + +void CBindPlayer::UpDateState() +{ + nTime--; + + float bind_x = 0; + float bind_y = 0; + + switch( nBindPosType ) + { + case BindAxis: + bind_x = bindPoint->GetPosX(); + bind_y = bindPoint->GetPosY(); + + break; + + default: + PrintMessage("TODO:Handle other bind pos types"); + break; + + } + + bind_y += y_pos; + + if( bindPoint->GetRightFaced() ) + bind_x += x_pos; + else + bind_x -= x_pos; + + + bindObject->SetGlobalPosX( bind_x ); + bindObject->SetPosY( bind_y ); + + + if( nTime <= 1 ) + bValid = false; + + +} + Index: GameObjects.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- GameObjects.h 2 Jul 2005 17:13:05 -0000 1.3 +++ GameObjects.h 9 Jul 2005 21:51:08 -0000 1.4 @@ -190,4 +190,50 @@ public: }; +/* +================================================================================ +Definition of the CBindPlayer object +================================================================================ +*/ + +class CBindPlayer:public CBaseObject +{ + int nTime; + float x_pos; + float y_pos; + int nBindPosType; + CPlayer *bindPoint; + CPlayer *bindObject; + bool bValid; + bool bPause; + void UpDateState(); + +public: + enum BindPos + { + BindAxis=0, + BindFoot, + BindMid, + BindHead, + + + }; + CBindPlayer( CPlayer *scr, CPlayer *dest ); + ~CBindPlayer(); + + //Set functions + void SetTime( int time ) { nTime = time; } + void SetBindPosX( float x ) { x_pos = x; } + void SetBindPosY( float y ) { y_pos = y; } + void SetBindPosType( int type ) { nBindPosType = type;} + + + //Base function of the object + int GetType() {return CBaseObject::BindToObject;} + void Think(); + bool isValid(){return bValid;} + void Pause(bool pause){bPause=pause;} + +}; + #endif |
From: SakirSoft <sak...@us...> - 2005-07-09 21:50:27
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1322 Modified Files: SffManager.cpp SffManager.h Log Message: Add PrepareAnim2 function for ChangeAnim2 controller Index: SffManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- SffManager.cpp 6 Jul 2005 18:58:40 -0000 1.8 +++ SffManager.cpp 9 Jul 2005 21:50:19 -0000 1.9 @@ -218,6 +218,23 @@ void CSffManager::PrepareAnim(s32 nAnim, } +void CSffManager::PrepareAnim2(s32 nAnim,ActionElement *Anim2,u16 nCurrElem) +{ + Anim=Anim2; + + if(Anim==0) + return; + + nDuringTime = nTimer + Anim->AnimationElement[0].nDuringTime; + nCurrentImage = nCurrElem-1; + bLooped = false; + nCurrentImageTime = 0; + nCurrTime = 1; + + + +} + //Blit the given animation void CSffManager::BlitAnim(s16 x, s16 y,float x_scale,float y_scale) @@ -231,6 +248,7 @@ void CSffManager::BlitAnim(s16 x, s16 y, x += Anim->AnimationElement[nCurrentImage].x; y += Anim->AnimationElement[nCurrentImage].y; + BlitSprite(Anim->AnimationElement[nCurrentImage].nGroupNumber, Anim->AnimationElement[nCurrentImage].nImageNumber, Index: SffManager.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- SffManager.h 2 Jul 2005 17:13:05 -0000 1.7 +++ SffManager.h 9 Jul 2005 21:50:19 -0000 1.8 @@ -156,6 +156,8 @@ public: void BlitAnim(s16 x, s16 y,float x_scale=1.0,float y_scale=1.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); + //change to another anim void SetAnim(s32 nAnim); void ResetManager(); |
From: SakirSoft <sak...@us...> - 2005-07-06 19:01:43
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11525 Modified Files: ControllerExecuter.cpp Makefile.win OpenMugen.dev OpenMugen.layout SDLManager.cpp VideoSystem.cpp engine.cpp Log Message: no message Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- ControllerExecuter.cpp 2 Jul 2005 17:13:05 -0000 1.9 +++ ControllerExecuter.cpp 6 Jul 2005 19:01:25 -0000 1.10 @@ -590,7 +590,7 @@ void CControllerExecuter::HitDef() hitvar.air_yvel = m_pVM->Execute(temp->air_y_velocity); hitvar.xvel = m_pVM->Execute(temp->ground_x_velocity); hitvar.yvel = m_pVM->Execute(temp->ground_y_velocity); - hitvar.yaccel = 0.44f; //fixed value + hitvar.yaccel = m_pVM->Execute(temp->yaccel,m_CurrentPlayer->ConstData.Movement.yaccl); hitvar.fall_recovertime = m_pVM->Execute(temp->fall_recovertime,4); hitvar.recovertime = m_CurrentPlayer->ConstData.Data.nLieDownTime; hitvar.fall_yvel = m_pVM->Execute(temp->fall_yvelocity,-4.5); @@ -599,11 +599,20 @@ void CControllerExecuter::HitDef() hitvar.snd_grp = (int)m_pVM->Execute(temp->snd_grp); hitvar.snd_item = (int)m_pVM->Execute(temp->snd_item); hitvar.bPlayerSnd = temp->bPlayerSound; - hitvar.spark_nr = (int)m_pVM->Execute(temp->sparkno); + hitvar.spark_nr = (int)m_pVM->Execute(temp->sparkno,m_CurrentPlayer->ConstData.Data.nSparkNo); hitvar.spark_x = m_pVM->Execute(temp->spark_x); hitvar.spark_y = m_pVM->Execute(temp->spark_y); hitvar.fall = m_pVM->Execute(temp->fall); -// hitvar.fall_yvel = -1; + hitvar.guard_spark_no= m_pVM->Execute(temp->guardsparkno,m_CurrentPlayer->ConstData.Data.nGuardSparkNr); + hitvar.bPlayerSpark = temp->bPlayerSpark; + hitvar.guardPauseTime = m_pVM->Execute( temp->p1_Gpausetime,hitvar.pauseTime ); + hitvar.bGuardPlayerSnd = temp->bPlayerGuardSound; + hitvar.guard_snd_grp = m_pVM->Execute(temp->snd_guard_grp,6); + hitvar.guard_snd_item = m_pVM->Execute(temp->snd_guard_item,0); + + //Set guard dist + m_CurrentPlayer->SetAttackDist( m_pVM->Execute(temp->guard_dist,m_CurrentPlayer->ConstData.Size.nAttackDist) ); + Index: Makefile.win =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/Makefile.win,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- Makefile.win 2 Jul 2005 17:13:05 -0000 1.8 +++ Makefile.win 6 Jul 2005 19:01:25 -0000 1.9 @@ -1,18 +1,18 @@ # Project: OpenMugen # Makefile created by Dev-C++ 4.9.9.2 -CPP = g++.exe -CC = gcc.exe +CPP = g++.exe -D__DEBUG__ +CC = gcc.exe -D__DEBUG__ WINDRES = windres.exe RES = OBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) LINKOBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) -LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image +LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image -g3 INCS = -I"D:/Development/tools/Dev-Cpp/include" CXXINCS = -I"D:/Development/tools/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2" -I"D:/Development/tools/Dev-Cpp/include" BIN = ../BIN/OpenMugen.exe -CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG -CFLAGS = $(INCS) -Dmain=SDL_main +CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG -g3 +CFLAGS = $(INCS) -Dmain=SDL_main -g3 RM = rm -f .PHONY: all all-before all-after clean clean-custom Index: OpenMugen.dev =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.dev,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- OpenMugen.dev 2 Jul 2005 17:13:05 -0000 1.8 +++ OpenMugen.dev 6 Jul 2005 19:01:25 -0000 1.9 @@ -27,7 +27,7 @@ CustomMakefile= IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 -CompilerSettings=0000000000000000000000 +CompilerSettings=0000000000000001000000 [Unit1] FileName=main.cpp Index: OpenMugen.layout =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.layout,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -p -r1.13 -r1.14 --- OpenMugen.layout 2 Jul 2005 17:13:05 -0000 1.13 +++ OpenMugen.layout 6 Jul 2005 19:01:25 -0000 1.14 @@ -6,24 +6,24 @@ LeftChar=1 Open=0 Top=0 [Editors] -Focused=7 -Order=20,4,1,35,0,43,39,38,44,32,33,46,5,17,18,29,31,2,15,28,7 +Focused=39 +Order=39,-1 [Editor_0] -Open=1 +Open=0 Top=0 CursorCol=1 CursorRow=14 TopLine=22 LeftChar=1 [Editor_1] -Open=1 +Open=0 Top=0 CursorCol=32 CursorRow=79 TopLine=40 LeftChar=1 [Editor_2] -Open=1 +Open=0 Top=0 CursorCol=1 CursorRow=92 @@ -37,18 +37,18 @@ CursorRow=57 TopLine=31 LeftChar=1 [Editor_4] -Open=1 +Open=0 Top=0 CursorCol=6 CursorRow=281 TopLine=259 LeftChar=1 [Editor_5] -Open=1 +Open=0 Top=0 -CursorCol=32 -CursorRow=48 -TopLine=110 +CursorCol=4 +CursorRow=93 +TopLine=63 LeftChar=1 [Editor_6] Open=0 @@ -58,11 +58,11 @@ CursorRow=27 TopLine=13 LeftChar=1 [Editor_7] -Open=1 -Top=1 -CursorCol=29 -CursorRow=52 -TopLine=40 +Open=0 +Top=0 +CursorCol=1 +CursorRow=135 +TopLine=99 LeftChar=1 [Editor_8] Open=0 @@ -83,7 +83,7 @@ Open=0 Top=0 CursorCol=26 CursorRow=24 -TopLine=41 +TopLine=42 LeftChar=1 [Editor_11] Open=0 @@ -107,7 +107,7 @@ CursorRow=35 TopLine=8 LeftChar=1 [Editor_15] -Open=1 +Open=0 Top=0 CursorCol=13 CursorRow=20 @@ -121,32 +121,32 @@ CursorRow=146 TopLine=127 LeftChar=1 [Editor_17] -Open=1 +Open=0 Top=0 -CursorCol=25 -CursorRow=116 -TopLine=100 +CursorCol=24 +CursorRow=102 +TopLine=81 LeftChar=1 [Editor_18] -Open=1 +Open=0 Top=0 -CursorCol=9 -CursorRow=175 -TopLine=121 +CursorCol=11 +CursorRow=231 +TopLine=215 LeftChar=1 [Editor_19] Open=0 Top=0 -CursorCol=32 -CursorRow=458 -TopLine=431 +CursorCol=26 +CursorRow=203 +TopLine=420 LeftChar=1 [Editor_20] -Open=1 +Open=0 Top=0 -CursorCol=10 -CursorRow=986 -TopLine=1 +CursorCol=18 +CursorRow=1016 +TopLine=1007 LeftChar=1 [Editor_21] Open=0 @@ -165,16 +165,16 @@ LeftChar=1 [Editor_23] Open=0 Top=0 -CursorCol=3 -CursorRow=1536 -TopLine=1512 -LeftChar=1 +CursorCol=16 +CursorRow=1589 +TopLine=1583 +LeftChar=5 [Editor_24] Open=0 Top=0 CursorCol=16 -CursorRow=187 -TopLine=170 +CursorRow=188 +TopLine=153 LeftChar=1 [Editor_25] Open=0 @@ -188,24 +188,24 @@ Open=0 Top=0 CursorCol=73 CursorRow=372 -TopLine=344 +TopLine=1 LeftChar=1 [Editor_27] Open=0 Top=0 -CursorCol=11 -CursorRow=107 -TopLine=82 +CursorCol=8 +CursorRow=175 +TopLine=217 LeftChar=1 [Editor_28] -Open=1 +Open=0 Top=0 CursorCol=3 CursorRow=78 TopLine=22 LeftChar=1 [Editor_29] -Open=1 +Open=0 Top=0 CursorCol=1 CursorRow=12 @@ -219,39 +219,39 @@ CursorRow=34 TopLine=47 LeftChar=1 [Editor_31] -Open=1 +Open=0 Top=0 -CursorCol=5 -CursorRow=248 -TopLine=14 +CursorCol=27 +CursorRow=15 +TopLine=1 LeftChar=1 [Editor_32] -Open=1 +Open=0 Top=0 CursorCol=19 CursorRow=33 TopLine=16 LeftChar=1 [Editor_33] -Open=1 +Open=0 Top=0 -CursorCol=30 -CursorRow=539 -TopLine=519 +CursorCol=68 +CursorRow=611 +TopLine=587 LeftChar=1 [Editor_34] Open=0 Top=0 CursorCol=1 CursorRow=55 -TopLine=17 +TopLine=1 LeftChar=1 [Editor_35] -Open=1 +Open=0 Top=0 CursorCol=45 CursorRow=209 -TopLine=188 +TopLine=460 LeftChar=1 [Editor_36] Open=0 @@ -263,23 +263,23 @@ LeftChar=1 [Editor_37] Open=0 Top=0 -CursorCol=5 -CursorRow=4471 -TopLine=395 +CursorCol=51 +CursorRow=3853 +TopLine=3818 LeftChar=1 [Editor_38] -Open=1 +Open=0 Top=0 -CursorCol=1 -CursorRow=23 +CursorCol=25 +CursorRow=28 TopLine=1 LeftChar=1 [Editor_39] Open=1 -Top=0 -CursorCol=7 -CursorRow=23 -TopLine=50 +Top=1 +CursorCol=34 +CursorRow=167 +TopLine=155 LeftChar=1 [Editor_40] Open=0 @@ -303,18 +303,18 @@ CursorRow=4 TopLine=1 LeftChar=1 [Editor_43] -Open=1 +Open=0 Top=0 -CursorCol=36 -CursorRow=68 -TopLine=31 +CursorCol=14 +CursorRow=76 +TopLine=16 LeftChar=1 [Editor_44] -Open=1 +Open=0 Top=0 -CursorCol=1 -CursorRow=101 -TopLine=65 +CursorCol=8 +CursorRow=48 +TopLine=95 LeftChar=1 [Editor_45] Open=0 @@ -324,11 +324,11 @@ CursorRow=87 TopLine=46 LeftChar=1 [Editor_46] -Open=1 +Open=0 Top=0 -CursorCol=51 -CursorRow=192 -TopLine=190 +CursorCol=27 +CursorRow=49 +TopLine=1 LeftChar=1 [Editor_47] Open=0 @@ -340,9 +340,9 @@ LeftChar=1 [Editor_48] Open=0 Top=0 -CursorCol=6 -CursorRow=427 -TopLine=409 +CursorCol=2 +CursorRow=143 +TopLine=106 LeftChar=1 [Editor_49] Open=0 Index: SDLManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SDLManager.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- SDLManager.cpp 29 Jun 2005 12:21:27 -0000 1.5 +++ SDLManager.cpp 6 Jul 2005 19:01:25 -0000 1.6 @@ -90,9 +90,7 @@ bool CSDLManager::Init() return false; } - //m_SoundSystem.LoadMusic("ryu.mid"); - //m_SoundSystem.PlayMusic(); - + return true; } Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- VideoSystem.cpp 2 Jul 2005 17:13:05 -0000 1.8 +++ VideoSystem.cpp 6 Jul 2005 19:01:25 -0000 1.9 @@ -83,12 +83,12 @@ void CVideoSystem::LoadFont() { //first init the font system ASSERT(sge_TTF_Init() == 0); - lpTTF=sge_TTF_OpenFont("arial.ttf",50); + lpTTF=sge_TTF_OpenFont("arial.ttf",8); if(!lpTTF) throw(CError("arial.ttf not found")); sge_TTF_SetFontStyle(lpTTF, SGE_TTF_NORMAL); - sge_TTF_SetFontSize(lpTTF,8); + sge_TTF_AAOff(); } @@ -116,9 +116,9 @@ void CVideoSystem::Draw() DrawText(265,10,"%2.2f FPS",nFps); -// SDL_BlitSurface(work,NULL,screen,NULL); + //SDL_BlitSurface(work,NULL,screen,NULL); //scale2x(work,screen); - FilterImage(); + FilterImage(); //SDL_UpdateRect(screen,0,0,640,480); SDL_Flip(screen); @@ -206,7 +206,7 @@ void CVideoSystem::DrawText(s16 x,s16 y, va_end(ap); sge_tt_textout(work,lpTTF,string,x,y, - SDL_MapRGB(screen->format,255,255,255),0,255); + SDL_MapRGB(screen->format,255,255,255),11,255); } Index: engine.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/engine.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- engine.cpp 1 Jul 2005 18:04:10 -0000 1.9 +++ engine.cpp 6 Jul 2005 19:01:25 -0000 1.10 @@ -12,7 +12,7 @@ CEngine::CEngine() { bPause=false; bPreIntro = false; - nEngineState = EnginePreIntro; + nEngineState = EngineRun; } |
From: SakirSoft <sak...@us...> - 2005-07-06 19:00:39
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10959 Modified Files: player.cpp Log Message: Added Guard handling Collsion detection is better now Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- player.cpp 2 Jul 2005 17:13:05 -0000 1.10 +++ player.cpp 6 Jul 2005 19:00:21 -0000 1.11 @@ -47,6 +47,7 @@ CPlayer::CPlayer() xVel=0; yVel=0; nSprPrio=5; + //this should be a unique player id number nPlayerID=0; @@ -278,23 +279,27 @@ all this states are defined in Common1.c */ void CPlayer::CheckInternalState() { - strcpy(strCommand,"none"); + strcpy(strCommand,"none"); + const char *Command=m_pCmdManager->GetCurrentCommandName(); + + if(Command) + strcpy(strCommand,m_pCmdManager->GetCurrentCommandName()); //#if 1 if ( inputs[ GAME_INPUT_UP ] ) { - if( nPhysic != air && nCurrStateNumber != 40) + if( nStateType == stand && nCurrStateNumber != 40) ChangeState(40); } if( inputs[ GAME_INPUT_RIGHT ] ) { - if(nCurrStateNumber != 20 && nCurrStateNumber < 40 && nCurrStateNumber != 100 ) + if(nCurrStateNumber != 20 && nCurrStateNumber < 40 && nStateType == stand ) ChangeState(20); } else if( inputs[ GAME_INPUT_LEFT ] ) { - if(nCurrStateNumber != 20 && nCurrStateNumber < 40) + if(nCurrStateNumber != 20 && nCurrStateNumber < 40 && nStateType == stand ) ChangeState(20); } else @@ -306,10 +311,7 @@ void CPlayer::CheckInternalState() - const char *Command=m_pCmdManager->GetCurrentCommandName(); - if(Command) - strcpy(strCommand,m_pCmdManager->GetCurrentCommandName()); //#endif @@ -457,20 +459,25 @@ w,h = right corner of the rect ClsnRECT CPlayer::ConvertClsnRectToGlobalRect(Clsn clsn) { ClsnRECT temp; - + if(!bRightFaced) { - temp.w=-clsn.ClsnRect.w+x; - temp.x=-clsn.ClsnRect.x+x; + temp.w = abs(clsn.ClsnRect.x-clsn.ClsnRect.w); + temp.h = abs(clsn.ClsnRect.h-clsn.ClsnRect.y); + temp.x = clsn.ClsnRect.x > clsn.ClsnRect.w ? (-clsn.ClsnRect.x)+x : (-clsn.ClsnRect.w)+x; + temp.y = clsn.ClsnRect.y < clsn.ClsnRect.h ? clsn.ClsnRect.y+y : clsn.ClsnRect.h+y; } else { - temp.w=clsn.ClsnRect.w+x; - temp.x=clsn.ClsnRect.x+x; + temp.w = abs(clsn.ClsnRect.x-clsn.ClsnRect.w); + temp.h = abs(clsn.ClsnRect.h-clsn.ClsnRect.y); + temp.x = clsn.ClsnRect.x < clsn.ClsnRect.w ? clsn.ClsnRect.x+x : clsn.ClsnRect.w+x; + temp.y = clsn.ClsnRect.y < clsn.ClsnRect.h ? clsn.ClsnRect.y+y : clsn.ClsnRect.h+y; + + } - temp.y=clsn.ClsnRect.y+y; - temp.h=clsn.ClsnRect.h+y; + return temp; @@ -488,12 +495,41 @@ void CPlayer::HandleHitDef(CPlayer *oppo bool bP1Hit=false; bool bP2Hit=false; - //bHitDef=false; + CheckHitCollid( bP1Hit,bP2Hit,opponent); + + + bool bGuard = false; - //First lets check us if we hit the opponent + + //Is the opponent guarding this hit? + if( opponent->GetDistX() <= GetAttackDist() && IsHitDef() && + opponent->IsHoldBack() ) + { + HandleGuard( opponent , bP1Hit); + bGuard = true; + } + + + if( bP1Hit && IsHitDef() && !bGuard ) + HandleHit( opponent ); + + +} + +/* +================================================================================ +Check aginst the opponent for a hit +================================================================================ +*/ +void CPlayer::CheckHitCollid(bool &p1Hit,bool p2Hit,CPlayer *opponent) +{ + //First lets check us if we hit the opponent u16 nClsnNumberOfP1=0; u16 nClsnNumberOfP2=0; + p1Hit = false; + p2Hit = false; + ClsnRECT rectP1; ClsnRECT rectP2; @@ -517,7 +553,7 @@ void CPlayer::HandleHitDef(CPlayer *oppo rectP2=opponent->ConvertClsnRectToGlobalRect(p2Clsn[j]); if( CheckClsn1Collision(rectP1,rectP2) ) { - bP1Hit=true; + p1Hit=true; break; } } @@ -544,7 +580,7 @@ void CPlayer::HandleHitDef(CPlayer *oppo rectP1=ConvertClsnRectToGlobalRect(p1Clsn[j]); if( CheckClsn1Collision(rectP2,rectP1) ) { - bP2Hit=true; + p2Hit=true; break; } } @@ -553,10 +589,20 @@ void CPlayer::HandleHitDef(CPlayer *oppo } } + - if( bP1Hit && bHitDef ) - { +} + +/* +================================================================================ +Handles a hit +PlayHit sound, apply hit pause, Create spark.... +================================================================================ +*/ +void CPlayer::HandleHit(CPlayer *opponent) +{ opponent->SetInHitVar(myGetHitVar); + if(myGetHitVar.groundtype == 3) opponent->ChangeState(5070); else @@ -579,7 +625,9 @@ void CPlayer::HandleHitDef(CPlayer *oppo pause->SetPauseTime( myGetHitVar.pauseTime ); mugen->GetEngine()->AddObject( pause ); - CExplod *explod = new CExplod( new CSffManager(mugen->GetEngine()->GetEngineSff() ), + CSffManager *p = myGetHitVar.bPlayerSpark ? GetSff() : mugen->GetEngine()->GetEngineSff(); + + CExplod *explod = new CExplod( new CSffManager( p ), myGetHitVar.spark_nr, opponent ); explod->SetPosX( myGetHitVar.spark_x); @@ -587,12 +635,47 @@ void CPlayer::HandleHitDef(CPlayer *oppo mugen->GetEngine()->AddObject( explod ); - bHitDef=false; + bHitDef=false; + +} +/* +================================================================================ + +================================================================================ +*/ +void CPlayer::HandleGuard(CPlayer *opponent,bool bP1Hit) +{ + if( opponent->GetStateNumber() < 120 || opponent->GetStateNumber() > 140 ) + opponent->ChangeState(120); + + if( bP1Hit ) + { + + /*Play guard sound*/ + if( myGetHitVar.bGuardPlayerSnd ) + PlaySnd(myGetHitVar.guard_snd_grp,myGetHitVar.guard_snd_item); + else + mugen->GetEngine()->PlaySnd( myGetHitVar.guard_snd_grp,myGetHitVar.guard_snd_item ); + + /*Apply guard spark*/ + + CSffManager *p = myGetHitVar.bPlayerSpark ? GetSff() : mugen->GetEngine()->GetEngineSff(); - - } - - + CExplod *explod = new CExplod( new CSffManager( p ), + myGetHitVar.guard_spark_no, opponent ); + + explod->SetPosX( myGetHitVar.spark_x); + explod->SetPosY( myGetHitVar.spark_y); + + mugen->GetEngine()->AddObject( explod ); + + /*Apply guard pause */ + CPause *pause = new CPause(); + pause->SetPauseTime( myGetHitVar.guardPauseTime); + mugen->GetEngine()->AddObject( pause ); + + bHitDef=false; + } } /* ================================================================================ @@ -646,53 +729,16 @@ funcion is in its name ;-) */ bool CPlayer::CheckClsn1Collision(ClsnRECT Clsn1,ClsnRECT Clsn2) { - int Clsn1Width = abs(Clsn1.x - Clsn1.w) / 2; - int Clsn1Height = abs(Clsn1.y - Clsn1.h) / 2; - - int Clsn2Width = abs(Clsn2.x - Clsn2.w) /2; - int Clsn2Height = abs(Clsn2.y - Clsn2.h) /2; - - int Clsn1Dx= 0; - int Clsn1Dy= 0; - int Clsn2Dx=0; - int Clsn2Dy=0; + //taken from SDL_CollideBoundingBox from the SDL Collid lib + if(Clsn2.x + Clsn2.w < Clsn1.x) return 0; //just checking if their + if(Clsn2.x > Clsn1.x + Clsn1.w) return 0; //bounding boxes even touch - - //calculate the middle x value of the box - if( Clsn1.x < Clsn1.w) - Clsn1Dx = Clsn1.x + ( Clsn1Width ); - else - Clsn1Dx = Clsn1.w + ( Clsn1Width ); - - if( Clsn2.x < Clsn2.w) - Clsn2Dx = Clsn2.x + ( Clsn2Width ); - else - Clsn2Dx = Clsn2.w + ( Clsn2Width ); - - //calculate the middle y value of the box - if( Clsn1.y < Clsn1.h ) - Clsn1Dy = Clsn1.y + ( Clsn1Height ); - else - Clsn1Dy = Clsn1.h + ( Clsn1Height ); - - if( Clsn2.y < Clsn2.h ) - Clsn2Dy = Clsn2.y + ( Clsn2Height ); - else - Clsn2Dy = Clsn2.h + ( Clsn2Height ); - - //m_pVideoSystem->DrawLine(Clsn2Dx, Clsn2Dy ,Clsn1Dx,Clsn1Dy,255,255,255); - - //calculate the distance between the two clsn boxes - int DistX= abs( Clsn1Dx - Clsn2Dx ); - int DistY= abs( Clsn1Dy - Clsn2Dy ); - - - if ( (DistX <= Clsn1Width) && (DistY <= Clsn2Height) ) - return true; - + if(Clsn2.y + Clsn2.h < Clsn1.y) return 0; + if(Clsn2.y > Clsn1.y + Clsn1.h) return 0; + + return 1; - return false; - + } /* @@ -724,11 +770,9 @@ void CPlayer::HandlePushBehavior(CPlayer //calculate the distance between the axis //Tood:this should only checked for nearenemy in teammode - if(bRightFaced) - nDistanceX = opponent->GetPosX()- GetPosX(); - else - nDistanceX = GetPosX() - opponent->GetPosX(); - + CalculateValues( opponent ); + + //This is for turning if( (nDistanceX < 0) && ( y == nGround ) && (nCurrAnimNumber != 5 ) && (nCurrStateNumber != 52) ) @@ -760,6 +804,20 @@ void CPlayer::HandlePushBehavior(CPlayer } } +/* +================================================================================ +Calculates values for triggers like P2Dist , p2Body dist ... +================================================================================ +*/ +void CPlayer::CalculateValues(CPlayer *opponent) +{ + if(bRightFaced) + nDistanceX = opponent->GetPosX()- GetPosX(); + else + nDistanceX = GetPosX() - opponent->GetPosX(); + + nDistanceY = -GetPosY()+opponent->GetPosY(); +} /* @@ -812,14 +870,13 @@ ToDo: Handle interaction with other play void CPlayer::Think() { DrawPlayer(); - // ShowClsn(); +// ShowClsn(); if( bPause ) return; - m_pInputProcessor->Update( inputs, m_pEngine->GetJoyCount(), m_pEngine->GetJoyInfo() ); - m_pCmdManager->Update( inputs, bRightFaced ); - + m_pCmdManager->Update( inputs, bRightFaced ); + m_pInputProcessor->Update( inputs, m_pEngine->GetJoyCount(), m_pEngine->GetJoyInfo() ); CheckGlobalStatus(); @@ -891,7 +948,8 @@ void CPlayer::Debug() m_pVideoSystem->DrawText(0,40,"x=%3f,y=%3f | xVel = %2.3f,yVel = %2.3f",x-XMAX/2,y-nGround,xVel,yVel); m_pVideoSystem->DrawText(0,50,"Name=%s",defInfo.info.strDisplayName); m_pVideoSystem->DrawText(0,60,"Life=%i | Power= %i",nLife,nPower); - m_pVideoSystem->DrawText(0,70,"Ctrl = %i | Command = %s | %i",bCtrl,strCommand,InHitVar.recovertime); + m_pVideoSystem->DrawText(0,70,"Ctrl = %i | Command = %s | facing %i ",bCtrl,strCommand,bRightFaced ? 1 : -1 ); + m_pVideoSystem->DrawText(0,80,"P2Dist %f %f", nDistanceX , nDistanceY ); } @@ -914,7 +972,7 @@ void CPlayer::ShowClsn() { ClsnRECT temp=ConvertClsnRectToGlobalRect(pData[i]); if(!pData[i].bClsn1) - m_pVideoSystem->AddRect(temp.x,temp.y,temp.w,temp.h,0,0,255,128,nSprPrio,CVideoSystem::RECT_FILLED); + m_pVideoSystem->AddRect(temp.x,temp.y,temp.w+temp.x,temp.h+temp.y,0,0,255,128,nSprPrio,CVideoSystem::RECT_FILLED); } //draw Clsn1 box first @@ -922,7 +980,7 @@ void CPlayer::ShowClsn() { ClsnRECT temp=ConvertClsnRectToGlobalRect(pData[i]); if(pData[i].bClsn1) - m_pVideoSystem->AddRect(temp.x,temp.y,temp.w,temp.h,255,0,0,128,nSprPrio,CVideoSystem::RECT_FILLED); + m_pVideoSystem->AddRect(temp.x,temp.y,temp.w+temp.x,temp.h+temp.y,255,0,0,128,nSprPrio,CVideoSystem::RECT_FILLED); } //draw width bar of the player @@ -955,7 +1013,7 @@ void CPlayer::ResetPlayer() //rest GetHitVar memset(&myGetHitVar,0,sizeof(myGetHitVar)); - ChangeState(191); + ChangeState(0); } @@ -1105,6 +1163,7 @@ float CPlayer::GetVelY(){return yVel;} float CPlayer::GetFront(){if(bRightFaced) return x+nFront; else return x-nBack;} float CPlayer::GetBack(){if(bRightFaced) return x-nBack; else return x+nFront;} bool CPlayer::GetRightFaced(){return bRightFaced;} +bool CPlayer::IsHitDef() {return bHitDef;} s16 CPlayer::GetLife(){return nLife;} u8 CPlayer::GetMoveType(){return nMoveType;} u8 CPlayer::GetStateType(){return nStateType;} @@ -1125,10 +1184,10 @@ void CPlayer::SetGroundValue(float yLim float CPlayer::GetGroundValue() {return nGround;} bool CPlayer::IsAnimLooped() {return m_pSffManager->isLooped();} -u16 CPlayer::GetCurrentImageNr() {return m_pSffManager->GetCurrentImageNr();} -u16 CPlayer::GetCurrentImageTime() {return m_pSffManager->GetCurrentImageTime();} -u16 CPlayer::GetCurrentAnimTime() {return m_pSffManager->GetCurrentAnimTime();} -u16 CPlayer::GetDuringTime() {return m_pSffManager->GetDuringTime();} +u32 CPlayer::GetCurrentImageNr() {return m_pSffManager->GetCurrentImageNr();} +u32 CPlayer::GetCurrentImageTime() {return m_pSffManager->GetCurrentImageTime();} +u32 CPlayer::GetCurrentAnimTime() {return m_pSffManager->GetCurrentAnimTime();} +u32 CPlayer::GetDuringTime() {return m_pSffManager->GetDuringTime();} void CPlayer::SetPosX(float xPos){x=320/2+xPos;} @@ -1142,6 +1201,10 @@ void CPlayer::VelAddX(float xvel){xVel+= void CPlayer::VelAddY(float yvel){yVel+=yvel;} void CPlayer::VelMulX(float xvel){xVel*=xvel;} void CPlayer::VelMulY(float yvel){yVel*=yvel;} +float CPlayer::GetAttackDist() {return nGuardDist; } +float CPlayer::GetDistX() {return nDistanceX;} +float CPlayer::GetDistY() {return nDistanceY;} +void CPlayer::SetAttackDist(float dist){nGuardDist=dist;} void CPlayer::SetDebug(bool bDebug){bDebugInfo=bDebug;} void CPlayer::SetCtrl(bool ctrl){bCtrl=ctrl;} |
From: SakirSoft <sak...@us...> - 2005-07-06 18:59:54
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10687 Modified Files: player.h Log Message: Added Guard handling Collsion detection is better now Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- player.h 2 Jul 2005 17:13:05 -0000 1.7 +++ player.h 6 Jul 2005 18:59:44 -0000 1.8 @@ -74,8 +74,8 @@ s16 nDefence; s16 nFallDefenceUp; s16 nLieDownTime; s16 nAirJuggle; -s16 nSparkNo; -s16 nGuardSparkNr; +s32 nSparkNo; +s32 nGuardSparkNr; bool bKoEcho; s16 nVolume; @@ -170,6 +170,7 @@ struct HitVar int groundtype; int damage; int pauseTime; + int guardPauseTime; int hitcount; int fallcount; int hitshaketime; @@ -198,10 +199,16 @@ struct HitVar float fall_envshake_phase; s32 snd_grp; s32 snd_item; + s32 guard_snd_grp; + s32 guard_snd_item; s32 spark_nr; + s32 guard_spark_no; float spark_x; float spark_y; bool bPlayerSnd; + bool bGuardPlayerSnd; + bool bPlayerSpark; + }; void LoadPlayerDef(const char* strPlayerDef,PlayerDef &playerdef); @@ -235,6 +242,7 @@ float nBodyDistanceX; //dis float nBodyDistanceY; //distance between front float nDistanceX; //distance betweem axis of the player float nDistanceY; //distance betweem axis of the player +float nGuardDist; //is set by HitDef controller aka AttackDist s32 nCurrAnimNumber; s32 nPrevStateNumber; s32 nCurrStateNumber; @@ -392,6 +400,7 @@ enum HitPrior void FaceRight(); void SetCtrl(bool ctrl); void SetHitDef(); + bool IsHitDef(); void SetHitVar(HitVar hitvar); void SetInHitVar(HitVar hitvar); void SetStateType(u8 nType); @@ -404,10 +413,10 @@ enum HitPrior void PushPlayer(float nPushValue); bool IsAnimLooped(); - u16 GetCurrentImageNr(); - u16 GetCurrentImageTime(); - u16 GetCurrentAnimTime(); - u16 GetDuringTime(); + u32 GetCurrentImageNr(); + u32 GetCurrentImageTime(); + u32 GetCurrentAnimTime(); + u32 GetDuringTime(); //Player Controllers void ChangeState(s32 nSateNumber); @@ -417,6 +426,7 @@ enum HitPrior void SetSysIntVar(int index,float value); void SetSysFloatVar(int index,float value); void PlaySnd(s32 nGpr,s32 nItem,bool bLooped=false,u8 nLeftPan=255,u8 nRightPan=255); + void SetAttackDist(float dist); //trigger functions char *GetCommand(); @@ -439,6 +449,9 @@ enum HitPrior float GetVelY(); float GetFront(); float GetBack(); + float GetDistX(); + float GetDistY(); + float GetAttackDist(); bool GetRightFaced(); s16 GetLife(); u8 GetMoveType(); @@ -460,7 +473,10 @@ private: void HandleFSM(); void HandlePushBehavior(CPlayer *opponent); void HandleHitDef(CPlayer *opponent); + void HandleHit(CPlayer *opponent); + void HandleGuard(CPlayer *opponent, bool bP1Hit); void HandleGetHitState(); + void CheckHitCollid(bool &p1Hit,bool p2Hit,CPlayer *opponent); void CheckSpecialState(); void CheckNormalState(); void CheckInternalState(); @@ -471,6 +487,7 @@ private: void AirPhysic(); void StandPhysic(); void ResetFlags(); + void CalculateValues(CPlayer *opponent); }; |
From: SakirSoft <sak...@us...> - 2005-07-06 18:58:50
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10268 Modified Files: SffManager.cpp Log Message: Fixed Airfile offset bug with BLT_FLIPH flag Index: SffManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- SffManager.cpp 1 Jul 2005 18:04:10 -0000 1.7 +++ SffManager.cpp 6 Jul 2005 18:58:40 -0000 1.8 @@ -224,10 +224,17 @@ void CSffManager::BlitAnim(s16 x, s16 y, { if(Anim==0) return; + + if( nFlags & CVideoSystem::BLT_FLIPH ) + x -= Anim->AnimationElement[nCurrentImage].x; + else + x += Anim->AnimationElement[nCurrentImage].x; + + y += Anim->AnimationElement[nCurrentImage].y; BlitSprite(Anim->AnimationElement[nCurrentImage].nGroupNumber, Anim->AnimationElement[nCurrentImage].nImageNumber, - x+Anim->AnimationElement[nCurrentImage].x,y+Anim->AnimationElement[nCurrentImage].y,x_scale,y_scale); + x,y,x_scale,y_scale); if( bPause ) { |
From: SakirSoft <sak...@us...> - 2005-07-06 18:57:56
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9866 Modified Files: SoundSystem.cpp Log Message: changed audiorate to 44100 Index: SoundSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SoundSystem.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- SoundSystem.cpp 1 Jul 2005 18:04:10 -0000 1.5 +++ SoundSystem.cpp 6 Jul 2005 18:57:48 -0000 1.6 @@ -46,7 +46,7 @@ bool CSoundSystem::InitSound() linked->minor, linked->patch); - if( Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 1024) == -1) + if( Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1) throw(CError("Unable to init SDL_mixer")); // Mix_SetPostMix(noEffect,0); |
From: SakirSoft <sak...@us...> - 2005-07-06 18:57:35
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9702 Modified Files: AirManager.cpp Log Message: no message Index: AirManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/AirManager.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- AirManager.cpp 17 Jun 2005 11:28:41 -0000 1.3 +++ AirManager.cpp 6 Jul 2005 18:57:25 -0000 1.4 @@ -157,14 +157,15 @@ void CAirManager::CreateClsnBox(u16 nNum { bDefaultClsn=bDefault; bIsClsn1=bClsn1; - bClsnDefined = true; + //a new default define - if( bDefaultClsn ) + if( bDefaultClsn && !bClsnDefined ) { nTotalDefaultCns = 0; bClsnDefined = false; - } + }else + bClsnDefined = true; } ActionElement* CAirManager::GetAction(s32 nActionNumber) |
From: SakirSoft <sak...@us...> - 2005-07-06 18:57:15
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9482 Modified Files: GameObjects.cpp Log Message: no message Index: GameObjects.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- GameObjects.cpp 2 Jul 2005 17:13:05 -0000 1.4 +++ GameObjects.cpp 6 Jul 2005 18:57:03 -0000 1.5 @@ -33,8 +33,8 @@ CExplod::CExplod(CSffManager *pSff,s32 n { lpSff = pSff; - x_pos = 100; - y_pos = 220; + x_pos = 0; + y_pos = 0; x_vel = 0; y_vel = 0; x_accel = 0; @@ -56,10 +56,11 @@ CExplod::CExplod(CSffManager *pSff,s32 n player = p; - pSff->SetBltFlags(CVideoSystem::BLT_MASKED | CVideoSystem::BLT_NORMAL); - + if( !player->GetRightFaced() ) pSff->SetBltFlags(CVideoSystem::BLT_MASKED | CVideoSystem::BLT_FLIPH); + else + pSff->SetBltFlags(CVideoSystem::BLT_MASKED | CVideoSystem::BLT_NORMAL); |
From: SakirSoft <sak...@us...> - 2005-07-06 18:56:57
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9250 Modified Files: VM.cpp Log Message: Added InGuardDist trigger Index: VM.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VM.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- VM.cpp 29 Jun 2005 12:21:27 -0000 1.4 +++ VM.cpp 6 Jul 2005 18:56:43 -0000 1.5 @@ -868,7 +868,7 @@ void CVirtualMachine::AnimTime() if( tActionElement == NULL) return; - nAnimTime=tActionElement->nCompletAnimTime-m_CurrentPlayer->GetCurrentAnimTime(); + nAnimTime=tActionElement->nCompletAnimTime- (m_CurrentPlayer->GetCurrentAnimTime()); //PrintMessage("AnimTime= %i",nAnimTime); m_Stack.Push((float)nAnimTime,"#"); } @@ -1605,7 +1605,10 @@ opponent's HitDef. Returns 0 if out of g */ void CVirtualMachine::InGuardDist() { - m_Stack.Push(0,"#"); + if( m_CurrentPlayer->GetDistX() <= m_pPlayer2->GetAttackDist() && m_pPlayer2->GetMoveType() == attack) + m_Stack.Push(1,"#"); + else + m_Stack.Push(0,"#"); } //Is helper |
From: SakirSoft <sak...@us...> - 2005-07-06 18:56:18
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8973 Modified Files: CmdManager.cpp Log Message: Fixed Successive direction symbols bug Index: CmdManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/CmdManager.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- CmdManager.cpp 29 Jun 2005 12:21:09 -0000 1.2 +++ CmdManager.cpp 6 Jul 2005 18:56:10 -0000 1.3 @@ -20,7 +20,7 @@ CCmdManager::~CCmdManager() /* if(m_Commands != NULL) delete []m_Commands;*/ - //delete m_KeyBuffer; + delete []m_KeyBuffer; } bool CCmdManager::LoadCMDFile( const char* file ) @@ -91,7 +91,7 @@ bool CCmdManager::LoadCMDFile( const cha m_Commands = new PLCOMMAND[ m_CommandCount ]; memset(m_Commands , 0 , sizeof(PLCOMMAND) * m_CommandCount); PLCOMMAND* command = m_Commands; - + while( !tok.AtEndOfFile() ) { bool foundCommand = false; @@ -111,6 +111,7 @@ bool CCmdManager::LoadCMDFile( const cha while( command->nHowManyCommand < MAXCOMMAND && !tok.CheckToken( "[", false ) && !tok.AtEndOfFile() ) { + if( tok.CheckToken( "name" ) ) { if( !tok.CheckToken( "=" ) ) @@ -128,7 +129,8 @@ bool CCmdManager::LoadCMDFile( const cha while( !tok.AtEndOfLine() ) { const char* token = tok.GetToken(); - + bool successive = false; + if( !strcmp( token, "~" ) ) { command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_ON_RELEASE; @@ -162,19 +164,76 @@ bool CCmdManager::LoadCMDFile( const cha } else if( !strcmp( token, "D" ) ) { - command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_DOWN ); + //expand a successive direction symbol + if( successive ) + { + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_DOWN ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_ON_RELEASE; + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + command->nHowManyCommand++; + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_DOWN ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + }else + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_DOWN );; } else if( !strcmp( token, "U" ) ) { - command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_UP ); + if( command->nHowManyCommand > 0 ) + successive = command->nCommand[ command->nHowManyCommand-1 ].keyCode == PLC_KEYCODE( GAME_INPUT_UP ); + + //expand a successive direction symbol + if( successive ) + { + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_UP ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_ON_RELEASE; + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + command->nHowManyCommand++; + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_UP ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + }else + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_UP ); } else if( !strcmp( token, "B" ) ) { - command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_LEFT ); + if( command->nHowManyCommand > 0 ) + successive = command->nCommand[ command->nHowManyCommand-1 ].keyCode == PLC_KEYCODE( GAME_INPUT_LEFT ); + + //expand a successive direction symbol + if( successive ) + { + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_LEFT ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_ON_RELEASE; + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + command->nHowManyCommand++; + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_LEFT ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + }else + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_LEFT ); } else if( !strcmp( token, "F" ) ) - { - command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_RIGHT ); + { + if( command->nHowManyCommand > 0 ) + successive = command->nCommand[ command->nHowManyCommand-1 ].keyCode == PLC_KEYCODE( GAME_INPUT_RIGHT ); + + //expand a successive direction symbol + if( successive ) + { + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_RIGHT ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_ON_RELEASE; + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + command->nHowManyCommand++; + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_RIGHT ); + command->nCommand[ command->nHowManyCommand ].keyModifier += PLC_KEYMOD_BAN_OTHER_INPUT; + + }else + command->nCommand[ command->nHowManyCommand ].keyCode += PLC_KEYCODE( GAME_INPUT_RIGHT ); } else if( !strcmp( token, "DB" ) ) { @@ -266,7 +325,8 @@ void CCmdManager::Update( bool* gameInpu m_KeyBuffer[ m_KeyIndex ].keyBitfield = 0; m_KeyBuffer[ m_KeyIndex ].gameTicks = m_pTimer->GetGameTime(); - + + // add current keystrokes to input buffer for( int k = 0; k < GAME_INPUT_COUNT; k++ ) { @@ -293,6 +353,7 @@ void CCmdManager::Update( bool* gameInpu { int nTime = -1, nLastTime = -1; int currKeyIndex = 0; + int ForceInput = -1; for( int b = currCommand->nHowManyCommand - 1; b >= 0; b-- ) { @@ -304,10 +365,23 @@ void CCmdManager::Update( bool* gameInpu int gameTicksToHold = currCommand->nCommand[ b ].gameTicksForHold; int keyCode = currCommand->nCommand[ b ].keyCode; + + for( ; currKeyIndex < m_KeyBufferSize; currKeyIndex++ ) { PLCOMMANDFRAMEINPUT* frameInput = &m_KeyBuffer[ AdjustKeyIndex( m_KeyIndex, -currKeyIndex ) ]; bool keyDown = (( frameInput->keyBitfield & keyCode ) == keyCode ); + + // ban other input + if( ForceInput>=0 && !keyDown && frameInput->keyBitfield != 0 ) + { + // PrintMessage("index[%i] == %i",AdjustKeyIndex( m_KeyIndex, -currKeyIndex),frameInput->keyBitfield ); + ForceInput=-1; + break; + } + + + if( keyDown && !use4Way ) { int keyCodeDirs = ( keyCode & PLC_ALL_DIRECTIONS_BITFIELD ); @@ -379,6 +453,10 @@ void CCmdManager::Update( bool* gameInpu break; } } + + if ( banOtherInput ) + ForceInput = b-1; + if( !bCommand ) break; } @@ -395,6 +473,8 @@ void CCmdManager::Update( bool* gameInpu break; } } + + currCommand++; } |
From: SakirSoft <sak...@us...> - 2005-07-02 17:13:14
|
Update of /cvsroot/openmugen/OpenMugen/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3782/src Modified Files: ControllerExecuter.cpp GameObjects.cpp GameObjects.h Makefile.win OpenMugen.dev OpenMugen.layout SffManager.h StateManager.cpp StateParser.cpp StateParser.h VideoSystem.cpp global.cpp global.h player.cpp player.h Log Message: Add AdjustPath function to remove spaces after the path Fixed after 10 minutes speed issue bug Add SuperPause controller Index: ControllerExecuter.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/ControllerExecuter.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- ControllerExecuter.cpp 1 Jul 2005 18:04:09 -0000 1.8 +++ ControllerExecuter.cpp 2 Jul 2005 17:13:05 -0000 1.9 @@ -318,7 +318,8 @@ void CControllerExecuter::Explod() CExplod *explod = new CExplod( new CSffManager(p), nAnim,pos_pl); - + + explod->SetPosType(1); explod->SetPosX(x); explod->SetPosY(y); explod->SetSprPrio(SprPrio+5); @@ -506,7 +507,50 @@ void CControllerExecuter::SelfState() void CControllerExecuter::SuperPause() { SUPERPAUSE *temp = (SUPERPAUSE*)lpController; - PrintMessage("TODO: implement SuperPause controller"); + + CSuperPause *pause = new CSuperPause(); + + int time = (int)m_pVM->Execute(temp->time,30); + int move_time=(int)m_pVM->Execute(temp->movetime); + int cmd_buffer = (int)m_pVM->Execute(temp->endcmdbuftime); + bool pauseBg = (int)m_pVM->Execute(temp->pausebg,1) > 0; + s32 nAnim = (s32)m_pVM->Execute(temp->nAnimNo,-1); + s32 snd_grp = (s32)m_pVM->Execute(temp->snd_grp,-1); + s32 snd_item = (s32)m_pVM->Execute(temp->snd_item,-1); + + //play sound + if( snd_grp != -1) + { + if( temp->bPlayerSound ) + m_CurrentPlayer->PlaySnd(snd_grp,snd_item); + else + mugen->GetEngine()->PlaySnd(snd_grp,snd_item); + + } + + //ceate the charge effect with a special id + if( nAnim != -1 ) + { + CSffManager *p = temp->bPlayerAnim ? m_CurrentPlayer->GetSff() : mugen->GetEngine()->GetEngineSff(); + CExplod *explod = new CExplod(new CSffManager(p),nAnim,m_CurrentPlayer); + explod->SetPosType(1); // p1 pps + explod->SetPosX( m_pVM->Execute(temp->pos_x) ); + explod->SetPosY( m_pVM->Execute(temp->pos_y) ); + explod->SetSprPrio(6); + + explod->SetId(-111); //special ID + mugen->GetEngine()->AddObject( explod ); + + } + + pause->SetPauseTime(time); + pause->SetMoveTime(move_time); + pause->SetBufferTime(cmd_buffer); + pause->SetBgPause(pauseBg); + + mugen->GetEngine()->AddObject( pause ); + + PrintMessage("Test SuperPause :TODO Add unhitable, poweradd,p2defmul"); } void CControllerExecuter::StateTypeSet() @@ -920,7 +964,22 @@ void CControllerExecuter::ParentVarSet() void CControllerExecuter::Pause() { PAUSE *temp = (PAUSE*)lpController; - PrintMessage("TODO: implement Pause controller"); + + int time = (int)m_pVM->Execute(temp->time,30); + int move_time=(int)m_pVM->Execute(temp->movetime); + int cmd_buffer = (int)m_pVM->Execute(temp->endcmdbuftime); + bool pauseBg = (int)m_pVM->Execute(temp->pausebg,1) > 0; + + CPause * pause = new CPause(); + pause->SetPauseTime(time); + pause->SetMoveTime(move_time); + pause->SetBufferTime(cmd_buffer); + pause->SetBgPause(pauseBg); + // pause-> + + mugen->GetEngine()->AddObject( pause ); + + PrintMessage("test Pause controller"); } void CControllerExecuter::PlayerPush() Index: GameObjects.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- GameObjects.cpp 1 Jul 2005 18:04:10 -0000 1.3 +++ GameObjects.cpp 2 Jul 2005 17:13:05 -0000 1.4 @@ -335,3 +335,123 @@ void CPause::UpDateState() } } + + + + + + + +/* +================================================================================ +Constructor of SuperPause object +================================================================================ +*/ +CSuperPause::CSuperPause() +{ + nTime = 30; + nEndCmdBufTime = 0; + nMoveTime = 0; + bPauseBg = true; + bPause = false; + bValid = true; + bActive = false; + bDarken = true; + +} +/* +================================================================================ +Deconstuctor of SuperPause object +================================================================================ +*/ +CSuperPause::~CSuperPause() +{ + +} + +void CSuperPause::Think() +{ + if( !bPause ) + UpDateState(); +} + +bool CSuperPause::isValid() +{ + return bValid; +} + +void CSuperPause::Pause(bool pause) +{ + bPause = pause; +} + +/* +================================================================================ +This is quite the same as the Pause controller`s UpDateState function +But it takes care to dark the screen and do not pause the Explode object +which is created by the super pause controller +The explode has a special id of -111 +================================================================================ +*/ +void CSuperPause::UpDateState() +{ + + if( nTime == 0 ) + { + bValid = false; + + list<CBaseObject*>* ObjList = mugen->GetEngine()->GetObjectList(); + + for( BI i = ObjList->begin(); i != ObjList->end(); ++i) + { + CBaseObject* object = *i; + //Pause controller should not pause him self + if( object->GetType() != CBaseObject::PauseObject ) + object->Pause(false); + } + return; + + } + + //darken the screen + if( bDarken ) + mugen->GetVideo()->AddRect(0,0,319,239,0,0,0,128,6,CVideoSystem::RECT_FILLED); + + + //the pause begins after nMoveTime is 0 + if( nTime > 0 && nMoveTime == 0) + { + nTime--; + bActive = true; + } + + if( nMoveTime > 0 ) + nMoveTime--; + + + //Activtae the pause + if( bActive ) + { + list<CBaseObject*>* ObjList = mugen->GetEngine()->GetObjectList(); + + for( BI i = ObjList->begin(); i != ObjList->end(); ++i) + { + CBaseObject* object = *i; + + //take care of ouer special explode + if( object->GetType() == CBaseObject::ExplodeObject ) + { + CExplod *explod = reinterpret_cast<CExplod*>(object); + if( explod->GetId() == -111 ) + continue; + + } + + //Pause controller should not pause him self + if( object->GetType() != CBaseObject::PauseObject ) + object->Pause(true); + } + } + +} + Index: GameObjects.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/GameObjects.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- GameObjects.h 29 Jun 2005 12:21:26 -0000 1.2 +++ GameObjects.h 2 Jul 2005 17:13:05 -0000 1.3 @@ -43,7 +43,7 @@ public: ExplodeObject, PauseObject, HitByObject, - NitHitByObject, + NotHitByObject, ProjectileObject, PlayerObject //helpers are also players but players cant get invalide }; @@ -97,6 +97,7 @@ public: ~CExplod(); //Set functions + void SetId(int nId){id=nId;} void SetPosX( float x ); void SetPosY( float y ); void AddPosX( float x ) {x_pos += x; } @@ -109,6 +110,7 @@ public: void SetRemTime( int time ) {rem_time = time;} void SetSprPrio( u8 nPrio); void SetPosType(int pos) { nPosType = pos;} + int GetId() {return id;} //Base function of the object int GetType() {return CBaseObject::ExplodeObject;} @@ -123,7 +125,6 @@ public: Definition of the Pause object ================================================================================ */ - class CPause:public CBaseObject { int nTime; @@ -153,4 +154,40 @@ public: }; +/* +================================================================================ +Definition of the SuperPause object +================================================================================ +*/ + +class CSuperPause:public CBaseObject +{ + int nTime; + int nEndCmdBufTime; + int nMoveTime; + bool bPause; + bool bActive; + bool bPauseBg; + bool bValid; + bool bDarken; + void UpDateState(); + +public: + CSuperPause(); + ~CSuperPause(); + + //Set functions + void SetPauseTime(int time) {nTime = time;} + void SetMoveTime(int time) {nMoveTime = time;} + void SetBufferTime(int time) {nEndCmdBufTime = time;} + void SetBgPause(bool pause) {bPauseBg = pause;} + + //Base function of the object + int GetType() {return CBaseObject::PauseObject;} + void Think(); + bool isValid(); + void Pause(bool pause); + +}; + #endif Index: Makefile.win =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/Makefile.win,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- Makefile.win 1 Jul 2005 18:04:10 -0000 1.7 +++ Makefile.win 2 Jul 2005 17:13:05 -0000 1.8 @@ -1,18 +1,18 @@ # Project: OpenMugen # Makefile created by Dev-C++ 4.9.9.2 -CPP = g++.exe -D__DEBUG__ -CC = gcc.exe -D__DEBUG__ +CPP = g++.exe +CC = gcc.exe WINDRES = windres.exe RES = OBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) LINKOBJ = ../OBJ/main.o ../OBJ/game.o ../OBJ/global.o ../OBJ/SDLManager.o ../OBJ/VideoSystem.o ../OBJ/scale2xSDL.o ../OBJ/SDL_framerate.o ../OBJ/scale2x.o ../OBJ/MemManager.o ../OBJ/SffManager.o ../OBJ/player.o ../OBJ/Stack.o ../OBJ/VM.o ../OBJ/StateManager.o ../OBJ/AirManager.o ../OBJ/engine.o ../OBJ/ControllerExecuter.o ../OBJ/tokenizer.o ../OBJ/StateParser.o ../OBJ/CmdManager.o ../OBJ/assert.o ../OBJ/Input.o ../OBJ/SoundSystem.o ../OBJ/GameObjects.o $(RES) -LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image -g3 +LIBS = -L"D:/Development/tools/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lSGE -lSDL_Image -lSDL_mixer -lSDL_image INCS = -I"D:/Development/tools/Dev-Cpp/include" CXXINCS = -I"D:/Development/tools/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/Development/tools/Dev-Cpp/include/c++/3.4.2" -I"D:/Development/tools/Dev-Cpp/include" BIN = ../BIN/OpenMugen.exe -CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG -g3 -CFLAGS = $(INCS) -Dmain=SDL_main -g3 +CXXFLAGS = $(CXXINCS) -I"D:\Development\tools\Dev-Cpp\\include\SDL" -I"D:\Development\tools\Dev-Cpp\\include\SGE" -Dmain=SDL_main -D_WIN32 -D_DEBUG +CFLAGS = $(INCS) -Dmain=SDL_main RM = rm -f .PHONY: all all-before all-after clean clean-custom Index: OpenMugen.dev =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.dev,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- OpenMugen.dev 1 Jul 2005 18:04:10 -0000 1.7 +++ OpenMugen.dev 2 Jul 2005 17:13:05 -0000 1.8 @@ -27,7 +27,7 @@ CustomMakefile= IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 -CompilerSettings=0000000000000001000000 +CompilerSettings=0000000000000000000000 [Unit1] FileName=main.cpp Index: OpenMugen.layout =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/OpenMugen.layout,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -p -r1.12 -r1.13 --- OpenMugen.layout 1 Jul 2005 18:04:10 -0000 1.12 +++ OpenMugen.layout 2 Jul 2005 17:13:05 -0000 1.13 @@ -6,28 +6,28 @@ LeftChar=1 Open=0 Top=0 [Editors] -Focused=31 -Order=35,20,7,18,17,29,8,19,31 +Focused=7 +Order=20,4,1,35,0,43,39,38,44,32,33,46,5,17,18,29,31,2,15,28,7 [Editor_0] -Open=0 +Open=1 Top=0 CursorCol=1 -CursorRow=2 -TopLine=1 +CursorRow=14 +TopLine=22 LeftChar=1 [Editor_1] -Open=0 +Open=1 Top=0 -CursorCol=22 -CursorRow=9 -TopLine=1 +CursorCol=32 +CursorRow=79 +TopLine=40 LeftChar=1 [Editor_2] -Open=0 +Open=1 Top=0 CursorCol=1 CursorRow=92 -TopLine=65 +TopLine=17 LeftChar=1 [Editor_3] Open=0 @@ -37,18 +37,18 @@ CursorRow=57 TopLine=31 LeftChar=1 [Editor_4] -Open=0 +Open=1 Top=0 -CursorCol=21 -CursorRow=36 -TopLine=1 +CursorCol=6 +CursorRow=281 +TopLine=259 LeftChar=1 [Editor_5] -Open=0 +Open=1 Top=0 CursorCol=32 CursorRow=48 -TopLine=19 +TopLine=110 LeftChar=1 [Editor_6] Open=0 @@ -59,13 +59,13 @@ TopLine=13 LeftChar=1 [Editor_7] Open=1 -Top=0 -CursorCol=14 -CursorRow=295 -TopLine=264 +Top=1 +CursorCol=29 +CursorRow=52 +TopLine=40 LeftChar=1 [Editor_8] -Open=1 +Open=0 Top=0 CursorCol=29 CursorRow=99 @@ -107,10 +107,10 @@ CursorRow=35 TopLine=8 LeftChar=1 [Editor_15] -Open=0 +Open=1 Top=0 -CursorCol=1 -CursorRow=12 +CursorCol=13 +CursorRow=20 TopLine=1 LeftChar=1 [Editor_16] @@ -123,30 +123,30 @@ LeftChar=1 [Editor_17] Open=1 Top=0 -CursorCol=45 -CursorRow=156 -TopLine=124 +CursorCol=25 +CursorRow=116 +TopLine=100 LeftChar=1 [Editor_18] Open=1 Top=0 -CursorCol=58 -CursorRow=192 -TopLine=161 +CursorCol=9 +CursorRow=175 +TopLine=121 LeftChar=1 [Editor_19] -Open=1 +Open=0 Top=0 -CursorCol=57 -CursorRow=208 -TopLine=390 +CursorCol=32 +CursorRow=458 +TopLine=431 LeftChar=1 [Editor_20] Open=1 Top=0 -CursorCol=7 -CursorRow=816 -TopLine=795 +CursorCol=10 +CursorRow=986 +TopLine=1 LeftChar=1 [Editor_21] Open=0 @@ -186,9 +186,9 @@ LeftChar=1 [Editor_26] Open=0 Top=0 -CursorCol=37 -CursorRow=204 -TopLine=148 +CursorCol=73 +CursorRow=372 +TopLine=344 LeftChar=1 [Editor_27] Open=0 @@ -198,11 +198,11 @@ CursorRow=107 TopLine=82 LeftChar=1 [Editor_28] -Open=0 +Open=1 Top=0 CursorCol=3 CursorRow=78 -TopLine=55 +TopLine=22 LeftChar=1 [Editor_29] Open=1 @@ -220,24 +220,24 @@ TopLine=47 LeftChar=1 [Editor_31] Open=1 -Top=1 -CursorCol=1 -CursorRow=262 -TopLine=248 +Top=0 +CursorCol=5 +CursorRow=248 +TopLine=14 LeftChar=1 [Editor_32] -Open=0 +Open=1 Top=0 -CursorCol=71 -CursorRow=43 +CursorCol=19 +CursorRow=33 TopLine=16 LeftChar=1 [Editor_33] -Open=0 +Open=1 Top=0 -CursorCol=12 -CursorRow=306 -TopLine=298 +CursorCol=30 +CursorRow=539 +TopLine=519 LeftChar=1 [Editor_34] Open=0 @@ -249,37 +249,37 @@ LeftChar=1 [Editor_35] Open=1 Top=0 -CursorCol=34 -CursorRow=96 -TopLine=74 +CursorCol=45 +CursorRow=209 +TopLine=188 LeftChar=1 [Editor_36] Open=0 Top=0 CursorCol=17 -CursorRow=533 -TopLine=496 +CursorRow=200 +TopLine=183 LeftChar=1 [Editor_37] Open=0 Top=0 -CursorCol=7 -CursorRow=2335 -TopLine=2317 +CursorCol=5 +CursorRow=4471 +TopLine=395 LeftChar=1 [Editor_38] -Open=0 +Open=1 Top=0 CursorCol=1 CursorRow=23 TopLine=1 LeftChar=1 [Editor_39] -Open=0 +Open=1 Top=0 CursorCol=7 CursorRow=23 -TopLine=16 +TopLine=50 LeftChar=1 [Editor_40] Open=0 @@ -303,18 +303,18 @@ CursorRow=4 TopLine=1 LeftChar=1 [Editor_43] -Open=0 +Open=1 Top=0 -CursorCol=1 -CursorRow=23 -TopLine=50 +CursorCol=36 +CursorRow=68 +TopLine=31 LeftChar=1 [Editor_44] -Open=0 +Open=1 Top=0 CursorCol=1 CursorRow=101 -TopLine=68 +TopLine=65 LeftChar=1 [Editor_45] Open=0 @@ -324,25 +324,25 @@ CursorRow=87 TopLine=46 LeftChar=1 [Editor_46] -Open=0 +Open=1 Top=0 CursorCol=51 CursorRow=192 -TopLine=186 +TopLine=190 LeftChar=1 [Editor_47] Open=0 Top=0 -CursorCol=33 -CursorRow=110 -TopLine=114 +CursorCol=16 +CursorRow=100 +TopLine=81 LeftChar=1 [Editor_48] Open=0 Top=0 -CursorCol=24 -CursorRow=222 -TopLine=34 +CursorCol=6 +CursorRow=427 +TopLine=409 LeftChar=1 [Editor_49] Open=0 Index: SffManager.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/SffManager.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- SffManager.h 1 Jul 2005 18:04:10 -0000 1.6 +++ SffManager.h 2 Jul 2005 17:13:05 -0000 1.7 @@ -102,10 +102,10 @@ private: u32 nFlags; //current animation information bool bLooped; - u16 nDuringTime; - u16 nCurrentImage; - u16 nCurrentImageTime; - u16 nCurrTime; + u32 nDuringTime; + u32 nCurrentImage; + u32 nCurrentImageTime; + u32 nCurrTime; ///////////////////////////////// u32 nTimer; //Sprite list @@ -126,11 +126,11 @@ public: //returns the current animation ActionElement *GetCurrAnimation(){return Anim;} bool isLooped(){return bLooped;} - u16 GetDuringTime(){return nDuringTime;} - u16 GetCurrentImageNr(){return nCurrentImage;} - u16 GetCurrentImageTime(){return nCurrentImageTime;} - u16 GetCurrentAnimTime(){return nCurrTime;} - s16 GetCompleteAnimTime(){if(Anim) return Anim->nCompletAnimTime; } + u32 GetDuringTime(){return nDuringTime;} + u32 GetCurrentImageNr(){return nCurrentImage;} + u32 GetCurrentImageTime(){return nCurrentImageTime;} + u32 GetCurrentAnimTime(){return nCurrTime;} + s32 GetCompleteAnimTime(){if(Anim) return Anim->nCompletAnimTime; } gtArray<SFFSPRITE> *GetSffPool(){return &SffPool;} CAirManager* GetAirManager(){return m_pAirManger;} Index: StateManager.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateManager.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- StateManager.cpp 10 Jun 2005 21:35:08 -0000 1.1.1.1 +++ StateManager.cpp 2 Jul 2005 17:13:05 -0000 1.2 @@ -368,6 +368,8 @@ void CStateManager::AddState(s32 nStateN nCurrTrigger=0; nTriggerListSize=100; + lpStateDefList[nTotalStateDef-1].lpState[nTotalState].nActivated=1; + lpStateDefList[nTotalStateDef-1].lpState[nTotalState].nPresist = 1; lpStateDefList[nTotalStateDef-1].lpState[nTotalState].triggers=(PLTRIGGER*)m_pAlloc->Alloc(sizeof(PLTRIGGER)*nTriggerListSize); nTotalState++; Index: StateParser.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- StateParser.cpp 1 Jul 2005 18:04:10 -0000 1.5 +++ StateParser.cpp 2 Jul 2005 17:13:05 -0000 1.6 @@ -4479,38 +4479,21 @@ void CStateParser::ParseSuperPause() { if( !tok.CheckToken("=") ) Error("missing \"=\" "); - - char strAnim[20]; - strcpy(strAnim,tok.GetToken()); - if( strAnim[0] == 'S' || strAnim[0] == 's') - { - temp->bPlayerAnim = true; - strAnim[0] = '0'; - temp->nAnimNo = atoi(strAnim); - - }else - temp->nAnimNo = atoi(strAnim); + temp->bPlayerAnim = tok.CheckToken("S"); + temp->nAnimNo = GenerateInstruction(); + }else if( tok.CheckToken("sound") ) { if( !tok.CheckToken("=") ) Error("missing \"=\" "); - - char strAnim[20]; - strcpy(strAnim,tok.GetToken()); + + temp->bPlayerSound= tok.CheckToken("S"); + temp->snd_grp = GenerateInstruction(); - if( strAnim[0] == 'S' || strAnim[0] == 's') - { - temp->bPlayerSound= true; - strAnim[0] = '0'; - temp->snd_grp = atoi(strAnim); - - }else - temp->snd_grp = atoi(strAnim); - if( tok.CheckToken(",") ) - temp->snd_item = tok.GetInt(); + temp->snd_item = GenerateInstruction(); }else if( tok.CheckToken("pos") ) { Index: StateParser.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/StateParser.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- StateParser.h 1 Jul 2005 18:04:10 -0000 1.4 +++ StateParser.h 2 Jul 2005 17:13:05 -0000 1.5 @@ -197,6 +197,7 @@ struct PLSTATE PLTRIGGER *triggers; u16 nHowManyTriggers; s16 nPresist; + u16 nActivated; bool bIgnorPause; void *controller; @@ -793,9 +794,9 @@ struct SUPERPAUSE { INSTRUCTION* time; bool bPlayerAnim; - s32 nAnimNo; + INSTRUCTION* nAnimNo; bool bPlayerSound; - s32 snd_grp,snd_item; + INSTRUCTION* snd_grp,*snd_item; INSTRUCTION* pos_x; INSTRUCTION* pos_y; INSTRUCTION* darken; Index: VideoSystem.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/VideoSystem.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- VideoSystem.cpp 1 Jul 2005 18:04:10 -0000 1.7 +++ VideoSystem.cpp 2 Jul 2005 17:13:05 -0000 1.8 @@ -57,7 +57,7 @@ bool CVideoSystem::InitSystem() { PrintMessage("CVideoSystem::InitSystem()"); //Set Video mode and get main Surface - screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE|SDL_DOUBLEBUF); + screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE/*|SDL_DOUBLEBUF*/); //Check the surface for validate if(screen==NULL) { @@ -115,12 +115,12 @@ void CVideoSystem::Draw() } DrawText(265,10,"%2.2f FPS",nFps); - - - // SDL_BlitSurface(work,NULL,screen,NULL); + +// SDL_BlitSurface(work,NULL,screen,NULL); //scale2x(work,screen); - FilterImage(); + FilterImage(); + //SDL_UpdateRect(screen,0,0,640,480); SDL_Flip(screen); //Limit the frame rate to 60 Hz SDL_framerateDelay(&m_FPSmanager); Index: global.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/global.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -p -r1.1.1.1 -r1.2 --- global.cpp 10 Jun 2005 21:35:00 -0000 1.1.1.1 +++ global.cpp 2 Jul 2005 17:13:05 -0000 1.2 @@ -218,36 +218,50 @@ void LoadPlayerDef(const char* strPlayer strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strCmd); strcpy(playerdef.files.strCmd,strTemp); + AdjustPath(playerdef.files.strCmd); //correct cns strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strCns); strcpy(playerdef.files.strCns,strTemp); + AdjustPath(playerdef.files.strCns); //correct st strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strSt); strcpy(playerdef.files.strSt,strTemp); + AdjustPath(playerdef.files.strSt); + //correct stcommon strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strStCommon); strcpy(playerdef.files.strStCommon,strTemp); + AdjustPath(playerdef.files.strStCommon); + //correct sprite strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strSprite); strcpy(playerdef.files.strSprite,strTemp); + AdjustPath(playerdef.files.strSprite); + //correct anim strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strAirFile); strcpy(playerdef.files.strAirFile,strTemp); + AdjustPath(playerdef.files.strAirFile); + + //correct sound strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strSoundFile); strcpy(playerdef.files.strSoundFile,strTemp); + AdjustPath(playerdef.files.strSoundFile); + //correct pal1 strcpy(strTemp,strFolderPath); strcat(strTemp,playerdef.files.strPal[0]); strcpy(playerdef.files.strPal[0],strTemp); + AdjustPath(playerdef.files.strPal[0]); delete[] strFolderPath; delete[] strTemp; @@ -256,6 +270,17 @@ void LoadPlayerDef(const char* strPlayer tok.CloseFile(); } +void AdjustPath(char *strPath) +{ + int len = strlen(strPath)-1; + + while( isspace(strPath[len]) ) + len--; + + strPath[len+1]='\0'; + +} + PlayerConst LoadPlayerConst(const char* strPlayerConst) { CTokenizer tok; Index: global.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/global.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- global.h 1 Jul 2005 18:04:10 -0000 1.6 +++ global.h 2 Jul 2005 17:13:05 -0000 1.7 @@ -76,6 +76,7 @@ extern CGame *mugen; //functions void PrintMessage(char *str,...); void InitLogFile(); +void AdjustPath(char *strPath); #endif Index: player.cpp =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- player.cpp 1 Jul 2005 18:04:10 -0000 1.9 +++ player.cpp 2 Jul 2005 17:13:05 -0000 1.10 @@ -51,6 +51,7 @@ CPlayer::CPlayer() //this should be a unique player id number nPlayerID=0; nTeamID=0; + lpCurrStatedef = 0; bIsHelper=false; @@ -385,21 +386,13 @@ void CPlayer::CheckSpecialState() PLSTATEDEF *specialStateDef=m_pStateManager->GetStateDef(-3); if(specialStateDef) { - for(u16 i=0;i<specialStateDef->nHowManyState;i++) - { - if( CheckState(&specialStateDef->lpState[i]) ) - ExecuteController(&specialStateDef->lpState[i]); - } + CheckAndExecuteState(specialStateDef); } specialStateDef=m_pStateManager->GetStateDef(-2); if(specialStateDef) { - for(u16 i=0;i<specialStateDef->nHowManyState;i++) - { - if( CheckState(&specialStateDef->lpState[i]) ) - ExecuteController(&specialStateDef->lpState[i]); - } + CheckAndExecuteState(specialStateDef); } @@ -409,17 +402,8 @@ void CPlayer::CheckSpecialState() if(specialStateDef ) { - - for(u16 i=0;i<specialStateDef->nHowManyState;i++) - { - - if( CheckState(&specialStateDef->lpState[i]) ) - { - ExecuteController(&specialStateDef->lpState[i]); - } - } - - } + CheckAndExecuteState(specialStateDef); + } } /* @@ -427,14 +411,29 @@ This checks the Current state of the pla */ void CPlayer::CheckNormalState() { - for(u16 i=0;i<lpCurrStatedef->nHowManyState;i++) + CheckAndExecuteState(lpCurrStatedef); +} + + + +void CPlayer::CheckAndExecuteState(PLSTATEDEF *StateDef) +{ + for(u16 i=0;i<StateDef->nHowManyState;i++) { //save the current controller type for checking for an changeState - u16 nType=lpCurrStatedef->lpState[i].nType; + u16 nType=StateDef->lpState[i].nType; - if( CheckState(&lpCurrStatedef->lpState[i]) ) + if( CheckState(&StateDef->lpState[i]) ) { - ExecuteController(&lpCurrStatedef->lpState[i]); + if ( (StateDef->lpState[i].nPresist == 0 ) && (StateDef->lpState[i].nActivated == 1) ) + ExecuteController(&StateDef->lpState[i]); + + if( (StateDef->lpState[i].nPresist > 0 ) && + ( (StateDef->lpState[i].nActivated % StateDef->lpState[i].nPresist ) == 0) ) + ExecuteController(&StateDef->lpState[i]); + + + StateDef->lpState[i].nActivated++; //we have a change state if(nType==17) { @@ -444,7 +443,7 @@ void CPlayer::CheckNormalState() } } - + } /* @@ -839,7 +838,7 @@ Only a helper can get invalid */ bool CPlayer::isValid() { - + return true; } //handles the facing of the player @@ -978,7 +977,15 @@ void CPlayer::ChangeState(s32 nStateNumb nStateTime=0; //we did a change state bChangeState=true; - //get the statedef + //reset the states + if( lpCurrStatedef ) + { + for( int i = 0;i < lpCurrStatedef->nHowManyState;i++) + { + lpCurrStatedef->lpState[i].nActivated = 1; + } + } + lpCurrStatedef=m_pStateManager->GetStateDef(nStateNumber); // PrintMessage("change state %i",nStateNumber); Index: player.h =================================================================== RCS file: /cvsroot/openmugen/OpenMugen/src/player.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- player.h 29 Jun 2005 12:21:28 -0000 1.6 +++ player.h 2 Jul 2005 17:13:05 -0000 1.7 @@ -456,6 +456,7 @@ private: bool CheckClsn1Collision(ClsnRECT Clsn1,ClsnRECT Clsn2); void ExecuteController(PLSTATE* tempState); void CheckGlobalStatus(); + void CheckAndExecuteState(PLSTATEDEF *StateDef); void HandleFSM(); void HandlePushBehavior(CPlayer *opponent); void HandleHitDef(CPlayer *opponent); |