public void SpawnSkillUnits(string prefabPath, TeamType teamWith, int columnPoint)
        {
            GameObject tmp;

            tmp = (GameObject)Resources.Load(prefabPath);
            ScenePointBehavior spawnPoint  = null;
            ScenePointBehavior targetPoint = null;

            List <BattlefieldPathHandler> fieldPaths = BattlefieldPathManager.GetInstance.fieldPaths;

            switch (teamWith)
            {
            case TeamType.Neutral:     // MONSTERS SPAWNED, CAN be IMPROVED LATER ON
                int rand = UnityEngine.Random.Range(0, fieldPaths[columnPoint].scenePoints.Count);
                spawnPoint = fieldPaths[columnPoint].scenePoints[rand];
                if (rand < (fieldPaths[columnPoint].scenePoints.Count / 2))
                {
                    targetPoint = fieldPaths[columnPoint].attackerSpawnPoint;
                }
                else
                {
                    targetPoint = fieldPaths[columnPoint].defenderSpawnPoint;
                }

                break;

            case TeamType.Defender:
                spawnPoint  = fieldPaths[columnPoint].defenderSpawnPoint;
                targetPoint = fieldPaths[columnPoint].attackerSpawnPoint;
                break;

            case TeamType.Attacker:
                spawnPoint  = fieldPaths[columnPoint].attackerSpawnPoint;
                targetPoint = fieldPaths[columnPoint].defenderSpawnPoint;
                break;

            default:
                break;
            }

            tmp = GameObject.Instantiate(tmp, spawnPoint.transform.position, Quaternion.identity, null);
            BaseCharacter tmpCharacter = tmp.GetComponent <BaseCharacter>();


            tmpCharacter.SpawnInThisPosition(spawnPoint);
            tmpCharacter.SetupCharacter(unitStorage.GetUnitInformation(tmpCharacter.unitInformation.unitName));
            tmpCharacter.OrderMovement(targetPoint);
            tmpCharacter.isFighting = true;
            tmpCharacter.overheadHealthbar.gameObject.SetActive(true);
            tmpCharacter.overheadHealthbar.SetupHealthBar(tmpCharacter.unitInformation.curhealth, tmpCharacter.unitInformation.maxHealth);
            tmpCharacter.canReturnToCamp = false;
            tmpCharacter.teamType        = teamWith;

            switch (teamWith)
            {
            case TeamType.Defender:
                if (defendingCommander.spawnBuffsList != null && defendingCommander.spawnBuffsList.Count > 0)
                {
                    for (int i = 0; i < defendingCommander.spawnBuffsList.Count; i++)
                    {
                        tmpCharacter.AddBuff(defendingCommander.spawnBuffsList[i]);
                    }
                }
                defenderSpawnedUnits.Add(tmpCharacter);
                break;

            case TeamType.Attacker:
                if (attackingCommander.spawnBuffsList != null && attackingCommander.spawnBuffsList.Count > 0)
                {
                    for (int i = 0; i < attackingCommander.spawnBuffsList.Count; i++)
                    {
                        tmpCharacter.AddBuff(attackingCommander.spawnBuffsList[i]);
                    }
                }
                attackerSpawnedUnits.Add(tmpCharacter);
                break;

            default:
                break;
            }
        }
        public void SpawnLeaderToBattle(TeamType thisTeamLeader, ScenePointBehavior spawnPoint, ScenePointBehavior targetPoint)
        {
            BaseCharacter thisLeader = null;

            switch (thisTeamLeader)
            {
            case TeamType.Defender:
                if (defenderHeroLeader == null)
                {
                    return;
                }

                thisLeader = defenderHeroLeader;

                if (defendingCommander.spawnBuffsList != null &&
                    defendingCommander.spawnBuffsList.Count > 0)
                {
                    thisLeader.unitInformation.buffList = new List <BaseBuffInformationData>();

                    for (int i = 0; i < defendingCommander.spawnBuffsList.Count; i++)
                    {
                        thisLeader.AddBuff(defendingCommander.spawnBuffsList[i]);
                    }
                }
                defenderSpawnedUnits.Add(thisLeader);
                break;

            case TeamType.Attacker:
                if (attackerHeroLeader == null)
                {
                    return;
                }

                thisLeader = attackerHeroLeader;

                if (attackingCommander.spawnBuffsList != null &&
                    attackingCommander.spawnBuffsList.Count > 0)
                {
                    thisLeader.unitInformation.buffList = new List <BaseBuffInformationData>();

                    for (int i = 0; i < attackingCommander.spawnBuffsList.Count; i++)
                    {
                        thisLeader.AddBuff(attackingCommander.spawnBuffsList[i]);
                    }
                }
                attackerSpawnedUnits.Add(thisLeader);
                break;

            case TeamType.Neutral:
            default:
                break;
            }

            if (thisLeader != null)
            {
                Debug.Log("This Leader Name:" + thisLeader.gameObject.name);
                thisLeader.SpawnInThisPosition(spawnPoint, true);
                thisLeader.isFighting = true;
                thisLeader.OrderMovement(targetPoint);
                thisLeader.canReturnToCamp = true;
                thisLeader.isFighting      = true;
                thisLeader.overheadHealthbar.gameObject.SetActive(true);
                thisLeader.overheadHealthbar.SetupHealthBar(thisLeader.unitInformation.curhealth, thisLeader.unitInformation.maxHealth);
                thisLeader.myRange.UpdateTotalRange();
            }
        }