public void ChangeUnitTarget(long currentDragUnit, GameObject target)
    {
        UnitRender targetRender = target.GetComponent <UnitRender>();
        ForceMark  mark         = DataManager.GetInstance().GetForceMark();

        logicWorld.ChangeTarget(mark, currentDragUnit, targetRender.id, (LogicUnitType)targetRender.unitRenderType);
    }
    public void SelectedUnit(GameObject g, Vector3 hitPoint, bool ignoreEmeny, bool replaceGroup)
    {
        UnitRender s    = g.GetComponent <UnitRender>();
        ForceMark  mark = DataManager.GetInstance().GetForceMark();
        long       id   = s.id;

        if (!ignoreEmeny && s.mark != mark)
        {
            // enemy
            // TODO: change the position to logic unit
            DebugUtils.Log(DebugUtils.Type.Battle, string.Format(" Set {0} {1} {2} as target, will change the unit target to this unit", s.mark, s.unitRenderType, id));

            logicWorld.ChangeTarget(mark, id, (LogicUnitType)s.unitRenderType);
        }
        else
        {
            // friendly force
            if (s.unitRenderType == UnitRenderType.Soldier)
            {
                logicWorld.SelectedUnit(mark, id, replaceGroup);
            }
            else
            {
                if (s.unitRenderType == UnitRenderType.Tower)
                {
                    logicWorld.TapTower(mark, id);
                }
                else if (s.unitRenderType == UnitRenderType.Institute)
                {
                    logicWorld.TapInstitute(mark, id);
                }
            }
        }
    }
    public bool UnitCanBeChase(GameObject g)
    {
        UnitRender s    = g.GetComponent <UnitRender>();
        ForceMark  mark = DataManager.GetInstance().GetForceMark();

        if (logicWorld.GetSideFromMark(mark) == logicWorld.GetSideFromMark(s.mark))
        {
            return(false);
        }

        return(true);
    }
    public long UnitCanBeDrag(GameObject g)
    {
        UnitRender s    = g.GetComponent <UnitRender>();
        ForceMark  mark = DataManager.GetInstance().GetForceMark();

        if (mark == s.mark && s.unitRenderType == UnitRenderType.Soldier)
        {
            return(s.id);
        }

        return(-2);
    }
    // double tap a enemy unit, there will be change all target to enemy
    // double tap a friendly unit, there will be just select all unit.
    public void DoubleTapOperationOnUnit(GameObject g)
    {
        ForceMark  playerForceMark = DataManager.GetInstance().GetForceMark();
        UnitRender s  = g.GetComponent <UnitRender>();
        long       id = s.id;

        logicWorld.SelectAllUnits(playerForceMark, false);

        if (s.mark != playerForceMark)
        {
            // enemy force
            // TODO: change the position to logic unit
            DebugUtils.Log(DebugUtils.Type.Battle, string.Format(" Set {0} {1} {2} as target, will change the unit target to this unit", s.mark, s.unitRenderType, id));

            logicWorld.ChangeTarget(playerForceMark, id, (LogicUnitType)s.unitRenderType);
        }
        else
        {
            // friendly force
            // do nothing
        }
    }