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); }