/** * {@inheritdoc} */ public static function fromArray(array $values) { $message = new self(); $values = array_merge(['creation_timestamp_ms' => null, 'username' => null, 'team' => null, 'tutorial_state' => [], 'avatar' => null, 'max_pokemon_storage' => null, 'max_item_storage' => null, 'daily_bonus' => null, 'equipped_badge' => null, 'contact_settings' => null, 'currencies' => [], 'remaining_codename_claims' => null, 'buddy_pokemon' => null, 'battle_lockout_end_ms' => null], $values); $message->setCreationTimestampMs($values['creation_timestamp_ms']); $message->setUsername($values['username']); $message->setTeam($values['team']); $message->setAvatar($values['avatar']); $message->setMaxPokemonStorage($values['max_pokemon_storage']); $message->setMaxItemStorage($values['max_item_storage']); $message->setDailyBonus($values['daily_bonus']); $message->setEquippedBadge($values['equipped_badge']); $message->setContactSettings($values['contact_settings']); $message->setRemainingCodenameClaims($values['remaining_codename_claims']); $message->setBuddyPokemon($values['buddy_pokemon']); $message->setBattleLockoutEndMs($values['battle_lockout_end_ms']); foreach ($values['tutorial_state'] as $item) { $message->addTutorialState($item); } foreach ($values['currencies'] as $item) { $message->addCurrencies($item); } return $message; }