| 426 | } |
| 427 | |
| 428 | void MapState::ProcessMessage( const Messages::MonsterState& message ) |
| 429 | { |
| 430 | const auto it= monsters_.find( message.monster_id ); |
| 431 | if( it == monsters_.end() ) |
| 432 | return; |
| 433 | |
| 434 | if( message.monster_type >= game_resources_->monsters_models.size() ) |
| 435 | return; |
| 436 | const Model& model= game_resources_->monsters_models[ message.monster_type ]; |
| 437 | |
| 438 | Monster& monster= it->second; |
| 439 | |
| 440 | MessagePositionToPosition( message.xyz, monster.pos ); |
| 441 | monster.angle= MessageAngleToAngle( message.angle ); |
| 442 | monster.monster_id= message.monster_type; |
| 443 | monster.body_parts_mask= message.body_parts_mask; |
| 444 | monster.is_fully_dead= message.is_fully_dead; |
| 445 | monster.is_invisible= message.is_invisible; |
| 446 | monster.color= message.color; |
| 447 | |
| 448 | monster.animation= 0u; |
| 449 | monster.animation_frame= 0u; |
| 450 | if( message.animation < model.animations.size() ) |
| 451 | { |
| 452 | monster.animation= message.animation; |
| 453 | if( message.animation_frame < model.animations[ monster.animation ].frame_count ) |
| 454 | monster.animation_frame= message.animation_frame; |
| 455 | } |
| 456 | } |
| 457 | |
| 458 | void MapState::ProcessMessage( const Messages::WallPosition& message ) |
| 459 | { |
no test coverage detected