2021-12-05 17:54:36 +00:00
# include "ChainBehavior.h"
# include "BehaviorBranchContext.h"
# include "Game.h"
# include "dLogger.h"
void ChainBehavior : : Handle ( BehaviorContext * context , RakNet : : BitStream * bitStream , const BehaviorBranchContext branch ) {
2022-12-16 21:23:02 +00:00
uint32_t chainIndex { } ;
2021-12-05 17:54:36 +00:00
2022-12-16 21:23:02 +00:00
if ( ! bitStream - > Read ( chainIndex ) ) {
Game : : logger - > Log ( " ChainBehavior " , " Unable to read chainIndex from bitStream, aborting Handle! %i " , bitStream - > GetNumberOfUnreadBits ( ) ) ;
return ;
}
2021-12-05 17:54:36 +00:00
2022-12-16 21:23:02 +00:00
chainIndex - - ;
2021-12-05 17:54:36 +00:00
2022-12-16 21:23:02 +00:00
if ( chainIndex < this - > m_behaviors . size ( ) ) {
this - > m_behaviors . at ( chainIndex ) - > Handle ( context , bitStream , branch ) ;
} else {
Game : : logger - > Log ( " ChainBehavior " , " chainIndex out of bounds, aborting handle of chain %i bits unread %i " , chainIndex , bitStream - > GetNumberOfUnreadBits ( ) ) ;
2021-12-05 17:54:36 +00:00
}
}
void ChainBehavior : : Calculate ( BehaviorContext * context , RakNet : : BitStream * bitStream , const BehaviorBranchContext branch ) {
bitStream - > Write ( 1 ) ;
this - > m_behaviors . at ( 0 ) - > Calculate ( context , bitStream , branch ) ;
}
void ChainBehavior : : Load ( ) {
const auto parameters = GetParameterNames ( ) ;
for ( const auto & parameter : parameters ) {
if ( parameter . first . rfind ( " behavior " , 0 ) = = 0 ) {
auto * action = GetAction ( parameter . second ) ;
this - > m_behaviors . push_back ( action ) ;
}
}
}