/** * {@inheritdoc} */ public static function fromArray(array $values) { $message = new self(); $values = array_merge(['movement_id' => null, 'animation_id' => null, 'pokemon_type' => null, 'power' => null, 'accuracy_chance' => null, 'critical_chance' => null, 'heal_scalar' => null, 'stamina_loss_scalar' => null, 'trainer_level_min' => null, 'trainer_level_max' => null, 'vfx_name' => null, 'duration_ms' => null, 'damage_window_start_ms' => null, 'damage_window_end_ms' => null, 'energy_delta' => null], $values); $message->setMovementId($values['movement_id']); $message->setAnimationId($values['animation_id']); $message->setPokemonType($values['pokemon_type']); $message->setPower($values['power']); $message->setAccuracyChance($values['accuracy_chance']); $message->setCriticalChance($values['critical_chance']); $message->setHealScalar($values['heal_scalar']); $message->setStaminaLossScalar($values['stamina_loss_scalar']); $message->setTrainerLevelMin($values['trainer_level_min']); $message->setTrainerLevelMax($values['trainer_level_max']); $message->setVfxName($values['vfx_name']); $message->setDurationMs($values['duration_ms']); $message->setDamageWindowStartMs($values['damage_window_start_ms']); $message->setDamageWindowEndMs($values['damage_window_end_ms']); $message->setEnergyDelta($values['energy_delta']); return $message; }