コード例 #1
0
ファイル: ActorMap.cs プロジェクト: waiyiptam/OpenRA
        public void RemoveInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv = c.Cell.ToMPos(map);
                if (!influence.Contains(uv))
                {
                    continue;
                }

                var layer = c.Cell.Layer == 0 ? influence : customInfluence[c.Cell.Layer];
                var temp  = layer[uv];
                RemoveInfluenceInner(ref temp, self);
                layer[uv] = temp;

                List <CellTrigger> triggers;
                if (cellTriggerInfluence.TryGetValue(c.Cell, out triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }

                if (CellUpdated != null)
                {
                    CellUpdated(c.Cell);
                }
            }
        }
コード例 #2
0
        public void AddInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv    = c.Cell.ToMPos(map);
                var layer = influence[c.Cell.Layer];
                if (!layer.Contains(uv))
                {
                    continue;
                }

                layer[uv] = new InfluenceNode {
                    Next = layer[uv], SubCell = c.SubCell, Actor = self
                };

                if (cellTriggerInfluence.TryGetValue(c.Cell, out var triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }

                CellUpdated?.Invoke(c.Cell);
            }
        }
コード例 #3
0
 public void RemoveInfluence(Actor self, IOccupySpace ios)
 {
     foreach (var c in ios.OccupiedCells())
     {
         RemoveInfluenceInner(ref influence[c.First.X, c.First.Y], self);
     }
 }
コード例 #4
0
        public void RemoveInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv    = c.Cell.ToMPos(map);
                var layer = influence[c.Cell.Layer];
                if (!layer.Contains(uv))
                {
                    continue;
                }

                var temp = layer[uv];
                RemoveInfluenceInner(ref temp, self);
                layer[uv] = temp;

                if (cellTriggerInfluence.TryGetValue(c.Cell, out var triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }

                CellUpdated?.Invoke(c.Cell);
            }
        }
コード例 #5
0
ファイル: ActorMap.cs プロジェクト: waiyiptam/OpenRA
        public void AddInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv = c.Cell.ToMPos(map);
                if (!influence.Contains(uv))
                {
                    continue;
                }

                var layer = c.Cell.Layer == 0 ? influence : customInfluence[c.Cell.Layer];
                layer[uv] = new InfluenceNode {
                    Next = layer[uv], SubCell = c.SubCell, Actor = self
                };

                List <CellTrigger> triggers;
                if (cellTriggerInfluence.TryGetValue(c.Cell, out triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }

                if (CellUpdated != null)
                {
                    CellUpdated(c.Cell);
                }
            }
        }
コード例 #6
0
ファイル: ActorMap.cs プロジェクト: voidAsterisk/OpenRA
 public void RemoveInfluence(Actor self, IOccupySpace ios)
 {
     foreach (var c in ios.OccupiedCells())
     {
         var temp = influence[c.First];
         RemoveInfluenceInner(ref temp, self);
         influence[c.First] = temp;
     }
 }
コード例 #7
0
 public void AddInfluence(Actor self, IOccupySpace ios)
 {
     foreach (var c in ios.OccupiedCells())
     {
         influence[c.First.X, c.First.Y] = new InfluenceNode {
             Next = influence[c.First.X, c.First.Y], SubCell = c.Second, Actor = self
         }
     }
     ;
 }
コード例 #8
0
 public void Remove(Actor self, IOccupySpace unit)
 {
     if (unit != null)
     {
         foreach (var c in unit.OccupiedCells())
         {
             RemoveInner(ref influence[c.First.X, c.First.Y], self);
         }
     }
 }
コード例 #9
0
        public void UpdateOccupiedCells(IOccupySpace ios)
        {
            if (CellUpdated == null)
            {
                return;
            }

            foreach (var c in ios.OccupiedCells())
            {
                CellUpdated(c.Cell);
            }
        }
コード例 #10
0
 public void Add(Actor self, IOccupySpace unit)
 {
     if (unit != null)
     {
         foreach (var c in unit.OccupiedCells())
         {
             influence[c.First.X, c.First.Y] = new InfluenceNode {
                 next = influence[c.First.X, c.First.Y], subCell = c.Second, actor = self
             }
         }
     }
     ;
 }
コード例 #11
0
ファイル: TraitsInterfaces.cs プロジェクト: test71/OpenRA
        public static int2 NearestCellTo(this IOccupySpace ios, int2 other)
        {
            var nearest         = ios.TopLeft;
            var nearestDistance = int.MaxValue;

            foreach (var cell in ios.OccupiedCells())
            {
                var dist = (other - cell.First).LengthSquared;
                if (dist < nearestDistance)
                {
                    nearest         = cell.First;
                    nearestDistance = dist;
                }
            }
            return(nearest);
        }
コード例 #12
0
        public void AddInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                if (!map.Contains(c.First))
                {
                    continue;
                }

                influence[c.First] = new InfluenceNode {
                    Next = influence[c.First], SubCell = c.Second, Actor = self
                };

                List <CellTrigger> triggers;
                if (cellTriggerInfluence.TryGetValue(c.First, out triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }
            }
        }
コード例 #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="self"></param>
        /// <param name="ios"></param>
        public void RemoveInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv = c.First.ToMPos(map);
                if (!influence.Contains(uv))
                {
                    continue;
                }

                var temp = influence[uv];
                RemoveInfluenceInner(ref temp, self);
                influence[uv] = temp;
                List <CellTrigger> triggers;
                if (cellTriggerInfluence.TryGetValue(c.First, out triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }
            }
        }
コード例 #14
0
ファイル: UnitInfluence.cs プロジェクト: pdovy/OpenRA
 public void Add( Actor self, IOccupySpace unit )
 {
     foreach( var c in unit.OccupiedCells() )
         influence[ c.X, c.Y ] = new InfluenceNode { next = influence[ c.X, c.Y ], actor = self };
 }
コード例 #15
0
ファイル: UnitInfluence.cs プロジェクト: comradpara/OpenRA
 public void Add( Actor self, IOccupySpace unit )
 {
     foreach( var c in unit.OccupiedCells() )
         influence[c.X, c.Y].Add(self);
 }
コード例 #16
0
ファイル: ActorMap.cs プロジェクト: RobotCaleb/OpenRA
        public void RemoveInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                if (!map.Contains(c.First))
                    continue;

                var temp = influence[c.First];
                RemoveInfluenceInner(ref temp, self);
                influence[c.First] = temp;

                List<CellTrigger> triggers;
                if (cellTriggerInfluence.TryGetValue(c.First, out triggers))
                    foreach (var t in triggers)
                        t.Dirty = true;
            }
        }
コード例 #17
0
ファイル: ActorMap.cs プロジェクト: RobotCaleb/OpenRA
        public void AddInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                if (!map.Contains(c.First))
                    continue;

                influence[c.First] = new InfluenceNode { Next = influence[c.First], SubCell = c.Second, Actor = self };

                List<CellTrigger> triggers;
                if (cellTriggerInfluence.TryGetValue(c.First, out triggers))
                    foreach (var t in triggers)
                        t.Dirty = true;
            }
        }
コード例 #18
0
ファイル: ActorMap.cs プロジェクト: TiriliPiitPiit/OpenRA
 public void Remove( Actor self, IOccupySpace unit )
 {
     if (unit != null)
         foreach (var c in unit.OccupiedCells())
             RemoveInner( ref influence[ c.First.X, c.First.Y ], self );
 }
コード例 #19
0
ファイル: UnitInfluence.cs プロジェクト: comradpara/OpenRA
 public void Remove( Actor self, IOccupySpace unit )
 {
     if (unit != null)
         foreach (var c in unit.OccupiedCells())
             influence[c.X, c.Y].Remove(self);
 }
コード例 #20
0
ファイル: ActorMap.cs プロジェクト: RunCraze/OpenRA
 public void RemoveInfluence(Actor self, IOccupySpace ios)
 {
     foreach (var c in ios.OccupiedCells())
         RemoveInfluenceInner(ref influence[c.First.X, c.First.Y], self);
 }
コード例 #21
0
ファイル: ActorMap.cs プロジェクト: Berzeger/OpenRA
		public void AddInfluence(Actor self, IOccupySpace ios)
		{
			foreach (var c in ios.OccupiedCells())
				influence[c.First] = new InfluenceNode { Next = influence[c.First], SubCell = c.Second, Actor = self };
		}
コード例 #22
0
ファイル: ActorMap.cs プロジェクト: TiriliPiitPiit/OpenRA
 public void Add( Actor self, IOccupySpace unit )
 {
     if (unit != null)
         foreach( var c in unit.OccupiedCells() )
             influence[ c.First.X, c.First.Y ] = new InfluenceNode { next = influence[ c.First.X, c.First.Y ], subCell = c.Second, actor = self };
 }
コード例 #23
0
ファイル: ActorMap.cs プロジェクト: Berzeger/OpenRA
		public void RemoveInfluence(Actor self, IOccupySpace ios)
		{
			foreach (var c in ios.OccupiedCells())
			{
				var temp = influence[c.First];
				RemoveInfluenceInner(ref temp, self);
				influence[c.First] = temp;
			}
		}