move all the Game.Exts junk either down into FileFormats or into WorldUtils
This commit is contained in:
@@ -105,6 +105,42 @@ namespace OpenRA
|
|||||||
public static bool Contains(this RectangleF r, int2 p)
|
public static bool Contains(this RectangleF r, int2 p)
|
||||||
{
|
{
|
||||||
return r.Contains(p.ToPointF());
|
return r.Contains(p.ToPointF());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool HasModifier(this Modifiers k, Modifiers mod)
|
||||||
|
{
|
||||||
|
return (k & mod) == mod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k)
|
||||||
|
where V : new()
|
||||||
|
{
|
||||||
|
return d.GetOrAdd(k, _ => new V());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k, Func<K, V> createFn)
|
||||||
|
{
|
||||||
|
V ret;
|
||||||
|
if (!d.TryGetValue(k, out ret))
|
||||||
|
d.Add(k, ret = createFn(k));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T Random<T>(this IEnumerable<T> ts, Thirdparty.Random r)
|
||||||
|
{
|
||||||
|
var xs = ts.ToArray();
|
||||||
|
return xs[r.Next(xs.Length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float Product(this IEnumerable<float> xs)
|
||||||
|
{
|
||||||
|
return xs.Aggregate(1f, (a, x) => a * x);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<T> SymmetricDifference<T>(this IEnumerable<T> xs, IEnumerable<T> ys)
|
||||||
|
{
|
||||||
|
// this is probably a shockingly-slow way to do this, but it's concise.
|
||||||
|
return xs.Except(ys).Concat(ys.Except(xs));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
|
||||||
* This file is part of OpenRA, which is free software. It is made
|
|
||||||
* available to you under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation. For more information,
|
|
||||||
* see COPYING.
|
|
||||||
*/
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using OpenRA.Support;
|
|
||||||
|
|
||||||
namespace OpenRA
|
|
||||||
{
|
|
||||||
public static class Exts
|
|
||||||
{
|
|
||||||
public static bool HasModifier(this Modifiers k, Modifiers mod)
|
|
||||||
{
|
|
||||||
return (k & mod) == mod;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IEnumerable<T> SymmetricDifference<T>(this IEnumerable<T> xs, IEnumerable<T> ys)
|
|
||||||
{
|
|
||||||
// this is probably a shockingly-slow way to do this, but it's concise.
|
|
||||||
return xs.Except(ys).Concat(ys.Except(xs));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float Product(this IEnumerable<float> xs)
|
|
||||||
{
|
|
||||||
return xs.Aggregate(1f, (a, x) => a * x);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k)
|
|
||||||
where V : new()
|
|
||||||
{
|
|
||||||
return d.GetOrAdd(k, _ => new V());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k, Func<K, V> createFn)
|
|
||||||
{
|
|
||||||
V ret;
|
|
||||||
if (!d.TryGetValue(k, out ret))
|
|
||||||
d.Add(k, ret = createFn(k));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static T Random<T>(this IEnumerable<T> ts, Thirdparty.Random r)
|
|
||||||
{
|
|
||||||
var xs = ts.ToArray();
|
|
||||||
return xs[r.Next(xs.Length)];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void DoTimed<T>(this IEnumerable<T> e, Action<T> a, string text, double time)
|
|
||||||
{
|
|
||||||
var sw = new Stopwatch();
|
|
||||||
|
|
||||||
e.Do(x =>
|
|
||||||
{
|
|
||||||
var t = sw.ElapsedTime();
|
|
||||||
a(x);
|
|
||||||
var dt = sw.ElapsedTime() - t;
|
|
||||||
if (dt > time)
|
|
||||||
Log.Write("perf", text, x, dt * 1000, Game.LocalTick);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
@@ -87,7 +87,6 @@
|
|||||||
<Compile Include="Widgets\WidgetUtils.cs" />
|
<Compile Include="Widgets\WidgetUtils.cs" />
|
||||||
<Compile Include="Effects\DelayedAction.cs" />
|
<Compile Include="Effects\DelayedAction.cs" />
|
||||||
<Compile Include="Effects\FlashTarget.cs" />
|
<Compile Include="Effects\FlashTarget.cs" />
|
||||||
<Compile Include="Exts.cs" />
|
|
||||||
<Compile Include="GameRules\ActorInfo.cs" />
|
<Compile Include="GameRules\ActorInfo.cs" />
|
||||||
<Compile Include="GameRules\VoiceInfo.cs" />
|
<Compile Include="GameRules\VoiceInfo.cs" />
|
||||||
<Compile Include="Effects\IEffect.cs" />
|
<Compile Include="Effects\IEffect.cs" />
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ using OpenRA.Effects;
|
|||||||
using OpenRA.FileFormats;
|
using OpenRA.FileFormats;
|
||||||
using OpenRA.Network;
|
using OpenRA.Network;
|
||||||
using OpenRA.Orders;
|
using OpenRA.Orders;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
|
||||||
using XRandom = OpenRA.Thirdparty.Random;
|
using XRandom = OpenRA.Thirdparty.Random;
|
||||||
|
|
||||||
namespace OpenRA
|
namespace OpenRA
|
||||||
|
|||||||
@@ -137,6 +137,20 @@ namespace OpenRA
|
|||||||
o.Subject, o.Subject.Owner.Country.Race))
|
o.Subject, o.Subject.Owner.Country.Race))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DoTimed<T>(this IEnumerable<T> e, Action<T> a, string text, double time)
|
||||||
|
{
|
||||||
|
var sw = new Stopwatch();
|
||||||
|
|
||||||
|
e.Do(x =>
|
||||||
|
{
|
||||||
|
var t = sw.ElapsedTime();
|
||||||
|
a(x);
|
||||||
|
var dt = sw.ElapsedTime() - t;
|
||||||
|
if (dt > time)
|
||||||
|
Log.Write("perf", text, x, dt * 1000, Game.LocalTick);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.FileFormats;
|
using OpenRA.FileFormats;
|
||||||
using OpenRA.Server;
|
using OpenRA.Server;
|
||||||
|
|||||||
Reference in New Issue
Block a user