本文整理汇总了C#中IGameObject.Ask方法的典型用法代码示例。如果您正苦于以下问题:C# IGameObject.Ask方法的具体用法?C# IGameObject.Ask怎么用?C# IGameObject.Ask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IGameObject
的用法示例。
在下文中一共展示了IGameObject.Ask方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DistanceFor
///// <summary>
///// Расчитать расход топлива для прыжка
///// </summary>
///// <returns></returns>
//public long CalculateFuelForJump(IGameObject obj, IGameObject targetLoc)
//{
// var d = DistanceFor(obj, targetLoc);
//}
public double DistanceFor(IGameObject a, IGameObject b)
{
LocalPosition alp = LocalPosition.Empty, blp= LocalPosition.Empty;
var ls = a.Ask(LocalSystem.Query.ResolvePosition)
.Cast<QueryResponse<LocalPosition>>()
.FirstOrDefault();
if (ls != null)
alp = ls.Value;
ls = b.Ask(LocalSystem.Query.ResolvePosition)
.Cast<QueryResponse<LocalPosition>>()
.FirstOrDefault();
if (ls != null)
blp = ls.Value;
while (!alp.Unknown && !blp.Unknown)
{
if (alp.LocalSystem.Level > blp.LocalSystem.Level)
alp = alp.LocalSystem.TranslateUp(alp.Coords);
else if (alp.LocalSystem.Level < blp.LocalSystem.Level)
blp = blp.LocalSystem.TranslateUp(blp.Coords);
if (alp.LocalSystem.Level == blp.LocalSystem.Level)
if (alp.LocalSystem != blp.LocalSystem)
{
alp = alp.LocalSystem.TranslateUp(alp.Coords);
blp = blp.LocalSystem.TranslateUp(blp.Coords);
}
else
{
return alp.Coords.Distance(blp.Coords) * alp.LocalSystem.Resolution;
}
}
return double.PositiveInfinity;
}