public void OnDrop(PointerEventData eventData)
    {
        //Debug.Log("Drop");

        Unit       unit  = GetComponent <Unit>();
        FieldBlock block = unit.m_Position.m_Block;

        if (block == null)
        {
            Debug.Log("Can't Rank up in Hand");
            return;
        }

        Unit u = eventData.pointerDrag.GetComponent <Unit>();

        if (u.m_PlayerID != unit.m_PlayerID)
        {
            Debug.Log("Not same side");
            return;
        }

        RankUpData data = new RankUpData();

        data.data1 = unit.m_Data;
        data.data2 = u.m_Data;
        data.block = block;

        m_RankUpEvent.Trigger(data);
    }
    public void Trigger(GameEventData eventData)
    {
        if (busy)
        {
            return;
        }

        data = eventData.CastDataType <RankUpData>();
        if (data == null)
        {
            return;
        }

        //Debug.Log("Receive");

        List <RankUpCondition> conditions = RankUpManagerCheckPhase.GetAllConditions(data.data1, data.data2, data.block);

        if (conditions.Count <= 0)
        {
            GameMessage.Instance.Display(Text_NoOption.ToString());
            return;
        }

        //Debug.Log("Get Choice");
        //foreach(RankUpCondition rankUpCondition in conditions)
        //{
        //    Debug.Log("\t" + rankUpCondition.name);
        //}

        EnterPhase();

        DisplayOptions(conditions);

        coroutine = GetPlayerChoice();
        StartCoroutine(coroutine);
    }