1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-24 05:37:45 +00:00

fix infinite callback loop

This commit is contained in:
Adam 2018-03-20 23:56:06 +11:00
parent ee715a62af
commit c24c215208
9 changed files with 25 additions and 53 deletions

View file

@ -49,12 +49,7 @@ private:
void Scene00001( Entity::Player& player )
{
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00002( player );
};
player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManFst001::Scene00002 ) );
}
void Scene00002( Entity::Player& player )
@ -71,12 +66,7 @@ private:
void Scene00004( Entity::Player& player )
{
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00005( player );
};
player.playScene( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
player.playSceneChain( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, BIND_SCENE( &ManFst001::Scene00005 ) );
}
void Scene00005( Entity::Player& player )

View file

@ -80,10 +80,12 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ManFst004::Actor0 )
{
Scene00000( player );
} else if( actor == ManFst004::Actor1 )
}
else if( actor == ManFst004::Actor1 )
{
// starting the Aetheryte eventaction
// player.eventStart( actorId, 0x050002, 7, 0, 0);
@ -99,13 +101,16 @@ public:
[&]( Entity::Player& player, uint32_t eventId, uint64_t additional )
{ },
eventId );
} else if( actor == ManFst004::Actor2 )
}
else if( actor == ManFst004::Actor2 )
{
Scene00002( player );
} else if( actor == ManFst004::Actor3 )
}
else if( actor == ManFst004::Actor3 )
{
Scene00003( player );
} else if( actor == ManFst004::Actor4 )
}
else if( actor == ManFst004::Actor4 )
{
Scene00005( player );
}

View file

@ -41,22 +41,12 @@ private:
void Scene00001( Entity::Player& player )
{
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00002( player );
};
player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManSea001::Scene00002 ) );
}
void Scene00002( Entity::Player& player )
{
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00003( player );
};
player.playScene( getId(), 2, NONE, 0, 0, callback );
player.playSceneChain( getId(), 2, NONE, BIND_SCENE( &ManSea001::Scene00003 ) );
}
void Scene00003( Entity::Player& player )
@ -76,12 +66,7 @@ private:
void Scene00005( Entity::Player& player )
{
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00006( player );
};
player.playScene( getId(), 5, HIDE_HOTBAR, 0, 0, callback );
player.playSceneChain( getId(), 5, HIDE_HOTBAR, BIND_SCENE( &ManSea001::Scene00006 ) );
}
void Scene00006( Entity::Player& player )
@ -118,12 +103,7 @@ private:
void Scene00011( Entity::Player& player )
{
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00012( player );
};
player.playScene( getId(), 11, 0x2c02, 0, 0, callback );
player.playSceneChain( getId(), 11, 0x2c02, 0, 0, BIND_SCENE( &ManSea001::Scene00012 ) );
}
void Scene00012( Entity::Player& player )

View file

@ -67,12 +67,7 @@ private:
void Scene00004( Entity::Player& player )
{
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00005( player );
};
player.playScene( getId(), 4, 0x2c02, 0, 0, callback );
player.playSceneChain( getId(), 4, 0x2c02, BIND_SCENE( &ManWil001::Scene00005 ) );
}
void Scene00005( Entity::Player& player )

View file

@ -170,6 +170,7 @@ void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene,
pEvent->setPlayedScene( true );
pEvent->setEventReturnCallback( eventCallback );
pEvent->setSceneChainCallback( nullptr );
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
scene, flags, eventParam2, eventParam3, eventParam4 );
@ -186,6 +187,7 @@ void Core::Entity::Player::playSceneChain( uint32_t eventId, uint32_t scene, uin
pEvent->setPlayedScene( true );
pEvent->setSceneChainCallback( sceneChainCallback );
pEvent->setEventReturnCallback( nullptr );
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
scene, flags, eventParam2, eventParam3, eventParam4 );