removed duplication
This commit is contained in:
@@ -6,6 +6,7 @@ using OpenRa.Game.GameRules;
|
|||||||
using IjwFramework.Types;
|
using IjwFramework.Types;
|
||||||
using IjwFramework.Collections;
|
using IjwFramework.Collections;
|
||||||
using OpenRa.Game.Graphics;
|
using OpenRa.Game.Graphics;
|
||||||
|
using OpenRa.Game.Traits;
|
||||||
|
|
||||||
namespace OpenRa.Game
|
namespace OpenRa.Game
|
||||||
{
|
{
|
||||||
@@ -22,31 +23,22 @@ namespace OpenRa.Game
|
|||||||
influence[i, j] = null;
|
influence[i, j] = null;
|
||||||
|
|
||||||
Game.world.ActorAdded +=
|
Game.world.ActorAdded +=
|
||||||
a => { if (a.traits.Contains<Traits.Building>()) AddInfluence(a, a.traits.Get<Traits.Building>()); };
|
a => { if (a.traits.Contains<Building>())
|
||||||
|
ChangeInfluence(a, a.traits.Get<Building>(), true); };
|
||||||
Game.world.ActorRemoved +=
|
Game.world.ActorRemoved +=
|
||||||
a => { if (a.traits.Contains<Traits.Building>()) RemoveInfluence(a, a.traits.Get<Traits.Building>()); };
|
a => { if (a.traits.Contains<Building>())
|
||||||
|
ChangeInfluence(a, a.traits.Get<Building>(), false); };
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddInfluence(Actor a, Traits.Building building)
|
void ChangeInfluence(Actor a, Building building, bool isAdd)
|
||||||
{
|
{
|
||||||
foreach (var u in Footprint.UnpathableTiles(building.unitInfo, a.Location))
|
foreach (var u in Footprint.UnpathableTiles(building.unitInfo, a.Location))
|
||||||
if (IsValid(u))
|
if (IsValid(u))
|
||||||
blocked[u.X, u.Y] = true;
|
blocked[u.X, u.Y] = isAdd;
|
||||||
|
|
||||||
foreach (var u in Footprint.Tiles(building.unitInfo, a.Location, false))
|
foreach (var u in Footprint.Tiles(building.unitInfo, a.Location, false))
|
||||||
if (IsValid(u))
|
if (IsValid(u))
|
||||||
influence[u.X, u.Y] = a;
|
influence[u.X, u.Y] = isAdd ? a : null;
|
||||||
}
|
|
||||||
|
|
||||||
void RemoveInfluence(Actor a, Traits.Building building)
|
|
||||||
{
|
|
||||||
foreach (var u in Footprint.UnpathableTiles(building.unitInfo, a.Location))
|
|
||||||
if (IsValid(u))
|
|
||||||
blocked[u.X, u.Y] = false;
|
|
||||||
|
|
||||||
foreach (var u in Footprint.Tiles(building.unitInfo, a.Location, false))
|
|
||||||
if (IsValid(u))
|
|
||||||
influence[u.X, u.Y] = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsValid(int2 t)
|
bool IsValid(int2 t)
|
||||||
|
|||||||
Reference in New Issue
Block a user