示例#1
0
            private static List <RankUpOption> EvaluateRankUp(List <Unit> hand, List <Unit> board)
            {
                List <RankUpOption> list = new List <RankUpOption>();

                foreach (Unit unit1 in board)
                {
                    FieldBlock block = unit1.m_Position.m_Block;

                    foreach (Unit unit2 in hand)
                    {
                        List <RankUpCondition> rankup = RankUpManagerCheckPhase.GetAllConditions(unit1.m_Data, unit2.m_Data, block);

                        foreach (RankUpCondition ruc in rankup)
                        {
                            UnitData data = ruc.m_HighRankSpirit;

                            //evaluate
                            //Debug.Log("Rank Up Option: [" + unit1.m_Data.UnitName + "](board) + [" + unit2.m_Data.UnitName + "](hand) => [" + data.UnitName + "]");

                            RankUpOption option = new RankUpOption(data, unit1.m_Data, unit2.m_Data, block);

                            float score = AIRule.EvaluateUnitData.Evaulate(data);
                            option.score += score;
                            //Debug.Log("\t Unit Evaulate Score: [" + score + "]");

                            float scoreForUnitOnBoard = AIRule.EvaluateUnitData.Evaulate(unit1.m_Data);
                            scoreForUnitOnBoard = scoreForUnitOnBoard * rankUpScoreRatio;
                            option.score       -= scoreForUnitOnBoard;
                            //Debug.Log("\t ["+ unit1.m_Data.UnitName + "] Unit Evaulate Score: (-)[" + scoreForUnitOnBoard + "]");

                            float scoreForUnitOnHand = AIRule.EvaluateUnitData.Evaulate(unit2.m_Data);
                            scoreForUnitOnHand = scoreForUnitOnHand * rankUpScoreRatio;
                            option.score      -= scoreForUnitOnHand;
                            //Debug.Log("\t [" + unit2.m_Data.UnitName + "] Unit Evaulate Score: (-)[" + scoreForUnitOnHand + "]");

                            //Debug.Log("Total: " + option.score);

                            list.Add(option);
                        }
                    }
                }
                return(list);
            }
    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);
    }