EnvironmentObject(Dwarrowdelf.TerrainGen.TerrainData terrain, VisibilityMode visMode, IntVector3 startLocation) : base(ObjectType.Environment) { this.Version = 1; this.VisibilityMode = visMode; terrain.GetData(out m_tileGrid, out m_levelMap); this.Size = terrain.Size; this.StartLocation = startLocation; InitFlags(); VerifyLevelMap(); m_contentArray = new KeyedObjectCollection[this.Depth]; for (int i = 0; i < this.Depth; ++i) m_contentArray[i] = new KeyedObjectCollection(); m_originalNumTrees = ParallelEnumerable.Range(0, this.Size.Depth).Sum(z => { int sum = 0; for (int y = 0; y < this.Size.Height; ++y) for (int x = 0; x < this.Size.Width; ++x) if (GetTileData(x, y, z).HasTree) sum++; return sum; }); }
protected AxTableRelationForeignKey AddTableRelation(AxTableField field, KeyedObjectCollection <AxTableRelation> existingRelations) { if (!string.IsNullOrEmpty(field.ExtendedDataType)) { var edt = _axHelper.MetadataProvider.Edts.Read(field.ExtendedDataType); if (edt == null) { return(null); } if (string.IsNullOrEmpty(edt.ReferenceTable)) { return(null); } AxEdtTableReference firstRef = edt.TableReferences.First(); if (firstRef == null) { return(null); } string newRelationName = edt.ReferenceTable; if (existingRelations.Contains(newRelationName)) { newRelationName = edt.ReferenceTable + "_" + field.Name; } AxTableRelationForeignKey axTableRelation = new AxTableRelationForeignKey(); axTableRelation.Name = newRelationName; axTableRelation.EDTRelation = NoYes.Yes; axTableRelation.Cardinality = Cardinality.ZeroMore; axTableRelation.OnDelete = DeleteAction.Restricted; axTableRelation.RelatedTable = edt.ReferenceTable; axTableRelation.RelatedTableCardinality = IsMandatory ? RelatedTableCardinality.ExactlyOne : RelatedTableCardinality.ZeroOne; axTableRelation.RelationshipType = RelationshipType.Association; AxTableRelationConstraintField axTableRelationConstraint = new AxTableRelationConstraintField(); axTableRelationConstraint.Name = field.Name; axTableRelationConstraint.Field = field.Name; axTableRelationConstraint.SourceEDT = field.ExtendedDataType; axTableRelationConstraint.RelatedField = firstRef.RelatedField; axTableRelation.AddConstraint(axTableRelationConstraint); return(axTableRelation); } return(null); }
protected AxTableRelationForeignKey AddTableRelation(AxTableField field, KeyedObjectCollection <AxTableRelation> existingRelations) { if (!string.IsNullOrEmpty(field.ExtendedDataType)) { var edt = _axHelper.MetadataProvider.Edts.Read(field.ExtendedDataType); if (edt == null) { return(null); } AxTableRelationForeignKey axTableRelation = null; if (!string.IsNullOrEmpty(edt.ReferenceTable)) { AxEdtTableReference firstRef = edt.TableReferences.First(); if (firstRef == null) { return(null); } string newRelationName = edt.ReferenceTable; if (existingRelations.Contains(newRelationName)) { newRelationName = edt.ReferenceTable + "_" + field.Name; } axTableRelation = new AxTableRelationForeignKey(); axTableRelation.Name = newRelationName; axTableRelation.EDTRelation = NoYes.Yes; axTableRelation.Cardinality = Cardinality.ZeroMore; axTableRelation.OnDelete = DeleteAction.Restricted; axTableRelation.RelatedTable = edt.ReferenceTable; axTableRelation.RelatedTableCardinality = IsMandatory ? RelatedTableCardinality.ExactlyOne : RelatedTableCardinality.ZeroOne; axTableRelation.RelationshipType = RelationshipType.Association; foreach (AxEdtTableReference tableRefLine in edt.TableReferences) { var localLineRef = tableRefLine as AxEdtTableReferenceFilter; if (localLineRef != null) { AxTableRelationConstraintRelatedFixed axTableRelationConstraint = new AxTableRelationConstraintRelatedFixed(); axTableRelationConstraint.Name = localLineRef.RelatedField; axTableRelationConstraint.RelatedField = localLineRef.RelatedField; axTableRelationConstraint.Value = localLineRef.Value; axTableRelation.AddConstraint(axTableRelationConstraint); } else { AxTableRelationConstraintField axTableRelationConstraint = new AxTableRelationConstraintField(); axTableRelationConstraint.Name = field.Name; axTableRelationConstraint.Field = field.Name; axTableRelationConstraint.SourceEDT = field.ExtendedDataType; axTableRelationConstraint.RelatedField = tableRefLine.RelatedField; axTableRelation.AddConstraint(axTableRelationConstraint); } } } else { if (edt.Relations != null && edt.Relations.Count > 0) //old style relation { AxEdtRelation firstEdtRelation = edt.Relations.First(); string newRelationName = firstEdtRelation.Table; if (existingRelations.Contains(newRelationName)) { newRelationName = edt.ReferenceTable + "_" + field.Name; } axTableRelation = new AxTableRelationForeignKey(); axTableRelation.Name = newRelationName; axTableRelation.EDTRelation = NoYes.Yes; axTableRelation.Cardinality = Cardinality.ZeroMore; axTableRelation.OnDelete = DeleteAction.Restricted; axTableRelation.RelatedTable = firstEdtRelation.Table; axTableRelation.RelatedTableCardinality = IsMandatory ? RelatedTableCardinality.ExactlyOne : RelatedTableCardinality.ZeroOne; axTableRelation.RelationshipType = RelationshipType.Association; AxTableRelationConstraintField axTableRelationConstraint = new AxTableRelationConstraintField(); axTableRelationConstraint.Name = field.Name; axTableRelationConstraint.Field = field.Name; axTableRelationConstraint.SourceEDT = field.ExtendedDataType; axTableRelationConstraint.RelatedField = firstEdtRelation.RelatedField; axTableRelation.AddConstraint(axTableRelationConstraint); } } return(axTableRelation); } return(null); }
protected ContainerObject(ObjectType objectType) : base(objectType) { m_children = new KeyedObjectCollection(); this.Inventory = new ReadOnlyCollection<MovableObject>(m_children); }
protected ContainerObject(ObjectType objectType) : base(objectType) { m_contents = new KeyedObjectCollection(); this.Contents = new ReadOnlyCollection<MovableObject>(m_contents); }
void OnDeserialized() { m_contentArray = new KeyedObjectCollection[this.Depth]; for (int i = 0; i < this.Depth; ++i) m_contentArray[i] = new KeyedObjectCollection(); foreach (var ob in this.Contents) m_contentArray[ob.Z].Add(ob); CreateLevelMap(); CommonInit(false); }