public Simulation() { _environmentSeed = 20200803; _movementSeed = 1622; _size = new Size(256, 256); _strands = new StrandCollection { Owner = this }; _attractors = new ChemoeffectorCollection { Owner = this }; _repellents = new ChemoeffectorCollection { Owner = this }; _minimumAttractorStrength = 1; _maximumAttractorStrength = 128; _minimumRepellentStrength = 1; _maximumRepellentStrength = 128; _attractorCollisionAction = CollisionAction.ReduceSelf; _repellentCollisionAction = CollisionAction.ReduceOther; _respawnAttractor = true; _wrap = true; this.Reset(); }
public CollisionRule(Shape shape, CollisionAction action, Action <Shape> method = null) { Type = CollisionRuleType.Shape; Target = shape; Action = action; Method = method; }
public CollisionRule(Objectmap objMap, CollisionAction action, Type[] objFilter = null, Action <PhysicalObject> method = null) { //validate objFilter foreach (Type objType in objFilter) { if (!objType.IsSubclassOf(typeof(PhysicalObject))) { throw new InvalidObjectTypeException("objType in objFilter (" + objType.ToString() + ") is not a subclass of PhysicalObject"); } } Type = CollisionRuleType.Objectmap; Target = objMap; if (objFilter != null) { ObjectmapFilter = new List <Type>(objFilter); FilterEnabled = true; } else { FilterEnabled = false; } Action = action; Method = method; }
public CollisionRule(PhysicalObject obj, CollisionAction action, Action <PhysicalObject> method = null) { Type = CollisionRuleType.Object; Target = obj; Action = action; Method = method; }
public CollisionRule(PhysicalObject obj, CollisionAction action, Action<PhysicalObject> method = null) { Type = CollisionRuleType.Object; Target = obj; Action = action; Method = method; }
public CollisionRule(Shape shape, CollisionAction action, Action<Shape> method = null) { Type = CollisionRuleType.Shape; Target = shape; Action = action; Method = method; }
public bool AddItem(Item item, Point location, IHistoryTransaction trans, CollisionAction collisionAction = CollisionAction.ThrowException) { if (!item.IsRoot) { throw new InvalidOperationException("Only root items may be added to the field."); } Size size = item.GetSize(); var l = mapManager.CurrentLayer; var itemRect = new Rectangle(location, size); if (IsOccupied(itemRect)) { switch (collisionAction) { case CollisionAction.ThrowException: throw new InvalidOperationException("The specified location is already occupied."); case CollisionAction.Abort: return(false); case CollisionAction.Overwrite: DeleteRect(itemRect, trans); break; default: throw new ArgumentOutOfRangeException(nameof(collisionAction), collisionAction, null); } } if (!IsInWorldBounds(itemRect)) { switch (collisionAction) { case CollisionAction.ThrowException: throw new InvalidOperationException("The specified location is outside of the world."); case CollisionAction.Abort: return(false); case CollisionAction.Overwrite: return(false); default: throw new ArgumentOutOfRangeException(nameof(collisionAction), collisionAction, null); } } trans?.AddStep(new AddItemStep(item, location, this)); Item tile = l.GetTile(location); l.SetExtensionTiles(item, location.X, location.Y); tile.CopyFrom(item); return(true); }
public CollisionRule(Type objType, CollisionAction action, Action<PhysicalObject> method = null) { //validate objType if (!objType.IsSubclassOf(typeof(PhysicalObject))) throw new InvalidObjectTypeException("objType (" + objType + ") is not a subclass of PhysicalObject"); Type = CollisionRuleType.ObjectType; Target = objType; Action = action; Method = method; }
public CollisionRule(Type objType, CollisionAction action, Action <PhysicalObject> method = null) { //validate objType if (!objType.IsSubclassOf(typeof(PhysicalObject))) { throw new InvalidObjectTypeException("objType (" + objType.ToString() + ") is not a subclass of PhysicalObject"); } Type = CollisionRuleType.ObjectType; Target = objType; Action = action; Method = method; }
public CollisionRule(Spritemap spritemap, CollisionAction action, Sprite[] spriteFilter = null, Action <PhysicalObject> method = null) { Type = CollisionRuleType.Spritemap; Target = spritemap; if (spriteFilter != null) { SpritemapFilter = new List <Sprite>(spriteFilter); FilterEnabled = true; } else { FilterEnabled = false; } Action = action; Method = method; }
public CollisionRule(GameObjectCollection objMap, CollisionAction action, Type[] objFilter = null, Action<PhysicalObject> method = null) { Type = CollisionRuleType.Objectmap; Target = objMap; Action = action; Method = method; if (objFilter != null) { //validate the filter foreach (Type objType in objFilter) { if (!objType.IsSubclassOf(typeof (PhysicalObject))) throw new InvalidObjectTypeException("objType in objFilter (" + objType + ") is not a subclass of PhysicalObject"); } ObjectmapFilter = new List<Type>(objFilter); FilterEnabled = true; } else FilterEnabled = false; }
private IEntityBase CopyObject( INamedObjectList oDstList, IEntityBase oEntity, bool bWithOwnedChildren) { IEntityBase oClonedEntity = PerformClone(oEntity); IEntityBase oDstListEntity = oClonedEntity; try { oDstList.Add(oClonedEntity); } catch { // Collision string sObjName = oEntity.Name; // Determine what to do CollisionAction enCollisionAction = GetCollisionAction( ref sObjName, oEntity.TypeInfo.TheType.Name, oDstList); bool bRetryAdd = true; switch (enCollisionAction) { case CollisionAction.Rename: oClonedEntity.Rename(sObjName); break; case CollisionAction.Overwrite: oDstList.Remove(oEntity.Name); break; case CollisionAction.KeepOriginal: oDstListEntity = (EntityBase)oDstList[oEntity.Name]; bRetryAdd = false; break; } if (bRetryAdd) { oDstList.Add(oClonedEntity); } } m_oGraph[oEntity] = oDstListEntity; if (bWithOwnedChildren) { CopyOwnedChildren( oEntity, oDstListEntity, true // Recursive ); } return(oDstListEntity); }
private void ProcessCollision(Strand strand, Chemoeffector chemoeffector, ChemoeffectorCollection container, CollisionAction action, Action createNew) { if (action == CollisionAction.ReduceSelf) { chemoeffector.Strength--; strand.Strength++; } else if (action == CollisionAction.ReduceOther) { strand.Strength--; } if (chemoeffector.Strength <= 0 || action == CollisionAction.DestroySelf) { container.Remove(chemoeffector); createNew(); } if (strand.Strength <= 0 || action == CollisionAction.DestroyOther) { _strands.Remove(strand); } }
/// <summary> /// Initializes a new instance of the <see cref="FileNameCollisionEventArgs"/> class. /// </summary> /// <param name="defaultAction">The default action.</param> public FileNameCollisionEventArgs(CollisionAction defaultAction) { Action = defaultAction; }
public CollisionRule(string spritemapID, CollisionAction action, string[] spriteIDFilter = null, Action <PhysicalObject> method = null) : this(Resources.Spritemaps[spritemapID], action, ProcessSpriteIDs(spriteIDFilter), method) { }