Beispiel #1
0
        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;
            });
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
 protected ContainerObject(ObjectType objectType)
     : base(objectType)
 {
     m_children = new KeyedObjectCollection();
     this.Inventory = new ReadOnlyCollection<MovableObject>(m_children);
 }
Beispiel #5
0
 protected ContainerObject(ObjectType objectType)
     : base(objectType)
 {
     m_contents = new KeyedObjectCollection();
     this.Contents = new ReadOnlyCollection<MovableObject>(m_contents);
 }
Beispiel #6
0
        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);
        }