/// <summary>
        /// Tries to join the host WorldEntity.
        /// </summary>
        /// <param name="host">The WorldEntity whose battle to join.</param>
        /// <param name="joiner">The WorldEntity that is attempting to join the battle.</param>
        /// <param name="battleManager">The BattleManager instance responsible for handling the battle of the host.</param>
        /// <returns>Returns true if joining was successful.</returns>
        public bool TryJoinBattle(WorldEntity host, WorldEntity joiner, out IBattleManager battleManager)
        {
            var success = TryGetBattle(host, out battleManager);

            if (!success)
            {
                return(false);
            }

            var manager = battleManager.JoinBattle(host, joiner);

            if (manager == null)
            {
                return(false);
            }
            else
            {
                if (joiner.OwnerGuid == GameplayConstants.AiId)
                {
                    _aiBattleManagers.Add(joiner.Id, battleManager);
                }
                else
                {
                    _battleManagers.Add(joiner.OwnerGuid.ToString(), battleManager);
                }

                return(true);
            }
        }