本文整理汇总了C#中IVertex.IsFreeToBuildCampus方法的典型用法代码示例。如果您正苦于以下问题:C# IVertex.IsFreeToBuildCampus方法的具体用法?C# IVertex.IsFreeToBuildCampus怎么用?C# IVertex.IsFreeToBuildCampus使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IVertex
的用法示例。
在下文中一共展示了IVertex.IsFreeToBuildCampus方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetVertexScore
private double GetVertexScore(IGame game, IVertex vertex)
{
if (!vertex.IsFreeToBuildCampus())
{
return 0.0;
}
// current production chance for uni
var productionChances = new DegreeCount { game.CurrentIUniversity.ProductionChances };
foreach (IHexagon hex in vertex.Adjacent.Hexagons)
{
productionChances[hex.Degree] += GameConstants.DiceRollNumber2Chance[hex.ProductionNumber];
}
double score = 0.0;
if (game.CurrentPhase == GamePhase.Setup2)
{
int hasDegreeNumber = productionChances.Values.Count(v => v != 0);
if (hasDegreeNumber == GameConstants.RealDegrees.Length)
{
score += _gameEvaluation.Scores.ProductionMultiplier * 3;
}
else if (hasDegreeNumber == GameConstants.RealDegrees.Length - 1)
{
score += _gameEvaluation.Scores.ProductionMultiplier;
}
}
var productionScores = new Dictionary<DegreeType, double>();
foreach (DegreeType degree in productionChances.Keys)
{
productionScores[degree] =
productionChances[degree] * _gameEvaluation.Scores.ProductionMultiplier;
}
if (game.CurrentPhase == GamePhase.Setup1)
{
// amplify the production scores for a certain degree
foreach (DegreeType degree in productionChances.Keys)
{
productionScores[degree] *= game.Scarcity[degree]*_gameEvaluation.Scores.SetupDegreeModifier[degree];
}
}
else // Setup2
{
foreach (DegreeType degree in productionChances.Keys)
{
productionScores[degree] *= _gameEvaluation.Scores.DegreeModifier[degree];
}
// site score
if (vertex.TradingSite != null)
{
var specialSite = vertex.TradingSite as ISpecialTradingSite;
if (specialSite != null)
{
score += productionChances[specialSite.TradeOutDegree]*
_gameEvaluation.Scores.SpecialSiteMultiplier;
}
else // normal site
{
score += _gameEvaluation.Scores.NormalSite;
}
}
}
score += productionScores.Values.Sum();
return score;
}